summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2015-08-10 13:26:06 +0200
committerChristoph Helma <helma@in-silico.ch>2015-08-10 13:26:06 +0200
commitb7cd3ebbb858a8891c35c45896f1bdd525f3534e (patch)
treea9df6b1f4fc15f2f953e9a23c6dd00b74a967754 /test
parent23ecfc6fa5ae4913e5cd17b7d58432d1f88d780c (diff)
algorithm libraries added, fminer tests pass
Diffstat (limited to 'test')
-rw-r--r--test/descriptor-long.rb13
-rw-r--r--test/descriptor.rb83
-rw-r--r--test/fminer-long.rb37
-rw-r--r--test/fminer.rb46
4 files changed, 179 insertions, 0 deletions
diff --git a/test/descriptor-long.rb b/test/descriptor-long.rb
new file mode 100644
index 0000000..2752d5a
--- /dev/null
+++ b/test/descriptor-long.rb
@@ -0,0 +1,13 @@
+require_relative "setup.rb"
+class DescriptorLongTest < MiniTest::Test
+
+ def test_dataset_all
+ dataset = OpenTox::Dataset.from_csv_file File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv")
+ d = OpenTox::Algorithm::Descriptor.physchem dataset
+ assert_equal dataset.compounds, d.compounds
+ assert_equal 332, d.features.size
+ assert_equal 332, d.data_entries.first.size
+ d.delete
+ end
+
+end
diff --git a/test/descriptor.rb b/test/descriptor.rb
new file mode 100644
index 0000000..1143b87
--- /dev/null
+++ b/test/descriptor.rb
@@ -0,0 +1,83 @@
+require_relative "setup.rb"
+
+class DescriptorTest < MiniTest::Test
+
+ def test_list
+ # check available descriptors
+ @descriptors = OpenTox::Algorithm::Descriptor::DESCRIPTORS.keys
+ assert_equal 111,@descriptors.size,"wrong num physchem descriptors"
+ @descriptor_values = OpenTox::Algorithm::Descriptor::DESCRIPTOR_VALUES
+ assert_equal 356,@descriptor_values.size,"wrong num physchem descriptors"
+ sum = 0
+ [ @descriptors, @descriptor_values ].each do |desc|
+ {"Openbabel"=>16,"Cdk"=>(desc==@descriptors ? 50 : 295),"Joelib"=>45}.each do |k,v|
+ assert_equal v,desc.select{|x| x=~/^#{k}\./}.size,"wrong num #{k} descriptors"
+ sum += v
+ end
+ end
+ assert_equal (111+356),sum
+ end
+
+ def test_smarts
+ c = OpenTox::Compound.from_smiles "N=C=C1CCC(=F=FO)C1"
+ s = Smarts.find_or_create_by(:smarts => "FF")
+ result = OpenTox::Algorithm::Descriptor.smarts_match c, s
+ assert_equal [1], result
+ smarts = ["CC", "C", "C=C", "CO", "FF", "C1CCCC1", "NN"].collect{|s| Smarts.find_or_create_by(:smarts => s)}
+ result = OpenTox::Algorithm::Descriptor.smarts_match c, smarts
+ assert_equal [1, 1, 1, 0, 1, 1, 0], result
+ smarts_count = [10, 6, 2, 0, 2, 10, 0]
+ result = OpenTox::Algorithm::Descriptor.smarts_count c, smarts
+ assert_equal smarts_count, result
+ 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.12518], result
+ 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 = OpenTox::Compound.from_smiles "CC(=O)CC(C)C#N"
+ result = OpenTox::Algorithm::Descriptor.physchem c, ["Cdk.AtomCount"]
+ assert_equal [17], result
+ 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 [1, 0, 0, 1, 0, 2, 1, 1, 0], result
+ 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
+ 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.size
+ assert_equal 30.8723, result[2]
+ assert_equal 1.12518, result[328]
+ 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" ], true
+ assert_equal 12, result.last.size
+ assert_equal ["Openbabel.logP", "Cdk.AtomCount.nAtom", "Cdk.CarbonTypes.C1SP1", "Cdk.CarbonTypes.C2SP1", "Cdk.CarbonTypes.C1SP2", "Cdk.CarbonTypes.C2SP2", "Cdk.CarbonTypes.C3SP2", "Cdk.CarbonTypes.C1SP3", "Cdk.CarbonTypes.C2SP3", "Cdk.CarbonTypes.C3SP3", "Cdk.CarbonTypes.C4SP3", "Joelib.LogP"], result.first
+ assert_equal [1.12518, 17, 1, 0, 0, 1, 0, 2, 1, 1, 0, 2.65908], result.last
+ end
+
+ def test_dataset_descriptor_parameters
+ dataset = OpenTox::Dataset.from_csv_file File.join(DATA_DIR,"hamster_carcinogenicity.mini.csv")
+ d = OpenTox::Algorithm::Descriptor.physchem dataset, [ "Openbabel.logP", "Cdk.AtomCount", "Cdk.CarbonTypes", "Joelib.LogP" ]
+ assert_kind_of Dataset, d
+ assert_equal dataset.compounds, d.compounds
+ assert_equal dataset.compounds.size, d.data_entries.size
+ assert_equal 12, d.data_entries.first.size
+ end
+
+end
diff --git a/test/fminer-long.rb b/test/fminer-long.rb
new file mode 100644
index 0000000..826f206
--- /dev/null
+++ b/test/fminer-long.rb
@@ -0,0 +1,37 @@
+require_relative "setup.rb"
+
+class FminerTest < MiniTest::Test
+
+ def test_fminer_multicell
+ skip "multicell segfaults"
+ # TODO aborts, probably fminer
+ # or OpenBabel segfault
+ dataset = OpenTox::Dataset.new
+ #multi_cell_call.csv
+ dataset.upload File.join(DATA_DIR,"multi_cell_call.csv")
+ feature_dataset = OpenTox::Algorithm::Fminer.bbrc(dataset)#, :min_frequency => 15)
+ dataset.delete
+ feature_dataset.delete
+ end
+
+ def test_fminer_isscan
+ dataset = OpenTox::Dataset.from_csv_file File.join(DATA_DIR,"ISSCAN-multi.csv")
+ feature_dataset = OpenTox::Algorithm::Fminer.bbrc(dataset)#, :min_frequency => 15)
+ assert_equal feature_dataset.compounds.size, dataset.compounds.size
+ p feature_dataset
+ dataset.delete
+ feature_dataset.delete
+ end
+
+ def test_fminer_kazius
+ dataset = OpenTox::Dataset.from_csv_file File.join(DATA_DIR,"kazius.csv")
+ # TODO reactivate default settings
+ feature_dataset = OpenTox::Algorithm::Fminer.bbrc(dataset, :min_frequency => 20)
+ assert_equal feature_dataset.compounds.size, dataset.compounds.size
+ feature_dataset = Dataset.find feature_dataset.id
+ assert feature_dataset.data_entries.size, dataset.compounds.size
+ dataset.delete
+ feature_dataset.delete
+ end
+
+end
diff --git a/test/fminer.rb b/test/fminer.rb
new file mode 100644
index 0000000..17dcbe1
--- /dev/null
+++ b/test/fminer.rb
@@ -0,0 +1,46 @@
+require_relative "setup.rb"
+
+class FminerTest < MiniTest::Test
+
+ def test_fminer_bbrc
+ dataset = OpenTox::Dataset.from_csv_file File.join(DATA_DIR,"hamster_carcinogenicity.csv")
+ refute_nil dataset.id
+ feature_dataset = OpenTox::Algorithm::Fminer.bbrc dataset
+ feature_dataset = Dataset.find feature_dataset.id
+ assert_equal dataset.compounds.size, feature_dataset.compounds.size
+ assert_equal 54, feature_dataset.features.size
+ assert_equal "C-C-C=C", feature_dataset.features.first.smarts
+ compounds = feature_dataset.compounds
+ smarts = feature_dataset.features
+ match = OpenTox::Algorithm::Descriptor.smarts_match compounds, smarts
+ feature_dataset.data_entries.each_with_index do |fingerprint,i|
+ assert_equal match[i], fingerprint
+ end
+
+ dataset.delete
+ feature_dataset.delete
+ end
+
+ def test_fminer_last
+ skip "last features have to be activated"
+ dataset = OpenTox::Dataset.new
+ dataset.upload File.join(DATA_DIR,"hamster_carcinogenicity.csv")
+ 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]', 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
+ end
+
+end