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.
- docs/source/conf.py +224 -0
- molSimplify/Classes/__init__.py +6 -0
- molSimplify/Classes/atom3D.py +235 -0
- molSimplify/Classes/dft_obs.py +130 -0
- molSimplify/Classes/globalvars.py +827 -0
- molSimplify/Classes/helpers.py +161 -0
- molSimplify/Classes/ligand.py +2330 -0
- molSimplify/Classes/mGUI.py +2493 -0
- molSimplify/Classes/mWidgets.py +438 -0
- molSimplify/Classes/miniGUI.py +41 -0
- molSimplify/Classes/mol2D.py +260 -0
- molSimplify/Classes/mol3D.py +5846 -0
- molSimplify/Classes/monomer3D.py +253 -0
- molSimplify/Classes/partialcharges.py +226 -0
- molSimplify/Classes/protein3D.py +1178 -0
- molSimplify/Classes/rundiag.py +151 -0
- molSimplify/Data/ML.dat +212 -0
- molSimplify/Data/MLS_FSR_for_inter.dat +23 -0
- molSimplify/Data/MLS_FSR_for_inter2.dat +23 -0
- molSimplify/Data/MLS_angle_for_click.dat +8 -0
- molSimplify/Data/MLS_angle_for_inter.dat +23 -0
- molSimplify/Data/MLS_angle_for_inter2.dat +48 -0
- molSimplify/Data/MLS_angle_for_intra.dat +10 -0
- molSimplify/Data/MLS_angle_for_intra2.dat +6 -0
- molSimplify/Data/MLS_angle_for_oa.dat +18 -0
- molSimplify/Data/ML_FSR_for_inter.dat +112 -0
- molSimplify/Data/ML_FSR_for_inter2.dat +110 -0
- molSimplify/Data/ML_bond_for_cat.dat +8 -0
- molSimplify/Data/ML_bond_for_click.dat +8 -0
- molSimplify/Data/ML_bond_for_inter.dat +48 -0
- molSimplify/Data/ML_bond_for_inter2.dat +48 -0
- molSimplify/Data/ML_bond_for_intra.dat +10 -0
- molSimplify/Data/ML_bond_for_intra2.dat +6 -0
- molSimplify/Data/ML_bond_for_oa.dat +18 -0
- molSimplify/Data/bp1.dat +21 -0
- molSimplify/Data/li.dat +3 -0
- molSimplify/Data/no.dat +2 -0
- molSimplify/Data/oct.dat +7 -0
- molSimplify/Data/pbp.dat +8 -0
- molSimplify/Data/spy.dat +6 -0
- molSimplify/Data/sqap.dat +9 -0
- molSimplify/Data/sqp.dat +5 -0
- molSimplify/Data/tbp.dat +6 -0
- molSimplify/Data/tdhd.dat +9 -0
- molSimplify/Data/thd.dat +5 -0
- molSimplify/Data/tpl.dat +4 -0
- molSimplify/Data/tpr.dat +7 -0
- molSimplify/Informatics/HFXsensitivity/__init__.py +0 -0
- molSimplify/Informatics/HFXsensitivity/measure_HFX_sensitivity_oxo_hat_reb_rel.py +443 -0
- molSimplify/Informatics/HFXsensitivity/measure_HFX_stable.py +346 -0
- molSimplify/Informatics/MOF/Linker_rotation.py +179 -0
- molSimplify/Informatics/MOF/MOF_descriptors.py +1299 -0
- molSimplify/Informatics/MOF/MOF_descriptors_alternate_functional.py +589 -0
- molSimplify/Informatics/MOF/MOF_functionalizer.py +1648 -0
- molSimplify/Informatics/MOF/PBC_functions.py +1347 -0
- molSimplify/Informatics/MOF/__init__.py +0 -0
- molSimplify/Informatics/MOF/atomic.py +267 -0
- molSimplify/Informatics/MOF/cluster_extraction.py +388 -0
- molSimplify/Informatics/MOF/fragment_MOFs_for_pormake.py +895 -0
- molSimplify/Informatics/MOF/monofunctionalized_BDC/index_information.py +10 -0
- molSimplify/Informatics/Mol2Parser.py +46 -0
- molSimplify/Informatics/RACassemble.py +408 -0
- molSimplify/Informatics/__init__.py +0 -0
- molSimplify/Informatics/active_learning/__init__.py +0 -0
- molSimplify/Informatics/active_learning/expected_improvement.py +269 -0
- molSimplify/Informatics/autocorrelation.py +1930 -0
- molSimplify/Informatics/clean_autocorrelation.py +778 -0
- molSimplify/Informatics/coulomb_analyze.py +67 -0
- molSimplify/Informatics/decoration_manager.py +193 -0
- molSimplify/Informatics/geo_analyze.py +88 -0
- molSimplify/Informatics/geometrics.py +56 -0
- molSimplify/Informatics/graph_analyze.py +163 -0
- molSimplify/Informatics/graph_racs.py +288 -0
- molSimplify/Informatics/jupyter_vis.py +172 -0
- molSimplify/Informatics/lacRACAssemble.py +2192 -0
- molSimplify/Informatics/lacRACAssemble_bisdithiolenes.py +236 -0
- molSimplify/Informatics/misc_descriptors.py +198 -0
- molSimplify/Informatics/organic_fingerprints.py +61 -0
- molSimplify/Informatics/partialcharges.py +345 -0
- molSimplify/Informatics/protein/activesite.py +53 -0
- molSimplify/Informatics/protein/pymol_add_hs.py +33 -0
- molSimplify/Informatics/rac155_geo.py +48 -0
- molSimplify/Ligands/(1_methylbenzimidazol_2_yl)pyridine.xyz +45 -0
- molSimplify/Ligands/1-4-dimethyl-1-2-3-triazole.xyz +15 -0
- molSimplify/Ligands/12crown4.mol +62 -0
- molSimplify/Ligands/Antipyrine.mol +58 -0
- molSimplify/Ligands/BPAbipy.mol +106 -0
- molSimplify/Ligands/Hpyrrole.mol +26 -0
- molSimplify/Ligands/N-quinolinylbutyramidate.xyz +31 -0
- molSimplify/Ligands/N-quinolinylmethylmethinylacetamidate.xyz +30 -0
- molSimplify/Ligands/NMe2_-1.xyz +11 -0
- molSimplify/Ligands/PCy3.mol +111 -0
- molSimplify/Ligands/PMe3.xyz +15 -0
- molSimplify/Ligands/PPh3.mol +76 -0
- molSimplify/Ligands/Propyphenazone.mol +77 -0
- molSimplify/Ligands/acac.mol +33 -0
- molSimplify/Ligands/acacen.mol +76 -0
- molSimplify/Ligands/acetate.smi +1 -0
- molSimplify/Ligands/acetate.xyz +9 -0
- molSimplify/Ligands/aceticacidbipyridine.mol +70 -0
- molSimplify/Ligands/acetonitrile.mol +17 -0
- molSimplify/Ligands/alanine.mol +30 -0
- molSimplify/Ligands/alphabetizer.py +21 -0
- molSimplify/Ligands/amine.mol +11 -0
- molSimplify/Ligands/ammonia.mol +12 -0
- molSimplify/Ligands/arginine.mol +58 -0
- molSimplify/Ligands/asparagine.mol +38 -0
- molSimplify/Ligands/aspartic_acid.mol +35 -0
- molSimplify/Ligands/azide.mol +11 -0
- molSimplify/Ligands/benzene.mol +28 -0
- molSimplify/Ligands/benzene_pi.mol +30 -0
- molSimplify/Ligands/benzenedithiol.mol +30 -0
- molSimplify/Ligands/benzenethiol.mol +30 -0
- molSimplify/Ligands/benzylisocy.mol +38 -0
- molSimplify/Ligands/bidiazine.mol +42 -0
- molSimplify/Ligands/bidiazole.mol +38 -0
- molSimplify/Ligands/bifuran.mol +38 -0
- molSimplify/Ligands/bihydrodiazine.mol +58 -0
- molSimplify/Ligands/bihydrodiazole.mol +46 -0
- molSimplify/Ligands/bihydrooxazine.mol +54 -0
- molSimplify/Ligands/bihydrooxazole.mol +42 -0
- molSimplify/Ligands/bihydrothiazine.mol +54 -0
- molSimplify/Ligands/bihydrothiazole.mol +42 -0
- molSimplify/Ligands/biimidazole.mol +38 -0
- molSimplify/Ligands/bioxazole.mol +34 -0
- molSimplify/Ligands/bipy.mol +46 -0
- molSimplify/Ligands/bipyrazine.xyz +20 -0
- molSimplify/Ligands/bipyrimidine.mol +42 -0
- molSimplify/Ligands/bipyrrole.mol +42 -0
- molSimplify/Ligands/bisnapthyridylpyridine.mol +111 -0
- molSimplify/Ligands/bithiazole.mol +34 -0
- molSimplify/Ligands/bromide.mol +7 -0
- molSimplify/Ligands/bromide.smi +1 -0
- molSimplify/Ligands/c2.mol +9 -0
- molSimplify/Ligands/caprolactone.mol +41 -0
- molSimplify/Ligands/carbonyl.mol +8 -0
- molSimplify/Ligands/carboxyl.mol +13 -0
- molSimplify/Ligands/cat.mol +30 -0
- molSimplify/Ligands/chloride.mol +7 -0
- molSimplify/Ligands/chloride.smi +1 -0
- molSimplify/Ligands/chloropyridine.mol +27 -0
- molSimplify/Ligands/co2.mol +10 -0
- molSimplify/Ligands/corrolazine.mol +72 -0
- molSimplify/Ligands/cs.mol +8 -0
- molSimplify/Ligands/cyanate.xyz +5 -0
- molSimplify/Ligands/cyanide.mol +9 -0
- molSimplify/Ligands/cyanoaceticporphyrin.mol +114 -0
- molSimplify/Ligands/cyanopyridine.mol +29 -0
- molSimplify/Ligands/cyclam.mol +81 -0
- molSimplify/Ligands/cyclen.mol +69 -0
- molSimplify/Ligands/cyclopentadienyl.mol +26 -0
- molSimplify/Ligands/cysteine.mol +32 -0
- molSimplify/Ligands/diaminomethyl.mol +19 -0
- molSimplify/Ligands/diazine.mol +25 -0
- molSimplify/Ligands/diazole.mol +23 -0
- molSimplify/Ligands/dicyanamide.mol +15 -0
- molSimplify/Ligands/dihydrofuran.mol +27 -0
- molSimplify/Ligands/dmap.xyz +35 -0
- molSimplify/Ligands/dmf.mol +28 -0
- molSimplify/Ligands/dmi.mol +41 -0
- molSimplify/Ligands/dmpe.mol +52 -0
- molSimplify/Ligands/dpmu.mol +47 -0
- molSimplify/Ligands/dppe.mol +112 -0
- molSimplify/Ligands/edta.mol +69 -0
- molSimplify/Ligands/en.mol +28 -0
- molSimplify/Ligands/ethanethiol.mol +21 -0
- molSimplify/Ligands/ethanolamine.mol +26 -0
- molSimplify/Ligands/ethbipy.mol +70 -0
- molSimplify/Ligands/ethyl.mol +19 -0
- molSimplify/Ligands/ethylamine.mol +24 -0
- molSimplify/Ligands/ethylene.mol +16 -0
- molSimplify/Ligands/ethylesteracac.mol +57 -0
- molSimplify/Ligands/fluoride.mol +7 -0
- molSimplify/Ligands/fluoride.smi +1 -0
- molSimplify/Ligands/formaldehyde.mol +12 -0
- molSimplify/Ligands/formamidate.xyz +8 -0
- molSimplify/Ligands/formate.xyz +6 -0
- molSimplify/Ligands/furan.mol +23 -0
- molSimplify/Ligands/glutamic_acid.mol +42 -0
- molSimplify/Ligands/glutamine.mol +44 -0
- molSimplify/Ligands/glycinate.mol +23 -0
- molSimplify/Ligands/glycine.mol +24 -0
- molSimplify/Ligands/h2s.mol +10 -0
- molSimplify/Ligands/helium.mol +6 -0
- molSimplify/Ligands/histidine.mol +45 -0
- molSimplify/Ligands/hmpa.mol +62 -0
- molSimplify/Ligands/hs-.mol +9 -0
- molSimplify/Ligands/hydride.mol +7 -0
- molSimplify/Ligands/hydrocarboxyacetylide.xyz +8 -0
- molSimplify/Ligands/hydrocyanide.mol +10 -0
- molSimplify/Ligands/hydrodiazine.mol +33 -0
- molSimplify/Ligands/hydrodiazole.mol +27 -0
- molSimplify/Ligands/hydrogensulfide.mol +10 -0
- molSimplify/Ligands/hydroisocyanide.mol +11 -0
- molSimplify/Ligands/hydrooxazine.mol +31 -0
- molSimplify/Ligands/hydrooxazole.mol +25 -0
- molSimplify/Ligands/hydrothiazine.mol +31 -0
- molSimplify/Ligands/hydrothiazole.mol +25 -0
- molSimplify/Ligands/hydroxyl.mol +9 -0
- molSimplify/Ligands/imidazole.mol +23 -0
- molSimplify/Ligands/imidazolidinone.mol +29 -0
- molSimplify/Ligands/imine.mol +13 -0
- molSimplify/Ligands/iminodiacetic.mol +33 -0
- molSimplify/Ligands/iodide.mol +7 -0
- molSimplify/Ligands/iodobenzene.xyz +14 -0
- molSimplify/Ligands/isoleucine.mol +48 -0
- molSimplify/Ligands/isothiocyanate.mol +11 -0
- molSimplify/Ligands/leucine.mol +48 -0
- molSimplify/Ligands/ligands.dict +257 -0
- molSimplify/Ligands/lysine.mol +54 -0
- molSimplify/Ligands/mebenzenedithiol.mol +36 -0
- molSimplify/Ligands/mebim_py.xyz +29 -0
- molSimplify/Ligands/mebim_pz.xyz +28 -0
- molSimplify/Ligands/mebipy.mol +58 -0
- molSimplify/Ligands/mecat.mol +36 -0
- molSimplify/Ligands/methanal.mol +11 -0
- molSimplify/Ligands/methanethiol.mol +15 -0
- molSimplify/Ligands/methanol.mol +16 -0
- molSimplify/Ligands/methionine.mol +44 -0
- molSimplify/Ligands/methyl.mol +13 -0
- molSimplify/Ligands/methylacetylide.xyz +8 -0
- molSimplify/Ligands/methylamine.mol +19 -0
- molSimplify/Ligands/methylazide.xyz +9 -0
- molSimplify/Ligands/methylisocy.mol +17 -0
- molSimplify/Ligands/methylpyridine.mol +33 -0
- molSimplify/Ligands/n2.mol +8 -0
- molSimplify/Ligands/n4py.xyz +51 -0
- molSimplify/Ligands/nch.mol +10 -0
- molSimplify/Ligands/nco-.mol +11 -0
- molSimplify/Ligands/nethanolamine.mol +26 -0
- molSimplify/Ligands/nitrate.mol +14 -0
- molSimplify/Ligands/nitrite.mol +11 -0
- molSimplify/Ligands/nitro.mol +11 -0
- molSimplify/Ligands/nitrobipy.mol +54 -0
- molSimplify/Ligands/nitroso.mol +8 -0
- molSimplify/Ligands/nme3.mol +30 -0
- molSimplify/Ligands/no-.mol +10 -0
- molSimplify/Ligands/no2-.mol +11 -0
- molSimplify/Ligands/noxygen.mol +8 -0
- molSimplify/Ligands/ns-.mol +10 -0
- molSimplify/Ligands/o-pyridylbenzene.xyz +23 -0
- molSimplify/Ligands/o-pyridylphenylanion.xyz +22 -0
- molSimplify/Ligands/o2-.mol +9 -0
- molSimplify/Ligands/o2.xyz +4 -0
- molSimplify/Ligands/och2.mol +12 -0
- molSimplify/Ligands/oethanolamine.mol +26 -0
- molSimplify/Ligands/ome2.mol +22 -0
- molSimplify/Ligands/ooh.xyz +5 -0
- molSimplify/Ligands/oxalate.mol +17 -0
- molSimplify/Ligands/oxalate.smi +1 -0
- molSimplify/Ligands/oxygen.mol +7 -0
- molSimplify/Ligands/pentacyanocyclopentadienide.mol +36 -0
- molSimplify/Ligands/ph2-.mol +11 -0
- molSimplify/Ligands/ph3.mol +12 -0
- molSimplify/Ligands/phen.mol +51 -0
- molSimplify/Ligands/phenacac.mol +63 -0
- molSimplify/Ligands/phenalalanine.mol +51 -0
- molSimplify/Ligands/phendione.mol +51 -0
- molSimplify/Ligands/phenphen.mol +75 -0
- molSimplify/Ligands/phenylbenzoxazole.mol +54 -0
- molSimplify/Ligands/phenylcyc.mol +99 -0
- molSimplify/Ligands/phenylenediamine.mol +37 -0
- molSimplify/Ligands/phenylisocy.mol +32 -0
- molSimplify/Ligands/phosacidbipy.mol +66 -0
- molSimplify/Ligands/phosphine.mol +13 -0
- molSimplify/Ligands/phosphorine.mol +27 -0
- molSimplify/Ligands/phosphorustrifluoride.mol +12 -0
- molSimplify/Ligands/phthalocyanine.mol +126 -0
- molSimplify/Ligands/pme3o.mol +32 -0
- molSimplify/Ligands/porphyrin.mol +82 -0
- molSimplify/Ligands/pph3o.mol +77 -0
- molSimplify/Ligands/proline.mol +39 -0
- molSimplify/Ligands/propdiol.mol +21 -0
- molSimplify/Ligands/propylene.mol +23 -0
- molSimplify/Ligands/pyridine.mol +27 -0
- molSimplify/Ligands/pyrimidone.mol +27 -0
- molSimplify/Ligands/pyrrole.mol +24 -0
- molSimplify/Ligands/quinoxalinedithiol.mol +39 -0
- molSimplify/Ligands/s2-.mol +9 -0
- molSimplify/Ligands/salen.mol +75 -0
- molSimplify/Ligands/salphen.mol +84 -0
- molSimplify/Ligands/serine.mol +32 -0
- molSimplify/Ligands/simple_ligands.dict +14 -0
- molSimplify/Ligands/sulfacidbipy.mol +63 -0
- molSimplify/Ligands/tbucat.mol +54 -0
- molSimplify/Ligands/tbuphisocy.mol +56 -0
- molSimplify/Ligands/tbutylcyclen.mol +166 -0
- molSimplify/Ligands/tbutylisocy.mol +35 -0
- molSimplify/Ligands/tbutylthiol.mol +33 -0
- molSimplify/Ligands/tcnoet.mol +43 -0
- molSimplify/Ligands/tcnoetOH.mol +45 -0
- molSimplify/Ligands/terpy.mol +65 -0
- molSimplify/Ligands/tetrahydrofuran.mol +31 -0
- molSimplify/Ligands/thiane.mol +37 -0
- molSimplify/Ligands/thiazole.mol +21 -0
- molSimplify/Ligands/thiocyanate.mol +11 -0
- molSimplify/Ligands/thiol.mol +9 -0
- molSimplify/Ligands/thiophene.mol +23 -0
- molSimplify/Ligands/thiopyridine.mol +29 -0
- molSimplify/Ligands/threonine.mol +38 -0
- molSimplify/Ligands/tpp.mol +165 -0
- molSimplify/Ligands/tricyanomethyl.mol +19 -0
- molSimplify/Ligands/trifluoromethyl.mol +13 -0
- molSimplify/Ligands/tryptophan.mol +60 -0
- molSimplify/Ligands/tyrosine.mol +53 -0
- molSimplify/Ligands/uthiol.mol +11 -0
- molSimplify/Ligands/uthiolme2.mol +23 -0
- molSimplify/Ligands/valine.mol +42 -0
- molSimplify/Ligands/water.mol +10 -0
- molSimplify/Ligands/x.mol +6 -0
- molSimplify/Scripts/__init__.py +0 -0
- molSimplify/Scripts/addtodb.py +308 -0
- molSimplify/Scripts/cellbuilder.py +1592 -0
- molSimplify/Scripts/cellbuilder_tools.py +701 -0
- molSimplify/Scripts/chains.py +342 -0
- molSimplify/Scripts/convert_2to3.py +23 -0
- molSimplify/Scripts/dbinteract.py +631 -0
- molSimplify/Scripts/distgeom.py +617 -0
- molSimplify/Scripts/findcorrelations.py +287 -0
- molSimplify/Scripts/generator.py +267 -0
- molSimplify/Scripts/geometry.py +1224 -0
- molSimplify/Scripts/grabguivars.py +845 -0
- molSimplify/Scripts/in_b3lyp_usetc.py +141 -0
- molSimplify/Scripts/inparse.py +1673 -0
- molSimplify/Scripts/io.py +1149 -0
- molSimplify/Scripts/isomers.py +415 -0
- molSimplify/Scripts/jobgen.py +247 -0
- molSimplify/Scripts/krr_prep.py +1262 -0
- molSimplify/Scripts/molSimplify_io.py +18 -0
- molSimplify/Scripts/molden2psi4wfn.py +166 -0
- molSimplify/Scripts/namegen.py +32 -0
- molSimplify/Scripts/nn_prep.py +561 -0
- molSimplify/Scripts/oct_check_mols.py +782 -0
- molSimplify/Scripts/periodic_QE.py +97 -0
- molSimplify/Scripts/postmold.py +304 -0
- molSimplify/Scripts/postmwfn.py +709 -0
- molSimplify/Scripts/postparse.py +488 -0
- molSimplify/Scripts/postproc.py +139 -0
- molSimplify/Scripts/qcgen.py +1450 -0
- molSimplify/Scripts/rmsd.py +489 -0
- molSimplify/Scripts/rungen.py +670 -0
- molSimplify/Scripts/structgen.py +3040 -0
- molSimplify/Scripts/tf_nn_prep.py +894 -0
- molSimplify/Scripts/tsgen.py +295 -0
- molSimplify/Scripts/uq_calibration.py +69 -0
- molSimplify/__init__.py +0 -0
- molSimplify/__main__.py +197 -0
- molSimplify/icons/chemdb.png +0 -0
- molSimplify/icons/hjklogo.png +0 -0
- molSimplify/icons/icon.png +0 -0
- molSimplify/icons/logo.png +0 -0
- molSimplify/icons/logo_old.png +0 -0
- molSimplify/icons/petachem.png +0 -0
- molSimplify/icons/petachem2.png +0 -0
- molSimplify/icons/petachem_full.png +0 -0
- molSimplify/icons/pythonlogo.png +0 -0
- molSimplify/icons/sge copy.png +0 -0
- molSimplify/icons/sge.png +0 -0
- molSimplify/icons/slurm.png +0 -0
- molSimplify/icons/wft1.png +0 -0
- molSimplify/icons/wft2.png +0 -0
- molSimplify/icons/wft3.png +0 -0
- molSimplify/ml/__init__.py +0 -0
- molSimplify/ml/kernels.py +36 -0
- molSimplify/ml/layers.py +29 -0
- molSimplify/molscontrol/__init__.py +14 -0
- molSimplify/molscontrol/_version.py +521 -0
- molSimplify/molscontrol/clf_tools.py +144 -0
- molSimplify/molscontrol/data/README.md +21 -0
- molSimplify/molscontrol/data/look_and_say.dat +15 -0
- molSimplify/molscontrol/dynamic_classifier.py +514 -0
- molSimplify/molscontrol/io_tools.py +363 -0
- molSimplify/molscontrol/molscontrol.py +49 -0
- molSimplify/molscontrol/terachem/jobscript_control.sh +31 -0
- molSimplify/molscontrol/terachem/terachem_input +22 -0
- molSimplify/python_krr/X_train_TS.csv +535 -0
- molSimplify/python_krr/__init__.py +0 -0
- molSimplify/python_krr/hat2_X_mean_std.csv +3 -0
- molSimplify/python_krr/hat2_feature_names.csv +1 -0
- molSimplify/python_krr/hat2_y_mean_std.csv +2 -0
- molSimplify/python_krr/hat_X_mean_std.csv +6 -0
- molSimplify/python_krr/hat_feature_names.csv +1 -0
- molSimplify/python_krr/hat_krr_X_train.csv +5205 -0
- molSimplify/python_krr/hat_krr_dual_coef.csv +1 -0
- molSimplify/python_krr/hat_y_mean_std.csv +2 -0
- molSimplify/python_krr/sklearn_models.py +34 -0
- molSimplify/python_krr/y_train_TS.csv +535 -0
- molSimplify/python_nn/ANN.py +198 -0
- molSimplify/python_nn/__init__.py +0 -0
- molSimplify/python_nn/clf_analysis_tool.py +125 -0
- molSimplify/python_nn/dictionary_toolbox.py +49 -0
- molSimplify/python_nn/ensemble_test.py +309 -0
- molSimplify/python_nn/hs_center.csv +26 -0
- molSimplify/python_nn/hs_scale.csv +26 -0
- molSimplify/python_nn/ls_center.csv +26 -0
- molSimplify/python_nn/ls_scale.csv +26 -0
- molSimplify/python_nn/ms_hs_b1.csv +50 -0
- molSimplify/python_nn/ms_hs_b2.csv +50 -0
- molSimplify/python_nn/ms_hs_b3.csv +1 -0
- molSimplify/python_nn/ms_hs_w1.csv +50 -0
- molSimplify/python_nn/ms_hs_w2.csv +50 -0
- molSimplify/python_nn/ms_hs_w3.csv +1 -0
- molSimplify/python_nn/ms_ls_b1.csv +50 -0
- molSimplify/python_nn/ms_ls_b2.csv +50 -0
- molSimplify/python_nn/ms_ls_b3.csv +1 -0
- molSimplify/python_nn/ms_ls_w1.csv +50 -0
- molSimplify/python_nn/ms_ls_w2.csv +50 -0
- molSimplify/python_nn/ms_ls_w3.csv +1 -0
- molSimplify/python_nn/ms_slope_b1.csv +50 -0
- molSimplify/python_nn/ms_slope_b2.csv +50 -0
- molSimplify/python_nn/ms_slope_b3.csv +1 -0
- molSimplify/python_nn/ms_slope_w1.csv +50 -0
- molSimplify/python_nn/ms_slope_w2.csv +50 -0
- molSimplify/python_nn/ms_slope_w3.csv +1 -0
- molSimplify/python_nn/ms_split_b1.csv +50 -0
- molSimplify/python_nn/ms_split_b2.csv +50 -0
- molSimplify/python_nn/ms_split_b3.csv +1 -0
- molSimplify/python_nn/ms_split_w1.csv +50 -0
- molSimplify/python_nn/ms_split_w2.csv +50 -0
- molSimplify/python_nn/ms_split_w3.csv +1 -0
- molSimplify/python_nn/slope_center.csv +25 -0
- molSimplify/python_nn/slope_scale.csv +25 -0
- molSimplify/python_nn/split_center.csv +26 -0
- molSimplify/python_nn/split_scale.csv +26 -0
- molSimplify/python_nn/tf_ANN.py +762 -0
- molSimplify/python_nn/train_data.csv +1211 -0
- molSimplify/tf_nn/__init__.py +0 -0
- molSimplify/tf_nn/geo_static_clf/geo_static_clf_model.h5 +0 -0
- molSimplify/tf_nn/geo_static_clf/geo_static_clf_train_name.csv +1591 -0
- molSimplify/tf_nn/geo_static_clf/geo_static_clf_train_x.csv +2790 -0
- molSimplify/tf_nn/geo_static_clf/geo_static_clf_train_y.csv +2790 -0
- molSimplify/tf_nn/geo_static_clf/geo_static_clf_vars.csv +154 -0
- molSimplify/tf_nn/geos/hs_ii_bl_x.csv +1577 -0
- molSimplify/tf_nn/geos/hs_ii_bl_y.csv +1577 -0
- molSimplify/tf_nn/geos/hs_ii_model.h5 +0 -0
- molSimplify/tf_nn/geos/hs_ii_model.json +1 -0
- molSimplify/tf_nn/geos/hs_ii_vars.csv +154 -0
- molSimplify/tf_nn/geos/hs_iii_bl_x.csv +1659 -0
- molSimplify/tf_nn/geos/hs_iii_bl_y.csv +1659 -0
- molSimplify/tf_nn/geos/hs_iii_model.h5 +0 -0
- molSimplify/tf_nn/geos/hs_iii_model.json +1 -0
- molSimplify/tf_nn/geos/hs_iii_vars.csv +154 -0
- molSimplify/tf_nn/geos/ls_ii_bl_x.csv +1374 -0
- molSimplify/tf_nn/geos/ls_ii_bl_y.csv +1374 -0
- molSimplify/tf_nn/geos/ls_ii_model.h5 +0 -0
- molSimplify/tf_nn/geos/ls_ii_model.json +1 -0
- molSimplify/tf_nn/geos/ls_ii_vars.csv +154 -0
- molSimplify/tf_nn/geos/ls_iii_bl_x.csv +1364 -0
- molSimplify/tf_nn/geos/ls_iii_bl_y.csv +1364 -0
- molSimplify/tf_nn/geos/ls_iii_model.h5 +0 -0
- molSimplify/tf_nn/geos/ls_iii_model.json +1 -0
- molSimplify/tf_nn/geos/ls_iii_vars.csv +154 -0
- molSimplify/tf_nn/homolumo/gap_model.h5 +0 -0
- molSimplify/tf_nn/homolumo/gap_model.json +1 -0
- molSimplify/tf_nn/homolumo/gap_test_names.csv +175 -0
- molSimplify/tf_nn/homolumo/gap_test_x.csv +176 -0
- molSimplify/tf_nn/homolumo/gap_test_y.csv +176 -0
- molSimplify/tf_nn/homolumo/gap_train_names.csv +699 -0
- molSimplify/tf_nn/homolumo/gap_train_x.csv +700 -0
- molSimplify/tf_nn/homolumo/gap_train_y.csv +700 -0
- molSimplify/tf_nn/homolumo/gap_vars.csv +153 -0
- molSimplify/tf_nn/homolumo/homo_model.h5 +0 -0
- molSimplify/tf_nn/homolumo/homo_model.json +126 -0
- molSimplify/tf_nn/homolumo/homo_test_names.csv +175 -0
- molSimplify/tf_nn/homolumo/homo_test_x.csv +176 -0
- molSimplify/tf_nn/homolumo/homo_test_y.csv +176 -0
- molSimplify/tf_nn/homolumo/homo_train_names.csv +699 -0
- molSimplify/tf_nn/homolumo/homo_train_x.csv +700 -0
- molSimplify/tf_nn/homolumo/homo_train_y.csv +700 -0
- molSimplify/tf_nn/homolumo/homo_vars.csv +153 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_info.json +7 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_model.h5 +0 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_model.json +1 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_test_names.csv +143 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_test_x.csv +144 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_test_y.csv +144 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_train_names.csv +513 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_train_x.csv +514 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_train_y.csv +514 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_val_names.csv +143 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_val_x.csv +58 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_val_y.csv +58 -0
- molSimplify/tf_nn/oxoandhomo/homo_empty_vars.csv +155 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_info.json +7 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_model.h5 +0 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_model.json +1 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_test_names.csv +143 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_test_x.csv +144 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_test_y.csv +144 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_train_names.csv +513 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_train_x.csv +514 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_train_y.csv +514 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_val_names.csv +143 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_val_x.csv +58 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_val_y.csv +58 -0
- molSimplify/tf_nn/oxoandhomo/oxo20_vars.csv +154 -0
- molSimplify/tf_nn/oxocatalysis/hat_model.h5 +0 -0
- molSimplify/tf_nn/oxocatalysis/hat_model.json +1 -0
- molSimplify/tf_nn/oxocatalysis/hat_test_names.csv +419 -0
- molSimplify/tf_nn/oxocatalysis/hat_test_x.csv +420 -0
- molSimplify/tf_nn/oxocatalysis/hat_test_y.csv +420 -0
- molSimplify/tf_nn/oxocatalysis/hat_train_names.csv +1507 -0
- molSimplify/tf_nn/oxocatalysis/hat_train_x.csv +1508 -0
- molSimplify/tf_nn/oxocatalysis/hat_train_y.csv +1508 -0
- molSimplify/tf_nn/oxocatalysis/hat_val_x.csv +169 -0
- molSimplify/tf_nn/oxocatalysis/hat_val_y.csv +169 -0
- molSimplify/tf_nn/oxocatalysis/hat_vars.csv +162 -0
- molSimplify/tf_nn/oxocatalysis/oxo_model.h5 +0 -0
- molSimplify/tf_nn/oxocatalysis/oxo_model.json +1 -0
- molSimplify/tf_nn/oxocatalysis/oxo_test_names.csv +527 -0
- molSimplify/tf_nn/oxocatalysis/oxo_test_x.csv +528 -0
- molSimplify/tf_nn/oxocatalysis/oxo_test_y.csv +528 -0
- molSimplify/tf_nn/oxocatalysis/oxo_train_names.csv +1897 -0
- molSimplify/tf_nn/oxocatalysis/oxo_train_x.csv +1898 -0
- molSimplify/tf_nn/oxocatalysis/oxo_train_y.csv +1898 -0
- molSimplify/tf_nn/oxocatalysis/oxo_val_x.csv +212 -0
- molSimplify/tf_nn/oxocatalysis/oxo_val_y.csv +212 -0
- molSimplify/tf_nn/oxocatalysis/oxo_vars.csv +162 -0
- molSimplify/tf_nn/rescaling_data/gap_mean_x.csv +153 -0
- molSimplify/tf_nn/rescaling_data/gap_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/gap_var_x.csv +153 -0
- molSimplify/tf_nn/rescaling_data/gap_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/geo_static_clf_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/geo_static_clf_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/geo_static_clf_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/geo_static_clf_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/hat_mean_x.csv +162 -0
- molSimplify/tf_nn/rescaling_data/hat_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/hat_var_x.csv +162 -0
- molSimplify/tf_nn/rescaling_data/hat_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/homo_empty_mean_x.csv +155 -0
- molSimplify/tf_nn/rescaling_data/homo_empty_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/homo_empty_var_x.csv +155 -0
- molSimplify/tf_nn/rescaling_data/homo_empty_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/homo_mean_x.csv +153 -0
- molSimplify/tf_nn/rescaling_data/homo_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/homo_var_x.csv +153 -0
- molSimplify/tf_nn/rescaling_data/homo_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/hs_ii_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/hs_ii_mean_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/hs_ii_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/hs_ii_var_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/hs_iii_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/hs_iii_mean_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/hs_iii_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/hs_iii_var_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/ls_ii_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/ls_ii_mean_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/ls_ii_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/ls_ii_var_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/ls_iii_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/ls_iii_mean_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/ls_iii_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/ls_iii_var_y.csv +3 -0
- molSimplify/tf_nn/rescaling_data/oxo20_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/oxo20_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/oxo20_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/oxo20_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/oxo_mean_x.csv +162 -0
- molSimplify/tf_nn/rescaling_data/oxo_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/oxo_var_x.csv +162 -0
- molSimplify/tf_nn/rescaling_data/oxo_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/sc_static_clf_mean_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/sc_static_clf_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/sc_static_clf_var_x.csv +154 -0
- molSimplify/tf_nn/rescaling_data/sc_static_clf_var_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/split_mean_x.csv +155 -0
- molSimplify/tf_nn/rescaling_data/split_mean_y.csv +1 -0
- molSimplify/tf_nn/rescaling_data/split_var_x.csv +155 -0
- molSimplify/tf_nn/rescaling_data/split_var_y.csv +1 -0
- molSimplify/tf_nn/sc_static_clf/sc_static_clf_model.h5 +0 -0
- molSimplify/tf_nn/sc_static_clf/sc_static_clf_train_name.csv +1591 -0
- molSimplify/tf_nn/sc_static_clf/sc_static_clf_train_x.csv +1592 -0
- molSimplify/tf_nn/sc_static_clf/sc_static_clf_train_y.csv +1592 -0
- molSimplify/tf_nn/sc_static_clf/sc_static_clf_vars.csv +154 -0
- molSimplify/tf_nn/split/split_model.h5 +0 -0
- molSimplify/tf_nn/split/split_model.json +1 -0
- molSimplify/tf_nn/split/split_vars.csv +155 -0
- molSimplify/tf_nn/split/split_x.csv +1902 -0
- molSimplify/tf_nn/split/split_y.csv +1902 -0
- molSimplify/tf_nn/split/train_names.csv +1901 -0
- molSimplify/utils/__init__.py +0 -0
- molSimplify/utils/decorators.py +16 -0
- molSimplify/utils/metaclasses.py +12 -0
- molSimplify/utils/tensorflow.py +23 -0
- molSimplify/utils/timer.py +16 -0
- molSimplify-1.7.4.dist-info/LICENSE +674 -0
- molSimplify-1.7.4.dist-info/METADATA +821 -0
- molSimplify-1.7.4.dist-info/RECORD +651 -0
- molSimplify-1.7.4.dist-info/WHEEL +5 -0
- molSimplify-1.7.4.dist-info/entry_points.txt +3 -0
- molSimplify-1.7.4.dist-info/top_level.txt +4 -0
- tests/generateTests.py +122 -0
- tests/helperFuncs.py +658 -0
- tests/informatics/test_MOF_descriptors.py +128 -0
- tests/informatics/test_active_learning.py +113 -0
- tests/informatics/test_coulomb_analyze.py +24 -0
- tests/informatics/test_graph_racs.py +193 -0
- tests/ml/test_kernels.py +20 -0
- tests/ml/test_layers.py +47 -0
- tests/runtest.py +10 -0
- tests/test_Mol2D.py +128 -0
- tests/test_basic_imports.py +62 -0
- tests/test_bidentate.py +25 -0
- tests/test_cli.py +20 -0
- tests/test_distgeom.py +106 -0
- tests/test_example_1.py +29 -0
- tests/test_example_3.py +31 -0
- tests/test_example_5.py +43 -0
- tests/test_example_7.py +28 -0
- tests/test_example_8.py +15 -0
- tests/test_example_tbp.py +15 -0
- tests/test_ff_xtb.py +111 -0
- tests/test_geocheck_oct.py +26 -0
- tests/test_geocheck_one_empty.py +15 -0
- tests/test_geometry.py +44 -0
- tests/test_inparse.py +76 -0
- tests/test_io.py +84 -0
- tests/test_jobgen.py +84 -0
- tests/test_joption_pythonic.py +27 -0
- tests/test_ligand_assign.py +58 -0
- tests/test_ligand_assign_consistent.py +60 -0
- tests/test_ligand_class.py +26 -0
- tests/test_ligand_from_mol_file.py +35 -0
- tests/test_ligands.py +86 -0
- tests/test_mol3D.py +337 -0
- tests/test_molcas_caspt2.py +15 -0
- tests/test_molcas_casscf.py +15 -0
- tests/test_old_ANNs.py +68 -0
- tests/test_orca_ccsdt.py +15 -0
- tests/test_orca_dft.py +15 -0
- tests/test_qcgen.py +50 -0
- tests/test_racs.py +124 -0
- tests/test_rmsd.py +68 -0
- tests/test_structgen_functions.py +198 -0
- tests/test_tetrahedral.py +29 -0
- tests/test_tutorial_10_part_one.py +16 -0
- tests/test_tutorial_10_part_two.py +15 -0
- tests/test_tutorial_2.py +11 -0
- tests/test_tutorial_3.py +15 -0
- tests/test_tutorial_4.py +57 -0
- tests/test_tutorial_6.py +10 -0
- tests/test_tutorial_8.py +29 -0
- tests/test_tutorial_9_part_one.py +15 -0
- tests/test_tutorial_9_part_two.py +15 -0
- tests/test_tutorial_qm9_part_one.py +6 -0
- tests/testresources/refs/racs/generate_references.py +85 -0
- workflows/NandyJACSAu2022/bridge_functionalizer.py +253 -0
- workflows/NandyJACSAu2022/frag_functionalizer.py +242 -0
- workflows/NandyJACSAu2022/fragment_classes.py +586 -0
- 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
|
molSimplify/__init__.py
ADDED
|
File without changes
|
molSimplify/__main__.py
ADDED
|
@@ -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()
|
molSimplify/ml/layers.py
ADDED
|
@@ -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
|