#!/usr/bin/ruby # Main program to compare ECIs of bulk with that of surface # # Written by k-fleak # require "#{ENV["HOME"]}/myRuby/parseSigmaSet.rb" require "#{ENV["HOME"]}/myRuby/identifyCluster.rb" require "#{ENV["HOME"]}/myRuby/parseECI.rb" class ComparisonBulkSurfECI def initialize(sigmaSetBulk, sigmaSetSurf, coutBulk, coutSurf, eciBulk, eciSurf, multiplyCellBulk, multiplyCellSurf) sigmaSetBulkF = ParseSigmaSet.new(sigmaSetBulk) sigmaSetSurfF = ParseSigmaSet.new(sigmaSetSurf) #coutBulkF = ParseClusterOutSort.new(coutBulk) #coutSurfF = ParseClusterOutSort.new(coutSurf) eciBulkF = ParseECI.new(eciBulk) eciSurfF = ParseECI.new(eciSurf) parseCoutSurf = ParseClusterOutSearch.new(coutSurf) @numClusterBulk = sigmaSetBulkF.getNumCluster @numClusterSurf = sigmaSetSurfF.getNumCluster @eciBulkTmp = eciBulkF.getECI @eciSurfTmp = eciSurfF.getECI @indexRelation = parseCoutSurf.getIndexRelation getECIperCluster(multiplyCellBulk, multiplyCellSurf) compareECI(coutBulk, coutSurf) end def printComparedECI @sameIndexBulkAndSurf.each do |sibs| indexBulk = sibs[0] indexSurfArray = sibs[1] print "#V(bulk) - " print indexBulk print "\n" indexSurfArray.each do |indexSurf| print @eciSurf[indexSurf] print " " print "#V(surf) - " print indexSurf print "\n" end print @eciBulk[indexBulk] print " " print "#V(bulk) - " print indexBulk print "\n" print "\n\n" end end private def getECIperCluster(multiplyCellBulk, multiplyCellSurf) @eciBulk = Hash.new() @eciBulkTmp.each do |etmp| numCluster = @numClusterBulk[etmp[0]] @eciBulk[etmp[0]] = etmp[1] / numCluster * multiplyCellBulk.to_f end @eciBulk.sort @eciSurf = Hash.new() @eciSurfTmp.each do |etmp| indexSortSurf = etmp[0] indexOrigSurf = @indexRelation[indexSortSurf] eciSortSurf = etmp[1] numClusterAll = 0 indexOrigSurf.each do |ios| numCluster = @numClusterSurf[ios.to_i] / multiplyCellSurf numClusterAll += numCluster end @eciSurf[indexSortSurf] = eciSortSurf / numClusterAll end @eciSurf.sort end def compareECI(coutBulk, coutSurf) @sameIndexBulkAndSurf = Hash.new @eciBulk.each do |eciB| indexBulk = eciB[0].to_s ids = IdentifyCluster.new(coutBulk, coutSurf, indexBulk) ids.start() indexSurf = Array.new unless ids.nBody == 0 then sameCluster = ids.getSameCluster case ids.nBody when 1 sameCluster.sort.each do |sc| indexSurf.push(sc[1][1]) end else sameCluster.each do |sc| indexSurf.push(sc[(sc.size)-1]) end end @sameIndexBulkAndSurf[indexBulk.to_i] = indexSurf end end end end #comp = ComparisonBulkSurfECI.new("sigmaSet.out.bulk", "sigmaSet.out.surf", "cluster.out.sort.bulk", "cluster.out.sort.surf", "ECI.bulk.gene5.02", "ECI.gene5.02.surf", 1, 6) comp = ComparisonBulkSurfECI.new(ARGV[0], ARGV[1], ARGV[2], ARGV[3], ARGV[4], ARGV[5], ARGV[6].to_f, ARGV[7].to_f) comp.printComparedECI