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,62 @@
1
+ """
2
+ Test for imports where the packges will be used in molSimplify.
3
+ """
4
+
5
+ import sys
6
+ import pytest
7
+
8
+
9
+ def test_molsimplify_imported():
10
+ '''
11
+ Sample test, will always pass so long as import statement worked
12
+ '''
13
+ assert "molSimplify" in sys.modules
14
+
15
+
16
+ @pytest.mark.skip("PSI4 is no longer on the list of required dependencies.")
17
+ def test_psi4_import():
18
+ '''
19
+ Test whether psi4 can be imported
20
+ '''
21
+ try:
22
+ import psi4 # noqa: F401
23
+ assert "psi4" in sys.modules
24
+ except ImportError:
25
+ assert 0
26
+
27
+
28
+ def test_tf_import():
29
+ '''
30
+ Test whether tensorflow can be imported
31
+ '''
32
+ try:
33
+ import tensorflow # noqa: F401
34
+ assert "tensorflow" in sys.modules
35
+ except ImportError:
36
+ assert 0
37
+
38
+
39
+ @pytest.mark.skip("Does not work on github CI workflow")
40
+ def test_keras_import():
41
+ '''
42
+ Test whether keras can be imported
43
+ '''
44
+ try:
45
+ from tensorflow import keras # noqa: F401
46
+ assert "keras" in sys.modules
47
+ except ImportError:
48
+ assert 0
49
+
50
+
51
+ def test_openbabel_import():
52
+ '''
53
+ Test whether openbabel can be imported
54
+ '''
55
+ try:
56
+ try:
57
+ from openbabel import openbabel # version 3 style import
58
+ except ImportError: # fallback to version 2
59
+ import openbabel # noqa: F401
60
+ assert "openbabel" in sys.modules
61
+ except ImportError:
62
+ assert 0
@@ -0,0 +1,25 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_bidentate(tmpdir, resource_path_root):
5
+ # There are two versions of this test depending on the openbabel version.
6
+ # This is necessary because openbabel changed the numbering of atoms for v3.
7
+ try:
8
+ # This is the recommended method to import openbabel for v3
9
+ from openbabel import openbabel # noqa: F401
10
+ testName = "bidentate_v3"
11
+ except ImportError:
12
+ testName = "bidentate"
13
+ threshMLBL = 0.1
14
+ threshLG = 1.0
15
+ threshOG = 1.5
16
+ [passMultiFileCheck, pass_structures] = hp.runtestMulti(
17
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
18
+ assert passMultiFileCheck
19
+ for f, passNumAtoms, passMLBL, passLG, passOG, pass_report in pass_structures:
20
+ print(f)
21
+ assert passNumAtoms
22
+ assert passMLBL
23
+ assert passLG
24
+ assert passOG
25
+ assert pass_report
tests/test_cli.py ADDED
@@ -0,0 +1,20 @@
1
+ import pytest
2
+ from helperFuncs import compare_report_new
3
+ from molSimplify.__main__ import main
4
+
5
+
6
+ def test_main_empty(tmpdir, resource_path_root):
7
+ main(args=[f"-rundir {tmpdir}"])
8
+ compare_report_new(
9
+ tmpdir / "fe_oct_2_water_6_s_5" / "fe_oct_2_water_6_s_5_conf_1" /
10
+ "fe_oct_2_water_6_s_5_conf_1.report",
11
+ resource_path_root / "refs" / "test_cli" /
12
+ "fe_oct_2_water_6_s_5_conf_1.report")
13
+
14
+
15
+ @pytest.mark.skip("Test for help not working yet.")
16
+ def test_help(capsys):
17
+ main(args=["--help",])
18
+ captured = capsys.readouterr()
19
+ print(captured.out)
20
+ assert "Welcome to molSimplify. Only basic usage is described here." in captured.out
tests/test_distgeom.py ADDED
@@ -0,0 +1,106 @@
1
+ import numpy as np
2
+ from argparse import Namespace
3
+ from molSimplify.Classes.mol3D import mol3D
4
+ from molSimplify.Scripts.distgeom import (GetCMDists, CosRule,
5
+ Metrize, findshape)
6
+
7
+
8
+ def test_CosRule(atol=1e-6):
9
+ # Test simple "unit" triangle
10
+ assert abs(CosRule(1., 1., 90) - np.sqrt(2)) < atol
11
+ assert abs(CosRule(1, np.sqrt(2), 45) - 1.) < atol
12
+ assert abs(CosRule(np.sqrt(2), 1., 45) - 1.) < atol
13
+ # Test equilateral triangle
14
+ a = 3.456
15
+ assert abs(CosRule(a, a, 60) - a) < atol
16
+ # Test Pythagoras
17
+ assert abs(CosRule(3., 4., 90) - 5.) < atol
18
+ # Test 30-60-90 triangle
19
+ a = 2.345
20
+ assert abs(CosRule(a, 0.5*a*np.sqrt(3), 30) - 0.5*a) < atol
21
+ assert abs(CosRule(a, 0.5*a, 60) - 0.5*a*np.sqrt(3)) < atol
22
+ assert abs(CosRule(0.5*a, 0.5*a*np.sqrt(3), 90) - a) < atol
23
+ # Test symmetry on 30-60-90
24
+ assert abs(CosRule(0.5*a*np.sqrt(3), a, 30) - 0.5*a) < atol
25
+ assert abs(CosRule(0.5*a, a, 60) - 0.5*a*np.sqrt(3)) < atol
26
+ assert abs(CosRule(0.5*a*np.sqrt(3), 0.5*a, 90) - a) < atol
27
+
28
+
29
+ def test_GetCMDists():
30
+ # Dummy points in 3d
31
+ xyzs = np.array([[0., 0., 0.],
32
+ [1., 0., 0.],
33
+ [0., 1., 0.],
34
+ [0., 1., 1.],
35
+ [0., 0., 0.]])
36
+
37
+ dist_mat = np.sqrt(np.sum(
38
+ (xyzs[np.newaxis, :, :] - xyzs[:, np.newaxis, :])**2, axis=-1))
39
+ # Calculate geometric center
40
+ center = np.mean(xyzs, axis=0)
41
+ # Distances to the center:
42
+ dists_ref = np.sqrt(np.sum((xyzs - center)**2, axis=-1))
43
+
44
+ dists, status = GetCMDists(dist_mat, len(xyzs))
45
+ assert status
46
+ np.testing.assert_allclose(dists, dists_ref)
47
+
48
+
49
+ def test_Metrize():
50
+ """"A few tests are commented out because they would only be
51
+ satisfied after introducing breaking changes to Metrize()
52
+ (see TODO tags)"""
53
+ # Setup
54
+ natoms = 9
55
+ LB = np.zeros((natoms, natoms))
56
+ UB = 100*np.ones((natoms, natoms))
57
+ # Build distance matrix
58
+ D = Metrize(LB, UB, natoms)
59
+ # Test bounds
60
+ np.testing.assert_array_compare(np.greater_equal, D, LB)
61
+ np.testing.assert_array_compare(np.less_equal, D, UB)
62
+ # Test symmetry
63
+ np.testing.assert_equal(D, D.T)
64
+ # Diagonal should be zero
65
+ # np.testing.assert_equal(np.diag(D), np.zeros(natoms))
66
+ # Test triangle inequality. For each triangle of atoms i, j, and k:
67
+ # r_ij <= r_ik + r_kj. TODO the current implementation occasionally
68
+ # breaks the constraint on purpose for a potential speed up.
69
+ # for i in range(natoms):
70
+ # for j in range(i, natoms): # Test only lower triangular matrix
71
+ # for k in range(natoms):
72
+ # assert D[i, j] <= D[i, k] + D[k, j]
73
+ # Test elements for specific seed
74
+ # D = Metrize(LB, UB, natoms, seed=1234)
75
+ # Reference for the seed
76
+ # ref = np.array([[0., 19.151945, 62.210877, 100.],
77
+ # [19.151945, 0., 43.772774, 100.],
78
+ # [62.210877, 43.772774, 0., 100.],
79
+ # [100., 100., 100., 0.]])
80
+ # np.testing.assert_allclose(D, ref)
81
+
82
+
83
+ def test_findshape():
84
+ # First trivial case of monodentate ligands:
85
+ args = Namespace(geometry='oct', lig=['carbonyl', 'water'],
86
+ ligocc=[5, 1])
87
+
88
+ angles_dict = findshape(args, mol3D(name='carbonyl'))
89
+ assert angles_dict == {'0-0': 0.0}
90
+
91
+ # More interesting bidentate case:
92
+ args = Namespace(geometry='oct', lig=['acac', 'water'],
93
+ ligocc=[2, 2])
94
+
95
+ angles_dict = findshape(args, mol3D(name='acac'))
96
+ assert angles_dict == {'0-0': 0.0, '0-1': 90.0,
97
+ '1-0': 90.0, '1-1': 0.0}
98
+
99
+ args = Namespace(geometry='oct', lig=['porphyrine', 'water'],
100
+ ligocc=[1, 2])
101
+
102
+ angles_dict = findshape(args, mol3D(name='porphyrine'))
103
+ assert angles_dict == {'0-0': 0.0, '0-1': 90.0, '0-2': 180.0, '0-3': 90.0,
104
+ '1-0': 90.0, '1-1': 0.0, '1-2': 90.0, '1-3': 180.0,
105
+ '2-0': 180.0, '2-1': 90.0, '2-2': 0.0, '2-3': 90.0,
106
+ '3-0': 90.0, '3-1': 180.0, '3-2': 90.0, '3-3': 0.0}
@@ -0,0 +1,29 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_example_1(tmpdir, resource_path_root):
5
+ testName = "example_1"
6
+ threshMLBL = 0.1
7
+ threshLG = 1.0
8
+ threshOG = 2.0
9
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtest(
10
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
11
+ assert passNumAtoms
12
+ assert passMLBL
13
+ assert passLG
14
+ assert passOG
15
+ assert pass_report
16
+ assert hp.runtest_reportonly(tmpdir, resource_path_root, testName)
17
+
18
+
19
+ def test_example_1_No_FF(tmpdir, resource_path_root):
20
+ testName = "example_1"
21
+ threshMLBL = 0.1
22
+ threshLG = 1.0
23
+ threshOG = 2.0
24
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtestNoFF(
25
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
26
+ assert passMLBL
27
+ assert passLG
28
+ assert passOG
29
+ assert pass_report
@@ -0,0 +1,31 @@
1
+ import pytest
2
+ import helperFuncs as hp
3
+
4
+
5
+ @pytest.mark.skip("Skipping example 3 + FF as it is unclear to me if the core "
6
+ "should be frozen during the final optimization. RM")
7
+ def test_example_3(tmpdir, resource_path_root):
8
+ testName = "example_3"
9
+ threshMLBL = 0.1
10
+ threshLG = 1.0
11
+ threshOG = 2.0
12
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtest(
13
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
14
+ assert passNumAtoms
15
+ assert passMLBL
16
+ assert passLG
17
+ assert passOG
18
+ assert pass_report, pass_qcin
19
+
20
+
21
+ def test_example_3_No_FF(tmpdir, resource_path_root):
22
+ testName = "example_3"
23
+ threshMLBL = 0.1
24
+ threshLG = 1.0
25
+ threshOG = 2.0
26
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtestNoFF(
27
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
28
+ assert passMLBL
29
+ assert passLG
30
+ assert passOG
31
+ assert pass_report, pass_qcin
@@ -0,0 +1,43 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_example_5(tmpdir, resource_path_root):
5
+ # There are two versions of this test depending on the openbabel version.
6
+ # This is necessary because openbabel changed the numbering of atoms for v3.
7
+ try:
8
+ # This is the recommended method to import openbabel for v3
9
+ from openbabel import openbabel # noqa: F401
10
+ testName = "example_5_v3"
11
+ except ImportError:
12
+ testName = "example_5"
13
+ threshMLBL = 0.1
14
+ threshLG = 0.5
15
+ threshOG = 1.0
16
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtest(
17
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
18
+ assert passNumAtoms
19
+ assert passMLBL
20
+ assert passLG
21
+ assert passOG
22
+ assert pass_report, pass_qcin
23
+
24
+
25
+ def test_example_5_No_FF(tmpdir, resource_path_root):
26
+ # There are two versions of this test depending on the openbabel version.
27
+ # This is necessary because openbabel changed the numbering of atoms for v3.
28
+ try:
29
+ # This is the recommended method to import openbabel for v3
30
+ from openbabel import openbabel # noqa: F401
31
+ testName = "example_5_v3"
32
+ except ImportError:
33
+ testName = "example_5"
34
+ threshMLBL = 0.1
35
+ threshLG = 0.5
36
+ threshOG = 1.0
37
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtestNoFF(
38
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
39
+ assert passNumAtoms
40
+ assert passMLBL
41
+ assert passLG
42
+ assert passOG
43
+ assert pass_report, pass_qcin
@@ -0,0 +1,28 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_example_7(tmpdir, resource_path_root):
5
+ testName = "example_7"
6
+ threshMLBL = 0.1
7
+ threshLG = 1.0
8
+ threshOG = 3.0 # Increased threshold from 2.0 to 3.0
9
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtest(
10
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
11
+ assert passNumAtoms
12
+ assert passMLBL
13
+ assert passLG
14
+ assert passOG
15
+ assert pass_report, pass_qcin
16
+
17
+
18
+ def test_example_7_No_FF(tmpdir, resource_path_root):
19
+ testName = "example_7"
20
+ threshMLBL = 0.1
21
+ threshLG = 1.1
22
+ threshOG = 3.0
23
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtestNoFF(
24
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
25
+ assert passMLBL
26
+ assert passLG
27
+ assert passOG
28
+ assert pass_report, pass_qcin
@@ -0,0 +1,15 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_example_8(tmpdir, resource_path_root):
5
+ testName = "example_8"
6
+ threshMLBL = 0.1
7
+ threshLG = 1.0
8
+ threshOG = 2.0
9
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtest(
10
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
11
+ assert passNumAtoms
12
+ assert passMLBL
13
+ assert passLG
14
+ assert passOG
15
+ assert pass_report, pass_qcin
@@ -0,0 +1,15 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_example_tbp(tmpdir, resource_path_root):
5
+ testName = "example_tbp"
6
+ threshMLBL = 0.1
7
+ threshLG = 1.0
8
+ threshOG = 2.0
9
+ [passNumAtoms, passMLBL, passLG, passOG, pass_report, pass_qcin] = hp.runtest(
10
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG)
11
+ assert passNumAtoms
12
+ assert passMLBL
13
+ assert passLG
14
+ assert passOG
15
+ assert pass_report
tests/test_ff_xtb.py ADDED
@@ -0,0 +1,111 @@
1
+ import pytest
2
+ import shutil
3
+ import helperFuncs as hp
4
+
5
+
6
+ # Decorator to skip test if xtb is not installed
7
+ xtb_installed = pytest.mark.skipif(shutil.which('xtb') is None,
8
+ reason='Could not find xtb installation')
9
+
10
+
11
+ @xtb_installed
12
+ def test_xtb_before(tmpdir, resource_path_root):
13
+ testName = "xtb_H2O_before"
14
+ threshMLBL = 0.01
15
+ threshLG = 0.01
16
+ threshOG = 2.0
17
+ (passNumAtoms, passMLBL, passLG,
18
+ passOG, pass_report, pass_qcin) = hp.runtest(
19
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG, seed=31415)
20
+ assert passNumAtoms
21
+ assert passMLBL
22
+ assert passLG
23
+ assert passOG
24
+ assert pass_report
25
+ assert pass_qcin
26
+
27
+
28
+ @pytest.mark.skip(reason="TODO: figure out why this test started failing suddenly")
29
+ @xtb_installed
30
+ def test_xtb_before_after(tmpdir, resource_path_root):
31
+ testName = "xtb_imidazole_BA"
32
+ threshMLBL = 0.01
33
+ threshLG = 0.01
34
+ threshOG = 0.05
35
+ (passNumAtoms, passMLBL, passLG,
36
+ passOG, pass_report, pass_qcin) = hp.runtest(
37
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG, seed=31415)
38
+ assert passNumAtoms
39
+ assert passMLBL
40
+ assert passLG
41
+ assert passOG
42
+ assert pass_report
43
+ assert pass_qcin
44
+
45
+
46
+ @xtb_installed
47
+ def test_xtb_ANC_fail(tmpdir, resource_path_root):
48
+ testName = "xtb_ANC_fail"
49
+ threshMLBL = 0.01
50
+ threshLG = 0.01
51
+ threshOG = 0.01
52
+ (passNumAtoms, passMLBL, passLG,
53
+ passOG, pass_report, pass_qcin) = hp.runtest(
54
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG, seed=31415)
55
+ assert passNumAtoms
56
+ assert passMLBL
57
+ assert passLG
58
+ assert passOG
59
+ assert pass_report
60
+ assert pass_qcin
61
+
62
+
63
+ @xtb_installed
64
+ def test_xtb_high_spin(tmpdir, resource_path_root):
65
+ testName = "xtb_bipy_spin5"
66
+ threshMLBL = 0.01
67
+ threshLG = 0.05
68
+ threshOG = 0.5
69
+ (passNumAtoms, passMLBL, passLG,
70
+ passOG, pass_report, pass_qcin) = hp.runtest(
71
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG, seed=31415)
72
+ assert passNumAtoms
73
+ assert passMLBL
74
+ assert passLG
75
+ assert passOG
76
+ assert pass_report
77
+ assert pass_qcin
78
+
79
+
80
+ @xtb_installed
81
+ def test_xtb_final_opt(tmpdir, resource_path_root):
82
+ testName = "xtb_final_opt"
83
+ threshMLBL = 0.01
84
+ threshLG = 0.01
85
+ threshOG = 0.05
86
+ (passNumAtoms, passMLBL, passLG,
87
+ passOG, pass_report, pass_qcin) = hp.runtest(
88
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG, seed=31415)
89
+ assert passNumAtoms
90
+ assert passMLBL
91
+ assert passLG
92
+ assert passOG
93
+ assert pass_report
94
+ assert pass_qcin
95
+
96
+
97
+ @xtb_installed
98
+ def test_gfnff(tmpdir, resource_path_root):
99
+ testName = "gfnff_NH3_BA"
100
+ threshMLBL = 0.01
101
+ threshLG = 0.01
102
+ threshOG = 2.0
103
+ (passNumAtoms, passMLBL, passLG,
104
+ passOG, pass_report, pass_qcin) = hp.runtest(
105
+ tmpdir, resource_path_root, testName, threshMLBL, threshLG, threshOG, seed=31415)
106
+ assert passNumAtoms
107
+ assert passMLBL
108
+ assert passLG
109
+ assert passOG
110
+ assert pass_report
111
+ assert pass_qcin
@@ -0,0 +1,26 @@
1
+ import pytest
2
+ import helperFuncs as hp
3
+
4
+
5
+ @pytest.mark.parametrize("testName", [
6
+ "all_flying_away",
7
+ "broken_ligands",
8
+ "catom_change",
9
+ "H_transfer",
10
+ "ligand_assemble",
11
+ "ligand_bent",
12
+ "linear_broken",
13
+ "methane_trans",
14
+ "rotational_group",
15
+ "switch_test",
16
+ "compact_bonding",
17
+ "triplebond_linear_broken",
18
+ "iodine_sulfur",
19
+ "oct_comp_greedy",
20
+ "atom_ordering_mismatch",
21
+ "iodide_radius"
22
+ ])
23
+ def test_geocheck_oct(tmpdir, resource_path_root, testName):
24
+ thresh = 0.01
25
+ passGeo = hp.runtestgeo(tmpdir, resource_path_root, testName, thresh)
26
+ assert passGeo
@@ -0,0 +1,15 @@
1
+ import helperFuncs as hp
2
+
3
+
4
+ def test_example_1(tmpdir, resource_path_root):
5
+ testName = "one_empty_good"
6
+ thresh = 0.01
7
+ passGeo = hp.runtestgeo(tmpdir, resource_path_root, testName, thresh, geo_type="one_empty")
8
+ assert passGeo
9
+
10
+
11
+ def test_example_2(tmpdir, resource_path_root):
12
+ testName = "one_empty_bad"
13
+ thresh = 0.01
14
+ passGeo = hp.runtestgeo(tmpdir, resource_path_root, testName, thresh, geo_type="one_empty")
15
+ assert passGeo
tests/test_geometry.py ADDED
@@ -0,0 +1,44 @@
1
+ import numpy as np
2
+ from molSimplify.Scripts.geometry import (norm,
3
+ normalize,
4
+ checkplanar,
5
+ dihedral,
6
+ )
7
+ from molSimplify.Classes.mol3D import mol3D
8
+ from molSimplify.Classes.atom3D import atom3D
9
+
10
+
11
+ def test_norm():
12
+ v = [1.2, -.2, 0.8]
13
+
14
+ assert abs(norm(v) - np.linalg.norm(v)) < 1e-6
15
+
16
+
17
+ def test_normalize():
18
+ v = [1.8, 0.6, -1.8]
19
+ v_norm = normalize(v)
20
+
21
+ np.testing.assert_allclose(v_norm, np.array(v)/np.linalg.norm(v), atol=1e-6)
22
+
23
+
24
+ def test_checkplanar():
25
+ a1 = [0.0, 0.0, 0.0]
26
+ a2 = [1.2, 0.6, 1.6]
27
+ a3 = [-1.1, 0.3, 0.8]
28
+ a4 = [0.4, -1.2, -0.3]
29
+
30
+ assert not checkplanar(a1, a2, a3, a4)
31
+ # Construct a set four point in plane with the first 3
32
+ a4 = [0.1, 0.9, 2.4]
33
+ assert checkplanar(a1, a2, a3, a4)
34
+
35
+
36
+ def test_dihedral():
37
+ mol = mol3D()
38
+ mol.addAtom(atom3D(Sym='X', xyz=[0.5, 0.0, 1.2]))
39
+ mol.addAtom(atom3D(Sym='X', xyz=[0.0, 0.0, 0.0]))
40
+ mol.addAtom(atom3D(Sym='X', xyz=[0.0, 0.0, 1.0]))
41
+ mol.addAtom(atom3D(Sym='X', xyz=[0.5, 0.5, -0.2]))
42
+
43
+ d = dihedral(mol, 0, 1, 2, 3)
44
+ assert abs(d - 45.0) < 1e-6
tests/test_inparse.py ADDED
@@ -0,0 +1,76 @@
1
+ import os
2
+ from molSimplify.Scripts.inparse import (parseinputfile, checkinput,
3
+ parseall,
4
+ parseinputs_basic,
5
+ parseinputs_advanced)
6
+ from argparse import ArgumentParser, Namespace
7
+
8
+
9
+ def test_parseinputfile_empty():
10
+ defaults = {'skipANN': False, 'oldANN': False,
11
+ 'dbvdent': False, 'dbvconns': False,
12
+ 'dbvhyb': False, 'dbvlinks': False,
13
+ 'rprompt': False, 'rundir': f'{os.getcwd()}/Runs'}
14
+
15
+ args = Namespace()
16
+ parseinputfile(args, inputfile_str=' ')
17
+
18
+ # Assert defaults are set
19
+ assert args.__dict__ == defaults
20
+
21
+
22
+ def test_parseinputs_basic(monkeypatch):
23
+ # Monkeypatch is used to change sys.argv parsed by the Argumentparser.
24
+ monkeypatch.setattr('sys.argv', ['molsimplify'])
25
+ parser = ArgumentParser()
26
+ args = parseinputs_basic(parser)
27
+ defaults = dict(coord=False, core=None, ff='uff', ff_final_opt=None,
28
+ ffoption='N', geo=False, geometry=False, keepHs=None,
29
+ lig=None, ligloc=False, ligocc=False, multiplicity=None,
30
+ oxstate=None, rundir=False, skipANN=None, smicat=False,
31
+ spin=None, spinmultiplicity=None, custom_data_dir=None)
32
+ assert args.__dict__ == defaults
33
+
34
+
35
+ def test_parseinputs_advanced(monkeypatch):
36
+ # Monkeypatch is used to change sys.argv parsed by the Argumentparser.
37
+ monkeypatch.setattr('sys.argv', ['molsimplify'])
38
+ parser = ArgumentParser()
39
+ args = parseinputs_advanced(parser)
40
+ defaults = dict(MLbonds=False, antigeoisomer=None, calccharge=True,
41
+ charge=None, decoration=False, decoration_index=False,
42
+ distort='0', genall=False, isomers=None, langles=False,
43
+ ligalign=False, nconfs='1', oldANN=None, pangles=False,
44
+ reportonly=None, scoreconfs=False, stereos=None)
45
+ assert args.__dict__ == defaults
46
+
47
+
48
+ def test_checkinput(monkeypatch):
49
+ # Monkeypatch is used to change sys.argv parsed by the Argumentparser.
50
+ monkeypatch.setattr('sys.argv', ['molsimplify'])
51
+ parser = ArgumentParser()
52
+ # Runs all parsers and populates the args Namespace
53
+ args = parseall(parser)
54
+ checkinput(args, calctype='base')
55
+ # Test a few defaults:
56
+ assert args.core == ['Fe']
57
+ assert args.oxstate == '2'
58
+ assert args.spin == '5'
59
+
60
+
61
+ def test_parseinputfile_inputfile_kwarg(resource_path_root):
62
+ """Test that both methods of calling parseinputfile
63
+ (with an args.i file or inputfile_str kwarg) yield the same result"""
64
+ infile = resource_path_root / "inputs" / "example_1.in"
65
+
66
+ args1 = Namespace(i=infile)
67
+ parseinputfile(args1)
68
+
69
+ with open(infile, 'r') as fin:
70
+ lines = fin.read()
71
+ args2 = Namespace()
72
+ parseinputfile(args2, inputfile_str=lines)
73
+ # Add 'i' argument for comparison
74
+ args2.i = infile
75
+
76
+ assert args1 == args2