molSimplify 1.7.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. docs/source/conf.py +224 -0
  2. molSimplify/Classes/__init__.py +6 -0
  3. molSimplify/Classes/atom3D.py +235 -0
  4. molSimplify/Classes/dft_obs.py +130 -0
  5. molSimplify/Classes/globalvars.py +827 -0
  6. molSimplify/Classes/helpers.py +161 -0
  7. molSimplify/Classes/ligand.py +2330 -0
  8. molSimplify/Classes/mGUI.py +2493 -0
  9. molSimplify/Classes/mWidgets.py +438 -0
  10. molSimplify/Classes/miniGUI.py +41 -0
  11. molSimplify/Classes/mol2D.py +260 -0
  12. molSimplify/Classes/mol3D.py +5846 -0
  13. molSimplify/Classes/monomer3D.py +253 -0
  14. molSimplify/Classes/partialcharges.py +226 -0
  15. molSimplify/Classes/protein3D.py +1178 -0
  16. molSimplify/Classes/rundiag.py +151 -0
  17. molSimplify/Data/ML.dat +212 -0
  18. molSimplify/Data/MLS_FSR_for_inter.dat +23 -0
  19. molSimplify/Data/MLS_FSR_for_inter2.dat +23 -0
  20. molSimplify/Data/MLS_angle_for_click.dat +8 -0
  21. molSimplify/Data/MLS_angle_for_inter.dat +23 -0
  22. molSimplify/Data/MLS_angle_for_inter2.dat +48 -0
  23. molSimplify/Data/MLS_angle_for_intra.dat +10 -0
  24. molSimplify/Data/MLS_angle_for_intra2.dat +6 -0
  25. molSimplify/Data/MLS_angle_for_oa.dat +18 -0
  26. molSimplify/Data/ML_FSR_for_inter.dat +112 -0
  27. molSimplify/Data/ML_FSR_for_inter2.dat +110 -0
  28. molSimplify/Data/ML_bond_for_cat.dat +8 -0
  29. molSimplify/Data/ML_bond_for_click.dat +8 -0
  30. molSimplify/Data/ML_bond_for_inter.dat +48 -0
  31. molSimplify/Data/ML_bond_for_inter2.dat +48 -0
  32. molSimplify/Data/ML_bond_for_intra.dat +10 -0
  33. molSimplify/Data/ML_bond_for_intra2.dat +6 -0
  34. molSimplify/Data/ML_bond_for_oa.dat +18 -0
  35. molSimplify/Data/bp1.dat +21 -0
  36. molSimplify/Data/li.dat +3 -0
  37. molSimplify/Data/no.dat +2 -0
  38. molSimplify/Data/oct.dat +7 -0
  39. molSimplify/Data/pbp.dat +8 -0
  40. molSimplify/Data/spy.dat +6 -0
  41. molSimplify/Data/sqap.dat +9 -0
  42. molSimplify/Data/sqp.dat +5 -0
  43. molSimplify/Data/tbp.dat +6 -0
  44. molSimplify/Data/tdhd.dat +9 -0
  45. molSimplify/Data/thd.dat +5 -0
  46. molSimplify/Data/tpl.dat +4 -0
  47. molSimplify/Data/tpr.dat +7 -0
  48. molSimplify/Informatics/HFXsensitivity/__init__.py +0 -0
  49. molSimplify/Informatics/HFXsensitivity/measure_HFX_sensitivity_oxo_hat_reb_rel.py +443 -0
  50. molSimplify/Informatics/HFXsensitivity/measure_HFX_stable.py +346 -0
  51. molSimplify/Informatics/MOF/Linker_rotation.py +179 -0
  52. molSimplify/Informatics/MOF/MOF_descriptors.py +1299 -0
  53. molSimplify/Informatics/MOF/MOF_descriptors_alternate_functional.py +589 -0
  54. molSimplify/Informatics/MOF/MOF_functionalizer.py +1648 -0
  55. molSimplify/Informatics/MOF/PBC_functions.py +1347 -0
  56. molSimplify/Informatics/MOF/__init__.py +0 -0
  57. molSimplify/Informatics/MOF/atomic.py +267 -0
  58. molSimplify/Informatics/MOF/cluster_extraction.py +388 -0
  59. molSimplify/Informatics/MOF/fragment_MOFs_for_pormake.py +895 -0
  60. molSimplify/Informatics/MOF/monofunctionalized_BDC/index_information.py +10 -0
  61. molSimplify/Informatics/Mol2Parser.py +46 -0
  62. molSimplify/Informatics/RACassemble.py +408 -0
  63. molSimplify/Informatics/__init__.py +0 -0
  64. molSimplify/Informatics/active_learning/__init__.py +0 -0
  65. molSimplify/Informatics/active_learning/expected_improvement.py +269 -0
  66. molSimplify/Informatics/autocorrelation.py +1930 -0
  67. molSimplify/Informatics/clean_autocorrelation.py +778 -0
  68. molSimplify/Informatics/coulomb_analyze.py +67 -0
  69. molSimplify/Informatics/decoration_manager.py +193 -0
  70. molSimplify/Informatics/geo_analyze.py +88 -0
  71. molSimplify/Informatics/geometrics.py +56 -0
  72. molSimplify/Informatics/graph_analyze.py +163 -0
  73. molSimplify/Informatics/graph_racs.py +288 -0
  74. molSimplify/Informatics/jupyter_vis.py +172 -0
  75. molSimplify/Informatics/lacRACAssemble.py +2192 -0
  76. molSimplify/Informatics/lacRACAssemble_bisdithiolenes.py +236 -0
  77. molSimplify/Informatics/misc_descriptors.py +198 -0
  78. molSimplify/Informatics/organic_fingerprints.py +61 -0
  79. molSimplify/Informatics/partialcharges.py +345 -0
  80. molSimplify/Informatics/protein/activesite.py +53 -0
  81. molSimplify/Informatics/protein/pymol_add_hs.py +33 -0
  82. molSimplify/Informatics/rac155_geo.py +48 -0
  83. molSimplify/Ligands/(1_methylbenzimidazol_2_yl)pyridine.xyz +45 -0
  84. molSimplify/Ligands/1-4-dimethyl-1-2-3-triazole.xyz +15 -0
  85. molSimplify/Ligands/12crown4.mol +62 -0
  86. molSimplify/Ligands/Antipyrine.mol +58 -0
  87. molSimplify/Ligands/BPAbipy.mol +106 -0
  88. molSimplify/Ligands/Hpyrrole.mol +26 -0
  89. molSimplify/Ligands/N-quinolinylbutyramidate.xyz +31 -0
  90. molSimplify/Ligands/N-quinolinylmethylmethinylacetamidate.xyz +30 -0
  91. molSimplify/Ligands/NMe2_-1.xyz +11 -0
  92. molSimplify/Ligands/PCy3.mol +111 -0
  93. molSimplify/Ligands/PMe3.xyz +15 -0
  94. molSimplify/Ligands/PPh3.mol +76 -0
  95. molSimplify/Ligands/Propyphenazone.mol +77 -0
  96. molSimplify/Ligands/acac.mol +33 -0
  97. molSimplify/Ligands/acacen.mol +76 -0
  98. molSimplify/Ligands/acetate.smi +1 -0
  99. molSimplify/Ligands/acetate.xyz +9 -0
  100. molSimplify/Ligands/aceticacidbipyridine.mol +70 -0
  101. molSimplify/Ligands/acetonitrile.mol +17 -0
  102. molSimplify/Ligands/alanine.mol +30 -0
  103. molSimplify/Ligands/alphabetizer.py +21 -0
  104. molSimplify/Ligands/amine.mol +11 -0
  105. molSimplify/Ligands/ammonia.mol +12 -0
  106. molSimplify/Ligands/arginine.mol +58 -0
  107. molSimplify/Ligands/asparagine.mol +38 -0
  108. molSimplify/Ligands/aspartic_acid.mol +35 -0
  109. molSimplify/Ligands/azide.mol +11 -0
  110. molSimplify/Ligands/benzene.mol +28 -0
  111. molSimplify/Ligands/benzene_pi.mol +30 -0
  112. molSimplify/Ligands/benzenedithiol.mol +30 -0
  113. molSimplify/Ligands/benzenethiol.mol +30 -0
  114. molSimplify/Ligands/benzylisocy.mol +38 -0
  115. molSimplify/Ligands/bidiazine.mol +42 -0
  116. molSimplify/Ligands/bidiazole.mol +38 -0
  117. molSimplify/Ligands/bifuran.mol +38 -0
  118. molSimplify/Ligands/bihydrodiazine.mol +58 -0
  119. molSimplify/Ligands/bihydrodiazole.mol +46 -0
  120. molSimplify/Ligands/bihydrooxazine.mol +54 -0
  121. molSimplify/Ligands/bihydrooxazole.mol +42 -0
  122. molSimplify/Ligands/bihydrothiazine.mol +54 -0
  123. molSimplify/Ligands/bihydrothiazole.mol +42 -0
  124. molSimplify/Ligands/biimidazole.mol +38 -0
  125. molSimplify/Ligands/bioxazole.mol +34 -0
  126. molSimplify/Ligands/bipy.mol +46 -0
  127. molSimplify/Ligands/bipyrazine.xyz +20 -0
  128. molSimplify/Ligands/bipyrimidine.mol +42 -0
  129. molSimplify/Ligands/bipyrrole.mol +42 -0
  130. molSimplify/Ligands/bisnapthyridylpyridine.mol +111 -0
  131. molSimplify/Ligands/bithiazole.mol +34 -0
  132. molSimplify/Ligands/bromide.mol +7 -0
  133. molSimplify/Ligands/bromide.smi +1 -0
  134. molSimplify/Ligands/c2.mol +9 -0
  135. molSimplify/Ligands/caprolactone.mol +41 -0
  136. molSimplify/Ligands/carbonyl.mol +8 -0
  137. molSimplify/Ligands/carboxyl.mol +13 -0
  138. molSimplify/Ligands/cat.mol +30 -0
  139. molSimplify/Ligands/chloride.mol +7 -0
  140. molSimplify/Ligands/chloride.smi +1 -0
  141. molSimplify/Ligands/chloropyridine.mol +27 -0
  142. molSimplify/Ligands/co2.mol +10 -0
  143. molSimplify/Ligands/corrolazine.mol +72 -0
  144. molSimplify/Ligands/cs.mol +8 -0
  145. molSimplify/Ligands/cyanate.xyz +5 -0
  146. molSimplify/Ligands/cyanide.mol +9 -0
  147. molSimplify/Ligands/cyanoaceticporphyrin.mol +114 -0
  148. molSimplify/Ligands/cyanopyridine.mol +29 -0
  149. molSimplify/Ligands/cyclam.mol +81 -0
  150. molSimplify/Ligands/cyclen.mol +69 -0
  151. molSimplify/Ligands/cyclopentadienyl.mol +26 -0
  152. molSimplify/Ligands/cysteine.mol +32 -0
  153. molSimplify/Ligands/diaminomethyl.mol +19 -0
  154. molSimplify/Ligands/diazine.mol +25 -0
  155. molSimplify/Ligands/diazole.mol +23 -0
  156. molSimplify/Ligands/dicyanamide.mol +15 -0
  157. molSimplify/Ligands/dihydrofuran.mol +27 -0
  158. molSimplify/Ligands/dmap.xyz +35 -0
  159. molSimplify/Ligands/dmf.mol +28 -0
  160. molSimplify/Ligands/dmi.mol +41 -0
  161. molSimplify/Ligands/dmpe.mol +52 -0
  162. molSimplify/Ligands/dpmu.mol +47 -0
  163. molSimplify/Ligands/dppe.mol +112 -0
  164. molSimplify/Ligands/edta.mol +69 -0
  165. molSimplify/Ligands/en.mol +28 -0
  166. molSimplify/Ligands/ethanethiol.mol +21 -0
  167. molSimplify/Ligands/ethanolamine.mol +26 -0
  168. molSimplify/Ligands/ethbipy.mol +70 -0
  169. molSimplify/Ligands/ethyl.mol +19 -0
  170. molSimplify/Ligands/ethylamine.mol +24 -0
  171. molSimplify/Ligands/ethylene.mol +16 -0
  172. molSimplify/Ligands/ethylesteracac.mol +57 -0
  173. molSimplify/Ligands/fluoride.mol +7 -0
  174. molSimplify/Ligands/fluoride.smi +1 -0
  175. molSimplify/Ligands/formaldehyde.mol +12 -0
  176. molSimplify/Ligands/formamidate.xyz +8 -0
  177. molSimplify/Ligands/formate.xyz +6 -0
  178. molSimplify/Ligands/furan.mol +23 -0
  179. molSimplify/Ligands/glutamic_acid.mol +42 -0
  180. molSimplify/Ligands/glutamine.mol +44 -0
  181. molSimplify/Ligands/glycinate.mol +23 -0
  182. molSimplify/Ligands/glycine.mol +24 -0
  183. molSimplify/Ligands/h2s.mol +10 -0
  184. molSimplify/Ligands/helium.mol +6 -0
  185. molSimplify/Ligands/histidine.mol +45 -0
  186. molSimplify/Ligands/hmpa.mol +62 -0
  187. molSimplify/Ligands/hs-.mol +9 -0
  188. molSimplify/Ligands/hydride.mol +7 -0
  189. molSimplify/Ligands/hydrocarboxyacetylide.xyz +8 -0
  190. molSimplify/Ligands/hydrocyanide.mol +10 -0
  191. molSimplify/Ligands/hydrodiazine.mol +33 -0
  192. molSimplify/Ligands/hydrodiazole.mol +27 -0
  193. molSimplify/Ligands/hydrogensulfide.mol +10 -0
  194. molSimplify/Ligands/hydroisocyanide.mol +11 -0
  195. molSimplify/Ligands/hydrooxazine.mol +31 -0
  196. molSimplify/Ligands/hydrooxazole.mol +25 -0
  197. molSimplify/Ligands/hydrothiazine.mol +31 -0
  198. molSimplify/Ligands/hydrothiazole.mol +25 -0
  199. molSimplify/Ligands/hydroxyl.mol +9 -0
  200. molSimplify/Ligands/imidazole.mol +23 -0
  201. molSimplify/Ligands/imidazolidinone.mol +29 -0
  202. molSimplify/Ligands/imine.mol +13 -0
  203. molSimplify/Ligands/iminodiacetic.mol +33 -0
  204. molSimplify/Ligands/iodide.mol +7 -0
  205. molSimplify/Ligands/iodobenzene.xyz +14 -0
  206. molSimplify/Ligands/isoleucine.mol +48 -0
  207. molSimplify/Ligands/isothiocyanate.mol +11 -0
  208. molSimplify/Ligands/leucine.mol +48 -0
  209. molSimplify/Ligands/ligands.dict +257 -0
  210. molSimplify/Ligands/lysine.mol +54 -0
  211. molSimplify/Ligands/mebenzenedithiol.mol +36 -0
  212. molSimplify/Ligands/mebim_py.xyz +29 -0
  213. molSimplify/Ligands/mebim_pz.xyz +28 -0
  214. molSimplify/Ligands/mebipy.mol +58 -0
  215. molSimplify/Ligands/mecat.mol +36 -0
  216. molSimplify/Ligands/methanal.mol +11 -0
  217. molSimplify/Ligands/methanethiol.mol +15 -0
  218. molSimplify/Ligands/methanol.mol +16 -0
  219. molSimplify/Ligands/methionine.mol +44 -0
  220. molSimplify/Ligands/methyl.mol +13 -0
  221. molSimplify/Ligands/methylacetylide.xyz +8 -0
  222. molSimplify/Ligands/methylamine.mol +19 -0
  223. molSimplify/Ligands/methylazide.xyz +9 -0
  224. molSimplify/Ligands/methylisocy.mol +17 -0
  225. molSimplify/Ligands/methylpyridine.mol +33 -0
  226. molSimplify/Ligands/n2.mol +8 -0
  227. molSimplify/Ligands/n4py.xyz +51 -0
  228. molSimplify/Ligands/nch.mol +10 -0
  229. molSimplify/Ligands/nco-.mol +11 -0
  230. molSimplify/Ligands/nethanolamine.mol +26 -0
  231. molSimplify/Ligands/nitrate.mol +14 -0
  232. molSimplify/Ligands/nitrite.mol +11 -0
  233. molSimplify/Ligands/nitro.mol +11 -0
  234. molSimplify/Ligands/nitrobipy.mol +54 -0
  235. molSimplify/Ligands/nitroso.mol +8 -0
  236. molSimplify/Ligands/nme3.mol +30 -0
  237. molSimplify/Ligands/no-.mol +10 -0
  238. molSimplify/Ligands/no2-.mol +11 -0
  239. molSimplify/Ligands/noxygen.mol +8 -0
  240. molSimplify/Ligands/ns-.mol +10 -0
  241. molSimplify/Ligands/o-pyridylbenzene.xyz +23 -0
  242. molSimplify/Ligands/o-pyridylphenylanion.xyz +22 -0
  243. molSimplify/Ligands/o2-.mol +9 -0
  244. molSimplify/Ligands/o2.xyz +4 -0
  245. molSimplify/Ligands/och2.mol +12 -0
  246. molSimplify/Ligands/oethanolamine.mol +26 -0
  247. molSimplify/Ligands/ome2.mol +22 -0
  248. molSimplify/Ligands/ooh.xyz +5 -0
  249. molSimplify/Ligands/oxalate.mol +17 -0
  250. molSimplify/Ligands/oxalate.smi +1 -0
  251. molSimplify/Ligands/oxygen.mol +7 -0
  252. molSimplify/Ligands/pentacyanocyclopentadienide.mol +36 -0
  253. molSimplify/Ligands/ph2-.mol +11 -0
  254. molSimplify/Ligands/ph3.mol +12 -0
  255. molSimplify/Ligands/phen.mol +51 -0
  256. molSimplify/Ligands/phenacac.mol +63 -0
  257. molSimplify/Ligands/phenalalanine.mol +51 -0
  258. molSimplify/Ligands/phendione.mol +51 -0
  259. molSimplify/Ligands/phenphen.mol +75 -0
  260. molSimplify/Ligands/phenylbenzoxazole.mol +54 -0
  261. molSimplify/Ligands/phenylcyc.mol +99 -0
  262. molSimplify/Ligands/phenylenediamine.mol +37 -0
  263. molSimplify/Ligands/phenylisocy.mol +32 -0
  264. molSimplify/Ligands/phosacidbipy.mol +66 -0
  265. molSimplify/Ligands/phosphine.mol +13 -0
  266. molSimplify/Ligands/phosphorine.mol +27 -0
  267. molSimplify/Ligands/phosphorustrifluoride.mol +12 -0
  268. molSimplify/Ligands/phthalocyanine.mol +126 -0
  269. molSimplify/Ligands/pme3o.mol +32 -0
  270. molSimplify/Ligands/porphyrin.mol +82 -0
  271. molSimplify/Ligands/pph3o.mol +77 -0
  272. molSimplify/Ligands/proline.mol +39 -0
  273. molSimplify/Ligands/propdiol.mol +21 -0
  274. molSimplify/Ligands/propylene.mol +23 -0
  275. molSimplify/Ligands/pyridine.mol +27 -0
  276. molSimplify/Ligands/pyrimidone.mol +27 -0
  277. molSimplify/Ligands/pyrrole.mol +24 -0
  278. molSimplify/Ligands/quinoxalinedithiol.mol +39 -0
  279. molSimplify/Ligands/s2-.mol +9 -0
  280. molSimplify/Ligands/salen.mol +75 -0
  281. molSimplify/Ligands/salphen.mol +84 -0
  282. molSimplify/Ligands/serine.mol +32 -0
  283. molSimplify/Ligands/simple_ligands.dict +14 -0
  284. molSimplify/Ligands/sulfacidbipy.mol +63 -0
  285. molSimplify/Ligands/tbucat.mol +54 -0
  286. molSimplify/Ligands/tbuphisocy.mol +56 -0
  287. molSimplify/Ligands/tbutylcyclen.mol +166 -0
  288. molSimplify/Ligands/tbutylisocy.mol +35 -0
  289. molSimplify/Ligands/tbutylthiol.mol +33 -0
  290. molSimplify/Ligands/tcnoet.mol +43 -0
  291. molSimplify/Ligands/tcnoetOH.mol +45 -0
  292. molSimplify/Ligands/terpy.mol +65 -0
  293. molSimplify/Ligands/tetrahydrofuran.mol +31 -0
  294. molSimplify/Ligands/thiane.mol +37 -0
  295. molSimplify/Ligands/thiazole.mol +21 -0
  296. molSimplify/Ligands/thiocyanate.mol +11 -0
  297. molSimplify/Ligands/thiol.mol +9 -0
  298. molSimplify/Ligands/thiophene.mol +23 -0
  299. molSimplify/Ligands/thiopyridine.mol +29 -0
  300. molSimplify/Ligands/threonine.mol +38 -0
  301. molSimplify/Ligands/tpp.mol +165 -0
  302. molSimplify/Ligands/tricyanomethyl.mol +19 -0
  303. molSimplify/Ligands/trifluoromethyl.mol +13 -0
  304. molSimplify/Ligands/tryptophan.mol +60 -0
  305. molSimplify/Ligands/tyrosine.mol +53 -0
  306. molSimplify/Ligands/uthiol.mol +11 -0
  307. molSimplify/Ligands/uthiolme2.mol +23 -0
  308. molSimplify/Ligands/valine.mol +42 -0
  309. molSimplify/Ligands/water.mol +10 -0
  310. molSimplify/Ligands/x.mol +6 -0
  311. molSimplify/Scripts/__init__.py +0 -0
  312. molSimplify/Scripts/addtodb.py +308 -0
  313. molSimplify/Scripts/cellbuilder.py +1592 -0
  314. molSimplify/Scripts/cellbuilder_tools.py +701 -0
  315. molSimplify/Scripts/chains.py +342 -0
  316. molSimplify/Scripts/convert_2to3.py +23 -0
  317. molSimplify/Scripts/dbinteract.py +631 -0
  318. molSimplify/Scripts/distgeom.py +617 -0
  319. molSimplify/Scripts/findcorrelations.py +287 -0
  320. molSimplify/Scripts/generator.py +267 -0
  321. molSimplify/Scripts/geometry.py +1224 -0
  322. molSimplify/Scripts/grabguivars.py +845 -0
  323. molSimplify/Scripts/in_b3lyp_usetc.py +141 -0
  324. molSimplify/Scripts/inparse.py +1673 -0
  325. molSimplify/Scripts/io.py +1149 -0
  326. molSimplify/Scripts/isomers.py +415 -0
  327. molSimplify/Scripts/jobgen.py +247 -0
  328. molSimplify/Scripts/krr_prep.py +1262 -0
  329. molSimplify/Scripts/molSimplify_io.py +18 -0
  330. molSimplify/Scripts/molden2psi4wfn.py +166 -0
  331. molSimplify/Scripts/namegen.py +32 -0
  332. molSimplify/Scripts/nn_prep.py +561 -0
  333. molSimplify/Scripts/oct_check_mols.py +782 -0
  334. molSimplify/Scripts/periodic_QE.py +97 -0
  335. molSimplify/Scripts/postmold.py +304 -0
  336. molSimplify/Scripts/postmwfn.py +709 -0
  337. molSimplify/Scripts/postparse.py +488 -0
  338. molSimplify/Scripts/postproc.py +139 -0
  339. molSimplify/Scripts/qcgen.py +1450 -0
  340. molSimplify/Scripts/rmsd.py +489 -0
  341. molSimplify/Scripts/rungen.py +670 -0
  342. molSimplify/Scripts/structgen.py +3040 -0
  343. molSimplify/Scripts/tf_nn_prep.py +894 -0
  344. molSimplify/Scripts/tsgen.py +295 -0
  345. molSimplify/Scripts/uq_calibration.py +69 -0
  346. molSimplify/__init__.py +0 -0
  347. molSimplify/__main__.py +197 -0
  348. molSimplify/icons/chemdb.png +0 -0
  349. molSimplify/icons/hjklogo.png +0 -0
  350. molSimplify/icons/icon.png +0 -0
  351. molSimplify/icons/logo.png +0 -0
  352. molSimplify/icons/logo_old.png +0 -0
  353. molSimplify/icons/petachem.png +0 -0
  354. molSimplify/icons/petachem2.png +0 -0
  355. molSimplify/icons/petachem_full.png +0 -0
  356. molSimplify/icons/pythonlogo.png +0 -0
  357. molSimplify/icons/sge copy.png +0 -0
  358. molSimplify/icons/sge.png +0 -0
  359. molSimplify/icons/slurm.png +0 -0
  360. molSimplify/icons/wft1.png +0 -0
  361. molSimplify/icons/wft2.png +0 -0
  362. molSimplify/icons/wft3.png +0 -0
  363. molSimplify/ml/__init__.py +0 -0
  364. molSimplify/ml/kernels.py +36 -0
  365. molSimplify/ml/layers.py +29 -0
  366. molSimplify/molscontrol/__init__.py +14 -0
  367. molSimplify/molscontrol/_version.py +521 -0
  368. molSimplify/molscontrol/clf_tools.py +144 -0
  369. molSimplify/molscontrol/data/README.md +21 -0
  370. molSimplify/molscontrol/data/look_and_say.dat +15 -0
  371. molSimplify/molscontrol/dynamic_classifier.py +514 -0
  372. molSimplify/molscontrol/io_tools.py +363 -0
  373. molSimplify/molscontrol/molscontrol.py +49 -0
  374. molSimplify/molscontrol/terachem/jobscript_control.sh +31 -0
  375. molSimplify/molscontrol/terachem/terachem_input +22 -0
  376. molSimplify/python_krr/X_train_TS.csv +535 -0
  377. molSimplify/python_krr/__init__.py +0 -0
  378. molSimplify/python_krr/hat2_X_mean_std.csv +3 -0
  379. molSimplify/python_krr/hat2_feature_names.csv +1 -0
  380. molSimplify/python_krr/hat2_y_mean_std.csv +2 -0
  381. molSimplify/python_krr/hat_X_mean_std.csv +6 -0
  382. molSimplify/python_krr/hat_feature_names.csv +1 -0
  383. molSimplify/python_krr/hat_krr_X_train.csv +5205 -0
  384. molSimplify/python_krr/hat_krr_dual_coef.csv +1 -0
  385. molSimplify/python_krr/hat_y_mean_std.csv +2 -0
  386. molSimplify/python_krr/sklearn_models.py +34 -0
  387. molSimplify/python_krr/y_train_TS.csv +535 -0
  388. molSimplify/python_nn/ANN.py +198 -0
  389. molSimplify/python_nn/__init__.py +0 -0
  390. molSimplify/python_nn/clf_analysis_tool.py +125 -0
  391. molSimplify/python_nn/dictionary_toolbox.py +49 -0
  392. molSimplify/python_nn/ensemble_test.py +309 -0
  393. molSimplify/python_nn/hs_center.csv +26 -0
  394. molSimplify/python_nn/hs_scale.csv +26 -0
  395. molSimplify/python_nn/ls_center.csv +26 -0
  396. molSimplify/python_nn/ls_scale.csv +26 -0
  397. molSimplify/python_nn/ms_hs_b1.csv +50 -0
  398. molSimplify/python_nn/ms_hs_b2.csv +50 -0
  399. molSimplify/python_nn/ms_hs_b3.csv +1 -0
  400. molSimplify/python_nn/ms_hs_w1.csv +50 -0
  401. molSimplify/python_nn/ms_hs_w2.csv +50 -0
  402. molSimplify/python_nn/ms_hs_w3.csv +1 -0
  403. molSimplify/python_nn/ms_ls_b1.csv +50 -0
  404. molSimplify/python_nn/ms_ls_b2.csv +50 -0
  405. molSimplify/python_nn/ms_ls_b3.csv +1 -0
  406. molSimplify/python_nn/ms_ls_w1.csv +50 -0
  407. molSimplify/python_nn/ms_ls_w2.csv +50 -0
  408. molSimplify/python_nn/ms_ls_w3.csv +1 -0
  409. molSimplify/python_nn/ms_slope_b1.csv +50 -0
  410. molSimplify/python_nn/ms_slope_b2.csv +50 -0
  411. molSimplify/python_nn/ms_slope_b3.csv +1 -0
  412. molSimplify/python_nn/ms_slope_w1.csv +50 -0
  413. molSimplify/python_nn/ms_slope_w2.csv +50 -0
  414. molSimplify/python_nn/ms_slope_w3.csv +1 -0
  415. molSimplify/python_nn/ms_split_b1.csv +50 -0
  416. molSimplify/python_nn/ms_split_b2.csv +50 -0
  417. molSimplify/python_nn/ms_split_b3.csv +1 -0
  418. molSimplify/python_nn/ms_split_w1.csv +50 -0
  419. molSimplify/python_nn/ms_split_w2.csv +50 -0
  420. molSimplify/python_nn/ms_split_w3.csv +1 -0
  421. molSimplify/python_nn/slope_center.csv +25 -0
  422. molSimplify/python_nn/slope_scale.csv +25 -0
  423. molSimplify/python_nn/split_center.csv +26 -0
  424. molSimplify/python_nn/split_scale.csv +26 -0
  425. molSimplify/python_nn/tf_ANN.py +762 -0
  426. molSimplify/python_nn/train_data.csv +1211 -0
  427. molSimplify/tf_nn/__init__.py +0 -0
  428. molSimplify/tf_nn/geo_static_clf/geo_static_clf_model.h5 +0 -0
  429. molSimplify/tf_nn/geo_static_clf/geo_static_clf_train_name.csv +1591 -0
  430. molSimplify/tf_nn/geo_static_clf/geo_static_clf_train_x.csv +2790 -0
  431. molSimplify/tf_nn/geo_static_clf/geo_static_clf_train_y.csv +2790 -0
  432. molSimplify/tf_nn/geo_static_clf/geo_static_clf_vars.csv +154 -0
  433. molSimplify/tf_nn/geos/hs_ii_bl_x.csv +1577 -0
  434. molSimplify/tf_nn/geos/hs_ii_bl_y.csv +1577 -0
  435. molSimplify/tf_nn/geos/hs_ii_model.h5 +0 -0
  436. molSimplify/tf_nn/geos/hs_ii_model.json +1 -0
  437. molSimplify/tf_nn/geos/hs_ii_vars.csv +154 -0
  438. molSimplify/tf_nn/geos/hs_iii_bl_x.csv +1659 -0
  439. molSimplify/tf_nn/geos/hs_iii_bl_y.csv +1659 -0
  440. molSimplify/tf_nn/geos/hs_iii_model.h5 +0 -0
  441. molSimplify/tf_nn/geos/hs_iii_model.json +1 -0
  442. molSimplify/tf_nn/geos/hs_iii_vars.csv +154 -0
  443. molSimplify/tf_nn/geos/ls_ii_bl_x.csv +1374 -0
  444. molSimplify/tf_nn/geos/ls_ii_bl_y.csv +1374 -0
  445. molSimplify/tf_nn/geos/ls_ii_model.h5 +0 -0
  446. molSimplify/tf_nn/geos/ls_ii_model.json +1 -0
  447. molSimplify/tf_nn/geos/ls_ii_vars.csv +154 -0
  448. molSimplify/tf_nn/geos/ls_iii_bl_x.csv +1364 -0
  449. molSimplify/tf_nn/geos/ls_iii_bl_y.csv +1364 -0
  450. molSimplify/tf_nn/geos/ls_iii_model.h5 +0 -0
  451. molSimplify/tf_nn/geos/ls_iii_model.json +1 -0
  452. molSimplify/tf_nn/geos/ls_iii_vars.csv +154 -0
  453. molSimplify/tf_nn/homolumo/gap_model.h5 +0 -0
  454. molSimplify/tf_nn/homolumo/gap_model.json +1 -0
  455. molSimplify/tf_nn/homolumo/gap_test_names.csv +175 -0
  456. molSimplify/tf_nn/homolumo/gap_test_x.csv +176 -0
  457. molSimplify/tf_nn/homolumo/gap_test_y.csv +176 -0
  458. molSimplify/tf_nn/homolumo/gap_train_names.csv +699 -0
  459. molSimplify/tf_nn/homolumo/gap_train_x.csv +700 -0
  460. molSimplify/tf_nn/homolumo/gap_train_y.csv +700 -0
  461. molSimplify/tf_nn/homolumo/gap_vars.csv +153 -0
  462. molSimplify/tf_nn/homolumo/homo_model.h5 +0 -0
  463. molSimplify/tf_nn/homolumo/homo_model.json +126 -0
  464. molSimplify/tf_nn/homolumo/homo_test_names.csv +175 -0
  465. molSimplify/tf_nn/homolumo/homo_test_x.csv +176 -0
  466. molSimplify/tf_nn/homolumo/homo_test_y.csv +176 -0
  467. molSimplify/tf_nn/homolumo/homo_train_names.csv +699 -0
  468. molSimplify/tf_nn/homolumo/homo_train_x.csv +700 -0
  469. molSimplify/tf_nn/homolumo/homo_train_y.csv +700 -0
  470. molSimplify/tf_nn/homolumo/homo_vars.csv +153 -0
  471. molSimplify/tf_nn/oxoandhomo/homo_empty_info.json +7 -0
  472. molSimplify/tf_nn/oxoandhomo/homo_empty_model.h5 +0 -0
  473. molSimplify/tf_nn/oxoandhomo/homo_empty_model.json +1 -0
  474. molSimplify/tf_nn/oxoandhomo/homo_empty_test_names.csv +143 -0
  475. molSimplify/tf_nn/oxoandhomo/homo_empty_test_x.csv +144 -0
  476. molSimplify/tf_nn/oxoandhomo/homo_empty_test_y.csv +144 -0
  477. molSimplify/tf_nn/oxoandhomo/homo_empty_train_names.csv +513 -0
  478. molSimplify/tf_nn/oxoandhomo/homo_empty_train_x.csv +514 -0
  479. molSimplify/tf_nn/oxoandhomo/homo_empty_train_y.csv +514 -0
  480. molSimplify/tf_nn/oxoandhomo/homo_empty_val_names.csv +143 -0
  481. molSimplify/tf_nn/oxoandhomo/homo_empty_val_x.csv +58 -0
  482. molSimplify/tf_nn/oxoandhomo/homo_empty_val_y.csv +58 -0
  483. molSimplify/tf_nn/oxoandhomo/homo_empty_vars.csv +155 -0
  484. molSimplify/tf_nn/oxoandhomo/oxo20_info.json +7 -0
  485. molSimplify/tf_nn/oxoandhomo/oxo20_model.h5 +0 -0
  486. molSimplify/tf_nn/oxoandhomo/oxo20_model.json +1 -0
  487. molSimplify/tf_nn/oxoandhomo/oxo20_test_names.csv +143 -0
  488. molSimplify/tf_nn/oxoandhomo/oxo20_test_x.csv +144 -0
  489. molSimplify/tf_nn/oxoandhomo/oxo20_test_y.csv +144 -0
  490. molSimplify/tf_nn/oxoandhomo/oxo20_train_names.csv +513 -0
  491. molSimplify/tf_nn/oxoandhomo/oxo20_train_x.csv +514 -0
  492. molSimplify/tf_nn/oxoandhomo/oxo20_train_y.csv +514 -0
  493. molSimplify/tf_nn/oxoandhomo/oxo20_val_names.csv +143 -0
  494. molSimplify/tf_nn/oxoandhomo/oxo20_val_x.csv +58 -0
  495. molSimplify/tf_nn/oxoandhomo/oxo20_val_y.csv +58 -0
  496. molSimplify/tf_nn/oxoandhomo/oxo20_vars.csv +154 -0
  497. molSimplify/tf_nn/oxocatalysis/hat_model.h5 +0 -0
  498. molSimplify/tf_nn/oxocatalysis/hat_model.json +1 -0
  499. molSimplify/tf_nn/oxocatalysis/hat_test_names.csv +419 -0
  500. molSimplify/tf_nn/oxocatalysis/hat_test_x.csv +420 -0
  501. molSimplify/tf_nn/oxocatalysis/hat_test_y.csv +420 -0
  502. molSimplify/tf_nn/oxocatalysis/hat_train_names.csv +1507 -0
  503. molSimplify/tf_nn/oxocatalysis/hat_train_x.csv +1508 -0
  504. molSimplify/tf_nn/oxocatalysis/hat_train_y.csv +1508 -0
  505. molSimplify/tf_nn/oxocatalysis/hat_val_x.csv +169 -0
  506. molSimplify/tf_nn/oxocatalysis/hat_val_y.csv +169 -0
  507. molSimplify/tf_nn/oxocatalysis/hat_vars.csv +162 -0
  508. molSimplify/tf_nn/oxocatalysis/oxo_model.h5 +0 -0
  509. molSimplify/tf_nn/oxocatalysis/oxo_model.json +1 -0
  510. molSimplify/tf_nn/oxocatalysis/oxo_test_names.csv +527 -0
  511. molSimplify/tf_nn/oxocatalysis/oxo_test_x.csv +528 -0
  512. molSimplify/tf_nn/oxocatalysis/oxo_test_y.csv +528 -0
  513. molSimplify/tf_nn/oxocatalysis/oxo_train_names.csv +1897 -0
  514. molSimplify/tf_nn/oxocatalysis/oxo_train_x.csv +1898 -0
  515. molSimplify/tf_nn/oxocatalysis/oxo_train_y.csv +1898 -0
  516. molSimplify/tf_nn/oxocatalysis/oxo_val_x.csv +212 -0
  517. molSimplify/tf_nn/oxocatalysis/oxo_val_y.csv +212 -0
  518. molSimplify/tf_nn/oxocatalysis/oxo_vars.csv +162 -0
  519. molSimplify/tf_nn/rescaling_data/gap_mean_x.csv +153 -0
  520. molSimplify/tf_nn/rescaling_data/gap_mean_y.csv +1 -0
  521. molSimplify/tf_nn/rescaling_data/gap_var_x.csv +153 -0
  522. molSimplify/tf_nn/rescaling_data/gap_var_y.csv +1 -0
  523. molSimplify/tf_nn/rescaling_data/geo_static_clf_mean_x.csv +154 -0
  524. molSimplify/tf_nn/rescaling_data/geo_static_clf_mean_y.csv +1 -0
  525. molSimplify/tf_nn/rescaling_data/geo_static_clf_var_x.csv +154 -0
  526. molSimplify/tf_nn/rescaling_data/geo_static_clf_var_y.csv +1 -0
  527. molSimplify/tf_nn/rescaling_data/hat_mean_x.csv +162 -0
  528. molSimplify/tf_nn/rescaling_data/hat_mean_y.csv +1 -0
  529. molSimplify/tf_nn/rescaling_data/hat_var_x.csv +162 -0
  530. molSimplify/tf_nn/rescaling_data/hat_var_y.csv +1 -0
  531. molSimplify/tf_nn/rescaling_data/homo_empty_mean_x.csv +155 -0
  532. molSimplify/tf_nn/rescaling_data/homo_empty_mean_y.csv +1 -0
  533. molSimplify/tf_nn/rescaling_data/homo_empty_var_x.csv +155 -0
  534. molSimplify/tf_nn/rescaling_data/homo_empty_var_y.csv +1 -0
  535. molSimplify/tf_nn/rescaling_data/homo_mean_x.csv +153 -0
  536. molSimplify/tf_nn/rescaling_data/homo_mean_y.csv +1 -0
  537. molSimplify/tf_nn/rescaling_data/homo_var_x.csv +153 -0
  538. molSimplify/tf_nn/rescaling_data/homo_var_y.csv +1 -0
  539. molSimplify/tf_nn/rescaling_data/hs_ii_mean_x.csv +154 -0
  540. molSimplify/tf_nn/rescaling_data/hs_ii_mean_y.csv +3 -0
  541. molSimplify/tf_nn/rescaling_data/hs_ii_var_x.csv +154 -0
  542. molSimplify/tf_nn/rescaling_data/hs_ii_var_y.csv +3 -0
  543. molSimplify/tf_nn/rescaling_data/hs_iii_mean_x.csv +154 -0
  544. molSimplify/tf_nn/rescaling_data/hs_iii_mean_y.csv +3 -0
  545. molSimplify/tf_nn/rescaling_data/hs_iii_var_x.csv +154 -0
  546. molSimplify/tf_nn/rescaling_data/hs_iii_var_y.csv +3 -0
  547. molSimplify/tf_nn/rescaling_data/ls_ii_mean_x.csv +154 -0
  548. molSimplify/tf_nn/rescaling_data/ls_ii_mean_y.csv +3 -0
  549. molSimplify/tf_nn/rescaling_data/ls_ii_var_x.csv +154 -0
  550. molSimplify/tf_nn/rescaling_data/ls_ii_var_y.csv +3 -0
  551. molSimplify/tf_nn/rescaling_data/ls_iii_mean_x.csv +154 -0
  552. molSimplify/tf_nn/rescaling_data/ls_iii_mean_y.csv +3 -0
  553. molSimplify/tf_nn/rescaling_data/ls_iii_var_x.csv +154 -0
  554. molSimplify/tf_nn/rescaling_data/ls_iii_var_y.csv +3 -0
  555. molSimplify/tf_nn/rescaling_data/oxo20_mean_x.csv +154 -0
  556. molSimplify/tf_nn/rescaling_data/oxo20_mean_y.csv +1 -0
  557. molSimplify/tf_nn/rescaling_data/oxo20_var_x.csv +154 -0
  558. molSimplify/tf_nn/rescaling_data/oxo20_var_y.csv +1 -0
  559. molSimplify/tf_nn/rescaling_data/oxo_mean_x.csv +162 -0
  560. molSimplify/tf_nn/rescaling_data/oxo_mean_y.csv +1 -0
  561. molSimplify/tf_nn/rescaling_data/oxo_var_x.csv +162 -0
  562. molSimplify/tf_nn/rescaling_data/oxo_var_y.csv +1 -0
  563. molSimplify/tf_nn/rescaling_data/sc_static_clf_mean_x.csv +154 -0
  564. molSimplify/tf_nn/rescaling_data/sc_static_clf_mean_y.csv +1 -0
  565. molSimplify/tf_nn/rescaling_data/sc_static_clf_var_x.csv +154 -0
  566. molSimplify/tf_nn/rescaling_data/sc_static_clf_var_y.csv +1 -0
  567. molSimplify/tf_nn/rescaling_data/split_mean_x.csv +155 -0
  568. molSimplify/tf_nn/rescaling_data/split_mean_y.csv +1 -0
  569. molSimplify/tf_nn/rescaling_data/split_var_x.csv +155 -0
  570. molSimplify/tf_nn/rescaling_data/split_var_y.csv +1 -0
  571. molSimplify/tf_nn/sc_static_clf/sc_static_clf_model.h5 +0 -0
  572. molSimplify/tf_nn/sc_static_clf/sc_static_clf_train_name.csv +1591 -0
  573. molSimplify/tf_nn/sc_static_clf/sc_static_clf_train_x.csv +1592 -0
  574. molSimplify/tf_nn/sc_static_clf/sc_static_clf_train_y.csv +1592 -0
  575. molSimplify/tf_nn/sc_static_clf/sc_static_clf_vars.csv +154 -0
  576. molSimplify/tf_nn/split/split_model.h5 +0 -0
  577. molSimplify/tf_nn/split/split_model.json +1 -0
  578. molSimplify/tf_nn/split/split_vars.csv +155 -0
  579. molSimplify/tf_nn/split/split_x.csv +1902 -0
  580. molSimplify/tf_nn/split/split_y.csv +1902 -0
  581. molSimplify/tf_nn/split/train_names.csv +1901 -0
  582. molSimplify/utils/__init__.py +0 -0
  583. molSimplify/utils/decorators.py +16 -0
  584. molSimplify/utils/metaclasses.py +12 -0
  585. molSimplify/utils/tensorflow.py +23 -0
  586. molSimplify/utils/timer.py +16 -0
  587. molSimplify-1.7.4.dist-info/LICENSE +674 -0
  588. molSimplify-1.7.4.dist-info/METADATA +821 -0
  589. molSimplify-1.7.4.dist-info/RECORD +651 -0
  590. molSimplify-1.7.4.dist-info/WHEEL +5 -0
  591. molSimplify-1.7.4.dist-info/entry_points.txt +3 -0
  592. molSimplify-1.7.4.dist-info/top_level.txt +4 -0
  593. tests/generateTests.py +122 -0
  594. tests/helperFuncs.py +658 -0
  595. tests/informatics/test_MOF_descriptors.py +128 -0
  596. tests/informatics/test_active_learning.py +113 -0
  597. tests/informatics/test_coulomb_analyze.py +24 -0
  598. tests/informatics/test_graph_racs.py +193 -0
  599. tests/ml/test_kernels.py +20 -0
  600. tests/ml/test_layers.py +47 -0
  601. tests/runtest.py +10 -0
  602. tests/test_Mol2D.py +128 -0
  603. tests/test_basic_imports.py +62 -0
  604. tests/test_bidentate.py +25 -0
  605. tests/test_cli.py +20 -0
  606. tests/test_distgeom.py +106 -0
  607. tests/test_example_1.py +29 -0
  608. tests/test_example_3.py +31 -0
  609. tests/test_example_5.py +43 -0
  610. tests/test_example_7.py +28 -0
  611. tests/test_example_8.py +15 -0
  612. tests/test_example_tbp.py +15 -0
  613. tests/test_ff_xtb.py +111 -0
  614. tests/test_geocheck_oct.py +26 -0
  615. tests/test_geocheck_one_empty.py +15 -0
  616. tests/test_geometry.py +44 -0
  617. tests/test_inparse.py +76 -0
  618. tests/test_io.py +84 -0
  619. tests/test_jobgen.py +84 -0
  620. tests/test_joption_pythonic.py +27 -0
  621. tests/test_ligand_assign.py +58 -0
  622. tests/test_ligand_assign_consistent.py +60 -0
  623. tests/test_ligand_class.py +26 -0
  624. tests/test_ligand_from_mol_file.py +35 -0
  625. tests/test_ligands.py +86 -0
  626. tests/test_mol3D.py +337 -0
  627. tests/test_molcas_caspt2.py +15 -0
  628. tests/test_molcas_casscf.py +15 -0
  629. tests/test_old_ANNs.py +68 -0
  630. tests/test_orca_ccsdt.py +15 -0
  631. tests/test_orca_dft.py +15 -0
  632. tests/test_qcgen.py +50 -0
  633. tests/test_racs.py +124 -0
  634. tests/test_rmsd.py +68 -0
  635. tests/test_structgen_functions.py +198 -0
  636. tests/test_tetrahedral.py +29 -0
  637. tests/test_tutorial_10_part_one.py +16 -0
  638. tests/test_tutorial_10_part_two.py +15 -0
  639. tests/test_tutorial_2.py +11 -0
  640. tests/test_tutorial_3.py +15 -0
  641. tests/test_tutorial_4.py +57 -0
  642. tests/test_tutorial_6.py +10 -0
  643. tests/test_tutorial_8.py +29 -0
  644. tests/test_tutorial_9_part_one.py +15 -0
  645. tests/test_tutorial_9_part_two.py +15 -0
  646. tests/test_tutorial_qm9_part_one.py +6 -0
  647. tests/testresources/refs/racs/generate_references.py +85 -0
  648. workflows/NandyJACSAu2022/bridge_functionalizer.py +253 -0
  649. workflows/NandyJACSAu2022/frag_functionalizer.py +242 -0
  650. workflows/NandyJACSAu2022/fragment_classes.py +586 -0
  651. workflows/NandyJACSAu2022/macrocycle_synthesis.py +179 -0
