Module: Chem
- Defined in:
- lib/chem/db.rb,
lib/chem.rb,
lib/chem/model.rb,
lib/chem/db/cdx.rb,
lib/chem/db/eps.rb,
lib/chem/db/g98.rb,
lib/chem/db/kcf.rb,
lib/chem/db/mdl.rb,
lib/chem/db/msi.rb,
lib/chem/db/pdf.rb,
lib/chem/db/sdf.rb,
lib/chem/db/swf.rb,
lib/chem/db/xyz.rb,
lib/chem/db/kegg.rb,
lib/chem/db/smbl.rb,
lib/chem/db/gspan.rb,
lib/chem/db/mopac.rb,
lib/chem/db/sybyl.rb,
lib/chem/db/cansmi.rb,
lib/chem/db/tinker.rb,
lib/chem/db/vector.rb,
lib/chem/utils/sub.rb,
lib/chem/db/pdb_dic.rb,
lib/chem/db/pubchem.rb,
lib/chem/db/rmagick.rb,
lib/chem/utils/prop.rb,
lib/chem/utils/sssr.rb,
lib/chem/db/kcf_glycan.rb,
lib/chem/utils/ullmann.rb,
lib/chem/model/skeleton.rb,
lib/chem/utils/geometry.rb,
lib/chem/utils/traverse.rb,
lib/chem/utils/transform.rb,
lib/chem/db/types/type_cdx.rb,
lib/chem/db/types/type_kcf.rb,
lib/chem/db/types/type_mdl.rb,
lib/chem/db/types/type_pdf.rb,
lib/chem/db/types/type_png.rb,
lib/chem/db/types/type_rxn.rb,
lib/chem/db/types/type_sdf.rb,
lib/chem/db/types/type_xyz.rb,
lib/chem/data/atomic_weight.rb,
lib/chem/db/types/type_kegg.rb,
lib/chem/appl/tinker/nucleic.rb,
lib/chem/data/periodic_table.rb,
lib/chem/db/smiles/smiparser.rb,
lib/chem/db/types/type_gspan.rb,
lib/chem/db/types/type_sybyl.rb,
lib/chem/db/types/type_cansmi.rb,
lib/chem/db/types/type_kcf_glycan.rb
Overview
Table of atomic weight extracted from www.chem.qmul.ac.uk/iupac/AtWt/index.html
Defined Under Namespace
Modules: Atom, Bond, CDX, Db, G98, KEGG, MDL, MSI, Molecule, Mopac7, PubChem, Reaction, SMBL, Sybyl, TINKER, Transform, Type, Writer, XYZ Classes: GSpan, GSpanAtom, GSpanBond, GSpanMolecule, PDFWriter, PdbDic, RMagickWriter, ReactionSkeleton, Ring, SWFWriter, SkeletonAtom, SmilesAtom, SmilesBond, SmilesMol, TinkerNucleic
Constant Summary collapse
- ChemTypeRegistry =
[]
- AtomicWeight =
{ :H => 1.00794, :He => 4.002602, :Li => 6.941, :Be => 9.012182, :B => 10.811, :C => 12.0107, :N => 14.0067, :O => 15.9994, :F => 18.9984032, :Ne => 20.1797, :Na => 22.989770, :Mg => 24.3050, :Al => 26.981538, :Si => 28.0855, :P => 30.973761, :S => 32.065, :Cl => 35.453, :Ar => 39.948, :K => 39.0983, :Ca => 40.078, :Sc => 44.955910, :Ti => 47.867, :V => 50.9415, :Cr => 51.9961, :Mn => 54.938049, :Fe => 55.845, :Co => 58.933200, :Ni => 58.6934, :Cu => 63.546, :Zn => 65.409, :Ga => 69.723, :Ge => 72.64, :As => 74.92160, :Se => 78.96, :Br => 79.904, :Kr => 83.798, :Rb => 85.4678, :Sr => 87.62, :Y => 88.90585, :Zr => 91.224, :Nb => 92.90638, :Mo => 95.94, :Tc => 98, :Ru => 101.07, :Rh => 102.90550, :Pd => 106.42, :Ag => 107.8682, :Cd => 112.411, :In => 114.818, :Sn => 118.710, :Sb => 121.760, :Te => 127.60, :I => 126.90447, :Xe => 131.293, :Cs => 132.90545, :Ba => 137.327, :La => 138.9055, :Ce => 140.116, :Pr => 140.90765, :Nd => 144.24, :Pm => 145, :Sm => 150.36, :Eu => 151.964, :Gd => 157.25, :Tb => 158.92534, :Dy => 162.500, :Ho => 164.93032, :Er => 167.259, :Tm => 168.93421, :Yb => 173.04, :Lu => 174.967, :Hf => 178.49, :Ta => 180.9479, :W => 183.84, :Re => 186.207, :Os => 190.23, :Ir => 192.217, :Pt => 195.078, :Au => 196.96655, :Hg => 200.59, :Tl => 204.3833, :Pb => 207.2, :Bi => 208.98038, :Po => 209, :At => 210, :Rn => 222, :Fr => 223, :Ra => 226, :Ac => 227, :Th => 232.0381, :Pa => 231.03588, :U => 238.02891, :Np => 237, :Pu => 244, :Am => 243, :Cm => 247, :Bk => 247, :Cf => 251, :Es => 252, :Fm => 257, :Md => 258, :No => 259, :Lr => 262, :Rf => 261, :Db => 262, :Sg => 266, :Bh => 264, :Hs => 277, :Mt => 268, :Ds => 281, :Rg => 272, :Uub=> 285, :Uut=> 284, :Uuq=> 289, :Uup=> 288, #116 Uuh Ununhexium see Note above #118 Uuo Ununoctium see Note above }
- Element2Number =
{:Bk=>97, :Si=>14, :In=>49, :Fr=>87, :V=>23, :Na=>11, :Tb=>65, :Po=>84, :Pd=>46, :Al=>13, :Ho=>67, :Ba=>56, :As=>33, :Rn=>86, :Nb=>41, :Hg=>80, :P=>15, :Bi=>83, :Be=>4, :Ru=>44, :S=>16, :O=>8, :Ra=>88, :Es=>99, :Xe=>54, :He=>2, :N=>7, :Am=>95, :Pr=>59, :Er=>68, :Au=>79, :Rh=>45, :Ce=>58, :Tm=>69, :Gd=>64, :Ir=>77, :Sr=>38, :La=>57, :Cm=>96, :Ca=>20, :C=>6, :Sm=>62, :Hf=>72, :Ag=>47, :At=>85, :F=>9, :Tc=>43, :Zn=>30, :Lu=>71, :B=>5, :Np=>93, :Ga=>31, :XX=>101, :Sn=>50, :Os=>76, :Eu=>63, :Dy=>66, :Yb=>70, :K=>19, :Tl=>81, :I=>53, :Ar=>18, :Th=>90, :Zr=>40, :Pt=>78, :Fe=>26, :Ge=>32, :Cr=>24, :Cf=>98, :Kr=>36, :Rb=>37, :ZZ=>103, :Ta=>73, :W=>74, :Sc=>21, :Mn=>25, :Pu=>94, :Mg=>12, :Se=>34, :Ti=>22, :Cd=>48, :Sb=>51, :Fm=>100, :Cs=>55, :Nd=>60, :Co=>27, :Pb=>82, :Cl=>17, :Cu=>29, :Y=>39, :Re=>75, :U=>92, :Pa=>91, :Mo=>42, :H=>1, :D=>0, :Te=>52, :Li=>3, :Br=>35, :YY=>102, :Pm=>61, :Ac=>89, :Ni=>28, :Ne=>10}
- Number2Element =
[:D, :H, :He, :Li, :Be, :B, :C, :N, :O, :F, :Ne, :Na, :Mg, :Al, :Si, :P, :S, :Cl, :Ar, :K, :Ca, :Sc, :Ti, :V, :Cr, :Mn, :Fe, :Co, :Ni, :Cu, :Zn, :Ga, :Ge, :As, :Se, :Br, :Kr, :Rb, :Sr, :Y, :Zr, :Nb, :Mo, :Tc, :Ru, :Rh, :Pd, :Ag, :Cd, :In, :Sn, :Sb, :Te, :I, :Xe, :Cs, :Ba, :La, :Ce, :Pr, :Nd, :Pm, :Sm, :Eu, :Gd, :Tb, :Dy, :Ho, :Er, :Tm, :Yb, :Lu, :Hf, :Ta, :W, :Re, :Os, :Ir, :Pt, :Au, :Hg, :Tl, :Pb, :Bi, :Po, :At, :Rn, :Fr, :Ra, :Ac, :Th, :Pa, :U, :Np, :Pu, :Am, :Cm, :Bk, :Cf, :Es, :Fm, :XX, :YY, :ZZ]
Class Method Summary collapse
-
.autodetect(file) ⇒ Object
format_class = Chem.autodetect(“file.mol”).
-
.find_first(str) ⇒ Object
returns first entry.
- .open_kegg(dir) ⇒ Object
-
.open_mol(file, format_type = nil) ⇒ Object
(also: parse_file)
Makes possible to open chemical files.
- .parse_gspan(file) ⇒ Object
- .parse_smiles(smiles) ⇒ Object
- .save(array, filename) ⇒ Object
Class Method Details
.autodetect(file) ⇒ Object
format_class = Chem.autodetect(“file.mol”)
Automatically detect file type and returns appropriate class to parse it
50 51 52 |
# File 'lib/chem.rb', line 50 def self.autodetect file ChemTypeRegistry.find{|format| format.detect_file file} end |
.find_first(str) ⇒ Object
returns first entry
42 43 44 |
# File 'lib/chem.rb', line 42 def find_first str p str end |
.open_kegg(dir) ⇒ Object
87 88 89 90 |
# File 'lib/chem.rb', line 87 def open_kegg dir require 'chem/db/kegg' Chem::KEGG::KeggDirectory.new(dir) end |
.open_mol(file, format_type = nil) ⇒ Object Also known as: parse_file
Makes possible to open chemical files. Guesses the file type based on the extension of the file name.
Examples : So if the file name is “benzene.mol”,
mol = Chem.open_mol(“benzene.mol”) # returns MDLMolecule object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/chem.rb', line 61 def open_mol file, format_type = nil format = nil if format_type == nil format = Chem.autodetect(file) else format = ChemTypeRegistry.find{|format| format.detect_type format_type} end raise NotImplementedError unless format return format.parse(file) if format end |
.parse_gspan(file) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/chem/db/gspan.rb', line 103 def self.parse_gspan file t = "t"[0] v = "v"[0] e = "e"[0] mols = [] mol = GSpanMolecule.new open(file).each do |line| case line[0] when t mol = GSpanMolecule.new mols.push(mol) when v mol.nodes.push(GSpanAtom.parse_line(line)) when e ary = line.split node1 = mol.nodes[ary[1].to_i] node2 = mol.nodes[ary[2].to_i] mol.edges.push([GSpanBond.new(ary[3].to_i), node1, node2]) else end end mols end |
.parse_smiles(smiles) ⇒ Object
81 82 83 84 85 |
# File 'lib/chem.rb', line 81 def parse_smiles smiles require 'chem/db/smiles' require 'chem/db/smiles/smiparser' ::SmilesParser.parse_smiles(smiles) end |
.save(array, filename) ⇒ Object
76 77 78 79 |
# File 'lib/chem.rb', line 76 def self.save(array, filename) format = autodetect filename format.save(array, filename) end |