summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2013-07-02 19:24:46 +0200
committerChristoph Helma <helma@in-silico.ch>2013-07-02 19:24:46 +0200
commitd25022d4100c2cf94c4e5d4df94a7490021c3721 (patch)
tree43b03cf86db0c35c454a7fb069bc1af51738e689
parent8849645c8e9a9ed1b1ae76734e1454c48118f3f6 (diff)
descriptor calculation and initial quantitative models tests.
-rw-r--r--opentox-client-all.rb2
-rw-r--r--opentox-client-short.rb2
-rw-r--r--test/algorithm.rb2
-rw-r--r--test/compound.rb12
-rw-r--r--test/descriptor.rb97
-rw-r--r--test/descriptors.rb100
-rw-r--r--test/fminer.rb30
-rw-r--r--test/lazar-fminer.rb13
-rw-r--r--test/lazar-pc-descriptors.rb16
-rw-r--r--test/model.rb4
10 files changed, 126 insertions, 152 deletions
diff --git a/opentox-client-all.rb b/opentox-client-all.rb
index e4dcec6..fc9cd15 100644
--- a/opentox-client-all.rb
+++ b/opentox-client-all.rb
@@ -3,8 +3,6 @@ require 'openbabel'
all = Dir["test/*.rb"]
exclude = [
"test/setup.rb",
- "test/descriptors.rb",
- "test/lazar-pc-descriptors.rb",
"test/lazarweb.rb",
"test/pc-lazar.rb",
] + Dir["test/toxbank*.rb"]
diff --git a/opentox-client-short.rb b/opentox-client-short.rb
index 982d373..b18ed18 100644
--- a/opentox-client-short.rb
+++ b/opentox-client-short.rb
@@ -3,8 +3,6 @@ require 'openbabel'
all = Dir["test/*.rb"]
exclude = [
"test/setup.rb",
- "test/descriptors.rb",
- "test/lazar-pc-descriptors.rb",
"test/lazar-extended.rb",
"test/validation-long.rb",
"test/dataset-large.rb",
diff --git a/test/algorithm.rb b/test/algorithm.rb
index a07e911..71afd22 100644
--- a/test/algorithm.rb
+++ b/test/algorithm.rb
@@ -10,7 +10,7 @@ end
class AlgorithmTest < MiniTest::Test
def test_set_parameters
- a = OpenTox::Algorithm.new nil, SUBJECTID
+ a = OpenTox::Algorithm::Generic.new nil, SUBJECTID
a.parameters = [
{RDF::DC.title => "test", RDF::OT.paramScope => "mandatory"},
{RDF::DC.title => "test2", RDF::OT.paramScope => "optional"}
diff --git a/test/compound.rb b/test/compound.rb
index 5fd743c..891dc3c 100644
--- a/test/compound.rb
+++ b/test/compound.rb
@@ -72,16 +72,4 @@ class CompoundTest < MiniTest::Test
assert_equal "CHEMBL277500", c.chemblid
end
- def test_match_smarts
- c = OpenTox::Compound.from_smiles "N=C=C1CCC(=F=FO)C1"
- result = OpenTox::Descriptor::Smarts.fingerprint c, "FF"
- assert_equal [1], result.first
- smarts = ["CC", "C", "C=C", "CO", "FF", "C1CCCC1", "NN"]
- result = OpenTox::Descriptor::Smarts.fingerprint c, smarts
- assert_equal [1,1,1,0,1,1,0], result.first
- result = OpenTox::Descriptor::Smarts.count c, smarts
- counts = [10,6,2,0,2,10,0]
- assert_equal counts, result.first
- end
-
end
diff --git a/test/descriptor.rb b/test/descriptor.rb
new file mode 100644
index 0000000..cf67cc3
--- /dev/null
+++ b/test/descriptor.rb
@@ -0,0 +1,97 @@
+require_relative "setup.rb"
+
+begin
+ puts "Service URI is: #{$algorithm[:uri]}"
+rescue
+ puts "Configuration Error: $algorithm[:uri] is not defined in: " + File.join(ENV["HOME"],".opentox","config","test.rb")
+ exit
+end
+
+class DescriptorTest < MiniTest::Test
+
+ def test_list
+ skip "TODO: Test descriptor list"
+ end
+
+ def test_lookup
+ skip "TODO: Test descriptor lookup"
+ end
+
+ def test_match_smarts
+ c = OpenTox::Compound.from_smiles "N=C=C1CCC(=F=FO)C1"
+ result = OpenTox::Algorithm::Descriptor.smarts_match c, "FF"
+ assert_equal 1, result[c.uri]["FF"]
+ smarts = {"CC"=>1, "C"=>1, "C=C"=>1, "CO"=>0, "FF"=>1, "C1CCCC1"=>1, "NN"=>0}
+ result = OpenTox::Algorithm::Descriptor.smarts_match c, smarts.keys
+ assert_equal smarts, result[c.uri]
+ smarts_count = {"CC"=>10, "C"=>6, "C=C"=>2, "CO"=>0, "FF"=>2, "C1CCCC1"=>10, "NN"=>0}
+ result = OpenTox::Algorithm::Descriptor.smarts_count c, smarts_count.keys
+ assert_equal smarts_count, result[c.uri]
+ end
+
+ def test_compound_openbabel_single
+ c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
+ result = OpenTox::Algorithm::Descriptor.openbabel c, ["logP"]
+ assert_equal 1, result[c.uri].size
+ assert_equal 1.12518, result[c.uri]["logP"]
+ end
+
+ def test_compound_cdk_single
+ c = OpenTox::Compound.from_smiles "c1ccccc1"
+ result = OpenTox::Algorithm::Descriptor.cdk c, ["AtomCount"]
+ assert_equal 12, result[c.uri]["nAtom"]
+ c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
+ result = OpenTox::Algorithm::Descriptor.cdk c, ["AtomCount"]
+ assert_equal 17, result[c.uri]["nAtom"]
+ result = OpenTox::Algorithm::Descriptor.cdk c, ["CarbonTypes"]
+ c_types = {"C1SP1"=>1, "C2SP1"=>0, "C1SP2"=>0, "C2SP2"=>1, "C3SP2"=>0, "C1SP3"=>2, "C2SP3"=>1, "C3SP3"=>1, "C4SP3"=>0}
+ assert_equal c_types, result[c.uri]
+ end
+
+ def test_compound_joelib_single
+ c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
+ result = OpenTox::Algorithm::Descriptor.joelib c, ["LogP"]
+ puts result[c.uri]
+ assert_equal 2.65908, result[c.uri]["LogP"]
+ end
+
+ def test_compound_all
+ a = OpenTox::Algorithm::Generic.new File.join($algorithm[:uri],"descriptor"), SUBJECTID
+ c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
+ dataset_uri = a.run :compound_uri => c.uri
+ d = OpenTox::Dataset.new dataset_uri, SUBJECTID
+ assert_equal 340, d.data_entries[0].size
+ d.delete
+ end
+
+ def test_compound_descriptor_parameters
+ c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
+ result = OpenTox::Algorithm::Descriptor.physchem c, [ "openbabel.logP", "cdk.AtomCount", "cdk.CarbonTypes", "joelib.LogP" ]
+ puts result.inspect
+ assert_equal 12, result[0].size
+ assert_equal [[1.12518, 17.0, 1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 1.0, 0.0, 2.65908]], result
+ end
+
+ def test_dataset_descriptor_parameters
+ dataset = OpenTox::Dataset.new nil, SUBJECTID
+ dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv")
+ d = OpenTox::Algorithm::Descriptor.physchem dataset, [ "openbabel.logP", "cdk.AtomCount", "cdk.CarbonTypes", "joelib.LogP" ]
+ puts d.uri
+ #d = OpenTox::Dataset.new result_uri, SUBJECTID
+ assert_equal dataset.compounds.size, d.data_entries.size
+ assert_equal 12, d.data_entries[0].size
+ d.delete
+ end
+
+ def test_dataset_all
+ a = OpenTox::Algorithm::Generic.new File.join($algorithm[:uri],"descriptor"), SUBJECTID
+ dataset = OpenTox::Dataset.new nil, SUBJECTID
+ dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv")
+ result_uri = a.run :dataset_uri => dataset.uri
+ d = OpenTox::Dataset.new result_uri, SUBJECTID
+ assert_equal dataset.compounds.size, d.data_entries.size
+ assert_equal 340, d.data_entries[0].size
+ d.delete
+ end
+
+end
diff --git a/test/descriptors.rb b/test/descriptors.rb
deleted file mode 100644
index 9e8d1e7..0000000
--- a/test/descriptors.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require_relative "setup.rb"
-
-begin
- puts "Service URI is: #{$algorithm[:uri]}"
-rescue
- puts "Configuration Error: $algorithm[:uri] is not defined in: " + File.join(ENV["HOME"],".opentox","config","test.rb")
- exit
-end
-
-class DescriptorTest < MiniTest::Test
-
- def test_compound_openbabel_single
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor","openbabel","logP"), SUBJECTID
- c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
- d = OpenTox::Dataset.new(a.run(:compound_uri => c.uri), SUBJECTID)
- assert_equal 1, d.data_entries.size
- assert_equal 1, d.data_entries[0].size
- assert_equal 1.12518, d.data_entries[0][0]
- d.delete
- end
-
- def test_compound_cdk_single
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor","cdk","AtomCount"), SUBJECTID
- c = OpenTox::Compound.from_smiles "c1ccccc1"
- d = OpenTox::Dataset.new(a.run(:compound_uri => c.uri), SUBJECTID)
- assert_equal 12, d.data_entries[0][0]
- d.delete
- c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
- d = OpenTox::Dataset.new(a.run(:compound_uri => c.uri), SUBJECTID)
- assert_equal 17, d.data_entries[0][0]
- d.delete
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor","cdk","CarbonTypes"), SUBJECTID
- d = OpenTox::Dataset.new(a.run(:compound_uri => c.uri), SUBJECTID)
- assert_equal [1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 1.0, 0.0], d.data_entries[0]
- d.delete
- end
-
- def test_compound_joelib_single
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor","joelib","LogP"), SUBJECTID
- c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
- d = OpenTox::Dataset.new(a.run(:compound_uri => c.uri), SUBJECTID)
- assert_equal 2.65908, d.data_entries[0][0]
- d.delete
- end
-
- def test_compound_all
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor"), SUBJECTID
- c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
- dataset_uri = a.run :compound_uri => c.uri
- d = OpenTox::Dataset.new dataset_uri, SUBJECTID
- assert_equal 340, d.data_entries[0].size
- d.delete
- end
-
- def test_compound_descriptor_parameters
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor"), SUBJECTID
- descriptor_uris = [
- File.join($algorithm[:uri],"descriptor","openbabel","logP"),
- File.join($algorithm[:uri],"descriptor","cdk","AtomCount"),
- File.join($algorithm[:uri],"descriptor","cdk","CarbonTypes"),
- File.join($algorithm[:uri],"descriptor","joelib","LogP"),
- ]
- compound = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
- result_uri = a.run :compound_uri => compound.uri, :descriptor_uris => descriptor_uris
- d = OpenTox::Dataset.new result_uri, SUBJECTID
- assert_equal 12, d.features.size
- assert_equal 12, d.data_entries[0].size
- assert_equal [[1.12518, 17.0, 1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 1.0, 0.0, 2.65908]], d.data_entries
- d.delete
- end
-
- def test_dataset_descriptor_parameters
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor"), SUBJECTID
- descriptor_uris = [
- File.join($algorithm[:uri],"descriptor","openbabel","logP"),
- File.join($algorithm[:uri],"descriptor","cdk","AtomCount"),
- File.join($algorithm[:uri],"descriptor","cdk","CarbonTypes"),
- File.join($algorithm[:uri],"descriptor","joelib","LogP"),
- ]
- dataset = OpenTox::Dataset.new nil, SUBJECTID
- dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv")
- result_uri = a.run :dataset_uri => dataset.uri, :descriptor_uris => descriptor_uris
- d = OpenTox::Dataset.new result_uri, SUBJECTID
- assert_equal dataset.compounds.size, d.data_entries.size
- assert_equal 12, d.data_entries[0].size
- d.delete
- end
-
- def test_dataset_all
- a = OpenTox::Algorithm.new File.join($algorithm[:uri],"descriptor"), SUBJECTID
- dataset = OpenTox::Dataset.new nil, SUBJECTID
- dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv")
- result_uri = a.run :dataset_uri => dataset.uri
- d = OpenTox::Dataset.new result_uri, SUBJECTID
- assert_equal dataset.compounds.size, d.data_entries.size
- assert_equal 340, d.data_entries[0].size
- d.delete
- end
-
-end
diff --git a/test/fminer.rb b/test/fminer.rb
index 3e25d9c..e950492 100644
--- a/test/fminer.rb
+++ b/test/fminer.rb
@@ -4,35 +4,33 @@ class FminerTest < MiniTest::Test
def test_fminer
- @dataset = OpenTox::Dataset.new nil, SUBJECTID
- @dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv")
- assert_equal @dataset.uri.uri?, true
+ dataset = OpenTox::Dataset.new nil, SUBJECTID
+ dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv")
+ assert_equal dataset.uri.uri?, true
- fminer = OpenTox::Algorithm.new File.join($algorithm[:uri],"fminer","bbrc"), SUBJECTID
- dataset_uri = fminer.run :dataset_uri => @dataset.uri
+ dataset_uri = OpenTox::Algorithm::Fminer.bbrc :dataset_uri => dataset.uri
feature_dataset = OpenTox::Dataset.new dataset_uri, SUBJECTID
assert_equal dataset_uri.uri?, true
- assert_equal @dataset.compounds.size, feature_dataset.compounds.size
+ assert_equal dataset.compounds.size, feature_dataset.compounds.size
assert_equal 54, feature_dataset.features.size
assert_equal '[#6&A]-[#6&A]-[#6&A]=[#6&A]', OpenTox::Feature.new(feature_dataset.features.first.uri, SUBJECTID).title
- feature_dataset.compounds.each_with_index do |c,i|
- match = OpenTox::Descriptor::Smarts.fingerprint c, feature_dataset.features.collect{|f| f.title}
- assert_equal match.first, feature_dataset.data_entries[i].collect{|v| v.to_i}
- feature_dataset.features.each_with_index do |f,j|
- match = OpenTox::Descriptor::Smarts.fingerprint c, f.title
- assert_equal match[0][0], feature_dataset.data_entries[i][j].to_i
+ compounds = feature_dataset.compounds
+ smarts = feature_dataset.features.collect{|f| f.title}
+ match = OpenTox::Algorithm::Descriptor.smarts_match compounds, smarts
+ compounds.each_with_index do |c,i|
+ smarts.each_with_index do |s,j|
+ assert_equal match[c.uri][s], feature_dataset.data_entries[i][j].to_i
end
end
- fminer = OpenTox::Algorithm.new File.join($algorithm[:uri],"fminer","last"), SUBJECTID
- dataset_uri = fminer.run :dataset_uri => @dataset.uri
+ dataset_uri = OpenTox::Algorithm::Fminer.last :dataset_uri => dataset.uri
feature_dataset = OpenTox::Dataset.new dataset_uri, SUBJECTID
assert_equal dataset_uri.uri?, true
- assert_equal @dataset.compounds.size, feature_dataset.compounds.size
+ assert_equal dataset.compounds.size, feature_dataset.compounds.size
assert_equal 21, feature_dataset.features.size
assert_equal '[#6&A]-[#6&a]:[#6&a]:[#6&a]:[#6&a]:[#6&a]', OpenTox::Feature.new(feature_dataset.features.first.uri, SUBJECTID).title
- @dataset.delete
+ dataset.delete
feature_dataset.delete
end
diff --git a/test/lazar-fminer.rb b/test/lazar-fminer.rb
index 8d57070..6558f53 100644
--- a/test/lazar-fminer.rb
+++ b/test/lazar-fminer.rb
@@ -6,11 +6,11 @@ class LazarFminerTest < MiniTest::Test
dataset = OpenTox::Dataset.new nil, SUBJECTID
dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv")
assert_equal dataset.uri.uri?, true
-
- lazar = OpenTox::Algorithm.new File.join($algorithm[:uri],"lazar"), SUBJECTID
- model_uri = lazar.run :dataset_uri => dataset.uri, :feature_generation_uri => File.join($algorithm[:uri],"fminer","bbrc")
+ model_uri = OpenTox::Model::Lazar.create :dataset_uri => dataset.uri, :feature_generation_uri => File.join($algorithm[:uri],"fminer","bbrc")
+ #model_uri = "http://localhost:8086/model/1fec26fe-1df1-4746-95bd-7d90dd8dd172"
+ puts model_uri
assert_equal model_uri.uri?, true
- model = OpenTox::Model.new model_uri, SUBJECTID
+ model = OpenTox::Model::Lazar.new model_uri, SUBJECTID
assert_equal model.uri.uri?, true
feature_dataset_uri = model[RDF::OT.featureDataset]
feature_dataset = OpenTox::Dataset.new feature_dataset_uri , SUBJECTID
@@ -18,7 +18,6 @@ class LazarFminerTest < MiniTest::Test
assert_equal 54, feature_dataset.features.size
assert_equal '[#6&A]-[#6&A]-[#6&A]=[#6&A]', OpenTox::Feature.new(feature_dataset.features.first.uri, SUBJECTID).title
-
[ {
:compound => OpenTox::Compound.from_inchi("InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H"),
:prediction => "false",
@@ -29,7 +28,7 @@ class LazarFminerTest < MiniTest::Test
:prediction => "false",
:confidence => 0.3639589577089577
} ].each do |example|
- prediction_uri = model.run :compound_uri => example[:compound].uri
+ prediction_uri = model.predict :compound_uri => example[:compound].uri
puts prediction_uri
prediction_dataset = OpenTox::Dataset.new prediction_uri, SUBJECTID
assert_equal prediction_dataset.uri.uri?, true
@@ -43,7 +42,7 @@ class LazarFminerTest < MiniTest::Test
compound_dataset = OpenTox::Dataset.new nil, SUBJECTID
compound_dataset.upload File.join(DATA_DIR,"EPAFHM.mini.csv")
assert_equal compound_dataset.uri.uri?, true
- prediction_uri = model.run :dataset_uri => dataset.uri
+ prediction_uri = model.predict :dataset_uri => dataset.uri
prediction = OpenTox::Dataset.new prediction_uri, SUBJECTID
assert_equal prediction.uri.uri?, true
diff --git a/test/lazar-pc-descriptors.rb b/test/lazar-pc-descriptors.rb
index 35663db..23ba303 100644
--- a/test/lazar-pc-descriptors.rb
+++ b/test/lazar-pc-descriptors.rb
@@ -1,25 +1,21 @@
require_relative "setup.rb"
-class LazarPcDescriptorTest < MiniTest::Unit::TestCase
+class LazarPcDescriptorTest < MiniTest::Test
def test_lazar_pc_descriptors
-#=begin
- openbabel_descriptors = OpenTox::RestClientWrapper.get(File.join($algorithm[:uri],"descriptor","openbabel"), :content_type => "text/uri-list").split("\n")
dataset = OpenTox::Dataset.new nil, SUBJECTID
dataset.upload File.join(DATA_DIR,"EPAFHM.mini.csv")
assert_equal dataset.uri.uri?, true
- lazar = OpenTox::Algorithm.new File.join($algorithm[:uri],"lazar")
- model_uri = lazar.run :dataset_uri => dataset.uri, :feature_generation_uri => File.join($algorithm[:uri],"descriptor"), :descriptor_uris => openbabel_descriptors#, :pc_type => "geometrical"
+ model_uri = OpenTox::Model::Lazar.create :dataset_uri => dataset.uri, :feature_generation_uri => File.join($algorithm[:uri],"descriptor","openbabel"), :descriptors => [ "atoms", "bonds", "dbonds", "HBA1", "HBA2", "HBD", "MP", "MR", "MW", "nF", "sbonds", "tbonds", "TPSA"]
+
puts model_uri
- model = OpenTox::Model.new model_uri, SUBJECTID
+ model = OpenTox::Model::Lazar.new model_uri, SUBJECTID
assert_equal model_uri.uri?, true
-#=end
-
- #model = OpenTox::Model.new "http://localhost:8086/model/3c21f9d6-4bb0-48f2-b796-d610efbc3497"
- prediction_uri = model.run :compound_uri => "#{$compound[:uri]}/InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H"
+ prediction_uri = model.predict :compound_uri => "#{$compound[:uri]}/InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H"
prediction = OpenTox::Dataset.new prediction_uri, SUBJECTID
assert_equal prediction.uri.uri?, true
+ #TODO check correct prediction
puts prediction.uri
#mkvar(`bash #{SHELL_DIR}/lazar_p_pc.sh`)
#puts "lazar_p_pc: '#{ENV['lazar_p_pc']}'"
diff --git a/test/model.rb b/test/model.rb
index 4038f2a..3ba50f4 100644
--- a/test/model.rb
+++ b/test/model.rb
@@ -10,7 +10,7 @@ end
class ModelTest < MiniTest::Test
def test_01_create_and_set_parameters
- a = OpenTox::Model.new nil, SUBJECTID
+ a = OpenTox::Model::Generic.new nil, SUBJECTID
a.title = "test model"
a.parameters = [
{RDF::DC.title => "test", RDF::OT.paramScope => "mandatory"},
@@ -26,7 +26,7 @@ class ModelTest < MiniTest::Test
a[RDF::OT.dependentVariables] = "http://webservices.in-silico.ch/feature/LC50_mmol"
a[RDF::OT.featureDataset] = "http://webservices.in-silico.ch/dataset/4964"
a.put
- a = OpenTox::Model.new a.uri, SUBJECTID
+ a = OpenTox::Model::Generic.new a.uri, SUBJECTID
assert_equal "test model", a.title
assert_equal 2, a.parameters.size
p = a.parameters.collect{|p| p if p[RDF::DC.title] == "test"}.compact.first