@@ -0,0 +1,15 @@
1
+ 1
2
+ 11
3
+ 21
4
+ 1211
5
+ 111221
6
+ 312211
7
+ 13112221
8
+ 1113213211
9
+ 31131211131221
10
+ 13211311123113112211
11
+ 11131221133112132113212221
12
+ 3113112221232112111312211312113211
13
+ 1321132132111213122112311311222113111221131221
14
+ 11131221131211131231121113112221121321132132211331222113112211
15
+ 311311222113111231131112132112311321322112111312211312111322212311322113212221
@@ -0,0 +1,514 @@
1
+ import os
2
+ import time
3
+ import logging
4
+ from importlib_resources import files as resource_files
5
+ from collections import OrderedDict
6
+ import numpy as np
7
+ import skimage.transform as skitransform
8
+ import pickle
9
+ import json
10
+ from tensorflow.keras.models import load_model
11
+ from molSimplify.molscontrol.io_tools import obtain_jobinfo, read_geometry_to_mol, get_geo_metrics, get_bond_order, get_gradient, \
12
+ get_mullcharge, kill_job, check_pid, get_ss_del, get_metal_spin_del
13
+ from molSimplify.molscontrol.clf_tools import get_layer_outputs, dist_neighbor, get_entropy, find_closest_model
14
+
15
+ '''
16
+ Main class for the on-the-fly job control.
17
+ '''
18
+
19
+
20
+ class dft_control:
21
+ '''
22
+ Attribute of the class:
23
+ step_now: current step for an optimization
24
+ self.mode: mode of the dynamic classifier: "terachem": geo metrics + electronic structure as descriptors, stable for
25
+ terachem users, and "geo": only geometry metrics as descriptors, which can be used for all kinds of quantum
26
+ chesmitry software.
27
+ self.mode_allowed: allowed modes.
28
+ self.step_decisions: steps at which the dynamic classifier can make predictions. (Resizing to be implemented).
29
+ self.scrpath: path to the scratch directory.
30
+ self.geofile: filename of the optimization trajectory in a xyz file format. This is the minimum requirement to use
31
+ the dynamic classifier.
32
+ self.bofile: filename of the trajectory for the bond order matrix (for mode = "terachem").
33
+ self.chargefile: filename of the trajectory for the Mulliken charge(for mode = "terachem").
34
+ self.gradfile: filename of the trajectory for the gradient matrix (for mode = "terachem").
35
+ self.mols: a list of mol3D objects.
36
+ self.features: a combinaton of all feaures of {"feature_name1": [var_step0, var_step1, ...]}
37
+ self.features_norm: self.features after normalization.
38
+ self.feature_mat: input for the dynamic classifier. Dim: (1, step_now, number_features).
39
+ self.preditions: a dictionary of predictions (probabilities of success) with the format of {step_now: prediction}
40
+ self.lses: similar as above but for the latent space entropy (LSE).
41
+ self.train_data: Training (data, labels) for the dynamic classifiers.
42
+ self.status: status of a simulation. True for live and false for dead.
43
+ self.modelfile: path to the model file.
44
+ self.models: a dictory of dynamic classifiers with the format of {step_now: model}
45
+ self.normalization_dict: a dictionary for data normalizations. For geometry metrics, we use value/cutoff
46
+ as standarization, and for other descriptors, we use (value-mean_step0)/std_step0 as standardization.
47
+ self.features_dict: a dictionary for features.
48
+ self.avrg_latent_dist_train: averaged 5-neighbor distance in the latent space for the training data.
49
+ self.resize: whether to use resizing of making predictions on steps where we do not train a model.
50
+ self.lse_cutoff: cutoff for the LSE of model confidence on the prediction.
51
+ self.debug: Whether in debug mode. True means testing on a complete set of files with a finished job. False means
52
+ on-the-fly job control.
53
+ self.pid: pid to kill.
54
+ '''
55
+
56
+ def __init__(self, mode='terachem',
57
+ scrpath='./scr/',
58
+ geofile='optim.xyz',
59
+ bofile='bond_order.list',
60
+ chargefile='charge_mull.xls',
61
+ gradfile='grad.xyz',
62
+ mullpopfile="mullpop",
63
+ outfile='terachem.out',
64
+ modelsfile=False,
65
+ normfile=False,
66
+ traindatafile=False,
67
+ dataname=False,
68
+ initxyzfile="initgeo.xyz",
69
+ modelname='conv',
70
+ normvecname='norm_dict.json',
71
+ logfile='./molscontrol.log',
72
+ task=['geo_flag'],
73
+ lslayer=-4,
74
+ lse_cutoff=0.3,
75
+ use_last_frame=True,
76
+ spinmult=1,
77
+ resize=False,
78
+ debug=False,
79
+ pid=False):
80
+ self.step_now = -1
81
+ self.mode = mode
82
+ self.mode_allowed = ["terachem", "geo", "oxo"]
83
+ self.step_decisions = [2, 5, 10, 15, 20, 30, 40]
84
+ self.scrpath = scrpath
85
+ self.initxyzfile = initxyzfile
86
+ self.geofile = geofile
87
+ self.bofile = bofile
88
+ self.chargefile = chargefile
89
+ self.gradfile = gradfile
90
+ self.mullpopfile = mullpopfile
91
+ self.outfile = outfile
92
+ self.mols = list()
93
+ self.features = OrderedDict()
94
+ self.features_norm = OrderedDict()
95
+ self.feature_mat = list()
96
+ self.preditions = OrderedDict()
97
+ self.lses = OrderedDict()
98
+ self.lslayer = lslayer
99
+ self.train_data = list()
100
+ self.status = True
101
+ self.modelfile = modelsfile
102
+ self.normfile = normfile
103
+ self.traindatafile = traindatafile
104
+ self.modelname = modelname
105
+ self.dataname = dataname
106
+ self.normvecname = normvecname
107
+ self.logfile = logfile
108
+ self.task = task
109
+ self.use_last_frame = use_last_frame
110
+ self.models = dict()
111
+ self.normalization_dict = dict()
112
+ self.lse_cutoff = lse_cutoff
113
+ self.spinmult = spinmult
114
+ self.resize = resize
115
+ self.debug = debug
116
+ self.pid = pid
117
+ self.features_dict = {
118
+ "terachem": {
119
+ 0: 'bo_0', 1: 'bo_sv0', 2: 'bo_offsv0', 3: 'bo_sv1', 4: 'bo_offsv1', 5: 'bo_sv2',
120
+ 6: 'bo_offsv2', 7: 'bo_sv3', 8: 'bo_offsv3', 9: 'bo_eq_mean', 10: 'bo_ax_mean',
121
+ 11: 'grad_0', 12: 'grad_sv0', 13: 'grad_intsv0', 14: 'grad_sv1',
122
+ 15: 'grad_intsv1',
123
+ 16: 'grad_sv2', 17: 'grad_intsv2', 18: 'grad_maxnorm', 19: 'grad_intmaxnorm',
124
+ 20: 'grad_rms', 21: 'grad_eq_mean', 22: 'grad_ax_mean', 23: 'charge_0',
125
+ 24: 'charge_eq_mean', 25: 'charge_ax_mean', 26: 'flag_oct',
126
+ 27: 'inspect_oct_angle_devi_max', 28: 'inspect_max_del_sig_angle',
127
+ 29: 'inspect_dist_del_all', 30: 'inspect_dist_del_eq',
128
+ 31: 'inspect_devi_linear_avrg',
129
+ 32: 'inspect_devi_linear_max', 33: 'actural_rmsd_max'
130
+ },
131
+ "geo": {
132
+ 0: 'flag_oct', 1: 'inspect_oct_angle_devi_max', 2: 'inspect_max_del_sig_angle',
133
+ 3: 'inspect_dist_del_all', 4: 'inspect_dist_del_eq',
134
+ 5: 'inspect_devi_linear_avrg',
135
+ 6: 'inspect_devi_linear_max', 7: 'actural_rmsd_max'
136
+ },
137
+ "oxo": {
138
+ 0: 'bo_0', 1: 'bo_sv0', 2: 'bo_offsv0', 3: 'bo_sv1', 4: 'bo_offsv1', 5: 'bo_sv2',
139
+ 6: 'bo_offsv2', 7: 'bo_sv3', 8: 'bo_offsv3', 9: 'bo_eq_mean', 10: 'bo_ax_mean',
140
+ 11: 'grad_0', 12: 'grad_sv0', 13: 'grad_intsv0', 14: 'grad_sv1', 15: 'grad_intsv1',
141
+ 16: 'grad_sv2', 17: 'grad_intsv2', 18: 'grad_maxnorm', 19: 'grad_intmaxnorm',
142
+ 20: 'grad_rms', 21: 'grad_eq_mean', 22: 'grad_ax_mean', 23: 'charge_0',
143
+ 24: 'charge_eq_mean', 25: 'charge_ax_mean',
144
+ 26: "del_ss", 27: "del_metal_spin", 28: "ss_flag", 29: "metal_spin_flag",
145
+ },
146
+ "custom": {}
147
+ }
148
+ self.scale_by_norm = ['del_ss', 'del_metal_spin',
149
+ "ss_flag", "metal_spin_flag"]
150
+ self.avrg_latent_dist_train = {
151
+ "terachem": {
152
+ 2: 6.34, 5: 7.59, 10: 4.83, 15: 5.21,
153
+ 20: 5.06, 30: 9.34, 40: 8.70
154
+ },
155
+ "geo": {
156
+ 2: 4.08, 5: 5.35, 10: 5.85, 15: 6.10,
157
+ 20: 6.40, 30: 10.44, 40: 9.42
158
+ },
159
+ "oxo": {
160
+ 2: 20.563481588788495,
161
+ 5: 16.839565509481957,
162
+ 10: 15.231886708072244,
163
+ 15: 18.282258231748944,
164
+ 20: 16.216676625831397,
165
+ 30: 34.069884702587714,
166
+ 40: 30.742078737505988
167
+ },
168
+ "custom": {}
169
+ }
170
+ self.files_track = {
171
+ "terachem": {
172
+ self.geofile: 0, self.bofile: 0, self.gradfile: 0, self.chargefile: 0
173
+ },
174
+ "geo": {
175
+ self.geofile: 0
176
+ },
177
+ "oxo": {
178
+ self.geofile: 0, self.bofile: 0, self.gradfile: 0, self.chargefile: 0,
179
+ self.mullpopfile: 0, self.outfile: 0
180
+ },
181
+ "custom": {}
182
+ }
183
+ self.file_updated = {
184
+ "terachem": {
185
+ self.geofile: False, self.bofile: False,
186
+ self.gradfile: False, self.chargefile: False
187
+ },
188
+ "geo": {
189
+ self.geofile: False
190
+ },
191
+ "oxo": {
192
+ self.geofile: False, self.bofile: False, self.gradfile: False, self.chargefile: False,
193
+ self.mullpopfile: False, self.outfile: False
194
+ },
195
+ "custom": {}
196
+ }
197
+ self.init_mol = read_geometry_to_mol(self.initxyzfile)
198
+ self.job_info = obtain_jobinfo(self.initxyzfile)
199
+ self.initialize_logger()
200
+ self.initialize_features()
201
+ self.load_models()
202
+ self.load_training_data()
203
+ self.load_normalization_vec()
204
+ self.initilize_file_track_dict()
205
+
206
+ def initialize_logger(self):
207
+ logging.basicConfig(filename=self.logfile, filemode='w', level=logging.DEBUG,
208
+ format='%(name)s - %(levelname)s - %(message)s')
209
+ logging.info(
210
+ '----Logger for the dynamic classifier for on-the-fly job control---')
211
+ logging.info('Monitoring job with PID %s' % str(self.pid))
212
+ if not self.pid:
213
+ logging.warning('NO PID is inputed. Cannot do cany control.')
214
+
215
+ def initialize_features(self):
216
+ try:
217
+ for idx, fname in list(self.features_dict[self.mode].items()):
218
+ self.features.update({fname: []})
219
+ logging.info('Feature initialized.')
220
+ except Exception:
221
+ logging.error('Feature initialization failed.', exc_info=True)
222
+
223
+ def get_file_path(self, filein):
224
+ if ".out" not in filein:
225
+ return self.scrpath + '/' + filein
226
+ else:
227
+ return filein
228
+
229
+ def load_models(self):
230
+ if not self.modelfile:
231
+ modelpath = str(resource_files("molSimplify.molscontrol").joinpath(f"models/{self.mode}"))
232
+ else:
233
+ modelpath = self.modelfile
234
+ logging.warning("Using user-specified models from %s." % modelpath)
235
+ try:
236
+ for step in self.step_decisions:
237
+ _model = '/%s_%d.h5' % (self.modelname, step)
238
+ _modelname = modelpath + _model
239
+ logging.info("Loading model: %s ..." %
240
+ _modelname.split('/')[-1])
241
+ self.models.update({step: load_model(_modelname)})
242
+ except Exception:
243
+ logging.error('Failed at model loading.', exc_info=True)
244
+
245
+ def load_training_data(self):
246
+ if not self.traindatafile:
247
+ datapath = resource_files("molSimplify.molscontrol").joinpath(f"data/{self.mode}/train_data.pkl")
248
+ else:
249
+ datapath = self.traindatafile
250
+ logging.warning("Using user-specified models from %s." % datapath)
251
+ try:
252
+ with open(datapath, 'rb') as f:
253
+ _train_data = pickle.load(f)
254
+ for key, val in list(_train_data.items()):
255
+ self.train_data.append(val)
256
+ logging.info("Training data loaded.")
257
+ except Exception:
258
+ logging.error('Failed at training data loading.', exc_info=True)
259
+
260
+ def load_normalization_vec(self):
261
+ if not self.normfile:
262
+ normvecpath = resource_files("molSimplify.molscontrol").joinpath(f"normalization_vec/{self.mode}/norm_dict.json")
263
+ else:
264
+ normvecpath = self.normfile
265
+ logging.warning(
266
+ "Using user-specified models from %s." % normvecpath)
267
+ try:
268
+ with open(normvecpath, 'rb') as f:
269
+ self.normalization_dict = json.load(f)
270
+ logging.info('Normalization vectors loaded')
271
+ except:
272
+ logging.error(
273
+ 'Failed at normalization vector loading.', exc_info=True)
274
+
275
+ def update_features(self):
276
+ dict_combined = {}
277
+ time.sleep(0.5)
278
+ if not self.use_last_frame:
279
+ frame = self.step_now if self.step_now > -1 else 0
280
+ else:
281
+ frame = -1
282
+ frame_ss_ms = self.step_now if self.step_now > -1 else 0
283
+ if self.mode == 'terachem':
284
+ bondorder_dict = get_bond_order(bofile=self.get_file_path(self.bofile), frame=frame,
285
+ job_info=self.job_info, num_sv=4)
286
+ dict_combined.update(bondorder_dict)
287
+ gradient_dict = get_gradient(gradfile=self.get_file_path(self.gradfile), frame=frame,
288
+ job_info=self.job_info, num_sv=3)
289
+ dict_combined.update(gradient_dict)
290
+ mullcharge_dict = get_mullcharge(chargefile=self.get_file_path(self.chargefile), frame=frame,
291
+ job_info=self.job_info)
292
+ dict_combined.update(mullcharge_dict)
293
+ geometrics_dict = get_geo_metrics(init_mol=self.init_mol, frame=frame, job_info=self.job_info,
294
+ geofile=self.get_file_path(self.geofile))
295
+ dict_combined.update(geometrics_dict)
296
+ elif self.mode == 'geo':
297
+ geometrics_dict = get_geo_metrics(init_mol=self.init_mol, frame=frame, job_info=self.job_info,
298
+ geofile=self.get_file_path(self.geofile))
299
+ dict_combined.update(geometrics_dict)
300
+ elif self.mode == "oxo":
301
+ bondorder_dict = get_bond_order(bofile=self.get_file_path(self.bofile), frame=frame,
302
+ job_info=self.job_info, num_sv=4)
303
+ dict_combined.update(bondorder_dict)
304
+ gradient_dict = get_gradient(gradfile=self.get_file_path(self.gradfile), frame=frame,
305
+ job_info=self.job_info, num_sv=3)
306
+ dict_combined.update(gradient_dict)
307
+ mullcharge_dict = get_mullcharge(chargefile=self.get_file_path(self.chargefile), frame=frame,
308
+ job_info=self.job_info)
309
+ dict_combined.update(mullcharge_dict)
310
+ dict_combined.update(get_ss_del(self.get_file_path(
311
+ self.outfile), frame=frame_ss_ms))
312
+ dict_combined.update(
313
+ {"ss_flag": 1 if dict_combined["del_ss"] < 1 else 0})
314
+ dict_combined.update(get_metal_spin_del(self.get_file_path(self.mullpopfile), self.spinmult,
315
+ frame=frame_ss_ms,
316
+ idx=self.job_info["natoms"]))
317
+ dict_combined.update(
318
+ {"metal_spin_flag": 1 if dict_combined["del_metal_spin"] < 1 else 0})
319
+ elif self.mode == 'custom':
320
+ if bool(self.features_dict[self.mode]):
321
+ # Placeholder for your functions of obtaining descriptors.
322
+ pass
323
+ else:
324
+ raise KeyError("Mode is not recognized.")
325
+ for idx, fname in list(self.features_dict[self.mode].items()):
326
+ self.features[fname].append(dict_combined[fname])
327
+ with open("features.json", "w") as f:
328
+ json.dump(self.features, f)
329
+
330
+ def normalize_features(self):
331
+ for idx, fname in list(self.features_dict[self.mode].items()):
332
+ if fname in list(self.features_dict["geo"].values()) + self.scale_by_norm:
333
+ self.features_norm[fname] = np.array(
334
+ self.features[fname]) / self.normalization_dict[fname]
335
+ else:
336
+ self.features_norm[fname] = (np.array(self.features[fname]) - self.normalization_dict[fname][0]) / \
337
+ self.normalization_dict[fname][1]
338
+
339
+ def prepare_feature_mat(self):
340
+ self.feature_mat = list()
341
+ for fname, vec in list(self.features_norm.items()):
342
+ self.feature_mat.append(vec)
343
+ self.feature_mat = np.transpose(self.feature_mat)
344
+ self.feature_mat = self.feature_mat.reshape(
345
+ 1, self.step_now + 1, len(list(self.features.keys())))
346
+
347
+ def resize_feature_mat(self):
348
+ step_chosen, mindelta = find_closest_model(
349
+ self.step_now, self.step_decisions)
350
+ # self.feature_mat = scipy.misc.imresize(self.feature_mat[0], (step_chosen + 1, self.feature_mat.shape[-1]),
351
+ # mode='F', interp='nearest')
352
+ self.feature_mat = skitransform.resize(self.feature_mat,
353
+ output_shape=(
354
+ 1, step_chosen + 1, self.feature_mat.shape[-1]),
355
+ order=3)
356
+ # self.feature_mat = self.feature_mat.reshape(
357
+ # 1, step_chosen + 1, self.feature_mat.shape[-1])
358
+ return step_chosen
359
+
360
+ def predict(self, step=False):
361
+ step = self.step_now if not step else step
362
+ pred = self.models[step].predict(self.feature_mat)
363
+ pp = {}
364
+ if len(self.task) == 1:
365
+ pred = [pred]
366
+ for ii in range(len(self.task)):
367
+ pp[self.task[ii]] = pred[ii][0][0]
368
+ self.preditions.update({self.step_now: pp})
369
+ logging.info('At step %d.' % self.step_now)
370
+ logging.info('Predicts: %s ' % str(pp))
371
+
372
+ def calculate_lse(self, step=False):
373
+ step = self.step_now if not step else step
374
+ if self.step_now not in self.step_decisions:
375
+ fmat_train = []
376
+ for ii in range(len(self.train_data[0])):
377
+ # fmat_train.append(scipy.misc.imresize(self.train_data[0][ii, :self.step_now + 1, :],
378
+ # (step + 1,
379
+ # self.train_data[0].shape[-1]),
380
+ # mode='F', interp='nearest'))
381
+ fmat_train.append(skitransform.resize(
382
+ self.train_data[0][ii, :self.step_now + 1, :],
383
+ output_shape=(step + 1, self.train_data[0].shape[-1]),
384
+ order=3))
385
+ fmat_train = np.array(fmat_train)
386
+ else:
387
+ fmat_train = self.train_data[0][:, :step + 1, :]
388
+ train_latent = get_layer_outputs(
389
+ self.models[step], self.lslayer, fmat_train, training_flag=False)
390
+ test_latent = get_layer_outputs(
391
+ self.models[step], self.lslayer, self.feature_mat, training_flag=False)
392
+ ll = {}
393
+ for ii in range(len(self.task)):
394
+ __, nn_dists, nn_labels = dist_neighbor(test_latent, train_latent, self.train_data[1][ii],
395
+ l=100, dist_ref=self.avrg_latent_dist_train[self.mode][step])
396
+ lse = get_entropy(nn_dists, nn_labels)
397
+ ll[self.task[ii]] = lse[0]
398
+ self.lses.update({self.step_now: ll})
399
+ logging.info('LSE: %s ' % str(ll))
400
+ logging.info('Prediction summary, %s' % str(self.preditions))
401
+ logging.info('LSE summary, %s' % str(self.lses))
402
+
403
+ def make_decision(self):
404
+ killed = False
405
+ for ii, t in enumerate(self.task):
406
+ if self.preditions[self.step_now][t] <= 0.5 and self.lses[self.step_now][t] < self.lse_cutoff:
407
+ logging.critical(
408
+ "!!!!job killed at step %d!!!!!!" % self.step_now)
409
+ logging.info("Killed for the task of: %s" % t)
410
+ logging.info("Reasons: a prediction of %.4f with LSE of %.4f" % (self.preditions[self.step_now][t],
411
+ self.lses[self.step_now][t]))
412
+ self.status = False
413
+ killed = True
414
+ if not killed:
415
+ logging.info(
416
+ 'This calculation seems good for now at step %d' % self.step_now)
417
+ else:
418
+ kill_job(self.pid)
419
+
420
+ def initilize_file_track_dict(self):
421
+ existed = False
422
+ logging.info(
423
+ "Initialize the files to be tracked during the geometry optimization.")
424
+ logging.info(
425
+ "This may take a while until the first step of SCF calculation finishes...")
426
+ if not bool(self.files_track[self.mode]):
427
+ raise KeyError(
428
+ "file_track is an empty dictory. It should at least contain one file to track on.")
429
+ while not existed:
430
+ for filename in self.files_track[self.mode]:
431
+ filepath = self.get_file_path(filename)
432
+ if os.path.isfile(filepath):
433
+ self.file_updated[self.mode].update({filename: True})
434
+ existed = all(value is True for value in list(
435
+ self.file_updated[self.mode].values()))
436
+ for filename in self.files_track[self.mode]:
437
+ filepath = self.get_file_path(filename)
438
+ self.files_track[self.mode].update(
439
+ {filename: os.path.getmtime(filepath)})
440
+ self.file_updated[self.mode].update({filename: False})
441
+ logging.info("Tracking files initialization completes.")
442
+ time.sleep(3)
443
+ # Gather features for the 0th step of the optimization
444
+ try:
445
+ self.update_features()
446
+ self.normalize_features()
447
+ self.step_now += 1
448
+ self.prepare_feature_mat()
449
+ logging.info("%d step feature obtained." % self.step_now)
450
+ except Exception:
451
+ logging.warning(
452
+ 'Cannot obtain the information of the zeroth step.', exc_info=True)
453
+
454
+ def check_updates(self):
455
+ for filename, val in list(self.files_track[self.mode].items()):
456
+ filepath = self.get_file_path(filename)
457
+ if os.path.getmtime(filepath) - val > 3:
458
+ self.file_updated[self.mode].update({filename: True})
459
+ updated = all(value is True for value in list(
460
+ self.file_updated[self.mode].values()))
461
+ if self.debug:
462
+ updated = True
463
+ if updated:
464
+ for filename in self.files_track[self.mode]:
465
+ filepath = self.get_file_path(filename)
466
+ self.files_track[self.mode].update(
467
+ {filename: os.path.getmtime(filepath)})
468
+ self.file_updated[self.mode].update({filename: False})
469
+ self.step_now += 1
470
+ else:
471
+ for filename, val in list(self.files_track[self.mode].items()):
472
+ self.file_updated[self.mode].update({filename: False})
473
+ return updated
474
+
475
+ def update_and_predict(self):
476
+ stop = False
477
+ updated = self.check_updates()
478
+ if self.debug:
479
+ updated = True
480
+ if self.status:
481
+ if updated:
482
+ self.update_features()
483
+ self.normalize_features()
484
+ self.prepare_feature_mat()
485
+ if self.step_now in self.step_decisions:
486
+ self.predict()
487
+ self.calculate_lse()
488
+ self.make_decision()
489
+ elif self.resize and self.step_now > 5:
490
+ step_chosen = self.resize_feature_mat()
491
+ logging.info("At step %d, Resizing to activate closet model (%d -> %d)." % (
492
+ self.step_now, self.step_now, step_chosen))
493
+ self.predict(step=step_chosen)
494
+ self.calculate_lse(step=step_chosen)
495
+ self.make_decision()
496
+ else:
497
+ logging.info(
498
+ "At step %d, decision is not activated." % self.step_now)
499
+ if (self.step_now > max(self.step_decisions) and not self.resize) or self.step_now > 80:
500
+ logging.warning(
501
+ "Step number is larger than the maximum step number that we can make decision (%d steps). The dynamic classifier is now deactivated." % max(
502
+ self.step_decisions))
503
+ stop = True
504
+ else:
505
+ stop = True
506
+ if self.pid:
507
+ dft_running = check_pid(self.pid)
508
+ else:
509
+ dft_running = True
510
+ if not dft_running:
511
+ stop = True
512
+ logging.info(
513
+ "At step %d, the DFT simulation finishes. molscontrol thus quits." % self.step_now)
514
+ return stop