chemruby 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. data/README +120 -0
  2. data/Rakefile +195 -0
  3. data/ext/extconf.rb +4 -0
  4. data/ext/subcomp.c +416 -0
  5. data/lib/chem.rb +130 -0
  6. data/lib/chem/appl.rb +1 -0
  7. data/lib/chem/appl/chem3dole.rb +36 -0
  8. data/lib/chem/appl/tinker/nucleic.rb +40 -0
  9. data/lib/chem/appl/tinker/tinker_reader.rb +43 -0
  10. data/lib/chem/data.rb +4 -0
  11. data/lib/chem/data/atomic_weight.rb +124 -0
  12. data/lib/chem/data/character.rb +2 -0
  13. data/lib/chem/data/electronegativity.rb +14 -0
  14. data/lib/chem/data/periodic_table.rb +6 -0
  15. data/lib/chem/data/prime_numbers.rb +1 -0
  16. data/lib/chem/data/vdw_radii.rb +1 -0
  17. data/lib/chem/db.rb +64 -0
  18. data/lib/chem/db/cansmi.rb +234 -0
  19. data/lib/chem/db/cdx.rb +1525 -0
  20. data/lib/chem/db/eps.rb +164 -0
  21. data/lib/chem/db/g98.rb +909 -0
  22. data/lib/chem/db/gspan.rb +130 -0
  23. data/lib/chem/db/iupac.rb +5 -0
  24. data/lib/chem/db/iupac/a_1.rb +46 -0
  25. data/lib/chem/db/iupac/iuparser.rb +226 -0
  26. data/lib/chem/db/iupac/iuparser.ry +97 -0
  27. data/lib/chem/db/iupac/postfix.rb +2 -0
  28. data/lib/chem/db/kcf.rb +390 -0
  29. data/lib/chem/db/kcf_glycan.rb +19 -0
  30. data/lib/chem/db/kegg.rb +516 -0
  31. data/lib/chem/db/linucs/linparser.rb +144 -0
  32. data/lib/chem/db/linucs/linucs.ry +53 -0
  33. data/lib/chem/db/mdl.rb +379 -0
  34. data/lib/chem/db/molconnz.rb +12 -0
  35. data/lib/chem/db/mopac.rb +88 -0
  36. data/lib/chem/db/msi.rb +107 -0
  37. data/lib/chem/db/pdb_dic.rb +115 -0
  38. data/lib/chem/db/pdf.rb +131 -0
  39. data/lib/chem/db/pubchem.rb +113 -0
  40. data/lib/chem/db/rmagick.rb +70 -0
  41. data/lib/chem/db/sdf.rb +37 -0
  42. data/lib/chem/db/smbl.rb +88 -0
  43. data/lib/chem/db/smiles.rb +2 -0
  44. data/lib/chem/db/smiles/smiles.ry +203 -0
  45. data/lib/chem/db/smiles/smiparser.rb +375 -0
  46. data/lib/chem/db/swf.rb +74 -0
  47. data/lib/chem/db/sybyl.rb +150 -0
  48. data/lib/chem/db/tinker.rb +77 -0
  49. data/lib/chem/db/types/type_cansmi.rb +9 -0
  50. data/lib/chem/db/types/type_cdx.rb +24 -0
  51. data/lib/chem/db/types/type_gspan.rb +31 -0
  52. data/lib/chem/db/types/type_kcf.rb +28 -0
  53. data/lib/chem/db/types/type_kcf_glycan.rb +26 -0
  54. data/lib/chem/db/types/type_kegg.rb +92 -0
  55. data/lib/chem/db/types/type_mdl.rb +31 -0
  56. data/lib/chem/db/types/type_pdf.rb +33 -0
  57. data/lib/chem/db/types/type_png.rb +31 -0
  58. data/lib/chem/db/types/type_rxn.rb +25 -0
  59. data/lib/chem/db/types/type_sdf.rb +25 -0
  60. data/lib/chem/db/types/type_sybyl.rb +30 -0
  61. data/lib/chem/db/types/type_xyz.rb +26 -0
  62. data/lib/chem/db/vector.rb +128 -0
  63. data/lib/chem/db/xyz.rb +39 -0
  64. data/lib/chem/model.rb +119 -0
  65. data/lib/chem/model/skeleton.rb +37 -0
  66. data/lib/chem/utils.rb +11 -0
  67. data/lib/chem/utils/geometry.rb +27 -0
  68. data/lib/chem/utils/graph_db.rb +146 -0
  69. data/lib/chem/utils/math.rb +17 -0
  70. data/lib/chem/utils/prop.rb +123 -0
  71. data/lib/chem/utils/sssr.rb +101 -0
  72. data/lib/chem/utils/sub.rb +78 -0
  73. data/lib/chem/utils/transform.rb +110 -0
  74. data/lib/chem/utils/traverse.rb +37 -0
  75. data/lib/chem/utils/ullmann.rb +134 -0
  76. data/lib/graph.rb +41 -0
  77. data/lib/graph/cluster.rb +20 -0
  78. data/lib/graph/morgan.rb +38 -0
  79. data/sample/frequent_subgraph.rb +46 -0
  80. data/sample/images/ex1.rb +11 -0
  81. data/sample/images/ex2.rb +4 -0
  82. data/sample/images/ex3.rb +5 -0
  83. data/sample/images/ex4.rb +17 -0
  84. data/sample/images/ex5.rb +10 -0
  85. data/sample/images/mol/adenine.mol +26 -0
  86. data/sample/images/mol/atp.mol +69 -0
  87. data/sample/images/temp/ex5.mol +344 -0
  88. data/sample/kegg_db.rb +116 -0
  89. data/setup.rb +1551 -0
  90. data/test/all.rb +6 -0
  91. data/test/coord_test.rb +17 -0
  92. data/test/ctab_test.rb +31 -0
  93. data/test/data/A_21.tar.gz +0 -0
  94. data/test/data/A_21/aceanthrylene.cdx +0 -0
  95. data/test/data/A_21/aceanthrylene.mol +40 -0
  96. data/test/data/A_21/acenaphthylene.cdx +0 -0
  97. data/test/data/A_21/acenaphthylene.mol +31 -0
  98. data/test/data/A_21/acephenanthrylene.cdx +0 -0
  99. data/test/data/A_21/acephenanthrylene.mol +40 -0
  100. data/test/data/A_21/anthracene.cdx +0 -0
  101. data/test/data/A_21/anthracene.mol +35 -0
  102. data/test/data/A_21/as-indacene.cdx +0 -0
  103. data/test/data/A_21/as-indacene.mol +31 -0
  104. data/test/data/A_21/azulene.cdx +0 -0
  105. data/test/data/A_21/azulene.mol +26 -0
  106. data/test/data/A_21/biphenylene.cdx +0 -0
  107. data/test/data/A_21/biphenylene.mol +31 -0
  108. data/test/data/A_21/chrysene.cdx +0 -0
  109. data/test/data/A_21/chrysene.mol +44 -0
  110. data/test/data/A_21/coronen.cdx +0 -0
  111. data/test/data/A_21/coronen.mol +59 -0
  112. data/test/data/A_21/fluoranthene.cdx +0 -0
  113. data/test/data/A_21/fluoranthene.mol +40 -0
  114. data/test/data/A_21/fluorene.cdx +0 -0
  115. data/test/data/A_21/fluorene.mol +33 -0
  116. data/test/data/A_21/heptacene.cdx +0 -0
  117. data/test/data/A_21/heptacene.mol +71 -0
  118. data/test/data/A_21/heptalene.cdx +0 -0
  119. data/test/data/A_21/heptalene.mol +30 -0
  120. data/test/data/A_21/heptaphene.cdx +0 -0
  121. data/test/data/A_21/heptaphene.mol +71 -0
  122. data/test/data/A_21/hexacene.cdx +0 -0
  123. data/test/data/A_21/hexacene.mol +62 -0
  124. data/test/data/A_21/hexaphene.cdx +0 -0
  125. data/test/data/A_21/hexaphene.mol +62 -0
  126. data/test/data/A_21/indene.cdx +0 -0
  127. data/test/data/A_21/indene.mol +24 -0
  128. data/test/data/A_21/iupac.txt +41 -0
  129. data/test/data/A_21/naphthacene.cdx +0 -0
  130. data/test/data/A_21/naphthacene.mol +44 -0
  131. data/test/data/A_21/naphthalene.cdx +0 -0
  132. data/test/data/A_21/naphthalene.mol +26 -0
  133. data/test/data/A_21/ovalene.cdx +0 -0
  134. data/test/data/A_21/ovalene.mol +78 -0
  135. data/test/data/A_21/pentacene.cdx +0 -0
  136. data/test/data/A_21/pentacene.mol +53 -0
  137. data/test/data/A_21/pentalene.cdx +0 -0
  138. data/test/data/A_21/pentalene.mol +22 -0
  139. data/test/data/A_21/pentaphene.cdx +0 -0
  140. data/test/data/A_21/pentaphene.mol +53 -0
  141. data/test/data/A_21/perylene.cdx +0 -0
  142. data/test/data/A_21/perylene.mol +49 -0
  143. data/test/data/A_21/phenalene.cdx +0 -0
  144. data/test/data/A_21/phenalene.mol +33 -0
  145. data/test/data/A_21/phenanthrene.cdx +0 -0
  146. data/test/data/A_21/phenanthrene.mol +35 -0
  147. data/test/data/A_21/picene.cdx +0 -0
  148. data/test/data/A_21/picene.mol +53 -0
  149. data/test/data/A_21/pleiadene.cdx +0 -0
  150. data/test/data/A_21/pleiadene.mol +44 -0
  151. data/test/data/A_21/pyranthrene.cdx +0 -0
  152. data/test/data/A_21/pyranthrene.mol +72 -0
  153. data/test/data/A_21/pyrene.cdx +0 -0
  154. data/test/data/A_21/pyrene.mol +40 -0
  155. data/test/data/A_21/rubicene.cdx +0 -0
  156. data/test/data/A_21/rubicene.mol +63 -0
  157. data/test/data/A_21/s-indacene.cdx +0 -0
  158. data/test/data/A_21/s-indacene.mol +31 -0
  159. data/test/data/A_21/tetraphenylene.cdx +0 -0
  160. data/test/data/A_21/tetraphenylene.mol +57 -0
  161. data/test/data/A_21/trinaphthylene.cdx +0 -0
  162. data/test/data/A_21/trinaphthylene.mol +71 -0
  163. data/test/data/A_21/triphenylene.cdx +0 -0
  164. data/test/data/A_21/triphenylene.mol +44 -0
  165. data/test/data/C00147.kcf +25 -0
  166. data/test/data/G00147.kcf +13 -0
  167. data/test/data/atp.mol +69 -0
  168. data/test/data/cyclohexane.mol +17 -0
  169. data/test/data/cyclohexane.ps +485 -0
  170. data/test/data/fullerene.mol +155 -0
  171. data/test/data/glycan +33 -0
  172. data/test/data/hypericin.cdx +0 -0
  173. data/test/data/hypericin.cdxml +596 -0
  174. data/test/data/hypericin.chm +0 -0
  175. data/test/data/hypericin.ct +85 -0
  176. data/test/data/hypericin.f1d +0 -0
  177. data/test/data/hypericin.f1q +0 -0
  178. data/test/data/hypericin.gif +0 -0
  179. data/test/data/hypericin.mol +88 -0
  180. data/test/data/hypericin.mol2 +159 -0
  181. data/test/data/hypericin.msm +123 -0
  182. data/test/data/hypericin.pdf +359 -0
  183. data/test/data/hypericin.png +0 -0
  184. data/test/data/hypericin.ps +0 -0
  185. data/test/data/hypericin.skc +0 -0
  186. data/test/data/hypericin2.gif +0 -0
  187. data/test/data/hypericin2.ps +0 -0
  188. data/test/data/kegg/genomes/hsa/hsa_enzyme.list +4 -0
  189. data/test/data/kegg/genomes/hsa/hsa_pfam.list +4 -0
  190. data/test/data/kegg/ligand/mol/C00147.mol +26 -0
  191. data/test/data/kegg/ligand/reaction +14 -0
  192. data/test/data/kegg/ligand/reaction.lst +1 -0
  193. data/test/data/kegg/ligand/reaction_mapformula.lst +3 -0
  194. data/test/data/reaction +14 -0
  195. data/test/data/reaction.lst +1 -0
  196. data/test/data/reaction_mapformula.lst +3 -0
  197. data/test/data/rxn/C00001.mol +6 -0
  198. data/test/data/rxn/C00011.mol +10 -0
  199. data/test/data/rxn/C00014.mol +6 -0
  200. data/test/data/rxn/C01010.mol +18 -0
  201. data/test/data/rxn/sample.rxn +50 -0
  202. data/test/data/rxn/substitution.rxn +45 -0
  203. data/test/data/test.eps +0 -0
  204. data/test/data/test.mol +28 -0
  205. data/test/data/test.sdf +143 -0
  206. data/test/data/test.skc +0 -0
  207. data/test/data/test.xyz +4 -0
  208. data/test/data/test_lf.sdf +143 -0
  209. data/test/heavy_test_pubchem.rb +16 -0
  210. data/test/multiple_test.rb +22 -0
  211. data/test/test_adj.rb +54 -0
  212. data/test/test_canonical_smiles.rb +46 -0
  213. data/test/test_cdx.rb +32 -0
  214. data/test/test_chem.rb +18 -0
  215. data/test/test_cluster.rb +19 -0
  216. data/test/test_db.rb +11 -0
  217. data/test/test_eps.rb +24 -0
  218. data/test/test_geometry.rb +11 -0
  219. data/test/test_gspan.rb +28 -0
  220. data/test/test_iupac.rb +36 -0
  221. data/test/test_kcf.rb +24 -0
  222. data/test/test_kcf_glycan.rb +10 -0
  223. data/test/test_kegg.rb +118 -0
  224. data/test/test_linucs.rb +21 -0
  225. data/test/test_mdl.rb +45 -0
  226. data/test/test_mol2.rb +62 -0
  227. data/test/test_morgan.rb +21 -0
  228. data/test/test_pdf.rb +12 -0
  229. data/test/test_prop.rb +86 -0
  230. data/test/test_rmagick.rb +15 -0
  231. data/test/test_sbdb.rb +23 -0
  232. data/test/test_sdf.rb +30 -0
  233. data/test/test_smiles.rb +84 -0
  234. data/test/test_sssr.rb +18 -0
  235. data/test/test_sub.rb +47 -0
  236. data/test/test_subcomp.rb +37 -0
  237. data/test/test_traverse.rb +29 -0
  238. data/test/test_writer.rb +13 -0
  239. data/test/test_xyz.rb +15 -0
  240. data/test/type_test.rb +25 -0
  241. metadata +290 -0
