diff options
Diffstat (limited to 'test/lazar-physchem-long.rb')
-rw-r--r-- | test/lazar-physchem-long.rb | 82 |
1 files changed, 47 insertions, 35 deletions
diff --git a/test/lazar-physchem-long.rb b/test/lazar-physchem-long.rb index 18f6bff..39e353e 100644 --- a/test/lazar-physchem-long.rb +++ b/test/lazar-physchem-long.rb @@ -5,18 +5,9 @@ class LazarPhyschemDescriptorTest < MiniTest::Test def test_lazar_pc_descriptors # check available descriptors - @descriptors = OpenTox::Algorithm::Descriptor.physchem_descriptors.keys - assert_equal 111,@descriptors.size,"wrong num physchem descriptors" - @descriptor_values = OpenTox::Algorithm::Descriptor.physchem_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 + @descriptors = OpenTox::Algorithm::Descriptor::DESCRIPTORS.keys + assert_equal 111,@descriptors.size,"wrong number of physchem descriptors" + @descriptor_values = OpenTox::Algorithm::Descriptor::DESCRIPTOR_VALUES # select descriptors for test @num_features_offset = 0 @@ -32,10 +23,8 @@ class LazarPhyschemDescriptorTest < MiniTest::Test puts "Descriptors: #{@descriptors}" # UPLOAD DATA - @dataset = OpenTox::Dataset.new - @dataset.upload File.join(DATA_DIR,"EPAFHM.medi.csv") - assert_equal @dataset.uri.uri?, true - puts "Dataset: "+@dataset.uri + @dataset = OpenTox::MeasuredDataset.from_csv_file File.join(DATA_DIR,"EPAFHM.medi.csv") + puts "Dataset: "+@dataset.id @compound_smiles = "CC(C)(C)CN" @compound_inchi = "InChI=1S/C5H13N/c1-5(2,3)4-6/h4,6H2,1-3H3" @@ -53,8 +42,8 @@ class LazarPhyschemDescriptorTest < MiniTest::Test def build_model_and_predict(precompute_feature_dataset=true) - model_params = {:dataset_uri => @dataset.uri} - feat_gen_uri = File.join($algorithm[:uri],"descriptor","physchem") + model_params = {:dataset => @dataset} + #feat_gen_uri = File.join($algorithm[:uri],"descriptor","physchem") if precompute_feature_dataset # PRECOMPUTE FEATURES @@ -63,26 +52,46 @@ class LazarPhyschemDescriptorTest < MiniTest::Test f.puts File.read(File.join(DATA_DIR,"EPAFHM.medi.csv")) f.puts "\"#{@compound_smiles}\"," f.close - d = OpenTox::Dataset.new - d.upload p - model_params[:feature_dataset_uri] = OpenTox::Algorithm::Generic.new(feat_gen_uri).run({:dataset_uri => d.uri, :descriptors => @descriptors}) + d = OpenTox::Dataset.from_csv_file p + descriptors = OpenTox::Algorithm::Descriptor.physchem(d.compounds, @descriptors) + #model_params[:feature_dataset_uri] = OpenTox::Algorithm::Generic.new(feat_gen_uri).run({:dataset_uri => d.uri, :descriptors => @descriptors}) else model_params[:feature_generation_uri] = feat_gen_uri model_params[:descriptors] = @descriptors end # BUILD MODEL - model_uri = OpenTox::Model::Lazar.create model_params - puts "Model: "+model_uri - model = OpenTox::Model::Lazar.new model_uri - assert_equal model_uri.uri?, true - puts "Predicted variable: "+model.predicted_variable + + #p descriptors + feature_dataset = OpenTox::CalculatedDataset.new + feature_dataset.compounds = @dataset.compounds + feature_dataset.data_entries = descriptors + feature_dataset.features = @descriptors.collect{|d| OpenTox::Feature.find_or_create_by(:title => d)} + feature_dataset["inchis"].each do |inchi| + assert_kind_of String, inchi + end + feature_dataset["feature_ids"].each do |id| + assert_kind_of BSON::ObjectId, id + end + feature_dataset.data_entries.each do |entry| + #p entry + assert_kind_of Array, entry + entry.each do |e| + #p e + assert_kind_of Float, e + end + end + feature_dataset.save + model = OpenTox::Model::Lazar.create @dataset, feature_dataset + #model = OpenTox::Model::Lazar.new model_uri + #assert_equal model_uri.uri?, true + #puts "Predicted variable: "+model.predicted_variable # CHECK FEATURE DATASET - feature_dataset_uri = model.metadata[RDF::OT.featureDataset].first - puts "Feature dataset: #{feature_dataset_uri}" - feature_dataset = OpenTox::Dataset.new(feature_dataset_uri) - assert_equal @dataset.compounds.size,feature_dataset.compounds.size-(precompute_feature_dataset ? 1 : 0),"num compounds in feature dataset not correct" + #feature_dataset_uri = model.metadata[RDF::OT.featureDataset].first + #puts "Feature dataset: #{feature_dataset_uri}" + #feature_dataset = OpenTox::Dataset.new(feature_dataset_uri) + assert_equal @dataset.compounds.size,feature_dataset.compounds.size,"Incorrect number of compounds in feature dataset" features = feature_dataset.features feature_titles = features.collect{|f| f.title} @descriptors.each do |d| @@ -96,14 +105,17 @@ class LazarPhyschemDescriptorTest < MiniTest::Test assert feature_titles.include?(d),"feature not found #{d} in feature dataset #{feature_titles.inspect}" end end - assert_equal (@descriptors.size+@num_features_offset),features.size,"wrong num features in feature dataset" + assert_equal @descriptors.size,features.size,"Incorrect number of features in feature dataset" + #assert_equal (@descriptors.size+@num_features_offset),features.size,"wrong num features in feature dataset" # predict compound compound_uri = "#{$compound[:uri]}/#{@compound_inchi}" - prediction_uri = model.predict :compound_uri => compound_uri - prediction = OpenTox::Dataset.new prediction_uri - assert_equal prediction.uri.uri?, true - puts "Prediction "+prediction.uri + compound = OpenTox::Compound.new @compound_inchi + prediction = model.predict :compound => compound + p prediction + #prediction = OpenTox::Dataset.new prediction_uri + #assert_equal prediction.uri.uri?, true + #puts "Prediction "+prediction.uri # check prediction assert prediction.features.collect{|f| f.uri}.include?(model.predicted_variable),"prediction feature #{model.predicted_variable} not included prediction dataset #{prediction.features.collect{|f| f.uri}}" |