From 23ecfc6fa5ae4913e5cd17b7d58432d1f88d780c Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Mon, 10 Aug 2015 09:48:57 +0200 Subject: transfer to new git project started --- lib/feature.rb | 70 ++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 22 deletions(-) (limited to 'lib/feature.rb') diff --git a/lib/feature.rb b/lib/feature.rb index 005d78f..9deb199 100644 --- a/lib/feature.rb +++ b/lib/feature.rb @@ -1,17 +1,16 @@ module OpenTox + # Basic feature class class Feature field :name, as: :title, type: String field :nominal, type: Boolean field :numeric, type: Boolean field :measured, type: Boolean - field :calculated, type: Boolean - field :supervised, type: Boolean - field :source, as: :title, type: String - #belongs_to :dataset end + # Feature for categorical variables class NominalFeature < Feature + # TODO check if accept_values are still needed field :accept_values, type: Array def initialize params super params @@ -19,6 +18,7 @@ module OpenTox end end + # Feature for quantitative variables class NumericFeature < Feature def initialize params super params @@ -26,43 +26,69 @@ module OpenTox end end + # Feature for SMARTS fragments class Smarts < NominalFeature field :smarts, type: String - #field :name, as: :smarts, type: String # causes warnings - field :algorithm, type: String, default: "OpenTox::Algorithm::Descriptors.smarts_match" - field :parameters, type: Hash, default: {:count => false} - def initialize params - super params - nominal = true - end end + # Feature for supervised fragments from Fminer algorithm class FminerSmarts < Smarts - field :pValue, type: Float + field :p_value, type: Float + # TODO check if effect is used field :effect, type: String field :dataset_id - def initialize params - super params - supervised = true - end end + # Feature for database fingerprints + # needs count for efficient retrieval (see compound.rb) class FingerprintSmarts < Smarts field :count, type: Integer + def self.fingerprint + @@fp4 ||= OpenTox::FingerprintSmarts.all + unless @@fp4.size == 306 + @@fp4 = [] + # OpenBabel FP4 fingerprints + # OpenBabel http://open-babel.readthedocs.org/en/latest/Fingerprints/intro.html + # TODO investigate other types of fingerprints (MACCS) + # OpenBabel http://open-babel.readthedocs.org/en/latest/Fingerprints/intro.html + # http://www.dalkescientific.com/writings/diary/archive/2008/06/26/fingerprint_background.html + # OpenBabel MNA http://openbabel.org/docs/dev/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).html#multilevel-neighborhoods-of-atoms-mna + # Morgan ECFP, FCFP + # http://cdk.github.io/cdk/1.5/docs/api/org/openscience/cdk/fingerprint/CircularFingerprinter.html + # http://www.rdkit.org/docs/GettingStartedInPython.html + # Chemfp + # https://chemfp.readthedocs.org/en/latest/using-tools.html + # CACTVS/PubChem + + File.open(File.join(File.dirname(__FILE__),"SMARTS_InteLigand.txt")).each do |l| + l.strip! + unless l.empty? or l.match /^#/ + name,smarts = l.split(': ') + @@fp4 << OpenTox::FingerprintSmarts.find_or_create_by(:name => name, :smarts => smarts) unless smarts.nil? + end + end + end + @@fp4 + end end + # Feature for physico-chemical descriptors + class PhysChemDescriptor < NumericFeature + field :algorithm, type: String, default: "OpenTox::Algorithm::Descriptor.physchem" + field :parameters, type: Hash + field :creator, type: String + end + + # Feature for categorical bioassay results class NominalBioAssay < NominalFeature + # TODO: needed? move to dataset? field :description, type: String end + # Feature for quantitative bioassay results class NumericBioAssay < NumericFeature + # TODO: needed? move to dataset? field :description, type: String end - class PhysChemDescriptor < NumericFeature - field :algorithm, type: String, default: "OpenTox::Algorithm::Descriptor.physchem" - field :parameters, type: Hash - field :creator, type: String - end - end -- cgit v1.2.3