summaryrefslogtreecommitdiff
path: root/scripts/pa-tex-table.rb
blob: 5d9821d40064aabd9e99b7a8d6eafb069e28b326 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env ruby

#1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & Measured & MP2D & CDK & LR-sgd & LR-scikit & NN & RF \\\\
puts '
\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}{rrrrrrrrrccccccccccccccc}
\caption{Summary of pyrrolizidine alkaloid predictions: red: mutagen, green: non-mutagen, grey: no prediction, dark red/green: low confidence; 1: Retronecine, 2: Otonecine, 3: Platynecine, 4: N-oxide, 5: Dehydropyrrolizidine, 6:Tertiary PA, 7: Macrocyclic-diester, 8: Monoester, 9: Diester} \\\\
\label{tab:pa}

% 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & Measured & MP2D & CDK & DL & SVM & LR-sgd & LR-scikit & NN & RF \\kill % needed as guide for multicolumn
% \multicolumn{9}{c}{PA Group} & & \multicolumn{2}{c}{lazar} & \multicolumn{4}{c}{Tensorflow}\\\\
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & Exp. & MP2D & CDK & LR1 & LR2 & NN & RF & SVM & LR1 & LR2 & NN & RF & SVM \\kill % needed as guide for multicolumn
\multicolumn{9}{c}{PA Group} & & \multicolumn{2}{c}{lazar} & \multicolumn{5}{c}{MP2D} & \multicolumn{5}{c}{CDK}\\\\

1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & Exp. & MP2D & CDK & LR1 & LR2 & NN & RF & SVM & LR1 & LR2 & NN & RF & SVM \\\\
% 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & Measured & MP2D & CDK & LR-sgd & LR-scikit & NN & RF \\\\
\hline
\renewcommand{\arraystretch}{0.075}
'
File.read(ARGV[0]).each_line do |l|
  unless l.match("SMILES")
    #ID,Retronecine,Otonecine,Platynecine,N-oxide,Dehydropyrrolizidine,Tertiary PA,Macrocyclic-diester,Monoester,Diester,CID,SMILES,Canonical SMILES,Measured,lazar-MP2D,lazar-high-confidence-MP2D,lazar-CDK,lazar-high-confidence-CDK,LR-sgd-MP2D,LR-scikit-MP2D,NN-MP2D,RF-MP2D,SVM-MP2D,LR-sgd-CDK,LR-scikit-CDK,NN-CDK,RF-CDK,SVM-CDK
    id,r,o,p,n,de,t,ma,mo,di,cid,smi,cansmi,exp,lazar_MP2D,lazar_MP2D_high_confidence,lazar_CDK,lazar_CDK_high_confidence,lr_sgd_mp2d,lr_scikit_mp2d,nn_mp2d,rf_mp2d,svm_mp2d,lr_sgd_cdk,lr_scikit_cdk,nn_cdk,rf_cdk,svm_cdk = l.chomp.split(",")
    #id,r,o,p,n,de,t,ma,mo,di,cid,smi,cansmi,exp,lazar_MP2D,lazar_MP2D_high_confidence,lazar_CDK,lazar_CDK_high_confidence,tf_lr_sgd,tf_lr_scikit,tf_NN,tf_RF = l.chomp.split(",")
    row = [r,o,p,n,de,t,ma,mo,di].collect{|group| group == "1" ? '\cellcolor{black}' : '\cellcolor{white}'}.join(' & ')
    if exp == "1"
      row += ' & \cellcolor{red}'
    elsif exp == "0"
      row += ' & \cellcolor{green}'
    else
      row += ' & \cellcolor{grey}'
    end
    if lazar_MP2D == "1" and lazar_MP2D_high_confidence == "F" 
      row += ' & \cellcolor{darkred}' 
    elsif lazar_MP2D == "1" and lazar_MP2D_high_confidence == "T" 
      row += ' & \cellcolor{red}'
    elsif lazar_MP2D == "0" and lazar_MP2D_high_confidence == "F" 
      row += ' & \cellcolor{darkgreen}' 
    elsif lazar_MP2D == "0" and lazar_MP2D_high_confidence == "T" 
      row += ' & \cellcolor{green}'
    else 
      row += ' & \cellcolor{grey}'
    end
    if lazar_CDK == "1"
      lazar_CDK_high_confidence == "F" ? row += ' & \cellcolor{darkred}' : row += ' & \cellcolor{red}'
    elsif lazar_CDK == "0"
      lazar_CDK_high_confidence == "F" ? row += ' & \cellcolor{darkgreen}' : row += ' & \cellcolor{green}'
    else 
      row += ' & \cellcolor{grey}'
    end
    [lr_sgd_mp2d,lr_scikit_mp2d,nn_mp2d,rf_mp2d,svm_mp2d,lr_sgd_cdk,lr_scikit_cdk,nn_cdk,rf_cdk,svm_cdk].each do |mut|
    #[tf_lr_sgd,tf_lr_scikit,tf_NN,tf_RF].each do |mut|
      mut == "1" ? row += ' & \cellcolor{red}' : row += ' & \cellcolor{green}'
    end
    puts row + ' \\\\'
  end
end
puts '
\end{longtable}
\normalsize
'