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,295 @@
1
+ # @file tsgen.py
2
+ # Generates transition state guess structures based on a user-specified complex (core), substrate and automatically identified reaction class.
3
+ #
4
+ # Written by Terry Gani for HJK Group
5
+ #
6
+ # Dpt of Chemical Engineering, MIT
7
+
8
+ from numpy import log
9
+
10
+ from molSimplify.Classes.mol3D import (mol3D)
11
+ from molSimplify.Classes.atom3D import atom3D
12
+ from molSimplify.Classes.rundiag import (run_diag)
13
+ from molSimplify.Scripts.geometry import (alignPtoaxis,
14
+ distance,
15
+ rotate_around_axis,
16
+ rotation_params,
17
+ vecangle,
18
+ vecdiff)
19
+ from molSimplify.Scripts.io import getinputargs
20
+ from molSimplify.Scripts.structgen import (PointTranslateSph,
21
+ align_lig_centersym,
22
+ check_rotate_linear_lig,
23
+ check_rotate_symm_lig,
24
+ ffopt,
25
+ getconnection,
26
+ rotate_MLaxis_minimize_steric)
27
+
28
+ # XY sum cov rad coefficient
29
+ XYcoeff = 1.1
30
+ # Mode 1 (oxidative addition) MXY angle
31
+ MXYang = 135
32
+ # Mode 1 (oxidative addition) MX sum cov rad coefficient
33
+ MXdistcoeff = 0.9
34
+ # Mode 3 (abstraction) ABX angle
35
+ ABXang = 140
36
+
37
+ # Gets all possible substrate connecting points (X in A-B...X-Y).
38
+ #
39
+ # Given a fixed ABX angle and AB distance, these lie on a circle.
40
+ #
41
+ # Due to limitations of geometry routines, we sample the sphere and keep points within ~1 deg of the circle.
42
+ # @param core mol3D of core
43
+ # @param catom Connecting atom to core
44
+ # @param Midx Core reference metal index
45
+ # @param BL Target B-X distance
46
+ # @param ABXang Target A-B-X angle
47
+ # @return List of discretized possible connecting points
48
+
49
+
50
+ def getconnections(core, catom, Midx, BL, ABXang):
51
+ Ocoords = core.getAtom(catom).coords()
52
+ Mcoords = core.getAtom(Midx).coords()
53
+ backbcoords = alignPtoaxis(Ocoords, Ocoords, vecdiff(Ocoords, Mcoords), BL)
54
+ am = atom3D('C', backbcoords)
55
+ connPts = []
56
+ for iphi in range(1, 359, 10):
57
+ for itheta in range(1, 179, 1):
58
+ P = PointTranslateSph(Ocoords, backbcoords, [BL, iphi, itheta])
59
+ am.setcoords(P)
60
+ ang = 180-vecangle(vecdiff(Ocoords, Mcoords), vecdiff(P, Ocoords))
61
+ if abs(ang - ABXang) < 1:
62
+ connPts.append(P)
63
+ return connPts
64
+
65
+ # Cheap method for determining optimal connecting point by empirically maximizing distances.
66
+ # @param core mol3D of core
67
+ # @param connPts List of possible connecting points
68
+ # @param catom Connecting atom to core
69
+ # @return Optimal substrate connecting point
70
+
71
+
72
+ def substplacecheap(core, connPts, catom):
73
+ corerem = mol3D()
74
+ corerem.copymol3D(core)
75
+ corerem.deleteatom(catom) # complex less O atom
76
+ mdist = -1
77
+ cpoint = [0, 0, 0]
78
+ for P in connPts:
79
+ if corerem.mindisttopoint(P) < 1: # auto-reject if too close
80
+ d0 = -2
81
+ else:
82
+ d0 = distance(core.centermass(), P)+0.5 * \
83
+ log(corerem.mindisttopoint(P)-1)
84
+ if d0 > mdist:
85
+ mdist = d0
86
+ cpoint = P
87
+ return cpoint
88
+
89
+ # Aligns substrate to connecting point while minimizing sterics (abstraction version)
90
+ # @param core mol3D of core
91
+ # @param substr mol3D of substrate
92
+ # @param substreact Index of substrate reacting atom
93
+ # @param compreact Index of core reacting atom
94
+ # @param cpoint Coordinates of connecting point
95
+ # @param args Namespace of arguments
96
+ # @param connected List of connecting atoms for FF optimization
97
+ # @param frozenats Indices of atoms frozen in FF optimization
98
+ # @return Name of files generated, error messages, run diagnostic info
99
+
100
+
101
+ def substplaceff_mode3(core, substr, substreact, compreact, cpoint, args, connected, frozenats):
102
+ enc = 0
103
+ # align substrate according to connection atom and shadow atom
104
+ substr.alignmol(substr.getAtom(substreact), atom3D('H', cpoint))
105
+ # perform rotations
106
+ Bcoords = core.getAtomCoords(compreact)
107
+ if substr.natoms > 1:
108
+ # align ligand center of symmetry
109
+ substr = align_lig_centersym(Bcoords, substr, substreact, core, False)
110
+ if substr.natoms > 2:
111
+ # check for linear molecule and align
112
+ substr = check_rotate_linear_lig(Bcoords, substr, substreact)
113
+ # check for symmetric molecule
114
+ substr = check_rotate_symm_lig(Bcoords, substr, substreact, core)
115
+ # rotate around M-L axis to minimize steric repulsion
116
+ substr = rotate_MLaxis_minimize_steric(
117
+ Bcoords, substr, substreact, core)
118
+ # distort substrate molecule
119
+ adjsidx = substr.getBondedAtoms(substreact)[0]
120
+ XYBL = XYcoeff*(substr.getAtom(substreact).rad +
121
+ substr.getAtom(adjsidx).rad)
122
+ substr.BCM(adjsidx, substreact, XYBL)
123
+ # combine molecules
124
+ ts3D = mol3D()
125
+ ts3D.copymol3D(core)
126
+ ts3D = ts3D.combine(substr)
127
+ ts3D.charge += substr.charge
128
+ if 'a' in args.ffoption or args.substplaceff:
129
+ ts3D, enc = ffopt(args.ff, ts3D, connected, 1,
130
+ frozenats, False, [], 'Adaptive')
131
+ return ts3D, enc
132
+
133
+ # Aligns substrate to connecting point while minimizing sterics (oxidative addition version)
134
+ # @param core mol3D of core
135
+ # @param substr mol3D of substrate
136
+ # @param substreact Index of substrate reacting atom
137
+ # @param compreact Index of core reacting atom
138
+ # @param cpoint Coordinates of distal ligand atom connecting point
139
+ # @param ligalignpt Coordinates of proximal ligand atom connecting point
140
+ # @param args Namespace of arguments
141
+ # @param connected List of connecting atoms for FF optimization
142
+ # @param frozenats Indices of atoms frozen in FF optimization
143
+ # @return Name of files generated, error messages, run diagnostic info
144
+
145
+
146
+ def substplaceff_mode1(core, substr, substreact, compreact, cpoint, ligalignpt, args, connected, frozenats):
147
+ enc = 0
148
+ Mcoords = core.getAtomCoords(compreact)
149
+ adjsidx = substr.getBondedAtoms(substreact)[0]
150
+ theta, u = rotation_params(
151
+ substr.getAtomCoords(adjsidx), cpoint, ligalignpt)
152
+ substr = rotate_around_axis(substr, cpoint, u, 180-theta)
153
+ if substr.natoms > 2:
154
+ # same as aligning an equilibrium ligand
155
+ substr = check_rotate_linear_lig(Mcoords, substr, substreact)
156
+ substr = check_rotate_symm_lig(Mcoords, substr, substreact, core)
157
+ substr = rotate_MLaxis_minimize_steric(
158
+ Mcoords, substr, substreact, core)
159
+ ts3D = mol3D()
160
+ ts3D.copymol3D(core)
161
+ ts3D = ts3D.combine(substr)
162
+ if 'a' in args.ffoption or args.substplaceff:
163
+ print('FF optimizing remainder of substrate')
164
+ ts3D, enc = ffopt(args.ff, ts3D, connected, 1,
165
+ frozenats, False, [], 'Adaptive')
166
+ return ts3D, enc
167
+
168
+ # Main transition state generation routine
169
+ # @param mode TS generation mode (rungen.py)
170
+ # @param args Namespace of arguments
171
+ # @param rootdir Root directory
172
+ # @param core mol3D of core
173
+ # @param substr mol3D of substrate
174
+ # @param compreact Index of core reacting atom
175
+ # @param substreact Index of substrate reacting atom
176
+ # @param globs Global variables
177
+ # @return Name of files generated, error messages, run diagnostic info
178
+
179
+
180
+ def tsgen(mode, args, rootdir, core, substr, compreact, substreact, globs):
181
+ emsg = False
182
+ ts3D = mol3D()
183
+ this_diag = run_diag()
184
+ strfiles = []
185
+ adjsidx = substr.getBondedAtoms(substreact)[0]
186
+ adjcidx = core.getBondedAtoms(compreact)[0]
187
+ # initialize connecting and frozen atoms for FF opt
188
+ frozenats = []
189
+ for i in range(0, core.natoms):
190
+ frozenats.append(i)
191
+ # also freeze the abstracted atom and the heavy atom bonded to it
192
+ frozenats.append(core.natoms+substreact)
193
+ frozenats.append(core.natoms+adjsidx)
194
+ connected = [core.natoms+substreact]
195
+ # START FUNCTIONALIZING
196
+ sanity = False
197
+ if mode == 2:
198
+ emsg = 'Sorry, this mode is not supported yet. Exiting...'
199
+ return strfiles, emsg, this_diag
200
+ elif mode == 1: # oxidative addition of a single group
201
+ # get first connecting point
202
+ MXBL = MXdistcoeff*(core.getAtom(compreact).rad +
203
+ substr.getAtom(substreact).rad)
204
+ cpoint = getconnection(core, compreact, MXBL)
205
+ # distort substrate molecule
206
+ XYBL = XYcoeff*(substr.getAtom(substreact).rad +
207
+ substr.getAtom(adjsidx).rad)
208
+ substr.BCM(adjsidx, substreact, XYBL)
209
+ # align substrate molecule
210
+ substr.alignmol(substr.getAtom(substreact), atom3D('H', cpoint))
211
+ tmp3D = mol3D()
212
+ tmp3D.copymol3D(core)
213
+ tmp3D.addAtom(atom3D('Cl', cpoint))
214
+ ligalignpts = getconnections(
215
+ tmp3D, tmp3D.natoms-1, compreact, XYBL, MXYang)
216
+ if args.substplaceff:
217
+ # full FF substrate placement
218
+ print('Full FF-based substrate placement specified.')
219
+ en_min = 1e6
220
+ for n, P in enumerate(ligalignpts):
221
+ print(('Evaluating FF energy of point ' +
222
+ str(n+1)+' of '+str(len(ligalignpts))))
223
+ coretmp = mol3D()
224
+ coretmp.copymol3D(core)
225
+ substrtmp = mol3D()
226
+ substrtmp.copymol3D(substr)
227
+ ts3Dtmp, enc = substplaceff_mode1(
228
+ coretmp, substrtmp, substreact, compreact, cpoint, P, args, connected, frozenats)
229
+ if enc < en_min:
230
+ en_min = enc
231
+ ts3D = mol3D()
232
+ ts3D.copymol3D(ts3Dtmp)
233
+ else:
234
+ # cheap substrate placement
235
+ print('Cheap substrate placement')
236
+ ligalignpt = substplacecheap(core, ligalignpts, compreact)
237
+ ts3D, enc = substplaceff_mode1(
238
+ core, substr, substreact, compreact, cpoint, ligalignpt, args, connected, frozenats)
239
+ elif mode == 3: # abstraction
240
+ # distort A-B bond
241
+ ABBL = distance(core.getAtomCoords(compreact), core.getAtomCoords(
242
+ adjcidx)) + 0.05*(core.getAtom(compreact).rad + core.getAtom(adjcidx).rad)
243
+ core.BCM(compreact, adjcidx, ABBL)
244
+ # set B-X distance
245
+ BXBL = 1.1*(substr.getAtom(substreact).rad +
246
+ core.getAtom(compreact).rad)
247
+ # get possible connecting points
248
+ connPts = getconnections(core, compreact, adjcidx, BXBL, ABXang)
249
+ if args.substplaceff:
250
+ # full FF substrate placement
251
+ print('Full FF-based substrate placement specified.')
252
+ en_min = 1e6
253
+ for n, P in enumerate(connPts):
254
+ print(('Evaluating FF energy of point ' +
255
+ str(n+1)+' of '+str(len(connPts))))
256
+ coretmp = mol3D()
257
+ coretmp.copymol3D(core)
258
+ substrtmp = mol3D()
259
+ substrtmp.copymol3D(substr)
260
+ ts3Dtmp, enc = substplaceff_mode3(
261
+ coretmp, substrtmp, substreact, compreact, P, args, connected, frozenats)
262
+ if enc < en_min:
263
+ en_min = enc
264
+ ts3D = mol3D()
265
+ ts3D.copymol3D(ts3Dtmp)
266
+ else:
267
+ # cheap substrate placement
268
+ print('Cheap substrate placement')
269
+ cpoint = substplacecheap(core, connPts, compreact)
270
+ ts3D, enc = substplaceff_mode3(
271
+ core, substr, substreact, compreact, cpoint, args, connected, frozenats)
272
+ if 'a' in args.ffoption:
273
+ print('FF optimized remainder of substrate')
274
+ ts3D.charge += substr.charge
275
+ # END FUNCTIONALIZING
276
+ fname = name_TS(rootdir, args.core, substr, args, # noqa F821 function deprecated
277
+ bind=args.bind, bsmi=args.nambsmi)
278
+ ts3D.writexyz(fname)
279
+ strfiles.append(fname)
280
+ getinputargs(args, fname)
281
+ pfold = rootdir.split('/', 1)[-1]
282
+ # check for molecule sanity
283
+ sanity, d0 = ts3D.sanitycheck(True)
284
+ if args.debug:
285
+ print(('setting sanity diag, min dist at ' +
286
+ str(d0) + ' (higher is better)'))
287
+ this_diag.set_sanity(sanity, d0)
288
+ this_diag.set_mol(ts3D)
289
+ this_diag.write_report(fname+'.report')
290
+ del ts3D
291
+ if sanity:
292
+ print(('WARNING: Generated complex is not good! Minimum distance between atoms:' +
293
+ "{0:.2f}".format(d0)+'A\n'))
294
+ print(('\nIn folder '+pfold+' generated 1 structure(s)!'))
295
+ return strfiles, emsg, this_diag
@@ -0,0 +1,69 @@
1
+ from functools import partial
2
+ import numpy as np
3
+ from scipy.optimize import minimize
4
+ from scipy.stats import norm
5
+
6
+
7
+ def nlm(func, p0,
8
+ dists, epsilons,
9
+ varfun):
10
+ '''
11
+ non-linear optimization.
12
+ Usage: nlm(maximum_likelihood_loss, [1, 2], dists, epsilons, varfun=linear_variance_model)
13
+
14
+ :param func: objective function to be minimized
15
+ :param p0: initial guess of the parameters
16
+ :param dists: latent space distance (or other uq metric)
17
+ :param epsilons: errors for predictions
18
+ :param varfun: variance function for the final Gaussian distribution
19
+ :return: best parameters
20
+ '''
21
+ objective_func = partial(func,
22
+ dists=dists,
23
+ epsilons=epsilons,
24
+ varfun=varfun)
25
+ m = minimize(objective_func, p0,
26
+ method='Powell',
27
+ jac=False,
28
+ tol=1e-4,
29
+ options={'maxiter': 1000, 'disp': True})
30
+ return m.x
31
+
32
+
33
+ def linear_variance_model(dist, theta):
34
+ '''
35
+
36
+ :param dist: latent space distance (or other uq metric)
37
+ :param theta: parameters for the condition Gaussian distribution err(d) ~ N(0, theta_0^2 + d* theta_1^2)
38
+ :return: std for the conditional Gaussian distribution
39
+ '''
40
+ return theta[0] ** 2 + (theta[1] ** 2) * dist
41
+
42
+
43
+ def zero_linear_variance_model(dist, theta):
44
+ '''
45
+
46
+ :param dist: latent space distance (or other uq metric)
47
+ :param theta: parameters for the condition Gaussian distribution err(d) ~ N(0, d* theta_0^2)
48
+ :return: std for the conditional Gaussian distribution
49
+ '''
50
+ return (theta[0] ** 2) * dist
51
+
52
+
53
+ def maximum_likelihood_loss(theta, dists, epsilons, varfun=linear_variance_model):
54
+ '''
55
+
56
+ :param theta: parameters for the condition Gaussian distribution err(d) ~ N(0, theta_0^2 + d* theta_1^2)
57
+ :param dists: latent space distance (or other uq metric)
58
+ :param epsilons: errors for predictions
59
+ :param varfun: variance function for the final Gaussian distribution
60
+ :return: loss of the maximum likelihood.
61
+ '''
62
+ L = 0
63
+ for i in range(len(epsilons)):
64
+ epsilon = epsilons[i]
65
+ dist = dists[i]
66
+ this_var = varfun(dist, theta)
67
+ L += -np.log(norm.pdf(epsilon, 0, np.sqrt(this_var)))
68
+ # L += 0.5 * np.log(2 * np.pi * np.sqrt(this_var)) + 1. * (epsilon ** 2) / (2 * this_var)
69
+ return L
File without changes
@@ -0,0 +1,197 @@
1
+ # @file __main__.py
2
+ # Gateway script to rest of program
3
+ #
4
+ # Written by Tim Ioannidis for HJK Group
5
+ #
6
+ # Dpt of Chemical Engineering, MIT
7
+
8
+ # !/usr/bin/env python
9
+ '''
10
+ Copyright 2017 Kulik Lab @ MIT
11
+
12
+ This file is part of molSimplify.
13
+ molSimplify is free software: you can redistribute it and/or modify
14
+ it under the terms of the GNU General Public License as published
15
+ by the Free Software Foundation, either version 3 of the License,
16
+ or (at your option) any later version.
17
+
18
+ molSimplify is distributed in the hope that it will be useful,
19
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21
+ See the GNU General Public License for more details.
22
+
23
+ You should have received a copy of the GNU General Public License
24
+ along with molSimplify. If not, see http://www.gnu.org/licenses/.
25
+ '''
26
+ # fix OB bug: https://github.com/openbabel/openbabel/issues/1983
27
+ import sys
28
+ import argparse
29
+ if not ('win' in sys.platform):
30
+ flags = sys.getdlopenflags()
31
+ if not ('win' in sys.platform):
32
+ sys.setdlopenflags(flags)
33
+
34
+ from molSimplify.Scripts.inparse import (parseinputs_advanced, parseinputs_slabgen,
35
+ parseinputs_db, parseinputs_inputgen,
36
+ parseinputs_postproc, parseinputs_random,
37
+ parseinputs_binding, parseinputs_tsgen,
38
+ parseinputs_customcore, parseinputs_naming,
39
+ parseinputs_ligdict, parseinputs_basic,
40
+ parseCLI)
41
+ from molSimplify.Scripts.generator import startgen
42
+ from molSimplify.Classes.globalvars import globalvars
43
+ from molSimplify.utils.tensorflow import tensorflow_silence
44
+
45
+ globs = globalvars()
46
+ # Basic help description string
47
+ DescString_basic = (
48
+ 'Welcome to molSimplify. Only basic usage is described here.\n'
49
+ 'For help on advanced modules, please refer to our documentation at '
50
+ 'molsimplify.mit.edu or provide additional commands to -h, as below:\n'
51
+ '-h advanced: advanced structure generation help\n'
52
+ '-h slabgen: slab builder help\n'
53
+ # '-h chainb: chain builder help\n'
54
+ '-h autocorr: automated correlation analysis help\n'
55
+ '-h db: database search help\n'
56
+ '-h inputgen: quantum chemistry code input file generation help\n'
57
+ '-h postproc: post-processing help\n'
58
+ '-h random: random generation help\n'
59
+ '-h binding: binding species (second molecule) generation help\n'
60
+ '-h customcore: custom core functionalization help\n'
61
+ '-h tsgen: transition state generation help\n'
62
+ '-h naming: custom filename help\n'
63
+ '-h liganddict: ligands.dict help\n'
64
+ )
65
+ # Advanced help description string
66
+ DescString_advanced = 'Printing advanced structure generation help.'
67
+ # Slab builder help description string
68
+ DescString_slabgen = 'Printing slab builder help.'
69
+ # Chain builder help description string
70
+ DescString_chainb = 'Printing chain builder help.'
71
+ # Automated correlation analysis description string
72
+ DescString_autocorr = 'Printing automated correlation analysis help.'
73
+ # Database search help description string
74
+ DescString_db = 'Printing database search help.'
75
+ # Input file generation help description string
76
+ DescString_inputgen = 'Printing quantum chemistry code input file generation help.'
77
+ # Post-processing help description string
78
+ DescString_postproc = 'Printing post-processing help.'
79
+ # Random generation help description string
80
+ DescString_random = 'Printing random generation help.'
81
+ # Binding species placement help description string
82
+ DescString_binding = 'Printing binding species (second molecule) generation help.'
83
+ # Transition state generation help description string
84
+ DescString_tsgen = 'Printing transition state generation help.'
85
+ # Ligand replacement help description string
86
+ DescString_customcore = 'Printing ligand replacement help.'
87
+ # Custom file naming help description string
88
+ DescString_naming = 'Printing custom filename help.'
89
+ # Ligand dictionary help description string
90
+ DescString_ligdict = 'Printing ligand dictionary help.'
91
+
92
+
93
+ try:
94
+ from PyQt5.QtWidgets import QApplication
95
+ from molSimplify.Classes.mGUI import mGUI
96
+ qtflag = True
97
+ except ImportError:
98
+ qtflag = False
99
+
100
+
101
+ # Main function
102
+ # @param args Argument namespace
103
+ def main(args=None):
104
+ # issue a call to test TF, this is needed to keep
105
+ # ordering between openbabel and TF calls consistent
106
+ # on some sytems
107
+ if globs.testTF():
108
+ print('TensorFlow connection successful')
109
+ tensorflow_silence()
110
+ else:
111
+ print('TensorFlow connection failed')
112
+
113
+ if args is None:
114
+ args = sys.argv[1:]
115
+ # ## run GUI by default ###
116
+ gui = True
117
+ if len(args) == 0 and not qtflag:
118
+ print("\nGUI not supported since PyQt5 can not be loaded. Please use commandline version.\n")
119
+ exit()
120
+ ####################################
121
+ # ## print help ###
122
+ elif '-h' in args or '-H' in args or '--help' in args:
123
+ if 'advanced' in args:
124
+ parser = argparse.ArgumentParser(description=DescString_advanced)
125
+ parseinputs_advanced(parser)
126
+ if 'slabgen' in args:
127
+ parser = argparse.ArgumentParser(description=DescString_slabgen)
128
+ parseinputs_slabgen(parser)
129
+ # elif 'chainb' in args:
130
+ # parser = argparse.ArgumentParser(description=DescString_chainb)
131
+ # parseinputs_chainb(parser)
132
+ # elif 'autocorr' in args:
133
+ # parser = argparse.ArgumentParser(description=DescString_autocorr)
134
+ # parseinputs_autocorr(parser)
135
+ elif 'db' in args:
136
+ parser = argparse.ArgumentParser(description=DescString_db)
137
+ parseinputs_db(parser)
138
+ elif 'inputgen' in args:
139
+ parser = argparse.ArgumentParser(description=DescString_inputgen)
140
+ parseinputs_inputgen(parser)
141
+ elif 'postproc' in args:
142
+ parser = argparse.ArgumentParser(description=DescString_postproc)
143
+ parseinputs_postproc(parser)
144
+ elif 'random' in args:
145
+ parser = argparse.ArgumentParser(description=DescString_random)
146
+ parseinputs_random(parser)
147
+ elif 'binding' in args:
148
+ parser = argparse.ArgumentParser(description=DescString_binding)
149
+ parseinputs_binding(parser)
150
+ elif 'tsgen' in args:
151
+ parser = argparse.ArgumentParser(description=DescString_tsgen)
152
+ parseinputs_tsgen(parser)
153
+ elif 'customcore' in args:
154
+ parser = argparse.ArgumentParser(description=DescString_customcore)
155
+ parseinputs_customcore(parser)
156
+ elif 'naming' in args:
157
+ parser = argparse.ArgumentParser(description=DescString_naming)
158
+ parseinputs_naming(parser)
159
+ elif 'liganddict' in args:
160
+ # The formatter class allows for the display of new lines.
161
+ parser = argparse.ArgumentParser(description=DescString_ligdict,
162
+ formatter_class=argparse.RawTextHelpFormatter)
163
+ parseinputs_ligdict(parser)
164
+ else:
165
+ # print basic help
166
+ parser = argparse.ArgumentParser(description=DescString_basic,
167
+ formatter_class=argparse.RawDescriptionHelpFormatter)
168
+ parseinputs_basic(parser)
169
+ return
170
+ # ## run with gui ###
171
+ elif gui and len(args) == 0:
172
+ print('molSimplify is starting!')
173
+ # ## create main application
174
+ app = QApplication(sys.argv) # main application
175
+ _ = mGUI(app) # main GUI class
176
+ app.processEvents()
177
+ app.exec_()
178
+ # ## if input file is specified run without GUI ###
179
+ elif '-i' in args:
180
+ print('Input file detected, reading arguments from input file')
181
+ print('molSimplify is starting!')
182
+ gui = False
183
+ # run from commandline
184
+ startgen(sys.argv, False, gui)
185
+ # ## grab from commandline arguments ###
186
+ else:
187
+ print('No input file detected, reading arguments from commandline')
188
+ print('molSimplify is starting!')
189
+ gui = False
190
+ # create input file from commandline
191
+ infile = parseCLI([_f for _f in args if _f])
192
+ args = ['main.py', '-i', infile]
193
+ startgen(args, False, gui)
194
+
195
+
196
+ if __name__ == '__main__':
197
+ main()
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
File without changes
@@ -0,0 +1,36 @@
1
+ from sklearn.gaussian_process.kernels import Kernel
2
+
3
+
4
+ class Masking(Kernel):
5
+ def __init__(self, mask, kernel):
6
+ self.mask = mask
7
+ self.kernel = kernel
8
+
9
+ @property
10
+ def theta(self):
11
+ return self.kernel.theta
12
+
13
+ @theta.setter
14
+ def theta(self, theta):
15
+ self.kernel.theta = theta
16
+
17
+ @property
18
+ def bounds(self):
19
+ return self.kernel.bounds
20
+
21
+ def __call__(self, X, Y=None, eval_gradient=False):
22
+ if Y is None:
23
+ return self.kernel(X[:, self.mask], Y=None, eval_gradient=eval_gradient)
24
+ return self.kernel(
25
+ X[:, self.mask], Y=Y[:, self.mask], eval_gradient=eval_gradient
26
+ )
27
+
28
+ def diag(self, X):
29
+ return self.kernel.diag(X[:, self.mask])
30
+
31
+ def __repr__(self):
32
+ return "Masking({0})".format(self.kernel)
33
+
34
+ def is_stationary(self):
35
+ """Returns whether the kernel is stationary."""
36
+ return self.kernel.is_stationary()
@@ -0,0 +1,29 @@
1
+ import tensorflow as tf
2
+ from typing import List, Tuple
3
+
4
+
5
+ class PermutationLayer(tf.keras.layers.Layer):
6
+
7
+ def __init__(self, permutations: List[Tuple[int]]):
8
+ super().__init__()
9
+ self.permutations = permutations
10
+
11
+ def call(self, inputs):
12
+ # Shape (batch_size, n_tmc_features)
13
+ tmc_inputs = inputs["tmc"]
14
+ # Shape (batch_size, n_ligands, n_ligand_features)
15
+ ligand_inputs = inputs["ligand"]
16
+ outputs = []
17
+ for p in self.permutations:
18
+ outputs.append(
19
+ tf.concat(
20
+ [
21
+ tmc_inputs,
22
+ ]
23
+ + [
24
+ ligand_inputs[:, p_i, :] for p_i in p
25
+ ],
26
+ axis=-1,
27
+ )
28
+ )
29
+ return tf.stack(outputs, axis=1)
@@ -0,0 +1,14 @@
1
+ """
2
+ MolsControl
3
+ An automonous on-the-fly job control system for DFT geometry optimization aided by machine learning techniques.
4
+ """
5
+
6
+ # Add imports here
7
+ from molSimplify.molscontrol import *
8
+
9
+ # Handle versioneer
10
+ from ._version import get_versions
11
+ versions = get_versions()
12
+ __version__ = versions['version']
13
+ __git_revision__ = versions['full-revisionid']
14
+ del get_versions, versions