#!/usr/bin/env ruby # red groups tab = [] File.read("data/pyrrolizidine-alkaloids/pa-groups.csv").each_line do |l| items = l.chomp.split(';') if items.first.empty? items[0] = "ID" else id = items.shift items.collect!{|i| i == "NA" ? 0 : 1} items = [id]+items end tab << items end tab[0] += ["CID","SMILES","Canonical SMILES","Measured","lazar-MP2D","lazar-MP2D-high-confidence","lazar-CDK","lazar-CDK-high-confidence"] i = 0 File.read("data/pyrrolizidine-alkaloids/180920_PA_complete_SMILES.csv").each_line do |l| if i > 0 id,cid,name,smi = l.chomp.split(";") tab[i] += [cid,'"'+smi+'"'] end i += 1 end i = 0 File.read("pyrrolizidine-alkaloids/mp2d/lazar/pa-mp2d-predictions.csv").each_line do |l| if i > 0 id,cansmi,exp,mut,p0,p1,max_sim,nn = l.chomp.split(",") max_sim.to_f < 0.5? hc = "F" : hc = "T" hc = "" if mut.empty? tab[i] += ['"'+cansmi+'"',exp,mut,hc] end i += 1 end i=1 File.read("pyrrolizidine-alkaloids/cdk/lazar/pa-cdk-predictions.csv").each_line do |l| #if i > 0 cansmi,exp,mut,p0,p1,max_sim,nn = l.chomp.split(",") max_sim.to_f < 0.5? hc = "F" : hc = "T" hc = "" if mut.empty? tab[i] += [mut,hc] #end i += 1 end =begin Dir["pyrrolizidine-alkaloids/R/PA.*.outcome.csv"].each do |r| tab[0] << "R-"+r.sub('pyrrolizidine-alkaloids/R/PA.','').sub('.outcome.csv','') i = 0 File.read(r).each_line do |l| if i > 0 items = l.chomp.split(";") items.shift if items.uniq.include? "1" tab[i] << 1 elsif items.uniq.include? "0" tab[i] << 0 end end i += 1 end end =end Dir["pyrrolizidine-alkaloids/cdk/tensorflow/*.csv"].each do |r| tab[0] << "TF-"+r.sub('pyrrolizidine-alkaloids/tensorflow/pred.','').sub('.v5-ext-Padel-2D.csv','').sub("lr2","LR-scikit").sub("lr","LR-sgd").sub("rf","RF").sub("nn","NN").sub("svm","SVM") i = 0 File.read(r).each_line do |l| if i > 0 id,pred = l.chomp.split(",") pred.to_f > 0.5 ? tab[i] << 1 : tab[i] << 0 end i += 1 end end Dir["pyrrolizidine-alkaloids/cdk/tensorflow/*.csv"].each do |r| tab[0] << "TF-"+r.sub('pyrrolizidine-alkaloids/tensorflow/pred.','').sub('.v5-ext-Padel-2D.csv','').sub("lr2","LR-scikit").sub("lr","LR-sgd").sub("rf","RF").sub("nn","NN").sub("svm","SVM") i = 0 File.read(r).each_line do |l| if i > 0 id,pred = l.chomp.split(",") pred.to_f > 0.5 ? tab[i] << 1 : tab[i] << 0 end i += 1 end end puts tab.collect{|r| r.join(",")}.join("\n")