Class: OpenTox::PhysChem
- Inherits:
-
NumericSubstanceProperty
- Object
- Feature
- NumericFeature
- NumericSubstanceProperty
- OpenTox::PhysChem
- Defined in:
- lib/physchem.rb
Overview
Feature for physico-chemical descriptors
Constant Summary collapse
- JAVA_DIR =
File.join(File.dirname(__FILE__),"..","java")
- CDK_JAR =
Dir[File.join(JAVA_DIR,"cdk-*jar")].last
- JOELIB_JAR =
File.join(JAVA_DIR,"joelib2.jar")
- LOG4J_JAR =
File.join(JAVA_DIR,"log4j.jar")
- JMOL_JAR =
File.join(JAVA_DIR,"Jmol.jar")
- OPENBABEL =
Hash[OpenBabel::OBDescriptor.list_as_string("descriptors").split("\n").collect do |d| name,description = d.split(/\s+/,2) ["Openbabel."+name,description] unless obexclude.include? name end.compact.sort{|a,b| a[0]
- CDK_DESCRIPTIONS =
YAML.load(`java -classpath #{CDK_JAR}:#{JAVA_DIR} CdkDescriptorInfo`)
- CDK =
cdkdescriptors
- JOELIB =
strip Joelib messages from stdout
- DESCRIPTORS =
OPENBABEL.merge(CDK.merge(JOELIB))
Class Method Summary collapse
-
.cdk_descriptors ⇒ Array<OpenTox::PhysChem>
Get CDK descriptor features.
-
.descriptors(desc = DESCRIPTORS) ⇒ Array<OpenTox::PhysChem>
Get descriptor features.
-
.joelib_descriptors ⇒ Array<OpenTox::PhysChem>
Get JOELIB descriptor features.
-
.openbabel_descriptors ⇒ Array<OpenTox::PhysChem>
Get OpenBabel descriptor features.
-
.unique_descriptors ⇒ Array<OpenTox::PhysChem>
Get unique descriptor features.
Instance Method Summary collapse
-
#cdk(descriptor, compound) ⇒ Hash
Calculate CDK descriptors.
-
#joelib(descriptor, compound) ⇒ Hash
Calculate JOELIB descriptors.
-
#openbabel(descriptor, compound) ⇒ Hash
Calculate OpenBabel descriptors.
Class Method Details
.cdk_descriptors ⇒ Array<OpenTox::PhysChem>
Get CDK descriptor features
80 81 82 |
# File 'lib/physchem.rb', line 80 def self.cdk_descriptors descriptors CDK end |
.descriptors(desc = DESCRIPTORS) ⇒ Array<OpenTox::PhysChem>
Get descriptor features
45 46 47 48 49 50 |
# File 'lib/physchem.rb', line 45 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) end end |
.joelib_descriptors ⇒ Array<OpenTox::PhysChem>
Get JOELIB descriptor features
86 87 88 |
# File 'lib/physchem.rb', line 86 def self.joelib_descriptors descriptors JOELIB end |
.openbabel_descriptors ⇒ Array<OpenTox::PhysChem>
Get OpenBabel descriptor features
74 75 76 |
# File 'lib/physchem.rb', line 74 def self.openbabel_descriptors descriptors OPENBABEL end |
.unique_descriptors ⇒ Array<OpenTox::PhysChem>
Get unique descriptor features
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/physchem.rb', line 54 def self.unique_descriptors udesc = [] UNIQUEDESCRIPTORS.each do |name| lib,desc = name.split('.',2) if lib == "Cdk" 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) end else description = DESCRIPTORS[name] udesc << self.find_or_create_by(:name => name, :library => lib, :descriptor => desc, :description => description) end end udesc end |
Instance Method Details
#cdk(descriptor, compound) ⇒ Hash
Calculate CDK descriptors
107 108 109 |
# File 'lib/physchem.rb', line 107 def cdk descriptor, compound java_descriptor "cdk", descriptor, compound end |
#joelib(descriptor, compound) ⇒ Hash
Calculate JOELIB descriptors
115 116 117 |
# File 'lib/physchem.rb', line 115 def joelib descriptor, compound java_descriptor "joelib", descriptor, compound end |
#openbabel(descriptor, compound) ⇒ Hash
Calculate OpenBabel descriptors
94 95 96 97 98 99 100 101 |
# File 'lib/physchem.rb', line 94 def openbabel descriptor, compound obdescriptor = OpenBabel::OBDescriptor.find_type descriptor obmol = OpenBabel::OBMol.new obconversion = OpenBabel::OBConversion.new obconversion.set_in_format 'smi' obconversion.read_string obmol, compound.smiles {"#{library.capitalize}.#{descriptor}" => fix_value(obdescriptor.predict(obmol))} end |