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,488 @@
1
+ # @file postparse.py
2
+ # Post-processes quantum chemistry output files
3
+ #
4
+ # Written by Tim Ioannidis for HJK Group
5
+ #
6
+ # Dpt of Chemical Engineering, MIT
7
+
8
+ import time
9
+ import os
10
+
11
+
12
+ # Gets subset of string between two substrings
13
+ # @param s String to be split
14
+ # @param first First substring
15
+ # @param last Last substring
16
+ # @return Subset of string between substrings
17
+
18
+
19
+ def find_between(s, first, last):
20
+ # returns string between first and last substrings
21
+ s = s.split(first, 1)
22
+ if len(s) > 1:
23
+ s = s[1].split(last, 1)
24
+ return s[0]
25
+ else:
26
+ return ""
27
+
28
+
29
+ # List of metals
30
+ metals = {'Sc': 21, 'Ti': 22, 'V': 23, 'Cr': 24, 'Mn': 25, 'Fe': 26, 'Co': 27, 'Ni': 28, 'Cu': 29,
31
+ 'Y': 39, 'Zr': 40, 'Nb': 41, 'Mo': 42, 'Tc': 43, 'Ru': 44, 'Rh': 45, 'Pd': 46, 'Pt': 78, 'Au': 79, 'In': 49}
32
+
33
+ # Parse unrestricted NBO output
34
+ # @param s String containing NBO output
35
+ # @return NBO output including d-band center and d occupancies
36
+
37
+
38
+ def nbo_parser_unrestricted(s):
39
+ res = [] # list of output: [atom],[charge],[average % metal-centered hyb in NBOs],
40
+ # [average %d character in NBOs], [average LV orb occup], [average %d char in LVs]
41
+ # averages with respect to occupations
42
+ ''' Charge parsing '''
43
+ # get nbo charge
44
+ scharge = s.split('Charge')[1].split('* Total *')[0]
45
+ # get atoms and summary of NP analysis
46
+ scharge = scharge.splitlines()[2:-2]
47
+ MET = False
48
+ # find metal charge
49
+ for line in scharge: # loop over atoms
50
+ if line.split(None)[0] in metals: # find metal in atoms
51
+ res.append(line.split(None)[0])
52
+ res.append(line.split(None)[2])
53
+ MET = True
54
+ # if no metal is found, default to first atom and get charge
55
+ if len(res) == 0:
56
+ res.append(scharge[0].split(None)[0])
57
+ res.append(scharge[0].split(None)[2])
58
+ if MET:
59
+ ''' NLMO %NBO parsing '''
60
+ # get metal d occupation
61
+ sstxt = find_between(s, 'Natural Electron Configuration', '********')
62
+ smet = find_between(sstxt, res[0], '\n')
63
+ doccup = find_between(smet, '3d(', ')')
64
+ # get metal d-band center
65
+ sstxt = [_f for _f in find_between(
66
+ s, 'NATURAL POPULATIONS', 'Summary').splitlines() if _f]
67
+ dband = 0.0
68
+ for ll in sstxt:
69
+ la = [_f for _f in ll.split(None) if _f]
70
+ if len(la) > 4:
71
+ if(la[1] == res[0] and la[4] == 'Val(' and la[5] == '3d)'):
72
+ dband += 0.2*float(la[7])
73
+ # split output for alpha beta electrons
74
+ salpha = s.split('Alpha spin orbitals')[1]
75
+ sbeta = salpha.split('Beta spin orbitals')[1]
76
+ salpha = salpha.split('Beta spin orbitals')[0]
77
+ # parse alpha
78
+ # output list with [occup,%metal hyb,%d in metal hyb]
79
+ [alphares] = spinnbo(salpha, res[0])
80
+ # anlmo = spinnlmo(salpha,res[0]) # output list with [occup,%metal hyb,%d in metal hyb]
81
+ anlmo = [0.0, 0.0, 0.0]
82
+ # parse beta
83
+ # output list with [occup,%metal hyb,%d in metal hyb]
84
+ [betares] = spinnbo(sbeta, res[0])
85
+ # bnlmo = spinnlmo(sbeta,res[0]) # output list with [occup,%metal hyb,%d in metal hyb]
86
+ bnlmo = [0.0, 0.0, 0.0]
87
+ # average results from alpha, beta
88
+ hyb = 0.0
89
+ dper = 0.0
90
+ occtot = 0.0
91
+ for entry in alphares:
92
+ hyb += float(entry[0])*0.01*float(entry[1])
93
+ dper += float(entry[0])*1e-4*float(entry[1])*float(entry[2])
94
+ occtot += float(entry[0])
95
+ for entry in betares:
96
+ hyb += float(entry[0])*0.01*float(entry[1])
97
+ dper += float(entry[0])*1e-4*float(entry[1])*float(entry[2])
98
+ occtot += float(entry[0])
99
+ # normalize with respect to total occupation
100
+ if occtot > 0:
101
+ res.append(hyb/occtot)
102
+ res.append(dper/occtot)
103
+ else:
104
+ res.append(0.0)
105
+ res.append(0.0)
106
+ if (anlmo[0]+bnlmo[0]) > 0:
107
+ # combine nlmo data
108
+ nlmotot = (anlmo[1]+bnlmo[1])/(anlmo[0]+bnlmo[0])
109
+ res.append(nlmotot)
110
+ else:
111
+ res.append(0.0)
112
+ else:
113
+ res += [0.0, 0.0, 0.0, 0.0, 0.0]
114
+ doccup = 0.0
115
+ dband = 0.0
116
+ return res, doccup, dband
117
+
118
+ # Parse restricted NBO output
119
+ # @param s String containing NBO output
120
+ # @return NBO output
121
+
122
+
123
+ def nbo_parser_restricted(s):
124
+ res = [] # list of output: [atom],[charge],[average % metal-centered hyb in NBOs],
125
+ # [average %d character in NBOs]
126
+ # averages with respect to occupations
127
+ ''' Charge parsing '''
128
+ # get nbo charge
129
+ scharge = s.split('Charge')[1].split('* Total *')[0]
130
+ # get atoms and summary of NP analysis
131
+ scharge = scharge.splitlines()[2:-2]
132
+ MET = False
133
+ # find metal charge
134
+ for line in scharge: # loop over atoms
135
+ if line.split(None)[0] in metals: # find metal in atoms
136
+ res.append(line.split(None)[0])
137
+ res.append(line.split(None)[2])
138
+ MET = True
139
+ if len(res) == 0:
140
+ res.append(scharge[0].split(None)[0])
141
+ res.append(scharge[0].split(None)[2])
142
+ if MET:
143
+ ''' NLMO %NBO parsing '''
144
+ [totres, tLV] = spinnbo(
145
+ s, res[0]) # output list with [occup,%metal hyb,%d in metal hyb]
146
+ # output list with [occup,%metal hyb,%d in metal hyb]
147
+ nlmores = spinnlmo(s, res[0])
148
+ # average results from alpha, beta
149
+ hyb = 0.0
150
+ dper = 0.0
151
+ occtot = 0.0
152
+ for entry in totres:
153
+ hyb += float(entry[0])*0.01*float(entry[1])
154
+ dper += float(entry[0])*1e-4*float(entry[1])*float(entry[2])
155
+ occtot += float(entry[0])
156
+ else:
157
+ # if no metal do not perform analysis
158
+ hyb = 0.0
159
+ occtot = 1.0
160
+ dper = 0.0
161
+ nlmores = [1.0, 0.0]
162
+ # normalize with respect to total occupation
163
+ res.append(hyb/occtot)
164
+ res.append(dper/occtot)
165
+ res.append(0.01*nlmores[1]/nlmores[0])
166
+ return res
167
+
168
+ # Get information on orbitals with metal character
169
+ # @param s String containing NBO output
170
+ # @param metal Element name of metal
171
+ # @return Orbital information
172
+
173
+
174
+ def spinnbo(s, metal):
175
+ sNBO = []
176
+ # get molecular orbitals containing metal
177
+ ss = s.split('NATURAL BOND ORBITAL')[1]
178
+ ss2 = ss.split('DIRECTIONALITY')
179
+ if len(ss2) > 1:
180
+ slines = ss[1].splitlines()
181
+ else:
182
+ slines = ss.splitlines()
183
+ for i, line in enumerate(slines):
184
+ if ((metal in line) and ('BD' in line)):
185
+ # get NBO occupation
186
+ occup = find_between(line.split(None)[1], '(', ')')
187
+ # get block of NBO
188
+ no = line.split(None)[0].strip(' ')
189
+ # join rest of text to search
190
+ ttt = ''
191
+ for lt in slines[i:i+20]:
192
+ ttt += lt + '\n'
193
+ # find metal centered hybrid inside NBO block
194
+ sa = find_between(
195
+ ttt, no+' (', str(int(no[0:2])+1)+'. (').splitlines()
196
+ ml = [ll for ll in sa[1:] if metal in ll] # metal centered hybrid
197
+ if len(ml) > 0:
198
+ perhyb = find_between(ml[0], '(', '%').strip(
199
+ ' ') # get % of metal hyb in NBO
200
+ perds = ml[0].rsplit('(', 1)
201
+ perd = perds[-1].split('%)')[0] # get d orbital character
202
+ # append result
203
+ sNBO.append([occup, perhyb, perd])
204
+ return [sNBO]
205
+
206
+ # Get unrestricted NLMO information
207
+ # @param s String containing NBO output
208
+ # @param metal Element name of metal
209
+ # @return NLMO information
210
+
211
+
212
+ def spinnlmo(s, metal):
213
+ # get NLMOs containing metal
214
+ ss = s.split('NATURAL LOCALIZED MOLECULAR ORBITAL (NLMO) ANALYSIS')[
215
+ 1].splitlines()
216
+ nlmoccup = 0.0
217
+ pernlmo = 0.0
218
+ for line in ss:
219
+ if ((metal in line) and ('BD' in line)):
220
+ # get NBO occupation
221
+ nlmoccup += float(find_between(line.split(None)
222
+ [1], '(', ')').strip(' '))
223
+ # get %NBO in NLMO
224
+ pernlmo += 0.01*float(find_between(line, ')', '%').strip(' '))
225
+ nlmo = [nlmoccup, pernlmo]
226
+ return nlmo
227
+
228
+ # Parse NBO output
229
+ # @param resfiles Files to be post-processed
230
+ # @param folder Folder containing runs
231
+ # @param gui GUI flag
232
+ # @param flog Log file name
233
+
234
+
235
+ def nbopost(resfiles, folder, gui, flog):
236
+ t = time.strftime('%c')
237
+ headern = "Date: " + t + \
238
+ "\nHere are the current results for runs in folder '"+folder+"'\n"
239
+ headern += "\nFolder Metal MCharge AvhybNBO AvDorbNBO AvNLMO Doccup Dband-center\n"
240
+ headern += "----------------------------------------------------------------------------------------------------------------------------------------\n"
241
+ textnbo = []
242
+ for numi, resf in enumerate(resfiles):
243
+ resfp = os.path.relpath(resf, folder)
244
+ resd = resf.rsplit('/', 1)[0]
245
+ resfold = os.path.relpath(resd, folder)
246
+ print(('Processing ', resfp))
247
+ flog.write('Processing '+resfp+'\n')
248
+ if gui:
249
+ gui.iWtxt.setText('Processing '+resfp+'\n'+gui.iWtxt.toPlainText())
250
+ gui.app.processEvents()
251
+ with open(resf) as f:
252
+ s = f.read()
253
+ # split output into QC and nbo parts
254
+ ssp = ' N A T U R A L A T O M I C O R B I T A L'
255
+ if ssp in s:
256
+ snbo = s.split(ssp)[-1] # get nbo output
257
+ # check if unrestricted
258
+ if 'Beta spin orbitals' in s:
259
+ nbores, doccup, dband = nbo_parser_unrestricted(snbo)
260
+ tt = resfold.ljust(50) + nbores[0].ljust(6)+"{:6.4f}".format(
261
+ float(nbores[1])).ljust(10)+"{:6.4f}".format(nbores[2]).ljust(10)
262
+ tt += "{:6.4f}".format(nbores[3]).ljust(10) + \
263
+ "{:6.5f}".format(nbores[4]).ljust(12)
264
+ tt += "{:4.2f}".format(float(doccup)).ljust(12) + \
265
+ "{:4.2f}".format(dband).ljust(10)+'\n'
266
+ else:
267
+ nbores = nbo_parser_restricted(snbo)
268
+ tt = resfold.ljust(50) + nbores[0].ljust(6)+"{:6.4f}".format(
269
+ float(nbores[1])).ljust(10)+"{:6.4f}".format(nbores[2]).ljust(10)
270
+ tt += "{:6.4f}".format(nbores[3]).ljust(10)+'\n'
271
+ textnbo.append(tt)
272
+ textnbo = sorted(textnbo)
273
+ with open(folder+'/nbo.txt', 'w') as f:
274
+ f.write(headern+''.join(textnbo))
275
+
276
+ # Parse terachem output
277
+ # @param resfiles Files to be post-processed
278
+ # @param folder Folder containing runs
279
+ # @param gui GUI flag
280
+ # @param flog Log file name
281
+
282
+
283
+ def terapost(resfiles, folder, gui, flog):
284
+ t = time.strftime('%c')
285
+ flog.write(
286
+ '################## Calculating results summary ##################\n\n')
287
+ header = "Date: " + t + "\nHere are the current results for runs in folder '"+folder+"'\n"
288
+ header += "\nFolder Compound Method %HF Restricted Optim Converged NoSteps Spin S^2 Charge Energy(au) Time(s)\n"
289
+ header += "------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
290
+ # loop over folders
291
+ text = []
292
+ for numi, resf in enumerate(resfiles):
293
+ resfp = os.path.relpath(resf, folder)
294
+ resd = resf.rsplit('/', 1)[0]
295
+ resfold = os.path.relpath(resd, folder)
296
+ print(('Processing ', resfp))
297
+ flog.write('Processing '+resfp+'\n')
298
+ if gui:
299
+ gui.iWtxt.setText('Processing '+resfp+'\n'+gui.iWtxt.toPlainText())
300
+ with open(resf) as f:
301
+ s = f.read()
302
+ # split output into terachem and nbo parts
303
+ stera = s # get tera output
304
+ if 'TeraChem' in s:
305
+ ss = stera.splitlines()
306
+ # get simulation parameters
307
+ comp = [line for line in ss if 'XYZ coordinates' in line][0].rsplit(
308
+ None, 1)[-1]
309
+ comp = comp.split('.xyz')[0] # compound name
310
+ spin = [line for line in ss if 'Spin multiplicity:' in line][0].rsplit(
311
+ None, 1)[-1] # spin mult
312
+ # SPIN S-SQUARED
313
+ ssq = [_f for _f in [
314
+ line for line in ss if 'SPIN S-SQUARED' in line] if _f]
315
+ if (len(ssq) > 0):
316
+ ssqs = [_f for _f in ssq[-1].split(')') if _f]
317
+ ssq = ssqs[-1].split(None)[-1]
318
+ else:
319
+ ssq = 'NA'
320
+ tcharge = [line for line in ss if 'Total charge:' in line]
321
+ if len(tcharge) > 0:
322
+ tcharge = tcharge[0].rsplit(None, 1)[-1] # total charge
323
+ else:
324
+ tcharge = 'ERROR'
325
+ UR = [line for line in ss if 'Wavefunction:' in line][0].rsplit(
326
+ None, 1)[-1][0] # U/R (Un)restricted
327
+ smethod = [line for line in ss if 'Method:' in line][0].split(
328
+ None) # functional
329
+ method = smethod[1]
330
+ if (smethod[-2] == 'dispersion'):
331
+ method += '-D'
332
+ hfx = [line for line in ss if 'Hartree-Fock exact exchange:' in line]
333
+ if len(hfx) > 0:
334
+ hfx = hfx[0].rsplit(None, 1)[-1] # HFX
335
+ else:
336
+ hfx = '0.0'
337
+ # optimization?
338
+ optim = [line for line in ss if 'RUNNING GEOMETRY' in line]
339
+ optim = 'Y' if len(optim) > 0 else 'N'
340
+ # get results
341
+ en = [line for line in ss if 'FINAL ENERGY:' in line] # energy
342
+ en = en[-1].rsplit(None, 2)[-2] if len(en) > 0 else 'NaN'
343
+ if (optim == 'Y'):
344
+ conv = [line for line in ss if 'Converged!' in line]
345
+ conv = 'Y' if len(conv) > 0 else 'N'
346
+ if conv == 'Y':
347
+ lnosteps = [
348
+ line for line in ss if 'Number of steps' in line][-1]
349
+ nosteps = [_f for _f in lnosteps.split(None) if _f][-1]
350
+ else:
351
+ nosteps = 'NA'
352
+ else:
353
+ conv = 'NA'
354
+ nosteps = 'NA'
355
+ timet = [line for line in ss if 'Total processing time:' in line]
356
+ if (len(timet) > 0):
357
+ tm = timet[0].rsplit(None, 2)[-2]
358
+ else:
359
+ tm = 'NOT DONE'
360
+ # construct string record of results
361
+ tt = resfold.ljust(50)+comp.ljust(12)+method.ljust(7)+("{:3.0f}".format(100*float(hfx))+'%').ljust(
362
+ 10)+UR.ljust(10)+optim.ljust(8)+conv.ljust(9)+nosteps.ljust(10)+spin.ljust(5)+ssq.ljust(9)
363
+ tt += tcharge.ljust(6) + \
364
+ "{:10.6f}".format(float(en)).ljust(18)+tm+'\n'
365
+ text.append(tt)
366
+ # sort alphabetically and print
367
+ text = sorted(text)
368
+ if len(text) > 0:
369
+ with open(folder+'/tera-results.txt', 'w') as f:
370
+ f.write(header+''.join(text))
371
+
372
+ # Parse GAMESS output
373
+ # @param resfiles Files to be post-processed
374
+ # @param folder Folder containing runs
375
+ # @param gui GUI flag
376
+ # @param flog Log file name
377
+
378
+
379
+ def gampost(resfiles, folder, gui, flog):
380
+ t = time.strftime('%c')
381
+ header = "Date: " + t + "\nHere are the current results for runs in folder '"+folder+"'\n"
382
+ header += "\nFolder Method %MGGA %LDA Optim Converged NoSteps S-SQ Spin Charge Energy(au) Time(MIN)\n"
383
+ header += "--------------------------------------------------------------------------------------------------------------------------------------------------------\n"
384
+ # loop over folders
385
+ text = []
386
+ flog.write(
387
+ '################## Calculating results summary ##################\n\n')
388
+ for numi, resf in enumerate(resfiles):
389
+ error = False
390
+ resfp = os.path.relpath(resf, folder)
391
+ resd = resf.rsplit('/', 1)[0]
392
+ resfold = os.path.relpath(resd, folder)
393
+ if gui:
394
+ gui.iWtxt.setText('Processing '+resfp+'\n'+gui.iWtxt.toPlainText())
395
+ gui.app.processEvents()
396
+ print(('Processing '+resfp))
397
+ flog.write('Processing '+resfp+'\n')
398
+ if len(resfold) > 1:
399
+ resfold = resfold[-2]
400
+ else:
401
+ resfold = resfold[-1]
402
+ with open(resf) as f:
403
+ s = f.read()
404
+ if 'GAMESS' in s:
405
+ sgam = s # get gamess output
406
+ ''' Parse gamess output '''
407
+ ss = sgam.splitlines()
408
+ # get simulation parameters
409
+ comp = resfold.split('/', 1)[-1]
410
+ spins = [line for line in ss if 'SPIN MULTIPLICITY' in line]
411
+ if len(spins) > 0:
412
+ spin = spins[0].rsplit(None, 1)[-1] # spin mult
413
+ tcharge = [line for line in ss if 'CHARGE OF MOLECULE' in line]
414
+ if len(tcharge) > 0:
415
+ tcharge = tcharge[0].rsplit(None, 1)[-1] # total charge
416
+ else:
417
+ tcharge = 'ERROR'
418
+ smethod = [line for line in ss if 'DFTTYP=' in line][0].split(
419
+ 'DFTTYP=') # functional
420
+ if len(smethod) > 0:
421
+ method = smethod[-1].split(None, 1)[0]
422
+ if (smethod[-2] == 'dispersion'):
423
+ method += '-D'
424
+ errmsgs = [line for line in ss if 'semget return an error' in line]
425
+ if len(errmsgs) > 0:
426
+ error = True
427
+ aplda = [line for line in ss if 'APLDA=' in line]
428
+ if len(aplda) > 0:
429
+ aplda = aplda[0].split('APLDA=', 1)[1]
430
+ aplda = aplda.split(None, 1)[0]
431
+ else:
432
+ aplda = 'NA'
433
+ apgga = [line for line in ss if 'APGGA=' in line]
434
+ if len(apgga) > 0:
435
+ apgga = apgga[0].split('APGGA=', 1)[1]
436
+ apgga = apgga.split(None, 1)[0]
437
+ else:
438
+ apgga = 'NA'
439
+ # SPIN S-SQUARED
440
+ ssq = [_f for _f in [line for line in ss if 'S-SQUARED' in line] if _f]
441
+ if (len(ssq) > 0):
442
+ ssqs = [_f for _f in ssq[-1].split(')') if _f]
443
+ ssq = ssqs[-1].split(None)[-1]
444
+ else:
445
+ ssq = 'NA'
446
+ # optimization?
447
+ optim = [line for line in ss if 'OPTIMIZE' in line]
448
+ optim = 'Y' if len(optim) > 0 else 'N'
449
+ # get results
450
+ en = [line for line in ss if 'FINAL U' in line] # energy
451
+ en = en[-1].split(None)[4] if len(en) > 0 else 'NaN'
452
+ conv = 'NA'
453
+ if (optim == 'Y'):
454
+ conv = [
455
+ line for line in ss if 'EQUILIBRIUM GEOMETRY LOCATED' in line]
456
+ conv = 'Y' if len(conv) > 0 else 'N'
457
+ if conv == 'Y':
458
+ lnosteps = [line for line in ss if 'NSERCH:' in line][-1]
459
+ nosteps = [_f for _f in lnosteps.split(None) if _f][1]
460
+ else:
461
+ nosteps = 'NA'
462
+ else:
463
+ conv = 'NA'
464
+ nosteps = 'NA'
465
+ timet = [line for line in ss if 'TOTAL WALL CLOCK TIME' in line]
466
+ if (len(timet) > 0):
467
+ tm = timet[-1].split('=', 1)[-1]
468
+ tm = tm.split('SECONDS', 1)[0]
469
+ tm = "{:10.1f}".format(float(tm)/60.0) # convert to MIN
470
+ else:
471
+ tm = 'NOT DONE'
472
+ # construct string record of results
473
+ if not error:
474
+ tt = resfold.ljust(50)+method.ljust(9) + \
475
+ apgga.ljust(8)+aplda.ljust(8)
476
+ tt += optim.ljust(9)+conv.ljust(9) + \
477
+ nosteps.ljust(8)+ssq.ljust(9)+spin.ljust(8)
478
+ tt += tcharge.ljust(6) + \
479
+ "{:10.6f}".format(float(en)).ljust(14)+tm+'\n'
480
+ else:
481
+ tt = resfold.ljust(40)+comp.ljust(12) + \
482
+ 'ERROR in the calculation\n'
483
+ text.append(tt)
484
+ # sort alphabetically and print
485
+ text = sorted(text)
486
+ if len(text) > 0:
487
+ with open(folder+'/gam-results.txt', 'w') as f:
488
+ f.write(header+''.join(text))
@@ -0,0 +1,139 @@
1
+ # @file postproc.py
2
+ # Main postprocessing driver
3
+ #
4
+ # Written by Tim Ioannidis for HJK Group
5
+ #
6
+ # Dpt of Chemical Engineering, MIT
7
+
8
+ import glob
9
+ import os
10
+ import shutil
11
+ import time
12
+
13
+ from molSimplify.Scripts.postmold import (moldpost)
14
+ from molSimplify.Scripts.postmwfn import (deloc,
15
+ getcharges,
16
+ getcubes,
17
+ getwfnprops,
18
+ globalvars,
19
+ mybash)
20
+ from molSimplify.Scripts.postparse import (gampost,
21
+ nbopost,
22
+ terapost)
23
+
24
+
25
+ # Check if multiwfn exists
26
+ # @param mdir Multiwfn directory
27
+ # @return bool
28
+
29
+
30
+ def checkmultiwfn(mdir):
31
+ if not glob.glob(mdir):
32
+ return False
33
+ else:
34
+ return True
35
+
36
+ # Main postprocessing driver
37
+ # @param rundir Runs directory
38
+ # @param args Namespace of arguments
39
+ # @param globs Global variables
40
+
41
+
42
+ def postproc(rundir, args, globs):
43
+ globs = globalvars()
44
+ if args.gui:
45
+ from molSimplify.Classes.mWidgets import mQDialogInf
46
+ choice = mQDialogInf(
47
+ 'Post processing', 'Parsing the results will take a while..Please be patient. Start?')
48
+ choice.setParent(args.gui.pWindow)
49
+ # locate output files
50
+ pdir = args.postdir if args.postdir else globs.rundir
51
+ cmd = "find '"+pdir+"' -name *out"
52
+ t = mybash(cmd)
53
+ resf = t.splitlines()
54
+ logfile = pdir+"/post.log"
55
+ if not os.path.isdir(pdir):
56
+ print(('\nSpecified directory '+pdir+' does not exist..\n\n'))
57
+ if args.gui:
58
+ args.gui.iWtxt.setText(
59
+ '\nSpecified directory '+pdir+' does not exist.\n\n'+args.gui.iWtxt.toPlainText())
60
+ return
61
+ with open(logfile, 'a') as flog:
62
+ flog.write('\n\n\n##### Date: ' +
63
+ time.strftime('%m/%d/%Y %H:%M')+'#####\n\n')
64
+ # run summary report
65
+ if args.pres:
66
+ print('\nGetting runs summary..\n\n')
67
+ flog.write('\nGetting runs summary..\n\n')
68
+ if args.gui:
69
+ args.gui.iWtxt.setText(
70
+ '\nGetting runs summary..\n\n'+args.gui.iWtxt.toPlainText())
71
+ terapost(resf, pdir, args.gui, flog)
72
+ gampost(resf, pdir, args.gui, flog)
73
+ # run nbo analysis
74
+ if args.pnbo:
75
+ print('\nGetting NBO summary..\n\n')
76
+ flog.write('\nGetting NBO summary..\n\n')
77
+ if args.gui:
78
+ args.gui.iWtxt.setText(
79
+ '\nGetting NBO summary..\n\n'+args.gui.iWtxt.toPlainText())
80
+ nbopost(resf, pdir, args.gui, flog)
81
+ # locate molden files
82
+ cmd = "find "+"'"+pdir+"'"+" -name *molden"
83
+ t = mybash(cmd)
84
+ molf = t.splitlines()
85
+ # parse molecular orbitals
86
+ if args.porbinfo:
87
+ print('\nGetting MO information..\n\n')
88
+ flog.write('\nGetting MO information..\n\n')
89
+ if args.gui:
90
+ args.gui.iWtxt.setText(
91
+ '\nGetting MO information..\n\n'+args.gui.iWtxt.toPlainText())
92
+ if not os.path.isdir(pdir+'/MO_files'):
93
+ os.mkdir(pdir+'/MO_files')
94
+ moldpost(molf, pdir, args.gui, flog)
95
+ # calculate delocalization indices
96
+ if args.pdeloc:
97
+ print('\nCalculating delocalization indices..\n\n')
98
+ flog.write('\nCalculating delocalization indices..\n\n')
99
+ if args.gui:
100
+ args.gui.iWtxt.setText(
101
+ '\nCalculating delocalization indices..\n\n'+args.gui.iWtxt.toPlainText())
102
+ if not os.path.isdir(pdir+'/Deloc_files'):
103
+ os.mkdir(pdir+'/Deloc_files')
104
+ deloc(molf, pdir, args.gui, flog)
105
+ # calculate charges
106
+ if args.pcharge:
107
+ print('\nCalculating charges..\n\n')
108
+ flog.write('\nCalculating charges..\n\n')
109
+ if args.gui:
110
+ args.gui.iWtxt.setText(
111
+ '\nCalculating charges..\n\n'+args.gui.iWtxt.toPlainText())
112
+ if not os.path.isdir(pdir+'/Charge_files'):
113
+ os.mkdir(pdir+'/Charge_files')
114
+ getcharges(molf, pdir, args.gui, flog)
115
+ # parse wavefunction
116
+ if args.pwfninfo:
117
+ print('\nCalculating wavefunction properties..\n\n')
118
+ flog.write('\nCalculating wavefunction properties..\n\n')
119
+ if args.gui:
120
+ args.gui.iWtxt.setText(
121
+ '\nCalculating wavefunction properties..\n\n'+args.gui.iWtxt.toPlainText())
122
+ if not os.path.isdir(pdir+'/Wfn_files'):
123
+ os.mkdir(pdir+'/Wfn_files')
124
+ if not os.path.isdir(pdir+'/Cube_files'):
125
+ os.mkdir(pdir+'/Cube_files')
126
+ getcubes(molf, pdir, args.gui, flog)
127
+ getwfnprops(molf, pdir, args.gui, flog)
128
+ if not args.pgencubes and os.path.isdir(pdir+'/Cube_files'):
129
+ shutil.rmtree(pdir+'/Cube_files')
130
+ # generate cube files
131
+ if args.pgencubes:
132
+ print('\nGenerating cube files..\n\n')
133
+ flog.write('\nGenerating cube files..\n\n')
134
+ if args.gui:
135
+ args.gui.iWtxt.setText(
136
+ '\nGenerating cube files..\n\n'+args.gui.iWtxt.toPlainText())
137
+ if not os.path.isdir(pdir+'/Cube_files'):
138
+ os.mkdir(pdir+'/Cube_files')
139
+ getcubes(molf, pdir, args.gui, flog)