Class: RCDK::Util::Lang

Inherits:
Object
  • Object
show all
Includes:
Java::Io, Org::Openscience::Cdk, Org::Openscience::Cdk::Io, Uk::Ac::Cam::Ch::Wwmm::Opsin
Defined in:
lib/rcdk/util.rb

Overview

Molecular language translation. Currently molfile, SMILES, and IUPAC nomenclature (read-only) are implemented.

Constant Summary collapse

@@mdl_reader =
Io::MDLReader.new
@@mdl_writer =
Io::MDLWriter.new
@@smiles_parser =
Smiles::SmilesParser.new
@@smiles_generator =
Smiles::SmilesGenerator.new(DefaultChemObjectBuilder.getInstance)
@@cml_reader =
nil

Class Method Summary collapse

Class Method Details

.get_molfile(molecule) ⇒ Object

Returns a String-based molfile by parsing the CDK molecule.



87
88
89
90
91
92
93
94
95
# File 'lib/rcdk/util.rb', line 87

def self.get_molfile(molecule)
  writer = StringWriter.new
  
  @@mdl_writer.setWriter(writer)
  @@mdl_writer.writeMolecule(molecule)
  @@mdl_writer.close
  
  writer.toString
end

.get_smiles(molecule) ⇒ Object

Returns a SMILES string based on the structure of the indicated CDK molecule.



104
105
106
# File 'lib/rcdk/util.rb', line 104

def self.get_smiles(molecule)
  @@smiles_generator.createSMILES(molecule)
end

.molfile_to_smiles(molfile) ⇒ Object

Returns a SMILES string by parsing the molfile string.



109
110
111
# File 'lib/rcdk/util.rb', line 109

def self.molfile_to_smiles(molfile)
  get_smiles(read_molfile(molfile))
end

.read_iupac(iupac_name) ⇒ Object

Returns a CDK Molecule given the specified iupac_name.



71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/rcdk/util.rb', line 71

def self.read_iupac(iupac_name)
  nts = NameToStructure.getInstance
  cml = nts.parseToCML(iupac_name)
  
  raise "Couldn't parse #{iupac_name}." unless cml
  
  string_reader = StringReader.new(cml.toXML)
  
  @@cml_reader = CMLReader.new unless @@cml_reader
  @@cml_reader.setReader(string_reader)
  
  chem_file = @@cml_reader.read(ChemFile.new)
  chem_file.getChemSequence(0).getChemModel(0).getSetOfMolecules.getMolecule(0)
end

.read_molfile(molfile) ⇒ Object

Returns a CDK Molecule given the String-based molfile molfile.



63
64
65
66
67
68
# File 'lib/rcdk/util.rb', line 63

def self.read_molfile(molfile)
  reader = StringReader.new(molfile)
  
  @@mdl_reader.setReader(reader)
  @@mdl_reader.read(Molecule.new)
end

.read_smiles(smiles) ⇒ Object

Returns a CDK Molecule by parsing smiles.



98
99
100
# File 'lib/rcdk/util.rb', line 98

def self.read_smiles(smiles)
  @@smiles_parser.parseSmiles(smiles)
end

.smiles_to_molfile(smiles) ⇒ Object

Returns a molfiles STRING by parsing smiles.



114
115
116
# File 'lib/rcdk/util.rb', line 114

def self.smiles_to_molfile(smiles)
  get_molfile(read_smiles(smiles))
end