summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorhelma@in-silico.ch <helma@in-silico.ch>2018-10-10 14:58:44 +0200
committerhelma@in-silico.ch <helma@in-silico.ch>2018-10-10 14:58:44 +0200
commit5d4ab5553e1928e573aa6671ba6a273308b24e21 (patch)
treeeb7ec29c1356cf4ef1a88f0b9da36d273a99ef8c /lib
parent3f793a7be36355f7a14d0fcb4198715124b4c2b9 (diff)
more differentiated feature classes
Diffstat (limited to 'lib')
-rw-r--r--lib/feature.rb62
-rw-r--r--lib/lazar.rb1
-rw-r--r--lib/physchem.rb8
3 files changed, 45 insertions, 26 deletions
diff --git a/lib/feature.rb b/lib/feature.rb
index 1d18a00..e6fede6 100644
--- a/lib/feature.rb
+++ b/lib/feature.rb
@@ -2,23 +2,11 @@ module OpenTox
# Basic feature class
class Feature
- field :measured, type: Boolean
- field :calculated, type: Boolean
- field :category, type: String
- field :unit, type: String
- field :conditions, type: Hash
-
- # Is it a nominal feature
- # @return [TrueClass,FalseClass]
- def nominal?
- self.class == NominalFeature
- end
+ end
- # Is it a numeric feature
- # @return [TrueClass,FalseClass]
- def numeric?
- self.class == NumericFeature
- end
+ # Original ID (e.g. from CSV input)
+ class OriginalId < Feature
+ field :dataset_id, type: BSON::ObjectId
end
# Feature for categorical variables
@@ -28,10 +16,46 @@ module OpenTox
# Feature for quantitative variables
class NumericFeature < Feature
+ field :unit, type: String
+ end
+
+ # Nominal biological activity
+ class NominalBioActivity < NominalFeature
+ field :original_feature_id, type: BSON::ObjectId
+ field :transformation, type: Hash
+ end
+
+ # Numeric biological activity
+ class NumericBioActivity < NumericFeature
+ field :original_feature_id, type: BSON::ObjectId
+ field :transformation, type: String
+ end
+
+ # Nominal lazar prediction
+ class NominalLazarPrediction < NominalFeature
+ field :model_id, type: BSON::ObjectId
+ field :training_feature_id, type: BSON::ObjectId
+ end
+
+ # Numeric lazar prediction
+ class NumericLazarPrediction < NumericFeature
+ field :model_id, type: BSON::ObjectId
+ field :training_feature_id, type: BSON::ObjectId
+ end
+
+ class NominalSubstanceProperty < NominalFeature
+ end
+
+ class NumericSubstanceProperty < NumericFeature
+ end
+
+ class NanoParticleProperty < NumericSubstanceProperty
+ field :category, type: String
+ field :conditions, type: Hash
end
# Feature for SMARTS fragments
- class Smarts < NominalFeature
+ class Smarts < Feature
field :smarts, type: String
index "smarts" => 1
# Create feature from SMARTS string
@@ -42,8 +66,4 @@ module OpenTox
end
end
- class OriginalId < Feature
- field :dataset_id, type: BSON::ObjectId
- end
-
end
diff --git a/lib/lazar.rb b/lib/lazar.rb
index 32f0317..d032282 100644
--- a/lib/lazar.rb
+++ b/lib/lazar.rb
@@ -94,6 +94,5 @@ CLASSES = ["Feature","Substance","Dataset","LazarPrediction","CrossValidation","
"train-test-validation.rb",
"leave-one-out-validation.rb",
"crossvalidation.rb",
- #"experiment.rb",
"import.rb",
].each{ |f| require_relative f }
diff --git a/lib/physchem.rb b/lib/physchem.rb
index 07df867..2af043b 100644
--- a/lib/physchem.rb
+++ b/lib/physchem.rb
@@ -1,7 +1,7 @@
module OpenTox
# Feature for physico-chemical descriptors
- class PhysChem < NumericFeature
+ class PhysChem < NumericSubstanceProperty
field :library, type: String
field :descriptor, type: String
@@ -45,7 +45,7 @@ module OpenTox
def self.descriptors desc=DESCRIPTORS
desc.collect do |name,description|
lib,desc = name.split('.',2)
- self.find_or_create_by(:name => name, :library => lib, :descriptor => desc, :description => description, :measured => false, :calculated => true)
+ self.find_or_create_by(:name => name, :library => lib, :descriptor => desc, :description => description)
end
end
@@ -59,11 +59,11 @@ module OpenTox
CDK_DESCRIPTIONS.select{|d| desc == d[:java_class].split('.').last.sub('Descriptor','') }.first[:names].each do |n|
dname = "#{name}.#{n}"
description = DESCRIPTORS[dname]
- udesc << self.find_or_create_by(:name => dname, :library => lib, :descriptor => desc, :description => description, :measured => false, :calculated => true)
+ udesc << self.find_or_create_by(:name => dname, :library => lib, :descriptor => desc, :description => description)
end
else
description = DESCRIPTORS[name]
- udesc << self.find_or_create_by(:name => name, :library => lib, :descriptor => desc, :description => description, :measured => false, :calculated => true)
+ udesc << self.find_or_create_by(:name => name, :library => lib, :descriptor => desc, :description => description)
end
end
udesc