diff options
-rw-r--r-- | data/hamster_carcinogenicity.yaml | 174 | ||||
-rw-r--r-- | example.rb | 5 | ||||
-rw-r--r-- | nightly/nightly.rb | 33 | ||||
-rw-r--r-- | report/plot_factory.rb | 18 | ||||
-rw-r--r-- | report/report_factory.rb | 2 | ||||
-rw-r--r-- | report/report_test.rb | 17 | ||||
-rw-r--r-- | report/validation_access.rb | 4 | ||||
-rw-r--r-- | validation/validation_service.rb | 13 | ||||
-rw-r--r-- | validation/validation_test.rb | 28 |
9 files changed, 182 insertions, 112 deletions
diff --git a/data/hamster_carcinogenicity.yaml b/data/hamster_carcinogenicity.yaml index fbe7c12..14ef015 100644 --- a/data/hamster_carcinogenicity.yaml +++ b/data/hamster_carcinogenicity.yaml @@ -87,175 +87,175 @@ compounds: - http://localhost/compound/InChI=1S/BF4.Na/c2-1(3,4)5;/q-1;+1 data: http://localhost/compound/InChI=1S/C14H8Cl4/c15-11-5-1-9(2-6-11)13(14(17)18)10-3-7-12(16)8-4-10/h1-8H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C3H6ClNO/c1-5(2)3(4)6/h1-2H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C2H8N2O/c3-4-1-2-5/h4-5H,1-3H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C4H10N2O3/c1-6(5-9)2-4(8)3-7/h4,7-8H,2-3H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/CH2O/c1-2/h1H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C5H12N2O4/c8-2-1-7(6-11)3-5(10)4-9/h5,8-10H,1-4H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C7H15N3O/c1-6-4-10(8-11)5-7(2)9(6)3/h6-7H,4-5H2,1-3H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C4H8N2O2/c7-5-6-1-3-8-4-2-6/h1-4H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C16H13N/c1-2-8-15(9-3-1)17-16-11-10-13-6-4-5-7-14(13)12-16/h1-12,17H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C3H6O2/c4-1-3-2-5-3/h3-4H,1-2H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C4H6N2O3/c1-3-2-6(5-8)4(7)9-3/h3H,2H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H5NO2/c8-6(9)5-1-3-7-4-2-5/h1-4H,(H,8,9): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/2C2H4O2.4H2O.3Pb/c2*1-2(3)4;;;;;;;/h2*1H3,(H,3,4);4*1H2;;;/q;;;;;;3*+2/p-6: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C17H17ClO6/c1-8-5-9(19)6-12(23-4)17(8)16(20)13-10(21-2)7-11(22-3)14(18)15(13)24-17/h6-8H,5H2,1-4H3/t8-,17?/m1/s1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C3H6N2O2/c6-4-5-1-2-7-3-5/h1-3H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C3H7NO2/c1-2-6-3(4)5/h2H2,1H3,(H2,4,5): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C5H8O2/c1-4(2)5(6)7-3/h1H2,2-3H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C2H6N2O/c1-4(3)2-5/h2H,3H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H12N2O4/c1-5(10)2-8(7-12)3-6(11)4-9/h6,9,11H,2-4H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C5H4O2/c6-4-5-2-1-3-7-5/h1-4H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C4H8N2O/c7-5-6-3-1-2-4-6/h1-4H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C9H11N3O2/c10-9(13)12(11-14)7-6-8-4-2-1-3-5-8/h1-5H,6-7H2,(H2,10,13): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C14H14ClN3O2S/c1-8-4-3-5-10(9(8)2)16-12-6-11(15)17-14(18-12)21-7-13(19)20/h3-6H,7H2,1-2H3,(H,19,20)(H,16,17,18): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/H4N2.H2O4S/c1-2;1-5(2,3)4/h1-2H2;(H2,1,2,3,4): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C5H10N2O/c8-6-7-4-2-1-3-5-7/h1-5H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C10H13N3O2/c1-13(12-15)7-3-5-10(14)9-4-2-6-11-8-9/h2,4,6,8H,3,5,7H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C3H6N2O/c6-4-5-2-1-3-5/h1-3H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C4H8N2O3/c1-3-9-4(7)6(2)5-8/h3H2,1-2H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H10N2O2/c1-3-4-8(7-10)5-6(2)9/h3H,1,4-5H2,2H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C14H9Cl5/c15-11-5-1-9(2-6-11)13(14(17,18)19)10-3-7-12(16)8-4-10/h1-8,13H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/BrHO3.K/c2-1(3)4;/h(H,2,3,4);/q;+1/p-1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C2H5ClO/c1-4-2-3/h2H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C10H12ClNO2/c1-7(2)14-10(13)12-9-5-3-4-8(11)6-9/h3-7H,1-2H3,(H,12,13): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C8H5N3O4S/c12-4-9-8-10-5(3-16-8)6-1-2-7(15-6)11(13)14/h1-4H,(H,9,10,12): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/Cd.2ClH/h;2*1H/q+2;;/p-2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C20H19N3.ClH/c1-13-12-16(6-11-19(13)23)20(14-2-7-17(21)8-3-14)15-4-9-18(22)10-5-15;/h2-12,21H,22-23H2,1H3;1H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/BF4.Na/c2-1(3,4)5;/q-1;+1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C6H5N2.BF4/c7-8-6-4-2-1-3-5-6;2-1(3,4)5/h1-5H;/q+1;-1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C2H4N4/c3-2-4-1-5-6-2/h1H,(H3,3,4,5,6): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C9H6O2/c10-9-6-5-7-3-1-2-4-8(7)11-9/h1-6H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C2HCl3/c3-1-2(4)5/h1H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C2H8N2/c1-4(2)3/h3H2,1-2H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H7N3O/c7-9-6(10)5-1-3-8-4-2-5/h1-4H,7H2,(H,9,10): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C12H8Cl6O/c13-8-9(14)11(16)5-3-1-2(6-7(3)19-6)4(5)10(8,15)12(11,17)18/h2-7H,1H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/Cd.H2O4S/c;1-5(2,3)4/h;(H2,1,2,3,4)/q+2;/p-2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C5H10N2O3/c1-5(9)4-7(6-10)2-3-8/h8H,2-4H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C27H30O16/c1-8-17(32)20(35)22(37)26(40-8)39-7-15-18(33)21(36)23(38)27(42-15)43-25-19(34)16-13(31)5-10(28)6-14(16)41-24(25)9-2-3-11(29)12(30)4-9/h2-6,8,15,17-18,20-23,26-33,35-38H,7H2,1H3/t8-,15+,17-,18+,20+,21-,22+,23+,26+,27?/m0/s1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C12H12N2O3/c1-2-12(8-6-4-3-5-7-8)9(15)13-11(17)14-10(12)16/h3-7H,2H2,1H3,(H2,13,14,15,16,17): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C8H6N4O4S/c13-4-9-11-8-10-5(3-17-8)6-1-2-7(16-6)12(14)15/h1-4H,(H,9,13)(H,10,11): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C9H7N3O4S/c1-5(13)10-9-11-6(4-17-9)7-2-3-8(16-7)12(14)15/h2-4H,1H3,(H,10,11,13): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/CH6N2/c1-3-2/h3H,2H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C12H9NO2/c14-13(15)11-7-6-9-5-4-8-2-1-3-10(11)12(8)9/h1-3,6-7H,4-5H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C15H10O7.2H2O/c16-7-4-10(19)12-11(5-7)22-15(14(21)13(12)20)6-1-2-8(17)9(18)3-6;;/h1-5,16-19,21H;2*1H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C7H6O4/c8-5-2-1-4(7(10)11)3-6(5)9/h1-3,8-9H,(H,10,11): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C9H9NS/c11-8-10-7-6-9-4-2-1-3-5-9/h1-5H,6-7H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C20H22O3/c1-20(2,19(21)22)23-16-12-10-15(11-13-16)18-9-5-7-14-6-3-4-8-17(14)18/h3-4,6,8,10-13,18H,5,7,9H2,1-2H3,(H,21,22): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C6H12N2O2/c1-5-3-8(7-9)4-6(2)10-5/h5-6H,3-4H2,1-2H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C10H13NO2/c1-8(2)13-10(12)11-9-6-4-3-5-7-9/h3-8H,1-2H3,(H,11,12): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C6H14N2O4/c1-5(10)2-8(7-12)3-6(11)4-9/h5-6,9-11H,2-4H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C19H24N2O2/c22-18-13-20(19(23)15-7-2-1-3-8-15)12-17-16-9-5-4-6-14(16)10-11-21(17)18/h4-6,9,15,17H,1-3,7-8,10-13H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C5H11N3O3/c1-2-8(7-11)5(10)6-3-4-9/h9H,2-4H2,1H3,(H,6,10): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C14H19N3S.ClH/c1-16(2)9-10-17(12-13-6-5-11-18-13)14-7-3-4-8-15-14;/h3-8,11H,9-10,12H2,1-2H3;1H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/H4N2/c1-2/h1-2H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C4H5Cl/c1-3-4(2)5/h3H,1-2H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C17H17ClO3/c1-17(2,16(19)20)21-11-12-3-5-13(6-4-12)14-7-9-15(18)10-8-14/h3-10H,11H2,1-2H3,(H,19,20): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C2H8N2.2ClH/c1-3-4-2;;/h3-4H,1-2H3;2*1H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H10ClN3O3/c1-5(11)4-10(9-13)6(12)8-3-2-7/h2-4H2,1H3,(H,8,12): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H11N3O3/c1-3-9(8-12)6(11)7-4-5(2)10/h3-4H2,1-2H3,(H,7,11): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C11H8N2O5/c12-11(14)8(9-2-1-5-17-9)6-7-3-4-10(18-7)13(15)16/h1-6H,(H2,12,14): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C5H13N3O/c1-7(2)4-5-8(3)6-9/h4-5H2,1-3H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C15H13NO/c1-10(17)16-13-6-7-15-12(9-13)8-11-4-2-3-5-14(11)15/h2-7,9H,8H2,1H3,(H,16,17): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C5H6N2OS/c1-3-2-4(8)7-5(9)6-3/h2H,1H3,(H2,6,7,8,9): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C9H11N3O/c13-11-12-6-2-4-9(12)8-3-1-5-10-7-8/h1,3,5,7,9H,2,4,6H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H12N4O2/c1-5-3-9(7-11)4-6(2)10(5)8-12/h5-6H,3-4H2,1-2H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C19H17N3.ClH/c20-16-7-1-13(2-8-16)19(14-3-9-17(21)10-4-14)15-5-11-18(22)12-6-15;/h1-12,20H,21-22H2;1H: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/HNO2.Na/c2-1-3;/h(H,2,3);/q;+1/p-1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C6Cl6/c7-1-2(8)4(10)6(12)5(11)3(1)9: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C2H3Cl/c1-2-3/h2H,1H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C6H10N2O/c1-3-5-8(7-9)6-4-2/h3-4H,1-2,5-6H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C9H11N3O2/c13-10-12-6-2-4-9(12)8-3-1-5-11(14)7-8/h1,3,5,7,9H,2,4,6H2: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C15H13NO2/c1-10(17)16(18)13-6-7-15-12(9-13)8-11-4-2-3-5-14(11)15/h2-7,9,18H,8H2,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C20H22N8O5/c1-28(9-11-8-23-17-15(24-11)16(21)26-20(22)27-17)12-4-2-10(3-5-12)18(31)25-13(19(32)33)6-7-14(29)30/h2-5,8,13H,6-7,9H2,1H3,(H,25,31)(H,29,30)(H,32,33)(H4,21,22,23,26,27)/t13-/m0/s1: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): false + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): false http://localhost/compound/InChI=1S/C4H7N3O3/c1-3(8)2-7(6-10)4(5)9/h2H2,1H3,(H2,5,9): - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true http://localhost/compound/InChI=1S/C2H4O/c1-2-3/h2H,1H3: - - http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB): true + - http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB): true features: -- http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB) -title: Hamster%20Carcinogenicity%20(DSSTOX/CPDB) +- http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB) +title: Hamster Carcinogenicity (DSSTOX/CPDB) @@ -6,7 +6,8 @@ class Example @@file=File.new("data/hamster_carcinogenicity.yaml","r") @@file_type="text/x-yaml" @@model=File.join @@config[:services]["opentox-model"],"1" - @@feature="http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB)" + #@@feature="http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB)" + @@feature= "http://localhost/toxmodel/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)" @@alg = File.join @@config[:services]["opentox-algorithm"],"lazar" @@alg_params = "feature_generation_uri="+File.join(@@config[:services]["opentox-algorithm"],"fminer") @@data=File.join @@config[:services]["opentox-dataset"],"1" @@ -75,7 +76,7 @@ class Example log "crossvalidation" Lib::Crossvalidation.auto_migrate! cv = Validation::Crossvalidation.new({ :dataset_uri => data_uri, :algorithm_uri => @@alg, :num_folds => 5, :stratified => false }) - cv.create_cv_datasets( URI.decode(@@feature) ) + cv.create_cv_datasets( URI.decode(@@feature) ) cv.perform_cv( @@alg_params ) log "create validation report" diff --git a/nightly/nightly.rb b/nightly/nightly.rb index cfee2e5..710c842 100644 --- a/nightly/nightly.rb +++ b/nightly/nightly.rb @@ -60,6 +60,10 @@ class Nightly section_results = report.add_section(section, "Results") report.add_table(section_results, b.result_table_title, b.result_table) + if (b.comparison_report) + report.add_table(section_results, b.comparison_report_title, [[b.comparison_report]], false) + end + section_errors = report.add_section(section, "Errors") if b.errors and b.errors.size>0 @@ -118,6 +122,15 @@ class Nightly end t end + + def comparison_report_title + "algorithm comparison report" + end + + def comparison_report + @comparison_report + end + end class TrainingTestValidationBenchmark < ValidationBenchmark @@ -170,6 +183,7 @@ class Nightly @validations = Array.new(@comparables.size) @reports = Array.new(@comparables.size) @errors = {} + to_compare = [] # LOGGER.info "train-data: "+@train_data.to_s # LOGGER.info "test-data: "+@test_data.to_s # LOGGER.info "test-class-data: "+@test_class_data.to_s @@ -183,6 +197,7 @@ class Nightly LOGGER.debug "Validate: "+@algs[i].to_s @validations[i] = Util.validate_alg(@train_data, @test_data, @test_class_data, @algs[i], URI.decode(@pred_feature), @alg_params[i]).to_s + to_compare << @validations[i] if OpenTox::Utils.is_uri?(@validations[i]) begin LOGGER.debug "Building validation-report for "+@validations[i].to_s+" ("+@algs[i].to_s+")" @@ -208,6 +223,13 @@ class Nightly wait += 1 sleep 1 end + + if to_compare.size>1 + LOGGER.debug self.class.to_s.gsub(/Nightly::/, "")+": build algorithm comparison report" + @comparison_report = Util.create_alg_comparison_report(to_compare) + else + LOGGER.debug self.class.to_s.gsub(/Nightly::/, "")+": nothing to compare" + end end end @@ -227,7 +249,7 @@ class Nightly "http://opentox.informatik.tu-muenchen.de:8080/OpenTox-dev/algorithm/kNNregression", File.join(@@config[:services]["opentox-majority"],["/regr/algorithm"]) ] - @alg_params = [nil, nil, nil] + @alg_params = [nil, "dataset_service=http://ambit.uni-plovdiv.bg:8080/ambit2/dataset", nil] @train_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/342" @test_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/342" @pred_feature = "http://ambit.uni-plovdiv.bg:8080/ambit2/feature/103141" @@ -281,7 +303,7 @@ class Nightly def build() @algs = [File.join(@@lazar_server,"lazar"), File.join(@@config[:services]["opentox-majority"],["/class/algorithm"]) ] @alg_params = ["feature_generation_uri="+File.join(@@lazar_server,"fminer"),nil] - @pred_feature = "http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB)" + @pred_feature = "http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB)" LOGGER.debug "pepare hamster datasets" @test_class_data = Util.upload_dataset(@@dataset_service, @@file, @@file_type).chomp("\n") @@ -324,6 +346,13 @@ class Nightly #uri = OpenTox::Task.find(uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(uri) return uri end + + def self.create_alg_comparison_report(validations) + uri = OpenTox::RestClientWrapper.post File.join(@@validation_service,"report/algorithm_comparison"), { :validation_uris => validations.join("\n") } + #uri = OpenTox::Task.find(uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(uri) + return uri + end + end end
\ No newline at end of file diff --git a/report/plot_factory.rb b/report/plot_factory.rb index e248540..c5ea59f 100644 --- a/report/plot_factory.rb +++ b/report/plot_factory.rb @@ -188,6 +188,24 @@ module Reports a = roc_values[:actual_values] raise "no prediction values for roc-plot" if p.size==0 + # hack for painting perfect/worst roc curve, otherwhise fp/tp-rate will always be 100% + # determine if perfect/worst roc curve + fp_found = false + tp_found = false + (0..p.size-1).each do |i| + if a[i]!=p[i] + fp_found |= true + else + tp_found |=true + end + break if tp_found and fp_found + end + unless fp_found and tp_found #if perfect/worst add wrong/right instance with lowest confidence + a << (tp_found ? 0 : 1) + p << 1 + c << -Float::MAX + end + (0..p.size-2).each do |i| ((i+1)..p.size-1).each do |j| if c[i]<c[j] diff --git a/report/report_factory.rb b/report/report_factory.rb index 3cc4dfe..63a841e 100644 --- a/report/report_factory.rb +++ b/report/report_factory.rb @@ -109,7 +109,7 @@ module Reports::ReportFactory #validation_set.to_array([:test_dataset_uri, :model_uri, :algorithm_uri], false).each{|a| puts a.inspect} raise Reports::BadRequest.new("num validations is not >1") unless validation_set.size>1 raise Reports::BadRequest.new("validations must be either all regression, "+ - +"or all classification validations") unless validation_set.all_classification? or validation_set.all_regression? + "or all classification validations") unless validation_set.all_classification? or validation_set.all_regression? raise Reports::BadRequest.new("number of different algorithms <2: "+ validation_set.get_values(:algorithm_uri).inspect) if validation_set.num_different_values(:algorithm_uri)<2 diff --git a/report/report_test.rb b/report/report_test.rb index 84fc178..0849ad7 100644 --- a/report/report_test.rb +++ b/report/report_test.rb @@ -31,18 +31,21 @@ class Reports::ApplicationTest < Test::Unit::TestCase #get '/report/validation/1',nil,'HTTP_ACCEPT' => "text/html" #post '/report/validation/1/format_html',:css_style_sheet=>"http://apps.ideaconsult.net:8180/ToxPredict/style/global.css" - post 'http://ot.validation.de/report/validation',:validation_uris=>"http://ot.validation.de/validation/90" + post 'http://ot.validation.de/report/validation',:validation_uris=>"http://ot.validation.de/1" puts last_response.body.to_s #post 'http://ot.validation.de/report/crossvalidation',:validation_uris=>"http://ot.validation.de/crossvalidation/1" #uri = last_response.body.to_s -# post 'http://ot.validation.de/report/algorithm_comparison',:validation_uris=>"http://ot.validation.de/validation/15\n"+ -# "http://ot.validation.de/validation/16\n"+ -# "http://ot.validation.de/validation/18\n" -# uri = last_response.body.to_s -# puts uri -# + #val_uris = ["http://ot.validation.de/29","http://ot.validation.de/30" ] + + #post 'http://ot.validation.de/report/algorithm_comparison',:validation_uris=>val_uris.join("\n") + #uri = last_response.body.to_s + #puts uri + + #rep = Reports::ReportService.new("http://some.location") + #rep.create_report("algorithm_comparison", val_uris) + # post uri.to_s+'/format_html',:css_style_sheet=>"http://apps.ideaconsult.net:8180/ToxPredict/style/global.css" # puts last_response.body.to_s.gsub(/\n.*/,"") diff --git a/report/validation_access.rb b/report/validation_access.rb index ffac11d..6896c96 100644 --- a/report/validation_access.rb +++ b/report/validation_access.rb @@ -72,8 +72,8 @@ class Reports::ValidationDB < Reports::ValidationAccess raise Reports::BadRequest.new "not a validation uri: "+uri.to_s unless uri =~ /.*\/[0-9]+/ validation_id = uri.split("/")[-1] - v = Lib::Validation.get(validation_id) - raise Reports::BadRequest.new "no validation found with id "+validation_id.to_s unless v + v = Lib::Validation.first({:id => validation_id}) #, :uri => uri}) + raise Reports::BadRequest.new "no validation found with id "+validation_id.to_s unless v #+" and uri "+uri.to_s unless v (Lib::VAL_PROPS + Lib::VAL_CV_PROPS).each do |p| validation.send("#{p.to_s}=".to_sym, v[p]) diff --git a/validation/validation_service.rb b/validation/validation_service.rb index 4bb030f..c980ee6 100644 --- a/validation/validation_service.rb +++ b/validation/validation_service.rb @@ -64,8 +64,6 @@ module Validation def validate_algorithm( algorithm_params=nil ) $sinatra.halt 404, "no algorithm uri: '"+algorithm_uri.to_s+"'" if @algorithm_uri==nil or @algorithm_uri.to_s.size<1 - $sinatra.halt 404, "prediction_feature is already encoded: "+@prediction_feature if @prediction_feature=~/%20/ - update :prediction_feature => URI.encode(@prediction_feature) params = { :dataset_uri => @training_dataset_uri, :prediction_feature => @prediction_feature } if (algorithm_params!=nil) @@ -293,10 +291,10 @@ module Validation $sinatra.halt 500,"internal error, num test compounds not correct" unless (shuffled_compounds.size/@num_folds - test_compounds.size).abs <= 1 $sinatra.halt 500,"internal error, num train compounds not correct" unless shuffled_compounds.size - test_compounds.size == train_compounds.size - LOGGER.debug "training set: "+datasetname+"_train" + LOGGER.debug "training set: "+datasetname+"_train, compounds: "+train_compounds.size.to_s train_dataset_uri = orig_dataset.create_new_dataset( train_compounds, orig_dataset.features, datasetname + '_train', source ) - LOGGER.debug "test set: "+datasetname+"_test" + LOGGER.debug "test set: "+datasetname+"_test, compounds: "+test_compounds.size.to_s test_dataset_uri = orig_dataset.create_new_dataset( test_compounds, test_features, datasetname + '_test', source ) validation = Validation.new :training_dataset_uri => train_dataset_uri, @@ -324,10 +322,9 @@ module Validation $sinatra.halt 400, "Split ratio invalid: "+split_ratio.to_s unless split_ratio and split_ratio=split_ratio.to_f $sinatra.halt 400, "Split ratio not >0 and <1 :"+split_ratio.to_s unless split_ratio>0 && split_ratio<1 if prediction_feature - $sinatra.halt 404, "prediction_feature is already encoded: "+prediction_feature.to_s if prediction_feature=~/%20/ - prediction_feature = URI.encode(prediction_feature) - $sinatra.halt 400, "Prediction feature not found in dataset features: "+prediction_feature.to_s+ - ", features are: \n"+orig_dataset.features.inspect unless orig_dataset.features.include?(prediction_feature) + $sinatra.halt 400, "Prediction feature '"+prediction_feature.to_s+ + "' not found in dataset, features are: \n"+ + orig_dataset.features.inspect unless orig_dataset.features.include?(prediction_feature) else LOGGER.warn "no prediciton feature given, all features included in test dataset" end diff --git a/validation/validation_test.rb b/validation/validation_test.rb index 58189bd..d5529fe 100644 --- a/validation/validation_test.rb +++ b/validation/validation_test.rb @@ -19,7 +19,7 @@ class ValidationTest < Test::Unit::TestCase def test_it - #Nightly.build_nightly + Nightly.build_nightly #get "/build_nightly" #get "/nightly" #get '1',nil,'HTTP_ACCEPT' => "application/rdf+xml" @@ -32,13 +32,14 @@ class ValidationTest < Test::Unit::TestCase #ex = ex_maj_regr #ex = ex_ntua #ex = ex_ntua2 - ex = ex_tum + #ex = ex_tum #ex = ex_local + #ex = ex_lazar_extern #ex = ex_ambit #create_validation(ex) #validate_model(ex) - validate_algorithm(ex) + #validate_algorithm(ex) #validate_split(ex) #xval(ex) @@ -88,6 +89,8 @@ class ValidationTest < Test::Unit::TestCase ex.orig_data = upload_uri end ex.act_feat = "http://localhost/toxmodel/feature#Hamster Carcinogenicity (DSSTOX/CPDB)" + #ex.act_feat = "http://localhost/toxmodel/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)" + ex.train_data = File.join(dataset,"2") ex.test_data = File.join(dataset,"3") begin @@ -128,6 +131,25 @@ class ValidationTest < Test::Unit::TestCase return ex end + def ex_lazar_extern + ex = Example.new + ex.classification = true + ex.alg = "http://188.40.32.88/algorithm/lazar" + ex.train_data = "http://188.40.32.88/dataset/51" + ex.test_data = ex.train_data + ex.orig_data = ex.train_data + #ex.test_data = "http://apps.ideaconsult.net:8080/ambit2/dataset/55" #53 + + ex.alg_params = "feature_generation_uri=http://188.40.32.88/algorithm/fminer" + + ex.act_feat = "http://188.40.32.88/toxcreate/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)" + #ex.act_feat = "http://188.40.32.88/toxcreate/feature#feature#Hamster Carcinogenicity (DSSTOX/CPDB)" + + #ex.test_data = "http://apps.ideaconsult.net:8080/ambit2/dataset/55" #53 + #ex.model = "http://apps.ideaconsult.net:8080/ambit2/model/20" + return ex + end + def ex_ambit ex = Example.new ex.classification = false |