#!/usr/bin/env ruby group_lines = File.readlines(ARGV[0]) # groups group_names = [] group_lines.shift.chomp.split(",")[1..-1].each_with_index do |g,i| group_names << "#{i}: #{g}" end groups = {} group_lines.each do |l| items = l.chomp.split(",") smi = items.shift groups[smi] = items end pred_lines = File.readlines(ARGV[1]) # predictions algo_names = pred_lines.shift.chomp.split(",")[1..-1] print ' \documentclass[]{scrartcl} \usepackage{color, colortbl} \usepackage{longtable} \begin{document} \definecolor{red}{rgb}{1,0,0} \definecolor{darkred}{rgb}{0.5,0,0} \definecolor{green}{rgb}{0,1,0} \definecolor{darkgreen}{rgb}{0,0.5,0} \definecolor{grey}{rgb}{0.5,0.5,0.5} \definecolor{black}{rgb}{0,0,0} \definecolor{white}{rgb}{1,1,1} \tiny \begin{longtable}{rrrrrrrrrcccccccccccccc} \caption{Summary of pyrrolizidine alkaloid predictions: red: mutagen, green: non-mutagen, grey: no prediction, dark red/green: low confidence; ' print "#{group_names.join(', ')}" puts '} \\\\ \label{tab:pa}' header2 = ((1..9).to_a + algo_names.select{|a| !a.match(/high/)}.collect{|a| a.sub(/mp2d|cdk/,'').sub('-','').upcase.sub("LAZAR-ALL","lazar")}).join(" & ") print header2 puts ' \\kill % needed as guide for multicolumn' puts '\multicolumn{9}{c}{PA Group} & \multicolumn{6}{c}{MP2D} & \multicolumn{6}{c}{CDK}\\\\' puts header2 + '\\\\' puts '\hline \renewcommand{\arraystretch}{0.075} ' pred_lines.each do |l| row = [] values = l.chomp.split(",") smi = values.shift groups[smi].each do |v| v == "1" ? row << '\cellcolor{black}' : row << '\cellcolor{white}' end values.each_with_index do |v,i| case algo_names[i] when /lazar-all/ if v == "1" values[i+1] == "1" ? row << '\cellcolor{red}' : row << '\cellcolor{darkred}' elsif v == "0" values[i+1] == "0" ? row << '\cellcolor{green}' : row << '\cellcolor{darkgreen}' else row << '\cellcolor{grey}' end when /lazar-high-confidence/ # do nothing else if v == "1" row << '\cellcolor{red}' elsif v == "0" row << '\cellcolor{green}' else row << '\cellcolor{grey}' end end end puts row.join(" & ") + ' \\\\' end puts ' \end{longtable} \normalsize \end{document} '