#!/usr/bin/ruby # Main class for getting surface ECI in MC # # Written by k-fleak # # Usage # # > ./getECISurfMC.rb [ECI.surf] [sigmaSet.out.surf] [cluster.out.sort.surf] require "#{ENV["HOME"]}/myRuby/parseECI.rb" require "#{ENV["HOME"]}/myRuby/parseSigmaSet.rb" require "#{ENV["HOME"]}/myRuby/parseClusterOutSort.rb" class ECI_Surf_MC # file1: ECI.surf file2: sigmaSet.out.surf file3: cluster.out.sort.surf def initialize(file1, file2, file3) eciFile = ParseECI.new(file1) @eciData = eciFile.getECI sigmaFile = ParseSigmaSet.new(file2) @numClusterData = sigmaFile.getNumCluster coutFile = ParseClusterOutSearch.new(file3) @indexRelation = coutFile.getIndexRelation calcECISurfMC end def getECISurfMC @eciSurfMC end def printECISurfMC @eciSurfMC.each do |eci| print eci[0] print " " print eci[1] print "\n" end end def printIndexRelation @indexRelation.each do |ir| p ir end end private def calcECISurfMC @eciSurfMC = Array.new @eciData.each do |e| indexOrig = e[0] eciOrig = e[1] indexMC = @indexRelation[e[0]] numClusterAll = 0 if indexOrig == 0 then @eciSurfMC.push([indexOrig, eciOrig]) else indexMC.each do |iMC| numClusterAll += @numClusterData[iMC.to_i].to_f end indexMC.each do |iMC| numCluster = @numClusterData[iMC.to_i].to_f eciSurf = eciOrig * (numCluster / numClusterAll) @eciSurfMC.push([iMC.to_i, eciSurf.to_f]) end end end @eciSurfMC.sort! end end eciMC = ECI_Surf_MC.new(ARGV[0], ARGV[1], ARGV[2]) eciMC.printECISurfMC