@@ -0,0 +1,130 @@
1
+ #
2
+ # Chem module. See documentation for the file chem.rb for an overview
3
+ #
4
+ # $Id: chem.rb 158 2006-02-09 07:16:48Z tanaka $
5
+ #
6
+ # == Introduction
7
+ #
8
+ # Chem module is a facade of ChemRuby. You will find all the input format
9
+ # that ChemRuby support can be invoked via Chem module.
10
+ #
11
+ # == Examples
12
+ #
13
+ # === Example 1: Parse molecular file
14
+ #
15
+ # require 'chem'
16
+ #
17
+ # mol = Chem.open_mol("/usr/local/foo/mol/C00147.mol")
18
+ #
19
+ # ===
20
+
21
+
22
+ require 'stringio'
23
+
24
+ require 'chem/data'
25
+ require 'chem/utils'
26
+ require 'chem/model'
27
+ require 'chem/appl'
28
+ require 'chem/db'
29
+
30
+ require 'tempfile'
31
+
32
+ module Chem
33
+
34
+ autoload :MDL, 'chem/db/mdl.rb'
35
+ autoload :CDX, 'chem/db/cdx.rb'
36
+ autoload :G98, 'chem/db/g98.rb'
37
+ autoload :GSpan, 'chem/db/gspan.rb'
38
+
39
+ module_function
40
+
41
+ # returns first entry
42
+ def find_first str
43
+ p str
44
+ end
45
+
46
+ # format_class = Chem.autodetect("file.mol")
47
+ #
48
+ # Automatically detect file type and returns
49
+ # appropriate class to parse it
50
+ def self.autodetect file
51
+ ChemTypeRegistry.find{|format| format.detect_file file}
52
+ end
53
+
54
+ # Makes possible to open chemical files.
55
+ # Guesses the file type based on the extension of the file name.
56
+ #
57
+ # Examples : So if the file name is "benzene.mol",
58
+ #
59
+ # mol = Chem.open_mol("benzene.mol") # returns MDLMolecule object
60
+ #
61
+ def open_mol file, format_type = nil
62
+ format = nil
63
+ if format_type == nil
64
+ format = Chem.autodetect(file)
65
+ else
66
+ format = ChemTypeRegistry.find{|format| format.detect_type format_type}
67
+ end
68
+ raise NotImplementedError unless format
69
+ return format.parse(file) if format
70
+ end
71
+
72
+ alias :parse_file :open_mol
73
+ module_function :parse_file
74
+
75
+ #
76
+ def self.save(array, filename)
77
+ format = autodetect filename
78
+ format.save(array, filename)
79
+ end
80
+
81
+ def parse_smiles smiles
82
+ require 'chem/db/smiles'
83
+ require 'chem/db/smiles/smiparser'
84
+ ::SmilesParser.parse_smiles(smiles)
85
+ end
86
+
87
+ def open_kegg dir
88
+ require 'chem/db/kegg'
89
+ Chem::KEGG::KeggDirectory.new(dir)
90
+ end
91
+
92
+ module Molecule
93
+
94
+ # Saves files for arbitrary format.
95
+ # file type is automatically detected by file extensions.
96
+ #
97
+ # You can optionally pass parameters as second argument.
98
+ # = Options
99
+ # :type:: => :png # Explicit file type
100
+ #
101
+ def save(filename, params = {}, &block)
102
+
103
+ format_type = params[:type]
104
+ format = ChemTypeRegistry.find{|format| format.detect_type format_type}
105
+
106
+ unless format_type
107
+ format = ChemTypeRegistry.find{|format| format.detect_file filename}
108
+ else
109
+ format = ChemTypeRegistry.find{|format| format.detect_type format_type}
110
+ end
111
+
112
+ unless format
113
+ raise(NotImplementedError)
114
+ end
115
+ format.save(self, filename, params)
116
+ end
117
+
118
+ end
119
+
120
+ end
121
+
122
+ # Syntax sugar for Chem.parse_smiles("smiles_string")
123
+ # Returns molecular object.
124
+ # Example
125
+ # SMILES("C1CCCC1")
126
+ def SMILES smiles
127
+ Chem.parse_smiles(smiles)
128
+ end
129
+
130
+
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'win32ole'
4
+ controle = WIN32OLE.new('Chem3D.Control')
5
+ application = WIN32OLE.new('Chem3D.Application')
6
+ documents = application.documents
7
+ #cd = WIN32OLE.new('ChemDraw.Application')
8
+ #bounds = WIN32OLE.new('Chem3D.Bounds')
9
+
10
+ #documents.application.visible = true
11
+
12
+ error = open("error.txt", "w")
13
+
14
+ Dir.glob('/home/nobuya/src/mol/mol/C*.mol').each do |file|
15
+ /(C\d+).mol/ =~ file
16
+ input = 'c:\\cygwin\\home\\nobuya\\src\\mol\\mol\\' + $1 + '.mol'
17
+ output = 'c:\\cygwin\\home\\nobuya\\mop\\' + $1 + '.mop'
18
+
19
+ puts input
20
+ document = documents.open(input)
21
+ if document
22
+ document.saveAs(output)
23
+ document.close
24
+ else
25
+ error.puts(input)
26
+ end
27
+ end
28
+
29
+ __END__
30
+ p document = documents.open('c:\cygwin\home\nobuya\src\mol\mol\C00001.mol')
31
+ p documents.Item(0)
32
+ p document.stericEnergy
33
+ document.saveAs('c:\cygwin\home\nobuya\xyz\C00001.xyz')
34
+
35
+
36
+
@@ -0,0 +1,40 @@
1
+ #
2
+ # chem/appl/tinker/nucleic.rb - Tinker/nucleic wrapper
3
+ #
4
+ #
5
+ # $Id: nucleic.rb 128 2006-02-03 02:53:22Z tanaka $
6
+ #
7
+
8
+ # = Chem::TINKER
9
+ # Tinker protein wrapper.
10
+ # Example :
11
+ # #!/usr/bin/env ruby
12
+ # require 'chem'
13
+ #
14
+ # === SEE ALSO
15
+ # * http://dasher.wustl.edu/tinker/
16
+
17
+
18
+ module Chem
19
+
20
+ class TinkerNucleic
21
+
22
+ def initialize(cmd_line)
23
+ @cmd_line = cmd_line + ' -stdout'
24
+ end
25
+
26
+ def exec
27
+ begin
28
+ @io = IO.popen(@cmd_line, "w+")
29
+ @result = @io.read
30
+ return @result
31
+ ensure
32
+ @io.close
33
+ end
34
+ end
35
+ attr_reader :io, :result
36
+
37
+ end
38
+
39
+ end
40
+
@@ -0,0 +1,43 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+
4
+ if __FILE__ == $0
5
+ def make_nucleic
6
+ nucleic = "gtggcgatctttccgaaagcgatgactggagcgaagaaccaaagcagtgacatttgtctgatgccgcacgtaggcctgataagacgcggacagcgtcgcatcaggcatcttgtgcaaatgtcggatgcggcgtga"
7
+ require 'bio'
8
+ open("|nucleic", "w") do |out|
9
+ out.puts "nnn"
10
+ out.puts "Generated by Ruby"
11
+ out.puts "amber98.prm"
12
+ out.puts
13
+ nucleic.each_byte do |c|
14
+ out.puts c.chr
15
+ end
16
+ out.puts
17
+ sleep(1)
18
+ out.puts "Y"
19
+ end
20
+ end
21
+ # make_nucleic
22
+ # sleep(1)
23
+ mol = TinkerReader.new(open('nnn.xyz', 'r')).mol
24
+ require 'pov_writer'
25
+ pov = PovWriter.new
26
+ output = open("nucleic.pov", 'w')
27
+ output.puts pov.atom('O', 0.90, 0.00, 0.00)
28
+ output.puts pov.atom('H', 0.50, 0.50, 0.90)
29
+ output.puts pov.atom('N', 0.50, 0.00, 0.50)
30
+ output.puts pov.atom('C', 0.50, 0.50, 0.50)
31
+ output.puts pov.atom('S', 0.50, 0.50, 0.10)
32
+ output.puts pov.atom('P', 0.50, 0.50, 0.10)
33
+ mol.atoms.each do |index, atom|
34
+ output.puts "object {atom_#{atom.element} translate <#{atom.x}, #{atom.y}, #{atom.z}>}"
35
+ end
36
+ mol.bonds.each do |bond|
37
+ output.puts pov.bond(bond.b, bond.e)
38
+ end
39
+ # output.puts(pov.helix(mol))
40
+ output.puts pov.light
41
+ output.puts pov.camera(120, -50, -100, 120, 0, -100)
42
+ output.close
43
+ end
@@ -0,0 +1,4 @@
1
+ require 'chem/data/periodic_table'
2
+ require 'chem/data/atomic_weight'
3
+ require 'chem/data/electronegativity'
4
+ require 'chem/data/character'
@@ -0,0 +1,124 @@
1
+ # Table of atomic weight
2
+ # extracted from http://www.chem.qmul.ac.uk/iupac/AtWt/index.html
3
+
4
+ module Chem
5
+ AtomicWeight = {
6
+ :H => 1.00794,
7
+ :He => 4.002602,
8
+ :Li => 6.941,
9
+ :Be => 9.012182,
10
+ :B => 10.811,
11
+ :C => 12.0107,
12
+ :N => 14.0067,
13
+ :O => 15.9994,
14
+ :F => 18.9984032,
15
+ :Ne => 20.1797,
16
+ :Na => 22.989770,
17
+ :Mg => 24.3050,
18
+ :Al => 26.981538,
19
+ :Si => 28.0855,
20
+ :P => 30.973761,
21
+ :S => 32.065,
22
+ :Cl => 35.453,
23
+ :Ar => 39.948,
24
+ :K => 39.0983,
25
+ :Ca => 40.078,
26
+ :Sc => 44.955910,
27
+ :Ti => 47.867,
28
+ :V => 50.9415,
29
+ :Cr => 51.9961,
30
+ :Mn => 54.938049,
31
+ :Fe => 55.845,
32
+ :Co => 58.933200,
33
+ :Ni => 58.6934,
34
+ :Cu => 63.546,
35
+ :Zn => 65.409,
36
+ :Ga => 69.723,
37
+ :Ge => 72.64,
38
+ :As => 74.92160,
39
+ :Se => 78.96,
40
+ :Br => 79.904,
41
+ :Kr => 83.798,
42
+ :Rb => 85.4678,
43
+ :Sr => 87.62,
44
+ :Y => 88.90585,
45
+ :Zr => 91.224,
46
+ :Nb => 92.90638,
47
+ :Mo => 95.94,
48
+ :Tc => 98,
49
+ :Ru => 101.07,
50
+ :Rh => 102.90550,
51
+ :Pd => 106.42,
52
+ :Ag => 107.8682,
53
+ :Cd => 112.411,
54
+ :In => 114.818,
55
+ :Sn => 118.710,
56
+ :Sb => 121.760,
57
+ :Te => 127.60,
58
+ :I => 126.90447,
59
+ :Xe => 131.293,
60
+ :Cs => 132.90545,
61
+ :Ba => 137.327,
62
+ :La => 138.9055,
63
+ :Ce => 140.116,
64
+ :Pr => 140.90765,
65
+ :Nd => 144.24,
66
+ :Pm => 145,
67
+ :Sm => 150.36,
68
+ :Eu => 151.964,
69
+ :Gd => 157.25,
70
+ :Tb => 158.92534,
71
+ :Dy => 162.500,
72
+ :Ho => 164.93032,
73
+ :Er => 167.259,
74
+ :Tm => 168.93421,
75
+ :Yb => 173.04,
76
+ :Lu => 174.967,
77
+ :Hf => 178.49,
78
+ :Ta => 180.9479,
79
+ :W => 183.84,
80
+ :Re => 186.207,
81
+ :Os => 190.23,
82
+ :Ir => 192.217,
83
+ :Pt => 195.078,
84
+ :Au => 196.96655,
85
+ :Hg => 200.59,
86
+ :Tl => 204.3833,
87
+ :Pb => 207.2,
88
+ :Bi => 208.98038,
89
+ :Po => 209,
90
+ :At => 210,
91
+ :Rn => 222,
92
+ :Fr => 223,
93
+ :Ra => 226,
94
+ :Ac => 227,
95
+ :Th => 232.0381,
96
+ :Pa => 231.03588,
97
+ :U => 238.02891,
98
+ :Np => 237,
99
+ :Pu => 244,
100
+ :Am => 243,
101
+ :Cm => 247,
102
+ :Bk => 247,
103
+ :Cf => 251,
104
+ :Es => 252,
105
+ :Fm => 257,
106
+ :Md => 258,
107
+ :No => 259,
108
+ :Lr => 262,
109
+ :Rf => 261,
110
+ :Db => 262,
111
+ :Sg => 266,
112
+ :Bh => 264,
113
+ :Hs => 277,
114
+ :Mt => 268,
115
+ :Ds => 281,
116
+ :Rg => 272,
117
+ :Uub=> 285,
118
+ :Uut=> 284,
119
+ :Uuq=> 289,
120
+ :Uup=> 288,
121
+ #116 Uuh Ununhexium see Note above
122
+ #118 Uuo Ununoctium see Note above
123
+ }
124
+ end
@@ -0,0 +1,2 @@
1
+ NaturalBondOrder = {:C => 4, :H => 1, :O => 2, :N => 3, :Mg => 2, :P => 5, :S => 2, :Cl => 1, :Fe => 0,
2
+ :R => 4, :* => 4}
@@ -0,0 +1,14 @@
1
+ # Table of Electro negativity
2
+ ElectroNegativity = {:H => 2.20, :He => 0, :Li => 0.98, :Be => 1.57, :B => 2.04, :C => 2.55, :N => 3.04, :O => 3.44, :F => 3.98,
3
+ :Ne => 0, :Na => 0.93, :Mg => 1.31, :Al => 1.61, :Si => 1.90, :P => 2.19, :S => 2.58, :Cl => 3.16,
4
+ :Ar => 0, :K => 0.82, :Ca => 1.00, :Sc => 1.36, :Ti => 1.54, :V => 1.63, :Cr => 1.66, :Mn => 1.55,
5
+ :Fe => 1.83, :Co => 1.88, :Ni => 1.91, :Cu => 1.90, :Zn => 1.65, :Ga => 1.81, :Ge => 2.01, :As => 2.18,
6
+ :Se => 2.55, :Br => 2.96, :Kr => 3.00, :Rb => 0.82, :Sr => 0.95, :Y => 1.22, :Zr => 1.33, :Nb => 1.6,
7
+ :Mo => 2.16, :Tc => 1.9, :Ru => 2.2, :Rh => 2.28, :Pd => 2.20, :Ag => 1.93, :Cd => 1.69, :In => 1.78,
8
+ :Sn => 1.96, :Sb => 2.05, :Te => 2.1, :I => 2.66, :Xe => 2.6, :Cs => 0.79, :Ba => 0.89, :Lu => 1.27,
9
+ :Hf => 1.3, :Ta => 1.5, :W => 2.36, :Re => 1.9, :Os => 2.2, :Ir => 2.20, :Pt => 2.28, :Au => 2.54,
10
+ :Hg => 2.00, :Tl => 1.62, :Pb => 2.33, :Bi => 2.02, :Po => 2.0, :At => 2.2, :Rn => 0, :Fr => 0.7,
11
+ :Ra => 0.9, :Lr => 0, :Rf => 0, :Db => 0, :Sg => 0, :Bh => 0, :Hs => 0, :Mt => 0,
12
+ :Ds => 0, :Rg => 0, :Uub => 0, :Uut => 0, :Uuq => 0, :Uup => 0, :Uuh => 0, :Uus => 0,
13
+ :Uuo => 0,
14
+ :R => 2.55, :* => 2.55}# special atoms are tree as carbon
@@ -0,0 +1,6 @@
1
+
2
+ module Chem
3
+ 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}
4
+
5
+ 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]
6
+ end
@@ -0,0 +1 @@
1
+ PrimeNumber = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919]
@@ -0,0 +1 @@
1
+ $vdw={"Ag"=>1.72, "Ar"=>1.88, "As"=>1.85, "Au"=>1.66, "Br"=>1.85, "C"=>1.70, "Cd"=>1.58, "Cl"=>1.75, "Cu"=>1.40, "F"=>1.47, "Ga"=>1.87, "H"=>1.20, "He"=>1.40, "Hg"=>1.55, "I"=>1.98, "In"=>1.93, "K"=>2.75, "Kr"=>2.02, "Li"=>1.82, "Mg"=>1.73, "N"=>1.55, "Na"=>2.27, "Ne"=>1.54, "Ni"=>1.63, "O"=>1.52, "P"=>1.80, "Pb"=>2.02, "Pd"=>1.63, "Pt"=>1.72, "S"=>1.80, "Se"=>1.90, "Si"=>2.10, "Sn"=>2.17, "Te"=>2.06, "Tl"=>1.96, "U"=>1.86, "Xe"=>2.16, "Zn"=>1.39}
@@ -0,0 +1,64 @@
1
+
2
+ #require 'chem/db/smiles'
3
+
4
+ module Chem
5
+
6
+ ChemTypeRegistry = []
7
+
8
+ module Db
9
+ module_function
10
+
11
+
12
+ # Load type files
13
+ # User would not call this method
14
+ def load # :nodoc
15
+ $LOAD_PATH.each do |path|
16
+ dir = File.join(path, 'chem/db/types')
17
+ next unless File.directory?(dir)
18
+ Dir.entries(dir).each do |entry|
19
+ if File.extname(entry) == ".rb" and not /^_/.match(entry)
20
+ begin
21
+ require(File.join(dir, entry))
22
+ rescue LoadError => e
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ Chem::Db::load
34
+
35
+ __END__
36
+ # Following script is obsolete
37
+ # auto.rb is maintained manually
38
+ #
39
+ # if $0 == __FILE__
40
+ # $: << ".."
41
+ # $: << "../../ext"
42
+ # require 'chem'
43
+ # require 'find'
44
+
45
+ # open("db/auto.rb", "w") do |out|
46
+
47
+ # out.puts "["
48
+ # puts "List all classes that require autoload"
49
+ # Find.find("db/") do |file|
50
+ # Find.prune if /\.svn/.match(file) or /~/.match(file) or /\.ry/.match(file)
51
+ # next if File.directory?(file)
52
+ # open(file) do |input|
53
+ # input.each do |line|
54
+ # if m = / class +([^ ]+)/.match(line)
55
+ # out.puts " [:%-30s , 'chem/%s']," % [m[1].chop, file.strip]
56
+ # end
57
+ # end
58
+ # end
59
+ # end
60
+ # out.puts "].each do |mod, file|"
61
+ # out.puts " Chem.autoload mod, file"
62
+ # out.puts "end"
63
+ # end
64
+ # end