#!/usr/bin/env ruby group_data = File.readlines(ARGV[0]).collect{|l| l.chomp.split(",")} sa37 = File.readlines(ARGV[1]).collect{|l| l.chomp.split(",")} group_names = group_data.shift group_names.shift sa37.shift groups = {} group_data.each do |d| smi = d.shift groups[smi] ||= [] d.each_with_index do |v,i| groups[smi] << group_names[i] if v == "1" end end mut = {} n = {} sa37.each do |pred| smi = pred.shift group_names.each do |g| mut[g] ||= 0 n[g] ||= 0 if groups[smi].include? g n[g]+=1 mut[g]+=1 if pred[0] == "1" end end end perc = {} mut.each do |g,m| perc[g] = (100.0*m/n[g]).round end p perc