diff options
author | Christoph Helma <helma@in-silico.ch> | 2015-07-19 21:24:41 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2015-07-19 21:24:41 +0200 |
commit | 546d4ac32cb064d678696aea67984adf63178d20 (patch) | |
tree | 3b4a412bf472b3f450c0e1d8d7aa3aa45840c952 | |
parent | 2b3faa2e52307a76ce25becfb4158ea6752fb870 (diff) |
lazar predictions working in principle
-rw-r--r-- | Gemfile | 1 | ||||
-rw-r--r-- | opentox-test.gemspec | 1 | ||||
-rw-r--r-- | test/descriptor-long.rb | 6 | ||||
-rw-r--r-- | test/descriptor.rb | 31 | ||||
-rw-r--r-- | test/feature.rb | 1 | ||||
-rw-r--r-- | test/fminer.rb | 37 | ||||
-rw-r--r-- | test/lazar-fminer.rb | 22 |
7 files changed, 53 insertions, 46 deletions
@@ -1,3 +1,4 @@ source 'http://rubygems.org' gemspec gem "opentox-client", :path => "../opentox-client" +gem "opentox-algorithm", :path => "../algorithm" diff --git a/opentox-test.gemspec b/opentox-test.gemspec index 713b631..4dcfe92 100644 --- a/opentox-test.gemspec +++ b/opentox-test.gemspec @@ -18,6 +18,7 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency 'minitest' gem.add_runtime_dependency "opentox-client" + gem.add_runtime_dependency "opentox-algorithm" gem.add_runtime_dependency 'capybara'#, "= 2.1.0" gem.add_runtime_dependency 'capybara-webkit'#, "= 1.0.0" gem.post_install_message = "Please configure test in ~/.opentox/config/test.rb" diff --git a/test/descriptor-long.rb b/test/descriptor-long.rb index e33eea1..04ab8c5 100644 --- a/test/descriptor-long.rb +++ b/test/descriptor-long.rb @@ -13,9 +13,9 @@ class DescriptorLongTest < MiniTest::Test dataset = OpenTox::Dataset.new dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv") d = OpenTox::Algorithm::Descriptor.physchem dataset - assert_equal dataset.compounds.size, d.data_entries.size - assert_equal 332, d.data_entries[0].size - d.delete + assert_equal dataset.compounds.size, d.keys.size + assert_equal 332, d.first.last.size + #d.delete end end diff --git a/test/descriptor.rb b/test/descriptor.rb index ac5477f..89ea457 100644 --- a/test/descriptor.rb +++ b/test/descriptor.rb @@ -20,44 +20,44 @@ class DescriptorTest < MiniTest::Test def test_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"] + assert_equal 1, result[c]["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] + assert_equal smarts, result[c] 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] + assert_equal smarts_count, result[c] end def test_compound_openbabel_single c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N" result = OpenTox::Algorithm::Descriptor.physchem c, ["Openbabel.logP"] - assert_equal 1, result[c.uri].size - assert_equal 1.12518, result[c.uri]["Openbabel.logP"] + assert_equal 1, result[c].size + assert_equal 1.12518, result[c]["Openbabel.logP"] end def test_compound_cdk_single c = OpenTox::Compound.from_smiles "c1ccccc1" result = OpenTox::Algorithm::Descriptor.physchem c, ["Cdk.AtomCount"] - assert_equal 12, result[c.uri]["Cdk.AtomCount.nAtom"] + assert_equal 12, result[c]["Cdk.AtomCount.nAtom"] c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N" result = OpenTox::Algorithm::Descriptor.physchem c, ["Cdk.AtomCount"] - assert_equal 17, result[c.uri]["Cdk.AtomCount.nAtom"] + assert_equal 17, result[c]["Cdk.AtomCount.nAtom"] result = OpenTox::Algorithm::Descriptor.physchem c, ["Cdk.CarbonTypes"] c_types = {"Cdk.CarbonTypes.C1SP1"=>1, "Cdk.CarbonTypes.C2SP1"=>0, "Cdk.CarbonTypes.C1SP2"=>0, "Cdk.CarbonTypes.C2SP2"=>1, "Cdk.CarbonTypes.C3SP2"=>0, "Cdk.CarbonTypes.C1SP3"=>2, "Cdk.CarbonTypes.C2SP3"=>1, "Cdk.CarbonTypes.C3SP3"=>1, "Cdk.CarbonTypes.C4SP3"=>0} - assert_equal c_types, result[c.uri] + assert_equal c_types, result[c] end def test_compound_joelib_single c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N" result = OpenTox::Algorithm::Descriptor.physchem c, ["Joelib.LogP"] - assert_equal 2.65908, result[c.uri]["Joelib.LogP"] + assert_equal 2.65908, result[c]["Joelib.LogP"] end def test_compound_all c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N" result = OpenTox::Algorithm::Descriptor.physchem c - assert_equal 332, result[c.uri].size + assert_equal 332, result[c].size { "Cdk.LongestAliphaticChain.nAtomLAC"=>5, "Joelib.count.HeavyBonds"=>7, @@ -65,25 +65,24 @@ class DescriptorTest < MiniTest::Test #"Cdk.LengthOverBreadthDescriptor.LOBMAX"=>1.5379006098352144, #"Joelib.GeometricalShapeCoefficient"=>5.210533887682899, }.each do |d,v| - assert_equal v, result[c.uri][d] + assert_equal v, result[c][d] end 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" ] - assert_equal 12, result[c.uri].size + assert_equal 12, result[c].size expect = {"Openbabel.logP"=>1.12518, "Cdk.AtomCount.nAtom"=>17, "Cdk.CarbonTypes.C1SP1"=>1, "Cdk.CarbonTypes.C2SP1"=>0, "Cdk.CarbonTypes.C1SP2"=>0, "Cdk.CarbonTypes.C2SP2"=>1, "Cdk.CarbonTypes.C3SP2"=>0, "Cdk.CarbonTypes.C1SP3"=>2, "Cdk.CarbonTypes.C2SP3"=>1, "Cdk.CarbonTypes.C3SP3"=>1, "Cdk.CarbonTypes.C4SP3"=>0, "Joelib.LogP"=>2.65908} - assert_equal expect, result[c.uri] + assert_equal expect, result[c] end def test_dataset_descriptor_parameters dataset = OpenTox::Dataset.new dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv") d = OpenTox::Algorithm::Descriptor.physchem dataset, [ "Openbabel.logP", "Cdk.AtomCount", "Cdk.CarbonTypes", "Joelib.LogP" ] - assert_equal dataset.compounds.size, d.data_entries.size - assert_equal 12, d.data_entries[0].size - d.delete + assert_equal dataset.compounds.size, d.keys.size + assert_equal 12, d.first.last.size end end diff --git a/test/feature.rb b/test/feature.rb index 7fa266b..da7437a 100644 --- a/test/feature.rb +++ b/test/feature.rb @@ -11,7 +11,6 @@ class FeatureTest < MiniTest::Test list = OpenTox::Feature.all listsize1 = list.length - p list assert_equal true, list.collect{|f| f.id}.include?(@feature.id) # modify feature @feature2 = OpenTox::Feature.find(@feature.id) diff --git a/test/fminer.rb b/test/fminer.rb index be61add..663aa03 100644 --- a/test/fminer.rb +++ b/test/fminer.rb @@ -5,20 +5,24 @@ class FminerTest < MiniTest::Test def test_fminer_bbrc dataset = OpenTox::Dataset.new dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv") - assert_equal dataset.uri.uri?, true - - dataset_uri = OpenTox::Algorithm::Fminer.bbrc :dataset_uri => dataset.uri - feature_dataset = OpenTox::Dataset.new dataset_uri - assert_equal dataset_uri.uri?, true + refute_nil dataset.id + + feature_dataset = OpenTox::Algorithm::Fminer.bbrc :dataset => dataset + # TODO do we need tasks here? + #task = OpenTox::Algorithm::Fminer.bbrc :dataset => dataset#.uri + #task.wait + #feature_dataset = task.result + #p task.code + #p feature_dataset.features 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).title + assert_equal '[#6&A]-[#6&A]-[#6&A]=[#6&A]', feature_dataset.features.first.title compounds = feature_dataset.compounds - smarts = feature_dataset.features.collect{|f| f.title} + smarts = feature_dataset.features.collect{|f| f.smarts} 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 + assert_equal match[i][j], feature_dataset.data_entries[i][j].to_i end end @@ -29,14 +33,19 @@ class FminerTest < MiniTest::Test def test_fminer_last dataset = OpenTox::Dataset.new dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv") - assert_equal dataset.uri.uri?, true - - dataset_uri = OpenTox::Algorithm::Fminer.last :dataset_uri => dataset.uri - feature_dataset = OpenTox::Dataset.new dataset_uri - assert_equal dataset_uri.uri?, true + feature_dataset = OpenTox::Algorithm::Fminer.last :dataset => dataset 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).title + assert_equal '[#6&A]-[#6&a]:[#6&a]:[#6&a]:[#6&a]:[#6&a]', feature_dataset.features.first.smarts + + compounds = feature_dataset.compounds + smarts = feature_dataset.features.collect{|f| f.smarts} + 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[i][j], feature_dataset.data_entries[i][j].to_i + end + end dataset.delete feature_dataset.delete diff --git a/test/lazar-fminer.rb b/test/lazar-fminer.rb index 4f146c6..e2b689d 100644 --- a/test/lazar-fminer.rb +++ b/test/lazar-fminer.rb @@ -5,16 +5,14 @@ class LazarFminerTest < MiniTest::Test def test_lazar_fminer dataset = OpenTox::Dataset.new dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv") - assert_equal dataset.uri.uri?, true - model_uri = OpenTox::Model::Lazar.create :dataset_uri => dataset.uri, :feature_generation_uri => File.join($algorithm[:uri],"fminer","bbrc") - assert_equal model_uri.uri?, true - model = OpenTox::Model::Lazar.new model_uri - assert_equal model.uri.uri?, true - feature_dataset_uri = model[RDF::OT.featureDataset] - feature_dataset = OpenTox::Dataset.new feature_dataset_uri + model = OpenTox::Model::Lazar.create OpenTox::Algorithm::Fminer.bbrc(:dataset => dataset) + feature_dataset = OpenTox::Dataset.find model.feature_dataset_id 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).title + feature_dataset.data_entries.each do |e| + assert_equal e.size, feature_dataset.features.size + end + assert_equal '[#6&A]-[#6&A]-[#6&A]=[#6&A]', feature_dataset.features.first.title [ { :compound => OpenTox::Compound.from_inchi("InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H"), @@ -25,10 +23,10 @@ class LazarFminerTest < MiniTest::Test :prediction => "false", :confidence => 0.3639589577089577 } ].each do |example| - prediction_uri = model.predict :compound_uri => example[:compound].uri - #puts prediction_uri - prediction_dataset = OpenTox::Dataset.new prediction_uri - assert_equal prediction_dataset.uri.uri?, true + prediction = model.predict :compound => example[:compound] + p prediction + p prediction.features + p prediction.compounds prediction = prediction_dataset.predictions.select{|p| p[:compound].uri == example[:compound].uri}.first assert_equal example[:prediction], prediction[:value] assert_equal example[:confidence], prediction[:confidence] |