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
tests/test_io.py ADDED
@@ -0,0 +1,84 @@
1
+ import numpy as np
2
+ from molSimplify.Scripts.io import (lig_load,
3
+ core_load,
4
+ printgeoms,
5
+ getsubstrates,
6
+ readdict_sub,
7
+ )
8
+ from importlib_resources import files as resource_files
9
+
10
+
11
+ def test_lig_load(resource_path_root):
12
+ lig_file = str(resource_path_root / "inputs" / "io" / "acac.mol2")
13
+ mol, emsg = lig_load(lig_file)
14
+ # Assert that the error message is empty
15
+ assert not emsg
16
+ # Convert to mol3D after loading the OBmol
17
+ mol.convert2mol3D()
18
+ # Load the reference from the ligand folder
19
+ ref, _ = lig_load('acac')
20
+
21
+ assert mol.natoms == ref.natoms
22
+ assert all(mol.symvect() == ref.symvect())
23
+ print(mol.coordsvect())
24
+ print(ref.coordsvect())
25
+ np.testing.assert_allclose(mol.coordsvect(), ref.coordsvect())
26
+ assert mol.charge == ref.charge
27
+
28
+
29
+ def test_core_load():
30
+ file = str(resource_files("molSimplify").joinpath("Cores/ferrcore.xyz"))
31
+ core, emsg = core_load(file)
32
+ # Assert that the error message is empty
33
+ assert not emsg
34
+ core.convert2mol3D()
35
+ assert core.make_formula(latex=False) == "Fe1F1C10H9"
36
+
37
+ file = str(resource_files("molSimplify").joinpath("Cores/ferrocene.mol"))
38
+ core, emsg = core_load(file)
39
+ # Assert that the error message is empty
40
+ assert not emsg
41
+ core.convert2mol3D()
42
+ assert core.make_formula(latex=False) == "Fe1C10H10"
43
+
44
+
45
+ def test_printgeoms(capsys):
46
+ printgeoms()
47
+ captured = capsys.readouterr()
48
+
49
+ ref = (
50
+ "Coordination: 1, geometry: none,\t short name: no \n"
51
+ "Coordination: 2, geometry: linear,\t short name: li \n"
52
+ "Coordination: 3, geometry: trigonal_planar,\t short name: tpl \n"
53
+ "Coordination: 4, geometry: square_planar,\t short name: sqp \n"
54
+ "Coordination: 4, geometry: tetrahedral,\t short name: thd \n"
55
+ "Coordination: 5, geometry: square_pyramidal,\t short name: spy \n"
56
+ "Coordination: 5, geometry: trigonal_bipyramidal,\t short name: tbp \n"
57
+ "Coordination: 6, geometry: octahedral,\t short name: oct \n"
58
+ "Coordination: 6, geometry: trigonal_prismatic,\t short name: tpr \n"
59
+ "Coordination: 7, geometry: pentagonal_bipyramidal,\t short name: pbp \n"
60
+ "Coordination: 8, geometry: square_antiprismatic,\t short name: sqap \n"
61
+ "Coordination: 8, geometry: trigonal_dodecahedral,\t short name: tdhd \n\n"
62
+ )
63
+ assert captured.out == ref
64
+
65
+
66
+ def test_readdict_sub():
67
+ file = resource_files("molSimplify").joinpath("Substrates/substrates.dict")
68
+ sub_dict = readdict_sub(file)
69
+ assert sub_dict["methane"] == ['methane.xyz', 'ch4', '1', ['inter'],
70
+ ['N'], ['0', '#', 'BDH', '=', '104.9(0.1)']]
71
+ assert sub_dict["ethane"] == ['ethane.xyz', 'c2h6', '2', ['inter'],
72
+ ['B'], ['0', '#', 'BDH', '=', '101.1(0.4)']]
73
+
74
+
75
+ def test_getsubstrates():
76
+ subs = getsubstrates()
77
+ ref = (
78
+ "acetaldehyde acetylene benzene biphenyl bromobenzene cumene "
79
+ "cyclohexene dha diphenylmethane estrogen ethanal ethane ethene "
80
+ "ethylene fluorene formaldehyde formicacid iodobenzene methanal "
81
+ "methane methanoicacid methanol methylazide n-quinolinylbutyramidate "
82
+ "n2 phenyl propane propene propylene propyne tert-butane toluene triazole xanthene"
83
+ )
84
+ assert subs == ref
tests/test_jobgen.py ADDED
@@ -0,0 +1,84 @@
1
+ from argparse import Namespace
2
+ from molSimplify.Scripts.jobgen import sgejobgen, slurmjobgen
3
+
4
+
5
+ def test_sgejobgen_default(tmpdir):
6
+ args = Namespace(jname=None, jid=1, wtime=None, memory=None,
7
+ queue=None, qccode=None, cpus=None, gpus=None,
8
+ joption=None, modules=None, jcommand=None)
9
+ sgejobgen(args, [str(tmpdir)])
10
+ with open(tmpdir / 'jobscript') as fin:
11
+ lines = fin.read()
12
+ lines_ref = ('#$ -S /bin/bash\n'
13
+ '#$ -N job1\n'
14
+ '#$ -R y\n'
15
+ '#$ -cwd\n'
16
+ '#$ -l h_rt=168:00:00\n'
17
+ '#$ -l h_rss=8G\n'
18
+ '#$ -q cpus\n'
19
+ '#$ -l cpus=1\n'
20
+ '#$ -pe smp 1\n'
21
+ 'export OMP_NUM_THREADS=1\n')
22
+ assert lines == lines_ref
23
+
24
+
25
+ def test_sgejobgen(tmpdir):
26
+ args = Namespace(jname='test', jid=1, wtime='90', memory='4G',
27
+ queue='gpusbig', qccode='terachem', cpus=None, gpus='2',
28
+ joption=None, modules=['openmp'], jcommand=None)
29
+ sgejobgen(args, [str(tmpdir)])
30
+ with open(tmpdir / 'jobscript') as fin:
31
+ lines = fin.read()
32
+ lines_ref = ('#$ -S /bin/bash\n'
33
+ '#$ -N test1\n'
34
+ '#$ -R y\n'
35
+ '#$ -cwd\n'
36
+ '#$ -l h_rt=90:00:00\n'
37
+ '#$ -l h_rss=4G\n'
38
+ '#$ -q gpusbig\n'
39
+ '#$ -l gpus=2\n'
40
+ '#$ -pe smp 2\n'
41
+ 'module load openmp\n'
42
+ 'export OMP_NUM_THREADS=2\n'
43
+ 'terachem terachem_input > $SGE_O_WORKDIR/opttest.out\n\n'
44
+ 'sleep 30\n')
45
+ assert lines == lines_ref
46
+
47
+
48
+ def test_slurmjobgen_default(tmpdir):
49
+ args = Namespace(jname=None, jid=1, wtime=None, memory=None,
50
+ queue=None, qccode=None, joption=None, modules=None,
51
+ jcommand=None)
52
+ slurmjobgen(args, [str(tmpdir)])
53
+ with open(tmpdir / 'jobscript') as fin:
54
+ lines = fin.read()
55
+ lines_ref = ('#!/bin/bash\n'
56
+ '#SBATCH --job-name=job1\n'
57
+ '#SBATCH --output=batch.log\n'
58
+ '#SBATCH --export=ALL\n'
59
+ '#SBATCH -t 168:00:00\n'
60
+ '#SBATCH --mem==8G\n'
61
+ '#SBATCH --partition=cpus\n'
62
+ '#SBATCH --nodes=1\n'
63
+ '#SBATCH --ntasks-per-node=1\n')
64
+ assert lines == lines_ref
65
+
66
+
67
+ def test_slurmjobgen(tmpdir):
68
+ args = Namespace(jname='test', jid=1, wtime='90', memory='4G',
69
+ queue='testqueue', qccode='qchem', joption=None,
70
+ modules=None, jcommand=None)
71
+ slurmjobgen(args, [str(tmpdir)])
72
+ with open(tmpdir / 'jobscript') as fin:
73
+ lines = fin.read()
74
+ lines_ref = ('#!/bin/bash\n'
75
+ '#SBATCH --job-name=test1\n'
76
+ '#SBATCH --output=batch.log\n'
77
+ '#SBATCH --export=ALL\n'
78
+ '#SBATCH -t 90:00:00\n'
79
+ '#SBATCH --mem=4G\n'
80
+ '#SBATCH --partition=testqueue\n'
81
+ '#SBATCH --nodes=1\n'
82
+ '#SBATCH --ntasks-per-node=1\n'
83
+ 'qchem qch.inp 1 > qch.out\n')
84
+ assert lines == lines_ref
@@ -0,0 +1,27 @@
1
+ from molSimplify.Scripts.generator import startgen_pythonic
2
+
3
+
4
+ def test_joption_pythonic(tmpdir, resource_path_root):
5
+ out_dir = "cr_thd_2_cl_4_s_1/cr_thd_2_cl_4_s_1_conf_1/jobscript"
6
+ input_dict_homo = {
7
+ '-core': "cr",
8
+ '-coord': str(4),
9
+ '-oxstate': str(2),
10
+ '-lig': str("cl"),
11
+ '-geometry': "thd",
12
+ '-ligocc': "4",
13
+ '-rundir': str(tmpdir),
14
+ '-runtyp': "minimize",
15
+ '-keepHs': "yes",
16
+ '-spin': str(1),
17
+ '-jname': "{}_{}_{}_{}_hs_{}".format("cr", "thd", 2, "cl", 0),
18
+ '-modules': "cuda,terachem",
19
+ '-joption': "-fin terachem_input, -fin *.xyz, -fout scr/"
20
+ }
21
+ startgen_pythonic(input_dict_homo, write=1)
22
+ with open(str(tmpdir) + "/" + out_dir, 'r') as f_in:
23
+ data1 = f_in.readlines()
24
+ with open(resource_path_root / "refs" / "joption_pythonic_jobscript", 'r') as f_in:
25
+ data2 = f_in.readlines()
26
+ for i, j in zip(data1, data2):
27
+ assert i == j
@@ -0,0 +1,58 @@
1
+ from molSimplify.Classes.ligand import ligand_assign, ligand_breakdown
2
+ from molSimplify.Classes.mol3D import mol3D
3
+
4
+
5
+ def test_six_monodentate(resource_path_root):
6
+ xyz_file = (resource_path_root / "inputs" / "ligand_assign_consistent"
7
+ / "fe_water_ammonia_carbonyl_formaldehyde_hydrogensulfide_hydrocyanide.xyz")
8
+ mol = mol3D()
9
+ mol.readfromxyz(xyz_file)
10
+
11
+ liglist, ligdents, ligcons = ligand_breakdown(mol, BondedOct=True)
12
+ (ax_ligand_list, eq_ligand_list, ax_natoms_list, eq_natoms_list,
13
+ ax_con_int_list, eq_con_int_list, ax_con_list, eq_con_list,
14
+ built_ligand_list) = ligand_assign(mol, liglist, ligdents, ligcons)
15
+ # Expecting:
16
+ # ax_ligands: ['water', 'carbonyl']
17
+ # eq_ligands: ['hydrogensulfide', 'ammonia', 'hydrocyanide', 'formaldehyde']
18
+
19
+ ax_formulas = [lig.mol.make_formula(latex=False) for lig in ax_ligand_list]
20
+ assert ax_formulas == ['S1H2', 'N1C1H1']
21
+ eq_formulas = [lig.mol.make_formula(latex=False) for lig in eq_ligand_list]
22
+ assert eq_formulas == ['O1H2', 'N1H3', 'O1C1', 'O1C1H2']
23
+
24
+ assert ax_natoms_list == [3, 3]
25
+ assert eq_natoms_list == [3, 4, 2, 4]
26
+
27
+ assert ax_con_int_list == [[0], [1]]
28
+ assert eq_con_int_list == [[0], [0], [0], [1]]
29
+
30
+ assert ax_con_list == [[14], [18]]
31
+ assert eq_con_list == [[1], [4], [8], [11]]
32
+
33
+
34
+ def test_triple_bidentate(resource_path_root):
35
+ xyz_file = (resource_path_root / "inputs" / "ligand_assign_consistent"
36
+ / "fe_acac_bipy_bipy.xyz")
37
+ mol = mol3D()
38
+ mol.readfromxyz(xyz_file)
39
+
40
+ liglist, ligdents, ligcons = ligand_breakdown(mol, BondedOct=True)
41
+ (ax_ligand_list, eq_ligand_list, ax_natoms_list, eq_natoms_list,
42
+ ax_con_int_list, eq_con_int_list, ax_con_list, eq_con_list,
43
+ built_ligand_list) = ligand_assign(mol, liglist, ligdents, ligcons)
44
+
45
+ print(ax_ligand_list, eq_ligand_list)
46
+ ax_formulas = [lig.mol.make_formula(latex=False) for lig in ax_ligand_list]
47
+ assert ax_formulas == ['O2C5H7']
48
+ eq_formulas = [lig.mol.make_formula(latex=False) for lig in eq_ligand_list]
49
+ assert eq_formulas == ['N2C10H8', 'N2C10H8']
50
+
51
+ assert ax_natoms_list == [14]
52
+ assert eq_natoms_list == [20, 20]
53
+
54
+ assert ax_con_int_list == [[0, 5]]
55
+ assert eq_con_int_list == [[0, 1], [0, 1]]
56
+
57
+ assert ax_con_list == [[1, 6]]
58
+ assert eq_con_list == [[15, 16], [35, 36]]
@@ -0,0 +1,60 @@
1
+ from molSimplify.Classes.ligand import ligand_assign_consistent, ligand_breakdown
2
+ from molSimplify.Classes.mol3D import mol3D
3
+
4
+
5
+ def test_six_monodentate(resource_path_root):
6
+ xyz_file = (resource_path_root / "inputs" / "ligand_assign_consistent"
7
+ / "fe_water_ammonia_carbonyl_formaldehyde_hydrogensulfide_hydrocyanide.xyz")
8
+ mol = mol3D()
9
+ mol.readfromxyz(xyz_file)
10
+
11
+ liglist, ligdents, ligcons = ligand_breakdown(mol, BondedOct=True)
12
+ (ax_ligand_list, eq_ligand_list, ax_natoms_list, eq_natoms_list,
13
+ ax_con_int_list, eq_con_int_list, ax_con_list, eq_con_list,
14
+ built_ligand_list) = ligand_assign_consistent(mol, liglist, ligdents,
15
+ ligcons)
16
+ # Expecting:
17
+ # ax_ligands: ['water', 'carbonyl']
18
+ # eq_ligands: ['hydrogensulfide', 'ammonia', 'hydrocyanide', 'formaldehyde']
19
+
20
+ ax_formulas = [lig.mol.make_formula(latex=False) for lig in ax_ligand_list]
21
+ assert ax_formulas == ['O1H2', 'O1C1']
22
+ eq_formulas = [lig.mol.make_formula(latex=False) for lig in eq_ligand_list]
23
+ assert eq_formulas == ['S1H2', 'N1H3', 'N1C1H1', 'O1C1H2']
24
+
25
+ assert ax_natoms_list == [3, 2]
26
+ assert eq_natoms_list == [3, 4, 3, 4]
27
+
28
+ assert ax_con_int_list == [[0], [0]]
29
+ assert eq_con_int_list == [[0], [0], [1], [1]]
30
+
31
+ assert ax_con_list == [[1], [8]]
32
+ assert eq_con_list == [[14], [4], [18], [11]]
33
+
34
+
35
+ def test_triple_bidentate(resource_path_root):
36
+ xyz_file = (resource_path_root / "inputs" / "ligand_assign_consistent"
37
+ / "fe_acac_bipy_bipy.xyz")
38
+ mol = mol3D()
39
+ mol.readfromxyz(xyz_file)
40
+
41
+ liglist, ligdents, ligcons = ligand_breakdown(mol, BondedOct=True)
42
+ (ax_ligand_list, eq_ligand_list, ax_natoms_list, eq_natoms_list,
43
+ ax_con_int_list, eq_con_int_list, ax_con_list, eq_con_list,
44
+ built_ligand_list) = ligand_assign_consistent(mol, liglist, ligdents,
45
+ ligcons)
46
+
47
+ print(ax_ligand_list, eq_ligand_list)
48
+ ax_formulas = [lig.mol.make_formula(latex=False) for lig in ax_ligand_list]
49
+ assert ax_formulas == ['O2C5H7', 'N2C10H8']
50
+ eq_formulas = [lig.mol.make_formula(latex=False) for lig in eq_ligand_list]
51
+ assert eq_formulas == ['O2C5H7', 'N2C10H8', 'N2C10H8']
52
+
53
+ assert ax_natoms_list == [14, 20]
54
+ assert eq_natoms_list == [14, 20, 20]
55
+
56
+ assert ax_con_int_list == [[5], [0]]
57
+ assert eq_con_int_list == [[0], [1, 0], [1]]
58
+
59
+ assert ax_con_list == [[6], [35]]
60
+ assert eq_con_list == [[1], [16, 15], [36]]
@@ -0,0 +1,26 @@
1
+ from molSimplify.Classes.ligand import ligand
2
+
3
+
4
+ def test_ligand_class(resource_path_root):
5
+ mol2_file = str(
6
+ resource_path_root / "inputs" / "ligand_class" / "fe_acac.mol2"
7
+ )
8
+ lig = ligand(
9
+ master_mol=None,
10
+ index_list=None,
11
+ dent=None,
12
+ read_lig=mol2_file,
13
+ )
14
+ assert lig.dent == 2
15
+ assert lig.master_mol.make_formula(latex=False) == "Fe1O2C5H7"
16
+
17
+ lig_graph_det, mol2_str = lig.get_lig_mol2()
18
+ assert lig_graph_det == '-2.023585127e+17'
19
+
20
+ with open(resource_path_root / "inputs" / "ligand_class" / "acac_ref.mol2") as fin:
21
+ ref_str = fin.read()
22
+ # Remove last new line (because of our autoformatting)
23
+ assert mol2_str[:-1] == ref_str
24
+
25
+ buried_vol = lig.percent_buried_vol()
26
+ assert abs(buried_vol - 30.034) < 1e-3
@@ -0,0 +1,35 @@
1
+ import pytest
2
+ from molSimplify.Scripts.generator import startgen
3
+ from helperFuncs import working_directory, compareGeo, compare_report_new
4
+ import shutil
5
+
6
+
7
+ @pytest.mark.skip("Loading multidentate ligands from files is currently not supported")
8
+ def test_ligand_from_mol_file(tmpdir, resource_path_root):
9
+ input_file = resource_path_root / "inputs" / "ligand_from_mol_file.in"
10
+ shutil.copyfile(input_file, tmpdir / "ligand_from_mol_file.in")
11
+ mol_file = resource_path_root / "inputs" / "pdp.mol"
12
+ shutil.copyfile(mol_file, tmpdir / "pdp.mol")
13
+
14
+ ref_xyz = resource_path_root / "refs" / "ligand_from_mol_file.xyz"
15
+ ref_report = resource_path_root / "refs" / "ligand_from_mol_file.report"
16
+
17
+ threshMLBL = 0.1
18
+ threshLG = 0.1
19
+ threshOG = 0.1
20
+
21
+ with working_directory(tmpdir):
22
+ startgen(['main.py', '-i', 'ligand_from_mol_file.in'], flag=False, gui=False)
23
+
24
+ jobdir = tmpdir / 'Runs' / 'ligand_from_mol_file'
25
+ output_xyz = str(jobdir / 'ligand_from_mol_file.xyz')
26
+ output_report = str(jobdir / 'ligand_from_mol_file.report')
27
+
28
+ passNumAtoms, passMLBL, passLG, passOG = compareGeo(
29
+ output_xyz, ref_xyz, threshMLBL, threshLG, threshOG)
30
+ assert passNumAtoms
31
+ assert passMLBL
32
+ assert passLG
33
+ assert passOG
34
+ pass_report = compare_report_new(output_report, ref_report)
35
+ assert pass_report
tests/test_ligands.py ADDED
@@ -0,0 +1,86 @@
1
+ import pytest
2
+ from molSimplify.Classes.mol3D import mol3D
3
+ from molSimplify.Scripts.io import readdict, lig_load
4
+ from importlib_resources import files as resource_files
5
+ from os import listdir
6
+ from os.path import isfile, join
7
+
8
+
9
+ path_folder = resource_files("molSimplify").joinpath("Ligands")
10
+ path_dict = resource_files("molSimplify").joinpath("Ligands/ligands.dict")
11
+ lig_dict = readdict(path_dict)
12
+
13
+
14
+ @pytest.mark.parametrize("lig_name", lig_dict.keys())
15
+ def test_ligands_dict(lig_name):
16
+ # Assert that the dict entry has all 6 fields
17
+ assert len(lig_dict[lig_name]) == 6
18
+ lig, emsg = lig_load(lig_name)
19
+ # Assert that the ligand could be loaded
20
+ assert type(lig) is mol3D
21
+ assert emsg == ''
22
+ # Assert that the charge of the loaded ligand equals the
23
+ # charge noted in ligands.dict
24
+ charge = int(lig_dict[lig_name][-1][0])
25
+ assert lig.charge == charge
26
+ connecting_atoms = lig_dict[lig_name][-4]
27
+ group = lig_dict[lig_name][-3]
28
+ if "bidentate" in group:
29
+ assert len(connecting_atoms) == 2
30
+ elif "tridentate" in group:
31
+ assert len(connecting_atoms) == 3
32
+ elif "tetradentate" in group:
33
+ assert len(connecting_atoms) == 4
34
+
35
+ # Test that there is no style mistake (additional or missing spaces)
36
+ # in the charge line of .mol files
37
+ if lig_dict[lig_name][0].endswith('.mol'):
38
+ with open(f'{path_folder}/{lig_dict[lig_name][0]}') as fin:
39
+ lines = fin.readlines()
40
+ for line in lines:
41
+ if 'CHG' in line:
42
+ # Should be in the following format:
43
+ # "M CHG n aaa vvv\n"
44
+ # Where 'n' the number first number after 'CHG' states how
45
+ # many atom/charge pairs (8 characters each) follow.
46
+ n_charges = int(line[6:9])
47
+ # 9 characters including 'n' plus 1 for the newline '/n'
48
+ assert len(line) == 10 + n_charges * 8
49
+ sp = line.split()
50
+ # Recheck that the sum of all charges is the same as the
51
+ # charge listed in ligands.dict
52
+ assert sum([int(s) for s in sp[4::2]]) == charge
53
+
54
+
55
+ def test_no_repeats():
56
+ # This test ensures no key is used more than once in ligands.dict.
57
+ listed_keys = []
58
+ with open(path_dict) as f:
59
+ array_content = f.readlines()
60
+ array_content = [
61
+ line for line in array_content if not line.startswith("#")
62
+ ] # Ignoring comments.
63
+ listed_keys = [
64
+ line.split(":")[0] for line in array_content
65
+ ] # Grabbing the ligand names.
66
+ repeated_keys = [
67
+ item for idx, item in enumerate(listed_keys) if item in listed_keys[:idx]
68
+ ] # The repeated ligand names.
69
+ assert len(repeated_keys) == 0
70
+
71
+
72
+ # Identify the files in the Ligands folder.
73
+ my_files = [f for f in listdir(path_folder) if isfile(join(path_folder, f))]
74
+ # Keep only the files that end in .mol or .xyz
75
+ my_files = [f for f in my_files if f.endswith(".xyz") or f.endswith(".mol")]
76
+ # Getting the geometries listed in ligands.dict
77
+ geometries = [
78
+ entry[1][0] for entry in list(lig_dict.items())
79
+ ] # Requires some ugly indexing to get this done.
80
+
81
+
82
+ @pytest.mark.parametrize("file_name", my_files)
83
+ def test_unused_geometries(file_name):
84
+ # This test checks whether any geometry files in the Ligands folder are not used in ligands.dict.
85
+ # This indicates that the geometry file should be removed, as it is clutter.
86
+ assert file_name in geometries