rdkit 2026.9.1__cp315-cp315-win_amd64.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.
- rdkit/Avalon/__init__.py +0 -0
- rdkit/Avalon/pyAvalonTools.pyd +0 -0
- rdkit/Chem/AllChem.py +478 -0
- rdkit/Chem/AtomPairs/Pairs.py +165 -0
- rdkit/Chem/AtomPairs/Sheridan.py +136 -0
- rdkit/Chem/AtomPairs/Torsions.py +175 -0
- rdkit/Chem/AtomPairs/Utils.py +317 -0
- rdkit/Chem/AtomPairs/__init__.py +0 -0
- rdkit/Chem/BRICS.py +1050 -0
- rdkit/Chem/BuildFragmentCatalog.py +660 -0
- rdkit/Chem/ChemUtils/AlignDepict.py +91 -0
- rdkit/Chem/ChemUtils/BulkTester.py +81 -0
- rdkit/Chem/ChemUtils/DescriptorUtilities.py +73 -0
- rdkit/Chem/ChemUtils/SDFToCSV.py +86 -0
- rdkit/Chem/ChemUtils/TemplateExpand.py +456 -0
- rdkit/Chem/ChemUtils/__init__.py +0 -0
- rdkit/Chem/ChemicalFeatures.py +22 -0
- rdkit/Chem/ChemicalForceFields.py +11 -0
- rdkit/Chem/Crippen.py +223 -0
- rdkit/Chem/DSViewer.py +371 -0
- rdkit/Chem/Descriptors.py +335 -0
- rdkit/Chem/Descriptors3D.py +252 -0
- rdkit/Chem/Draw/FreeSans.ttf +0 -0
- rdkit/Chem/Draw/IPythonConsole.py +558 -0
- rdkit/Chem/Draw/InteractiveRenderer.py +433 -0
- rdkit/Chem/Draw/MolDrawing.py +570 -0
- rdkit/Chem/Draw/SimilarityMaps.py +493 -0
- rdkit/Chem/Draw/__init__.py +1045 -0
- rdkit/Chem/Draw/rdMolDraw2D.pyd +0 -0
- rdkit/Chem/EState/AtomTypes.py +145 -0
- rdkit/Chem/EState/EState.py +113 -0
- rdkit/Chem/EState/EState_VSA.py +133 -0
- rdkit/Chem/EState/Fingerprinter.py +66 -0
- rdkit/Chem/EState/__init__.py +14 -0
- rdkit/Chem/EnumerateHeterocycles.py +362 -0
- rdkit/Chem/EnumerateStereoisomers.py +388 -0
- rdkit/Chem/FastSDMolSupplier.py +19 -0
- rdkit/Chem/FeatFinderCLI.py +105 -0
- rdkit/Chem/FeatMaps/FeatMapParser.py +177 -0
- rdkit/Chem/FeatMaps/FeatMapPoint.py +126 -0
- rdkit/Chem/FeatMaps/FeatMapUtils.py +238 -0
- rdkit/Chem/FeatMaps/FeatMaps.py +244 -0
- rdkit/Chem/FeatMaps/__init__.py +0 -0
- rdkit/Chem/Features/FeatDirUtilsRD.py +414 -0
- rdkit/Chem/Features/ShowFeats.py +369 -0
- rdkit/Chem/Features/__init__.py +0 -0
- rdkit/Chem/FilterCatalog.py +70 -0
- rdkit/Chem/Fingerprints/ClusterMols.py +194 -0
- rdkit/Chem/Fingerprints/DbFpSupplier.py +187 -0
- rdkit/Chem/Fingerprints/FingerprintMols.py +575 -0
- rdkit/Chem/Fingerprints/MolSimilarity.py +312 -0
- rdkit/Chem/Fingerprints/SimilarityScreener.py +176 -0
- rdkit/Chem/Fingerprints/__init__.py +6 -0
- rdkit/Chem/Fraggle/FraggleSim.py +400 -0
- rdkit/Chem/Fraggle/__init__.py +0 -0
- rdkit/Chem/FragmentCatalog.py +95 -0
- rdkit/Chem/FragmentMatcher.py +109 -0
- rdkit/Chem/Fragments.py +57 -0
- rdkit/Chem/FunctionalGroups.py +167 -0
- rdkit/Chem/GraphDescriptors.py +709 -0
- rdkit/Chem/Graphs.py +51 -0
- rdkit/Chem/Lipinski.py +99 -0
- rdkit/Chem/MACCSkeys.py +314 -0
- rdkit/Chem/MCS.py +399 -0
- rdkit/Chem/MolCatalog.py +3 -0
- rdkit/Chem/MolDb/FingerprintUtils.py +124 -0
- rdkit/Chem/MolDb/Loader.py +13 -0
- rdkit/Chem/MolDb/Loader_orig.py +206 -0
- rdkit/Chem/MolDb/Loader_sa.py +208 -0
- rdkit/Chem/MolDb/__init__.py +3 -0
- rdkit/Chem/MolKey/InchiInfo.py +169 -0
- rdkit/Chem/MolKey/MolKey.py +441 -0
- rdkit/Chem/MolKey/__init__.py +0 -0
- rdkit/Chem/MolStandardize/__init__.py +29 -0
- rdkit/Chem/MolStandardize/rdMolStandardize.pyd +0 -0
- rdkit/Chem/MolSurf.py +500 -0
- rdkit/Chem/PandasPatcher.py +287 -0
- rdkit/Chem/PandasTools.py +761 -0
- rdkit/Chem/Pharm2D/Generate.py +162 -0
- rdkit/Chem/Pharm2D/Gobbi_Pharm2D.py +62 -0
- rdkit/Chem/Pharm2D/LazyGenerator.py +157 -0
- rdkit/Chem/Pharm2D/Matcher.py +148 -0
- rdkit/Chem/Pharm2D/SigFactory.py +343 -0
- rdkit/Chem/Pharm2D/Utils.py +484 -0
- rdkit/Chem/Pharm2D/__init__.py +25 -0
- rdkit/Chem/Pharm3D/EmbedLib.py +1302 -0
- rdkit/Chem/Pharm3D/ExcludedVolume.py +35 -0
- rdkit/Chem/Pharm3D/Pharmacophore.py +215 -0
- rdkit/Chem/Pharm3D/__init__.py +0 -0
- rdkit/Chem/PropertyMol.py +163 -0
- rdkit/Chem/PyMol.py +268 -0
- rdkit/Chem/QED.py +249 -0
- rdkit/Chem/Randomize.py +33 -0
- rdkit/Chem/Recap.py +609 -0
- rdkit/Chem/ReducedGraphs.py +23 -0
- rdkit/Chem/RegistrationHash.py +393 -0
- rdkit/Chem/SATIS.py +88 -0
- rdkit/Chem/SaltRemover.py +327 -0
- rdkit/Chem/Scaffolds/MurckoScaffold.py +144 -0
- rdkit/Chem/Scaffolds/ScaffoldNetwork.ipynb +491 -0
- rdkit/Chem/Scaffolds/__init__.py +0 -0
- rdkit/Chem/Scaffolds/rdScaffoldNetwork.pyd +0 -0
- rdkit/Chem/ShowMols.py +34 -0
- rdkit/Chem/SimpleEnum/Enumerator.py +236 -0
- rdkit/Chem/SimpleEnum/__init__.py +0 -0
- rdkit/Chem/SpacialScore.py +165 -0
- rdkit/Chem/Subshape/BuilderUtils.py +346 -0
- rdkit/Chem/Subshape/SubshapeAligner.py +352 -0
- rdkit/Chem/Subshape/SubshapeBuilder.py +125 -0
- rdkit/Chem/Subshape/SubshapeObjects.py +88 -0
- rdkit/Chem/Subshape/__init__.py +0 -0
- rdkit/Chem/Subshape/demoCombined.py +56 -0
- rdkit/Chem/Suppliers/DbMolSupplier.py +167 -0
- rdkit/Chem/Suppliers/MolSupplier.py +43 -0
- rdkit/Chem/Suppliers/__init__.py +0 -0
- rdkit/Chem/TemplateAlign.py +110 -0
- rdkit/Chem/TorsionFingerprints.py +709 -0
- rdkit/Chem/__init__.py +303 -0
- rdkit/Chem/fmcs/__init__.py +11 -0
- rdkit/Chem/fmcs/fmcs +10 -0
- rdkit/Chem/fmcs/fmcs.py +2824 -0
- rdkit/Chem/inchi.py +397 -0
- rdkit/Chem/nbtests/ChEMBL_quinolones.tsv +51 -0
- rdkit/Chem/nbtests/github4823.ipynb +331 -0
- rdkit/Chem/nbtests/rdkit-structure-renderer.ipynb +267 -0
- rdkit/Chem/rdAbbreviations.pyd +0 -0
- rdkit/Chem/rdCIPLabeler.pyd +0 -0
- rdkit/Chem/rdChemDraw.pyd +0 -0
- rdkit/Chem/rdChemReactions.pyd +0 -0
- rdkit/Chem/rdChemicalFeatures.pyd +0 -0
- rdkit/Chem/rdCoordGen.pyd +0 -0
- rdkit/Chem/rdDepictor.pyd +0 -0
- rdkit/Chem/rdDeprotect.pyd +0 -0
- rdkit/Chem/rdDetermineBonds.pyd +0 -0
- rdkit/Chem/rdDistGeom.pyd +0 -0
- rdkit/Chem/rdEHTTools.pyd +0 -0
- rdkit/Chem/rdEnumerateStereoisomers.pyd +0 -0
- rdkit/Chem/rdFMCS.pyd +0 -0
- rdkit/Chem/rdFingerprintGenerator.pyd +0 -0
- rdkit/Chem/rdForceFieldHelpers.pyd +0 -0
- rdkit/Chem/rdFreeSASA.pyd +0 -0
- rdkit/Chem/rdGaussianShape.pyd +0 -0
- rdkit/Chem/rdGeneralizedSubstruct.pyd +0 -0
- rdkit/Chem/rdMHFPFingerprint.pyd +0 -0
- rdkit/Chem/rdMIF.pyd +0 -0
- rdkit/Chem/rdMMPA.pyd +0 -0
- rdkit/Chem/rdMolAlign.pyd +0 -0
- rdkit/Chem/rdMolCatalog.pyd +0 -0
- rdkit/Chem/rdMolChemicalFeatures.pyd +0 -0
- rdkit/Chem/rdMolDescriptors.pyd +0 -0
- rdkit/Chem/rdMolEnumerator.pyd +0 -0
- rdkit/Chem/rdMolHash.pyd +0 -0
- rdkit/Chem/rdMolInterchange.pyd +0 -0
- rdkit/Chem/rdMolProcessing.pyd +0 -0
- rdkit/Chem/rdMolTransforms.pyd +0 -0
- rdkit/Chem/rdPartialCharges.pyd +0 -0
- rdkit/Chem/rdRGroupDecomposition.pyd +0 -0
- rdkit/Chem/rdRascalMCES.pyd +0 -0
- rdkit/Chem/rdReducedGraphs.pyd +0 -0
- rdkit/Chem/rdSLNParse.pyd +0 -0
- rdkit/Chem/rdShapeAlign.pyd +0 -0
- rdkit/Chem/rdShapeHelpers.pyd +0 -0
- rdkit/Chem/rdSubstructLibrary.pyd +0 -0
- rdkit/Chem/rdSynthonSpaceSearch.pyd +0 -0
- rdkit/Chem/rdTautomerQuery.pyd +0 -0
- rdkit/Chem/rdchem.pyd +0 -0
- rdkit/Chem/rdfiltercatalog.pyd +0 -0
- rdkit/Chem/rdfragcatalog.pyd +0 -0
- rdkit/Chem/rdinchi.pyd +0 -0
- rdkit/Chem/rdmolfiles.pyd +0 -0
- rdkit/Chem/rdmolops.pyd +0 -0
- rdkit/Chem/rdqueries.pyd +0 -0
- rdkit/Chem/rdtrajectory.pyd +0 -0
- rdkit/Contrib/AtomAtomSimilarity/AtomAtomPathSimilarity.py +384 -0
- rdkit/Contrib/CMakeLists.txt +4 -0
- rdkit/Contrib/CalcLigRMSD/CalcLigRMSD.py +76 -0
- rdkit/Contrib/CalcLigRMSD/README.md +62 -0
- rdkit/Contrib/ChiralPairs/ChiralDescriptors.py +417 -0
- rdkit/Contrib/ChiralPairs/README.txt +13 -0
- rdkit/Contrib/ConformerParser/CMakeLists.txt +15 -0
- rdkit/Contrib/ConformerParser/ConformerParser.cpp +116 -0
- rdkit/Contrib/ConformerParser/ConformerParser.h +75 -0
- rdkit/Contrib/ConformerParser/Wrap/CMakeLists.txt +8 -0
- rdkit/Contrib/ConformerParser/Wrap/rdConformerParser.cpp +85 -0
- rdkit/Contrib/ConformerParser/Wrap/testConformerParser.py +36 -0
- rdkit/Contrib/ConformerParser/nbWrap/CMakeLists.txt +7 -0
- rdkit/Contrib/ConformerParser/nbWrap/rdConformerParser.cpp +81 -0
- rdkit/Contrib/ConformerParser/test.cpp +118 -0
- rdkit/Contrib/Fastcluster/README.md +59 -0
- rdkit/Contrib/Fastcluster/cdk2.smi +47 -0
- rdkit/Contrib/Fastcluster/centroid.tsv +5 -0
- rdkit/Contrib/Fastcluster/clustered.tsv +5 -0
- rdkit/Contrib/Fastcluster/clustered_parse.tsv +47 -0
- rdkit/Contrib/Fastcluster/fastcluster.py +73 -0
- rdkit/Contrib/Fastcluster/fp.tsv +47 -0
- rdkit/Contrib/Fastcluster/testdata/cdk2.sdf +5373 -0
- rdkit/Contrib/Fastcluster/testdata/converted.smi +48 -0
- rdkit/Contrib/Fastcluster/testdata/sdf2smi.py +14 -0
- rdkit/Contrib/FreeWilson/README.md +162 -0
- rdkit/Contrib/FreeWilson/data/CHEMBL2321810.smi +1017 -0
- rdkit/Contrib/FreeWilson/data/CHEMBL2321810_act.csv +1018 -0
- rdkit/Contrib/FreeWilson/data/CHEMBL2321810_scaffold.mol +40 -0
- rdkit/Contrib/FreeWilson/data/cmet_ligands.sdf +2867 -0
- rdkit/Contrib/FreeWilson/freewilson.py +746 -0
- rdkit/Contrib/FreeWilson/pytest.ini +2 -0
- rdkit/Contrib/FreeWilson/requirements.txt +2 -0
- rdkit/Contrib/FreeWilson/setup.py +8 -0
- rdkit/Contrib/FreeWilson/test/test_freewilson.py +109 -0
- rdkit/Contrib/Glare/README.txt +62 -0
- rdkit/Contrib/Glare/glare.py +468 -0
- rdkit/Contrib/IFG/README +33 -0
- rdkit/Contrib/IFG/ifg.py +113 -0
- rdkit/Contrib/LEF/AddLabels.py +76 -0
- rdkit/Contrib/LEF/ClusterFps.py +75 -0
- rdkit/Contrib/LEF/CreateFps.py +123 -0
- rdkit/Contrib/LEF/DistancePlot.py +102 -0
- rdkit/Contrib/LEF/DistancePredict.py +183 -0
- rdkit/Contrib/LEF/README.txt +41 -0
- rdkit/Contrib/M_Kossner/BaseFeatures_DIP2_NoMicrospecies.fdef +200 -0
- rdkit/Contrib/M_Kossner/Frames.py +185 -0
- rdkit/Contrib/M_Kossner/README +49 -0
- rdkit/Contrib/MolVS/molvs_cli.py +112 -0
- rdkit/Contrib/NIBRSubstructureFilters/README.md +78 -0
- rdkit/Contrib/NIBRSubstructureFilters/SubstructureFilter_HitTriaging_wPubChemExamples.csv +445 -0
- rdkit/Contrib/NIBRSubstructureFilters/assignSubstructureFilters.py +143 -0
- rdkit/Contrib/NP_Score/README +9 -0
- rdkit/Contrib/NP_Score/npscorer.py +131 -0
- rdkit/Contrib/NP_Score/publicnp.model.gz +0 -0
- rdkit/Contrib/PBF/Makefile +15 -0
- rdkit/Contrib/PBF/PBFRDKit.cpp +160 -0
- rdkit/Contrib/PBF/PBFRDKit.h +58 -0
- rdkit/Contrib/PBF/README +20 -0
- rdkit/Contrib/PBF/demo.cpp +72 -0
- rdkit/Contrib/PBF/pbf.py +72 -0
- rdkit/Contrib/PBF/testData/egfr.out +365 -0
- rdkit/Contrib/PBF/testData/egfr.sdf +42378 -0
- rdkit/Contrib/RxnRoleAssignment/README.txt +12 -0
- rdkit/Contrib/RxnRoleAssignment/__init__.py +0 -0
- rdkit/Contrib/RxnRoleAssignment/identifyReactants.py +460 -0
- rdkit/Contrib/RxnRoleAssignment/utils.py +93 -0
- rdkit/Contrib/SA_Score/README +9 -0
- rdkit/Contrib/SA_Score/UnitTestSAScore.py +42 -0
- rdkit/Contrib/SA_Score/build_sascore_db.py +268 -0
- rdkit/Contrib/SA_Score/data/zim.100.txt +101 -0
- rdkit/Contrib/SA_Score/fpscores.pkl.gz +0 -0
- rdkit/Contrib/SA_Score/sascorer.py +192 -0
- rdkit/Contrib/efgs/README.md +20 -0
- rdkit/Contrib/efgs/ch33query.sql +26 -0
- rdkit/Contrib/efgs/efgs.py +567 -0
- rdkit/Contrib/efgs/try_efgs.py +223 -0
- rdkit/Contrib/fraggle/atomcontrib.py +133 -0
- rdkit/Contrib/fraggle/cxn_tversky.py +116 -0
- rdkit/Contrib/fraggle/data/ChEMBL_11265_actives.smi +100 -0
- rdkit/Contrib/fraggle/data/final_fraggle_results.csv +10 -0
- rdkit/Contrib/fraggle/data/fragmentation_tversky_out +89 -0
- rdkit/Contrib/fraggle/data/query.smi +1 -0
- rdkit/Contrib/fraggle/data/query_fragmentation.csv +16 -0
- rdkit/Contrib/fraggle/fraggle.py +66 -0
- rdkit/Contrib/fraggle/rdkit_tversky.py +104 -0
- rdkit/Contrib/fraggle/readme.txt +147 -0
- rdkit/Contrib/mmpa/README.txt +303 -0
- rdkit/Contrib/mmpa/cansmirk.py +89 -0
- rdkit/Contrib/mmpa/create_mmp_db.py +273 -0
- rdkit/Contrib/mmpa/data/sample.smi +10 -0
- rdkit/Contrib/mmpa/data/sample_cansmirks.txt +3 -0
- rdkit/Contrib/mmpa/data/sample_db_input_smi.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_input_subs.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_input_subs_smarts.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_input_trans.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_input_trans_smarts.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_search_smi_output.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_search_subs_output.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_search_subs_smart_output.txt +10 -0
- rdkit/Contrib/mmpa/data/sample_db_search_trans_output.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_db_search_trans_smarts_output.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_fragmented.txt +78 -0
- rdkit/Contrib/mmpa/data/sample_mmps_default.csv +12 -0
- rdkit/Contrib/mmpa/data/sample_mmps_maxheavy.csv +2 -0
- rdkit/Contrib/mmpa/data/sample_mmps_maxratio.csv +1 -0
- rdkit/Contrib/mmpa/data/sample_mmps_sym.csv +24 -0
- rdkit/Contrib/mmpa/data/sample_mmps_sym_maxheavy.csv +4 -0
- rdkit/Contrib/mmpa/data/sample_mol_trans_output.txt +2 -0
- rdkit/Contrib/mmpa/data/sample_smiles_mol_trans.smi +1 -0
- rdkit/Contrib/mmpa/data/sample_smirks.txt +3 -0
- rdkit/Contrib/mmpa/data/sample_smirks_mol_trans.txt +1 -0
- rdkit/Contrib/mmpa/data/sample_transfroms.txt +2 -0
- rdkit/Contrib/mmpa/data/simple.smi +2 -0
- rdkit/Contrib/mmpa/indexing.py +535 -0
- rdkit/Contrib/mmpa/mol_transform.py +124 -0
- rdkit/Contrib/mmpa/rfrag.py +242 -0
- rdkit/Contrib/mmpa/search_mmp_db.py +450 -0
- rdkit/Contrib/mmpa/test_rfrag.py +29 -0
- rdkit/Contrib/pzc/p_con.html +54 -0
- rdkit/Contrib/pzc/p_con.py +1409 -0
- rdkit/Contrib/pzc/readme.md +50 -0
- rdkit/Data/BaseFeatures.fdef +217 -0
- rdkit/Data/Crippen.txt +125 -0
- rdkit/Data/DTDs/RD_Dataset.dtd +30 -0
- rdkit/Data/DTDs/RD_Model.dtd +57 -0
- rdkit/Data/DTDs/validate.py +8 -0
- rdkit/Data/Fonts/Amadeus.ttf +0 -0
- rdkit/Data/Fonts/ComicNeue-Regular.ttf +0 -0
- rdkit/Data/Fonts/OFL.txt +93 -0
- rdkit/Data/Fonts/Telex-Regular.ttf +0 -0
- rdkit/Data/Fonts/amadeus_font_license.txt +5 -0
- rdkit/Data/Fonts/font_dumper.py +34 -0
- rdkit/Data/Fonts/roboto_regular_license.txt +4 -0
- rdkit/Data/Fonts/telex_font_license.txt +43 -0
- rdkit/Data/FragmentDescriptors.csv +129 -0
- rdkit/Data/FunctionalGroups.txt +67 -0
- rdkit/Data/Functional_Group_Hierarchy.txt +105 -0
- rdkit/Data/NCI/first_200.props.sdf +18470 -0
- rdkit/Data/NCI/first_200.tpsa.csv +201 -0
- rdkit/Data/NCI/first_5K.smi +4999 -0
- rdkit/Data/NCI/first_5k.tpsa.csv +5000 -0
- rdkit/Data/Pains/README.md +17 -0
- rdkit/Data/Pains/test_data/run_tests.py +39 -0
- rdkit/Data/Pains/test_data/test_set3.txt +477 -0
- rdkit/Data/Pains/test_data/wehi_mols.csv +10000 -0
- rdkit/Data/Pains/wehi_pains.csv +480 -0
- rdkit/Data/RDData.sqlt +0 -0
- rdkit/Data/RDTests.sqlt +0 -0
- rdkit/Data/Salts.txt +66 -0
- rdkit/Data/SmartsLib/RLewis_smarts.txt +484 -0
- rdkit/Data/SmartsLib/patty_rules.txt +227 -0
- rdkit/Data/SmartsLib/tests/bench2.py +54 -0
- rdkit/Data/SmartsLib/tests/fps.1000.counts.pkl.gz +0 -0
- rdkit/Data/SmartsLib/tests/mols.1000.pkl.gz +0 -0
- rdkit/Data/eht_parms.dat +311 -0
- rdkit/Data/rddata.sql +329 -0
- rdkit/Data/struchk/checkfgs.chk +608 -0
- rdkit/Data/struchk/checkfgs.opt +11 -0
- rdkit/Data/struchk/checkfgs.trn +149 -0
- rdkit/DataManip/Metric/__init__.py +10 -0
- rdkit/DataManip/Metric/rdMetricMatrixCalc.pyd +0 -0
- rdkit/DataManip/__init__.py +1 -0
- rdkit/DataStructs/BitEnsemble.py +59 -0
- rdkit/DataStructs/BitEnsembleDb.py +59 -0
- rdkit/DataStructs/BitUtils.py +51 -0
- rdkit/DataStructs/HierarchyVis.py +122 -0
- rdkit/DataStructs/LazySignature.py +81 -0
- rdkit/DataStructs/TopNContainer.py +85 -0
- rdkit/DataStructs/VectCollection.py +282 -0
- rdkit/DataStructs/__init__.py +78 -0
- rdkit/DataStructs/cDataStructs.pyd +0 -0
- rdkit/Dbase/DbConnection.py +308 -0
- rdkit/Dbase/DbInfo.py +207 -0
- rdkit/Dbase/DbModule.py +60 -0
- rdkit/Dbase/DbResultSet.py +242 -0
- rdkit/Dbase/DbUtils.py +466 -0
- rdkit/Dbase/StorageUtils.py +309 -0
- rdkit/Dbase/__init__.py +11 -0
- rdkit/DistanceGeometry/DistGeom.pyd +0 -0
- rdkit/DistanceGeometry/__init__.py +1 -0
- rdkit/ForceField/__init__.py +1 -0
- rdkit/ForceField/rdForceField.pyd +0 -0
- rdkit/Geometry/__init__.py +5 -0
- rdkit/Geometry/rdGeometry.pyd +0 -0
- rdkit/ML/Cluster/Butina.py +144 -0
- rdkit/ML/Cluster/ClusterUtils.py +182 -0
- rdkit/ML/Cluster/ClusterVis.py +458 -0
- rdkit/ML/Cluster/Clustering.pyd +0 -0
- rdkit/ML/Cluster/Clusters.py +313 -0
- rdkit/ML/Cluster/Murtagh.py +114 -0
- rdkit/ML/Cluster/Resemblance.py +143 -0
- rdkit/ML/Cluster/Standardize.py +28 -0
- rdkit/ML/Cluster/__init__.py +0 -0
- rdkit/ML/Cluster/murtagh_test.py +34 -0
- rdkit/ML/Data/DataUtils.py +681 -0
- rdkit/ML/Data/FindQuantBounds.py +67 -0
- rdkit/ML/Data/MLData.py +364 -0
- rdkit/ML/Data/Quantize.py +379 -0
- rdkit/ML/Data/SplitData.py +307 -0
- rdkit/ML/Data/Stats.py +227 -0
- rdkit/ML/Data/Transforms.py +51 -0
- rdkit/ML/Data/__init__.py +0 -0
- rdkit/ML/Data/cQuantize.pyd +0 -0
- rdkit/ML/Descriptors/CompoundDescriptors.py +473 -0
- rdkit/ML/Descriptors/Descriptors.py +67 -0
- rdkit/ML/Descriptors/MoleculeDescriptors.py +127 -0
- rdkit/ML/Descriptors/Parser.py +453 -0
- rdkit/ML/Descriptors/__init__.py +0 -0
- rdkit/ML/InfoTheory/BitClusterer.py +74 -0
- rdkit/ML/InfoTheory/BitRank.py +201 -0
- rdkit/ML/InfoTheory/__init__.py +4 -0
- rdkit/ML/InfoTheory/entropy.py +102 -0
- rdkit/ML/InfoTheory/rdInfoTheory.pyd +0 -0
- rdkit/ML/MLUtils/VoteImg.py +222 -0
- rdkit/ML/MLUtils/__init__.py +3 -0
- rdkit/ML/MatOps.py +29 -0
- rdkit/ML/SLT/Risk.py +141 -0
- rdkit/ML/SLT/__init__.py +0 -0
- rdkit/ML/Scoring/Scoring.py +202 -0
- rdkit/ML/Scoring/__init__.py +0 -0
- rdkit/ML/__init__.py +10 -0
- rdkit/ML/files.py +110 -0
- rdkit/Numerics/__init__.py +4 -0
- rdkit/Numerics/rdAlignment.pyd +0 -0
- rdkit/RDConfig.py +88 -0
- rdkit/RDLogger.py +56 -0
- rdkit/RDPaths.py +9 -0
- rdkit/RDRandom.py +46 -0
- rdkit/SimDivFilters/SimilarityPickers.py +285 -0
- rdkit/SimDivFilters/__init__.py +11 -0
- rdkit/SimDivFilters/rdSimDivPickers.pyd +0 -0
- rdkit/TestRunner.py +128 -0
- rdkit/VLib/Filter.py +117 -0
- rdkit/VLib/Node.py +201 -0
- rdkit/VLib/NodeLib/DbMolSupply.py +75 -0
- rdkit/VLib/NodeLib/DbPickleSupplier.py +212 -0
- rdkit/VLib/NodeLib/SDSupply.py +65 -0
- rdkit/VLib/NodeLib/SmartsMolFilter.py +104 -0
- rdkit/VLib/NodeLib/SmartsRemover.py +156 -0
- rdkit/VLib/NodeLib/SmilesDupeFilter.py +70 -0
- rdkit/VLib/NodeLib/SmilesOutput.py +82 -0
- rdkit/VLib/NodeLib/SmilesSupply.py +75 -0
- rdkit/VLib/NodeLib/__init__.py +1 -0
- rdkit/VLib/NodeLib/demo.py +56 -0
- rdkit/VLib/Output.py +75 -0
- rdkit/VLib/Supply.py +76 -0
- rdkit/VLib/Transform.py +85 -0
- rdkit/VLib/__init__.py +1 -0
- rdkit/__init__.py +79 -0
- rdkit/conftest.py +25 -0
- rdkit/license.txt +29 -0
- rdkit/pytest.ini +8 -0
- rdkit/rdBase.pyd +0 -0
- rdkit/sping/PDF/__init__.py +1 -0
- rdkit/sping/PDF/pdfdoc.py +528 -0
- rdkit/sping/PDF/pdfgen.py +1041 -0
- rdkit/sping/PDF/pdfgeom.py +69 -0
- rdkit/sping/PDF/pdfmetrics.py +338 -0
- rdkit/sping/PDF/pdfutils.py +319 -0
- rdkit/sping/PDF/pidPDF.py +677 -0
- rdkit/sping/PIL/__init__.py +2 -0
- rdkit/sping/PIL/pidPIL.py +469 -0
- rdkit/sping/PIL/pilfonts/courier-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-8.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-8.pil.1 +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/courier-bold-8.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-8.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/helvetica-bold-8.pil +0 -0
- rdkit/sping/PIL/pilfonts/metrics.dat +8446 -0
- rdkit/sping/PIL/pilfonts/removemedium.py +8 -0
- rdkit/sping/PIL/pilfonts/symbol-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/symbol-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/symbol-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/symbol-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/symbol-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/symbol-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/symbol-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/symbol-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/symbol-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/symbol-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/symbol-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/symbol-8.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-8.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-10.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-10.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-12.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-12.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-14.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-14.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-18.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-18.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-24.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-24.pil +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-8.pbm +0 -0
- rdkit/sping/PIL/pilfonts/times-bold-8.pil +0 -0
- rdkit/sping/PS/__init__.py +2 -0
- rdkit/sping/PS/fontinfo.py +8 -0
- rdkit/sping/PS/latin1MetricsCache.py +226 -0
- rdkit/sping/PS/pidPS.py +982 -0
- rdkit/sping/PS/psmetrics.py +249 -0
- rdkit/sping/Pyart/Fontmapping.py +103 -0
- rdkit/sping/Pyart/__init__.py +3 -0
- rdkit/sping/Pyart/pidPyart.py +278 -0
- rdkit/sping/Qt/__init__.py +0 -0
- rdkit/sping/Qt/pidQt.py +401 -0
- rdkit/sping/Qt/pidQt4.py +386 -0
- rdkit/sping/README +64 -0
- rdkit/sping/ReportLab/__init__.py +0 -0
- rdkit/sping/ReportLab/pidReportLab.py +324 -0
- rdkit/sping/SVG/__init__.py +3 -0
- rdkit/sping/SVG/pidSVG.py +749 -0
- rdkit/sping/TK/__init__.py +1 -0
- rdkit/sping/TK/pidTK.py +485 -0
- rdkit/sping/WX/__init__.py +1 -0
- rdkit/sping/WX/pidWX.py +405 -0
- rdkit/sping/WX/pidWxDc.py +284 -0
- rdkit/sping/__init__.py +5 -0
- rdkit/sping/colors.py +226 -0
- rdkit/sping/examples/formatted-strings.py +44 -0
- rdkit/sping/examples/tkCanvas-with-scrollbars.py +77 -0
- rdkit/sping/examples/tkCanvasPIL-with-scrollbars.py +75 -0
- rdkit/sping/pagesizes.py +29 -0
- rdkit/sping/patches/Imaging-1.1-fixplugin-path +37 -0
- rdkit/sping/patches/Imaging-1.1.1.diff +27 -0
- rdkit/sping/pid.py +598 -0
- rdkit/sping/stringformat.py +581 -0
- rdkit/sping/tests/__init__.py +1 -0
- rdkit/sping/tests/pidtest.py +451 -0
- rdkit/sping/tests/pstests.py +20 -0
- rdkit/sping/tests/testallps.py +47 -0
- rdkit/sping/util/HTMLPiddler.py +406 -0
- rdkit/sping/util/__init__.py +1 -0
- rdkit/sping/utils.py +12 -0
- rdkit/utils/__init__.py +0 -0
- rdkit/utils/cactvs.py +67 -0
- rdkit/utils/chemdraw.py +451 -0
- rdkit/utils/chemdraw_qax.py +85 -0
- rdkit/utils/chemutils.py +164 -0
- rdkit/utils/fileutils.py +46 -0
- rdkit/utils/listutils.py +64 -0
- rdkit/utils/retest.txt +8 -0
- rdkit/utils/spiral.py +50 -0
- rdkit-2026.9.1.dist-info/DELVEWHEEL +2 -0
- rdkit-2026.9.1.dist-info/LICENSE.md +21 -0
- rdkit-2026.9.1.dist-info/METADATA +72 -0
- rdkit-2026.9.1.dist-info/RECORD +949 -0
- rdkit-2026.9.1.dist-info/WHEEL +5 -0
- rdkit-2026.9.1.dist-info/top_level.txt +1 -0
- rdkit-stubs/Avalon/__init__.pyi +2 -0
- rdkit-stubs/Avalon/pyAvalonTools.pyi +194 -0
- rdkit-stubs/Chem/AllChem.pyi +511 -0
- rdkit-stubs/Chem/AtomPairs/Pairs.pyi +103 -0
- rdkit-stubs/Chem/AtomPairs/Sheridan.pyi +68 -0
- rdkit-stubs/Chem/AtomPairs/Torsions.pyi +100 -0
- rdkit-stubs/Chem/AtomPairs/Utils.pyi +204 -0
- rdkit-stubs/Chem/AtomPairs/__init__.pyi +2 -0
- rdkit-stubs/Chem/BRICS.pyi +219 -0
- rdkit-stubs/Chem/BuildFragmentCatalog.pyi +219 -0
- rdkit-stubs/Chem/ChemUtils/AlignDepict.pyi +28 -0
- rdkit-stubs/Chem/ChemUtils/BulkTester.pyi +9 -0
- rdkit-stubs/Chem/ChemUtils/DescriptorUtilities.pyi +28 -0
- rdkit-stubs/Chem/ChemUtils/SDFToCSV.pyi +21 -0
- rdkit-stubs/Chem/ChemUtils/TemplateExpand.pyi +24 -0
- rdkit-stubs/Chem/ChemUtils/__init__.pyi +2 -0
- rdkit-stubs/Chem/ChemicalFeatures.pyi +7 -0
- rdkit-stubs/Chem/ChemicalForceFields.pyi +5 -0
- rdkit-stubs/Chem/Crippen.pyi +51 -0
- rdkit-stubs/Chem/Descriptors.pyi +356 -0
- rdkit-stubs/Chem/Descriptors3D.pyi +27 -0
- rdkit-stubs/Chem/EState/AtomTypes.pyi +26 -0
- rdkit-stubs/Chem/EState/EState.pyi +31 -0
- rdkit-stubs/Chem/EState/EState_VSA.pyi +76 -0
- rdkit-stubs/Chem/EState/Fingerprinter.pyi +25 -0
- rdkit-stubs/Chem/EState/__init__.pyi +25 -0
- rdkit-stubs/Chem/EnumerateHeterocycles.pyi +56 -0
- rdkit-stubs/Chem/EnumerateStereoisomers.pyi +215 -0
- rdkit-stubs/Chem/FastSDMolSupplier.pyi +9 -0
- rdkit-stubs/Chem/FeatFinderCLI.pyi +28 -0
- rdkit-stubs/Chem/FeatMaps/FeatMapParser.pyi +24 -0
- rdkit-stubs/Chem/FeatMaps/FeatMapPoint.pyi +76 -0
- rdkit-stubs/Chem/FeatMaps/FeatMapUtils.pyi +57 -0
- rdkit-stubs/Chem/FeatMaps/FeatMaps.pyi +60 -0
- rdkit-stubs/Chem/FeatMaps/__init__.pyi +2 -0
- rdkit-stubs/Chem/Features/FeatDirUtilsRD.pyi +118 -0
- rdkit-stubs/Chem/Features/ShowFeats.pyi +40 -0
- rdkit-stubs/Chem/Features/__init__.pyi +2 -0
- rdkit-stubs/Chem/FilterCatalog.pyi +69 -0
- rdkit-stubs/Chem/Fingerprints/ClusterMols.pyi +37 -0
- rdkit-stubs/Chem/Fingerprints/DbFpSupplier.pyi +108 -0
- rdkit-stubs/Chem/Fingerprints/FingerprintMols.pyi +95 -0
- rdkit-stubs/Chem/Fingerprints/MolSimilarity.pyi +49 -0
- rdkit-stubs/Chem/Fingerprints/SimilarityScreener.pyi +118 -0
- rdkit-stubs/Chem/Fingerprints/__init__.pyi +3 -0
- rdkit-stubs/Chem/Fraggle/FraggleSim.pyi +126 -0
- rdkit-stubs/Chem/Fraggle/__init__.pyi +2 -0
- rdkit-stubs/Chem/FragmentCatalog.pyi +22 -0
- rdkit-stubs/Chem/FragmentMatcher.pyi +62 -0
- rdkit-stubs/Chem/Fragments.pyi +19 -0
- rdkit-stubs/Chem/FunctionalGroups.pyi +33 -0
- rdkit-stubs/Chem/GraphDescriptors.pyi +279 -0
- rdkit-stubs/Chem/Graphs.pyi +25 -0
- rdkit-stubs/Chem/Lipinski.pyi +22 -0
- rdkit-stubs/Chem/MACCSkeys.pyi +62 -0
- rdkit-stubs/Chem/MCS.pyi +108 -0
- rdkit-stubs/Chem/MolCatalog.pyi +4 -0
- rdkit-stubs/Chem/MolDb/FingerprintUtils.pyi +42 -0
- rdkit-stubs/Chem/MolDb/Loader.pyi +16 -0
- rdkit-stubs/Chem/MolDb/Loader_orig.pyi +19 -0
- rdkit-stubs/Chem/MolDb/__init__.pyi +3 -0
- rdkit-stubs/Chem/MolKey/InchiInfo.pyi +41 -0
- rdkit-stubs/Chem/MolKey/MolKey.pyi +213 -0
- rdkit-stubs/Chem/MolKey/__init__.pyi +2 -0
- rdkit-stubs/Chem/MolStandardize/__init__.pyi +20 -0
- rdkit-stubs/Chem/MolStandardize/rdMolStandardize.pyi +1813 -0
- rdkit-stubs/Chem/MolSurf.pyi +98 -0
- rdkit-stubs/Chem/Pharm2D/Generate.pyi +60 -0
- rdkit-stubs/Chem/Pharm2D/Gobbi_Pharm2D.pyi +15 -0
- rdkit-stubs/Chem/Pharm2D/Matcher.pyi +46 -0
- rdkit-stubs/Chem/Pharm2D/SigFactory.pyi +144 -0
- rdkit-stubs/Chem/Pharm2D/Utils.pyi +184 -0
- rdkit-stubs/Chem/Pharm2D/__init__.pyi +8 -0
- rdkit-stubs/Chem/Pharm3D/EmbedLib.pyi +722 -0
- rdkit-stubs/Chem/Pharm3D/ExcludedVolume.pyi +8 -0
- rdkit-stubs/Chem/Pharm3D/Pharmacophore.pyi +67 -0
- rdkit-stubs/Chem/Pharm3D/__init__.pyi +2 -0
- rdkit-stubs/Chem/PropertyMol.pyi +114 -0
- rdkit-stubs/Chem/PyMol.pyi +91 -0
- rdkit-stubs/Chem/QED.pyi +162 -0
- rdkit-stubs/Chem/Randomize.pyi +10 -0
- rdkit-stubs/Chem/Recap.pyi +111 -0
- rdkit-stubs/Chem/ReducedGraphs.pyi +5 -0
- rdkit-stubs/Chem/RegistrationHash.pyi +219 -0
- rdkit-stubs/Chem/SATIS.pyi +38 -0
- rdkit-stubs/Chem/SaltRemover.pyi +180 -0
- rdkit-stubs/Chem/Scaffolds/MurckoScaffold.pyi +69 -0
- rdkit-stubs/Chem/Scaffolds/__init__.pyi +2 -0
- rdkit-stubs/Chem/Scaffolds/rdScaffoldNetwork.pyi +292 -0
- rdkit-stubs/Chem/ShowMols.pyi +9 -0
- rdkit-stubs/Chem/SimpleEnum/Enumerator.pyi +156 -0
- rdkit-stubs/Chem/SimpleEnum/__init__.pyi +2 -0
- rdkit-stubs/Chem/SpacialScore.pyi +78 -0
- rdkit-stubs/Chem/Subshape/BuilderUtils.pyi +39 -0
- rdkit-stubs/Chem/Subshape/SubshapeAligner.pyi +68 -0
- rdkit-stubs/Chem/Subshape/SubshapeBuilder.pyi +34 -0
- rdkit-stubs/Chem/Subshape/SubshapeObjects.pyi +35 -0
- rdkit-stubs/Chem/Subshape/__init__.pyi +2 -0
- rdkit-stubs/Chem/Suppliers/DbMolSupplier.pyi +61 -0
- rdkit-stubs/Chem/Suppliers/MolSupplier.pyi +28 -0
- rdkit-stubs/Chem/Suppliers/__init__.pyi +2 -0
- rdkit-stubs/Chem/TemplateAlign.pyi +68 -0
- rdkit-stubs/Chem/TorsionFingerprints.pyi +298 -0
- rdkit-stubs/Chem/__init__.pyi +321 -0
- rdkit-stubs/Chem/fmcs/__init__.pyi +109 -0
- rdkit-stubs/Chem/fmcs/fmcs.pyi +649 -0
- rdkit-stubs/Chem/inchi.pyi +152 -0
- rdkit-stubs/Chem/rdAbbreviations.pyi +109 -0
- rdkit-stubs/Chem/rdCIPLabeler.pyi +31 -0
- rdkit-stubs/Chem/rdChemDraw.pyi +132 -0
- rdkit-stubs/Chem/rdChemReactions.pyi +1626 -0
- rdkit-stubs/Chem/rdChemicalFeatures.pyi +121 -0
- rdkit-stubs/Chem/rdCoordGen.pyi +122 -0
- rdkit-stubs/Chem/rdDepictor.pyi +436 -0
- rdkit-stubs/Chem/rdDeprotect.pyi +127 -0
- rdkit-stubs/Chem/rdDetermineBonds.pyi +90 -0
- rdkit-stubs/Chem/rdDistGeom.pyi +684 -0
- rdkit-stubs/Chem/rdEHTTools.pyi +93 -0
- rdkit-stubs/Chem/rdEnumerateStereoisomers.pyi +101 -0
- rdkit-stubs/Chem/rdFMCS.pyi +507 -0
- rdkit-stubs/Chem/rdFingerprintGenerator.pyi +972 -0
- rdkit-stubs/Chem/rdForceFieldHelpers.pyi +291 -0
- rdkit-stubs/Chem/rdFreeSASA.pyi +140 -0
- rdkit-stubs/Chem/rdGaussianShape.pyi +517 -0
- rdkit-stubs/Chem/rdGeneralizedSubstruct.pyi +91 -0
- rdkit-stubs/Chem/rdMHFPFingerprint.pyi +109 -0
- rdkit-stubs/Chem/rdMIF.pyi +420 -0
- rdkit-stubs/Chem/rdMMPA.pyi +30 -0
- rdkit-stubs/Chem/rdMolAlign.pyi +657 -0
- rdkit-stubs/Chem/rdMolCatalog.pyi +155 -0
- rdkit-stubs/Chem/rdMolChemicalFeatures.pyi +174 -0
- rdkit-stubs/Chem/rdMolDescriptors.pyi +1089 -0
- rdkit-stubs/Chem/rdMolEnumerator.pyi +105 -0
- rdkit-stubs/Chem/rdMolHash.pyi +37 -0
- rdkit-stubs/Chem/rdMolInterchange.pyi +134 -0
- rdkit-stubs/Chem/rdMolProcessing.pyi +123 -0
- rdkit-stubs/Chem/rdMolTransforms.pyi +177 -0
- rdkit-stubs/Chem/rdPartialCharges.pyi +31 -0
- rdkit-stubs/Chem/rdRGroupDecomposition.pyi +426 -0
- rdkit-stubs/Chem/rdRascalMCES.pyi +336 -0
- rdkit-stubs/Chem/rdReducedGraphs.pyi +28 -0
- rdkit-stubs/Chem/rdSLNParse.pyi +49 -0
- rdkit-stubs/Chem/rdShapeAlign.pyi +458 -0
- rdkit-stubs/Chem/rdShapeHelpers.pyi +129 -0
- rdkit-stubs/Chem/rdSynthonSpaceSearch.pyi +680 -0
- rdkit-stubs/Chem/rdTautomerQuery.pyi +138 -0
- rdkit-stubs/Chem/rdchem.pyi +5458 -0
- rdkit-stubs/Chem/rdfiltercatalog/FilterMatchOps.pyi +34 -0
- rdkit-stubs/Chem/rdfiltercatalog/__init__.pyi +819 -0
- rdkit-stubs/Chem/rdfragcatalog.pyi +183 -0
- rdkit-stubs/Chem/rdinchi.pyi +96 -0
- rdkit-stubs/Chem/rdmolfiles.pyi +3796 -0
- rdkit-stubs/Chem/rdmolops.pyi +2895 -0
- rdkit-stubs/Chem/rdqueries.pyi +608 -0
- rdkit-stubs/Chem/rdtrajectory.pyi +172 -0
- rdkit-stubs/DataManip/Metric/__init__.pyi +4 -0
- rdkit-stubs/DataManip/Metric/rdMetricMatrixCalc.pyi +64 -0
- rdkit-stubs/DataManip/__init__.pyi +2 -0
- rdkit-stubs/DataStructs/BitEnsemble.pyi +31 -0
- rdkit-stubs/DataStructs/BitEnsembleDb.pyi +21 -0
- rdkit-stubs/DataStructs/BitUtils.pyi +22 -0
- rdkit-stubs/DataStructs/LazySignature.pyi +41 -0
- rdkit-stubs/DataStructs/TopNContainer.pyi +33 -0
- rdkit-stubs/DataStructs/VectCollection.pyi +161 -0
- rdkit-stubs/DataStructs/__init__.pyi +50 -0
- rdkit-stubs/DataStructs/cDataStructs.pyi +2693 -0
- rdkit-stubs/Dbase/DbConnection.pyi +221 -0
- rdkit-stubs/Dbase/DbInfo.pyi +96 -0
- rdkit-stubs/Dbase/DbModule.pyi +18 -0
- rdkit-stubs/Dbase/DbResultSet.pyi +61 -0
- rdkit-stubs/Dbase/DbUtils.pyi +161 -0
- rdkit-stubs/Dbase/StorageUtils.pyi +132 -0
- rdkit-stubs/Dbase/__init__.pyi +5 -0
- rdkit-stubs/DistanceGeometry/DistGeom.pyi +50 -0
- rdkit-stubs/DistanceGeometry/__init__.pyi +3 -0
- rdkit-stubs/ForceField/__init__.pyi +5 -0
- rdkit-stubs/ForceField/rdForceField.pyi +389 -0
- rdkit-stubs/Geometry/__init__.pyi +13 -0
- rdkit-stubs/Geometry/rdGeometry.pyi +979 -0
- rdkit-stubs/ML/Cluster/Butina.pyi +59 -0
- rdkit-stubs/ML/Cluster/ClusterUtils.pyi +74 -0
- rdkit-stubs/ML/Cluster/ClusterVis.pyi +188 -0
- rdkit-stubs/ML/Cluster/Clustering.pyi +17 -0
- rdkit-stubs/ML/Cluster/Clusters.pyi +153 -0
- rdkit-stubs/ML/Cluster/Murtagh.pyi +58 -0
- rdkit-stubs/ML/Cluster/Resemblance.pyi +90 -0
- rdkit-stubs/ML/Cluster/Standardize.pyi +16 -0
- rdkit-stubs/ML/Cluster/__init__.pyi +2 -0
- rdkit-stubs/ML/Cluster/murtagh_test.pyi +10 -0
- rdkit-stubs/ML/Data/DataUtils.pyi +300 -0
- rdkit-stubs/ML/Data/FindQuantBounds.pyi +8 -0
- rdkit-stubs/ML/Data/MLData.pyi +211 -0
- rdkit-stubs/ML/Data/Quantize.pyi +172 -0
- rdkit-stubs/ML/Data/SplitData.pyi +178 -0
- rdkit-stubs/ML/Data/Stats.pyi +67 -0
- rdkit-stubs/ML/Data/Transforms.pyi +37 -0
- rdkit-stubs/ML/Data/__init__.pyi +2 -0
- rdkit-stubs/ML/Data/cQuantize.pyi +17 -0
- rdkit-stubs/ML/Descriptors/CompoundDescriptors.pyi +340 -0
- rdkit-stubs/ML/Descriptors/Descriptors.pyi +42 -0
- rdkit-stubs/ML/Descriptors/MoleculeDescriptors.pyi +86 -0
- rdkit-stubs/ML/Descriptors/Parser.pyi +340 -0
- rdkit-stubs/ML/Descriptors/__init__.pyi +2 -0
- rdkit-stubs/ML/InfoTheory/BitClusterer.pyi +37 -0
- rdkit-stubs/ML/InfoTheory/BitRank.pyi +138 -0
- rdkit-stubs/ML/InfoTheory/__init__.pyi +14 -0
- rdkit-stubs/ML/InfoTheory/entropy.pyi +47 -0
- rdkit-stubs/ML/InfoTheory/rdInfoTheory.pyi +280 -0
- rdkit-stubs/ML/MLUtils/VoteImg.pyi +113 -0
- rdkit-stubs/ML/MLUtils/__init__.pyi +3 -0
- rdkit-stubs/ML/MatOps.pyi +14 -0
- rdkit-stubs/ML/SLT/Risk.pyi +100 -0
- rdkit-stubs/ML/SLT/__init__.pyi +2 -0
- rdkit-stubs/ML/Scoring/Scoring.pyi +59 -0
- rdkit-stubs/ML/Scoring/__init__.pyi +2 -0
- rdkit-stubs/ML/__init__.pyi +5 -0
- rdkit-stubs/ML/files.pyi +61 -0
- rdkit-stubs/Numerics/__init__.pyi +8 -0
- rdkit-stubs/Numerics/rdAlignment.pyi +32 -0
- rdkit-stubs/RDConfig.pyi +29 -0
- rdkit-stubs/RDLogger.pyi +25 -0
- rdkit-stubs/RDPaths.pyi +9 -0
- rdkit-stubs/RDRandom.pyi +21 -0
- rdkit-stubs/SimDivFilters/SimilarityPickers.pyi +184 -0
- rdkit-stubs/SimDivFilters/__init__.pyi +15 -0
- rdkit-stubs/SimDivFilters/rdSimDivPickers.pyi +194 -0
- rdkit-stubs/TestRunner.pyi +61 -0
- rdkit-stubs/VLib/Filter.pyi +71 -0
- rdkit-stubs/VLib/Node.pyi +138 -0
- rdkit-stubs/VLib/NodeLib/DbMolSupply.pyi +46 -0
- rdkit-stubs/VLib/NodeLib/DbPickleSupplier.pyi +29 -0
- rdkit-stubs/VLib/NodeLib/SDSupply.pyi +42 -0
- rdkit-stubs/VLib/NodeLib/SmartsMolFilter.pyi +61 -0
- rdkit-stubs/VLib/NodeLib/SmartsRemover.pyi +82 -0
- rdkit-stubs/VLib/NodeLib/SmilesDupeFilter.pyi +43 -0
- rdkit-stubs/VLib/NodeLib/SmilesOutput.pyi +41 -0
- rdkit-stubs/VLib/NodeLib/SmilesSupply.pyi +47 -0
- rdkit-stubs/VLib/NodeLib/__init__.pyi +2 -0
- rdkit-stubs/VLib/NodeLib/demo.pyi +32 -0
- rdkit-stubs/VLib/Output.pyi +44 -0
- rdkit-stubs/VLib/Supply.pyi +44 -0
- rdkit-stubs/VLib/Transform.pyi +53 -0
- rdkit-stubs/VLib/__init__.pyi +2 -0
- rdkit-stubs/__init__.py +10 -0
- rdkit-stubs/__init__.pyi +20 -0
- rdkit-stubs/conftest.pyi +6 -0
- rdkit-stubs/rdBase.pyi +482 -0
- rdkit-stubs/sping/PDF/__init__.pyi +187 -0
- rdkit-stubs/sping/PDF/pdfdoc.pyi +250 -0
- rdkit-stubs/sping/PDF/pdfgen.pyi +508 -0
- rdkit-stubs/sping/PDF/pdfgeom.pyi +29 -0
- rdkit-stubs/sping/PDF/pdfmetrics.pyi +54 -0
- rdkit-stubs/sping/PDF/pdfutils.pyi +63 -0
- rdkit-stubs/sping/PDF/pidPDF.pyi +325 -0
- rdkit-stubs/sping/PIL/__init__.pyi +184 -0
- rdkit-stubs/sping/PIL/pidPIL.pyi +262 -0
- rdkit-stubs/sping/PS/__init__.pyi +190 -0
- rdkit-stubs/sping/PS/fontinfo.pyi +4 -0
- rdkit-stubs/sping/PS/latin1MetricsCache.pyi +3 -0
- rdkit-stubs/sping/PS/pidPS.pyi +355 -0
- rdkit-stubs/sping/PS/psmetrics.pyi +9 -0
- rdkit-stubs/sping/Qt/__init__.pyi +2 -0
- rdkit-stubs/sping/ReportLab/__init__.pyi +2 -0
- rdkit-stubs/sping/SVG/__init__.pyi +246 -0
- rdkit-stubs/sping/SVG/pidSVG.pyi +350 -0
- rdkit-stubs/sping/__init__.pyi +5 -0
- rdkit-stubs/sping/colors.pyi +187 -0
- rdkit-stubs/sping/pagesizes.pyi +30 -0
- rdkit-stubs/sping/pid.pyi +364 -0
- rdkit-stubs/sping/stringformat.pyi +140 -0
- rdkit-stubs/sping/tests/__init__.pyi +2 -0
- rdkit-stubs/sping/tests/pidtest.pyi +235 -0
- rdkit-stubs/sping/util/__init__.pyi +2 -0
- rdkit-stubs/sping/utils.pyi +3 -0
- rdkit-stubs/utils/__init__.pyi +2 -0
- rdkit-stubs/utils/cactvs.pyi +11 -0
- rdkit-stubs/utils/chemutils.pyi +71 -0
- rdkit-stubs/utils/fileutils.pyi +30 -0
- rdkit-stubs/utils/listutils.pyi +22 -0
- rdkit-stubs/utils/spiral.pyi +505 -0
- rdkit.libs/RDKitAbbreviations-5ef8973753856abacd662da5086e5cf7.dll +0 -0
- rdkit.libs/RDKitAlignment-a0a0c2f395f4b106f479c7c11cf0ab35.dll +0 -0
- rdkit.libs/RDKitAvalonLib-f3a535883453f3ca5687ec22865e87da.dll +0 -0
- rdkit.libs/RDKitCIPLabeler-8ea9a98a181cdef91eb653733cce6ae2.dll +0 -0
- rdkit.libs/RDKitCatalogs-b9a03735acd5fbb743dccf13aa336427.dll +0 -0
- rdkit.libs/RDKitChemDraw-9f841a7149c4496291a617dce86d42a7.dll +0 -0
- rdkit.libs/RDKitChemReactions-b9d4cf86f4e9e3298870be0159cd5640.dll +0 -0
- rdkit.libs/RDKitChemTransforms-fdf1352f6d79dce73bb24195a77e9062.dll +0 -0
- rdkit.libs/RDKitChemicalFeatures-902938a43ac46f1ebdec2757b4ac84f8.dll +0 -0
- rdkit.libs/RDKitDataStructs-d6c18454149880f2d16553b3df25c602.dll +0 -0
- rdkit.libs/RDKitDepictor-7ab1f644989cc4fbf9d1d69660add593.dll +0 -0
- rdkit.libs/RDKitDeprotect-f577f1fd36e55747849f368129bb7a9f.dll +0 -0
- rdkit.libs/RDKitDescriptors-cfa68a1ee37707e4e23d34971cb40973.dll +0 -0
- rdkit.libs/RDKitDetermineBonds-6eb78ad53f5553e088bdfc7d7baee955.dll +0 -0
- rdkit.libs/RDKitDistGeomHelpers-75967058cd1f0c4f3ef11e7cb644fb1b.dll +0 -0
- rdkit.libs/RDKitDistGeometry-cfc52970b4b386e583a303071af9506a.dll +0 -0
- rdkit.libs/RDKitEHTLib-6a244f7fd2f1f40c81a4909ce74acc42.dll +0 -0
- rdkit.libs/RDKitEigenSolvers-cbf3ea7f1b72c1be04bd923c645533e2.dll +0 -0
- rdkit.libs/RDKitEnumerateStereoisomers-bcc21cec570cf40f552e62afd38b27c0.dll +0 -0
- rdkit.libs/RDKitFMCS-b7aec594d42a464a9c8dafd79ae5209d.dll +0 -0
- rdkit.libs/RDKitFileParsers-057cd06092419f1a56c50c22f1d2f84b.dll +0 -0
- rdkit.libs/RDKitFilterCatalog-ead7f840d9189a74aaad7bbd399d7679.dll +0 -0
- rdkit.libs/RDKitFingerprints-30e4e631f0086b74357ad1a5f89b536a.dll +0 -0
- rdkit.libs/RDKitForceField-f983a5190a27efd830823bbf68cc9d9e.dll +0 -0
- rdkit.libs/RDKitForceFieldHelpers-0e4f1b7ed435b22ad8f4ffbd18986925.dll +0 -0
- rdkit.libs/RDKitFragCatalog-70475abeb3756de891e37b221426a0a2.dll +0 -0
- rdkit.libs/RDKitFreeSASALib-ab5367b956372a8d576bdbff4759d920.dll +0 -0
- rdkit.libs/RDKitGaussianShape-1cea2d6e8aac927981c432ad4986db52.dll +0 -0
- rdkit.libs/RDKitGeneralizedSubstruct-3b974fd429c05def4a0891bb16a6243c.dll +0 -0
- rdkit.libs/RDKitGenericGroups-cf700c9116bc37713b3b7d1031edcb8f.dll +0 -0
- rdkit.libs/RDKitGraphMol-3a48631c89fc858fc489947822017eed.dll +0 -0
- rdkit.libs/RDKitInchi-37d71386b64431a71875c9c018a3c8b5.dll +0 -0
- rdkit.libs/RDKitInfoTheory-bf4e9fde2dfdce6873b2731f57a706d8.dll +0 -0
- rdkit.libs/RDKitMMPA-0578a3017365b3a72d473a20f1e46faf.dll +0 -0
- rdkit.libs/RDKitMarvinParser-17ed14d5d03bc26968d241fb8469ef31.dll +0 -0
- rdkit.libs/RDKitMolAlign-d346f9898080c54998e3670ec24f11b3.dll +0 -0
- rdkit.libs/RDKitMolCatalog-0085f5721912ee0ae7b9aa81a0ef59d6.dll +0 -0
- rdkit.libs/RDKitMolChemicalFeatures-a79c39290c753a13ce813fd3708b1b44.dll +0 -0
- rdkit.libs/RDKitMolDraw2D-6fdd6a471547c1c062238ec17c1200c6.dll +0 -0
- rdkit.libs/RDKitMolEnumerator-d4324e70bfdc624f65a067924833e9a2.dll +0 -0
- rdkit.libs/RDKitMolHash-ac55803cea287281a962f9ade124c437.dll +0 -0
- rdkit.libs/RDKitMolInteractionFields-668ec197d946521075218e34a9ff34d6.dll +0 -0
- rdkit.libs/RDKitMolInterchange-6d25cf37c6c36775c589bd2d90a59586.dll +0 -0
- rdkit.libs/RDKitMolProcessing-bbf4175325797b5acbbb648849bde4d7.dll +0 -0
- rdkit.libs/RDKitMolStandardize-f1f46675cf72b683551258a27fdc940e.dll +0 -0
- rdkit.libs/RDKitMolTransforms-6d67c0dc040830430a00d9d579f5273b.dll +0 -0
- rdkit.libs/RDKitO3AAlign-1207a80a9e10ad75ccd065675ef15917.dll +0 -0
- rdkit.libs/RDKitPartialCharges-5e1e4c862a488644851d9a70efef27ca.dll +0 -0
- rdkit.libs/RDKitPubChemShape-a19fed25a797daba4e92c802169d334b.dll +0 -0
- rdkit.libs/RDKitRDBoost-2a8125f2604df86ba2d21a91e24a2076.dll +0 -0
- rdkit.libs/RDKitRDChemDrawLib-13b1464cfc59db7c2fd06243bbe4eb98.dll +0 -0
- rdkit.libs/RDKitRDChemDrawReactionLib-96bec2ccb94ddf5cd7bebfb473bf0e02.dll +0 -0
- rdkit.libs/RDKitRDGeneral-40c5b27c4ede2a5b5c54c9e96b70b660.dll +0 -0
- rdkit.libs/RDKitRDGeometryLib-088df7c7b2fd6f490f1d3c477af67b11.dll +0 -0
- rdkit.libs/RDKitRDInchiLib-5937ef0d0dc1c7cb42f1511d7bd9b7e8.dll +0 -0
- rdkit.libs/RDKitRDStreams-19beabce46cb07e6f6ce15d7757ad672.dll +0 -0
- rdkit.libs/RDKitRGroupDecomposition-ff5145fda9edcd6daa24b155a0a08e27.dll +0 -0
- rdkit.libs/RDKitRascalMCES-1cfe45f4cfab8951eb6a324eebd01193.dll +0 -0
- rdkit.libs/RDKitReducedGraphs-5f413504b2b1cfb5dbc886fa57f3225d.dll +0 -0
- rdkit.libs/RDKitRingDecomposerLib-3f58706499f23bf86244d16a0cde5a4d.dll +0 -0
- rdkit.libs/RDKitSLNParse-a7838a7ac973162b7f195146e47c10e3.dll +0 -0
- rdkit.libs/RDKitScaffoldNetwork-963c8543495c9135f124928982195621.dll +0 -0
- rdkit.libs/RDKitShapeHelpers-ee55f877ec6ba16ae931a388b333a72b.dll +0 -0
- rdkit.libs/RDKitSimDivPickers-0eb25b37efea68b8978a03ad7576763d.dll +0 -0
- rdkit.libs/RDKitSmilesParse-d9e8f92d990666dd9e9bb6586029d6be.dll +0 -0
- rdkit.libs/RDKitSubgraphs-6cb524e536a871cbdaf2f5aafcc2d6c2.dll +0 -0
- rdkit.libs/RDKitSubstructLibrary-d8f06d602795ea6db846d14044237766.dll +0 -0
- rdkit.libs/RDKitSubstructMatch-ca311849074a068ff1edfc286649295d.dll +0 -0
- rdkit.libs/RDKitSynthonSpaceSearch-51101fbbdf3fd3cd5be00c0ab6cee220.dll +0 -0
- rdkit.libs/RDKitTautomerQuery-7df021c5786a8ce95b409ca507a266ae.dll +0 -0
- rdkit.libs/RDKitTrajectory-977a1dd1d48546603b65c79b77fd7eff.dll +0 -0
- rdkit.libs/RDKitavalon_clib-3a077a274a2eb2ec353e4e9e88406eee.dll +0 -0
- rdkit.libs/RDKitcoordgen-045f65c70942c0d9ffdddb1149f111c7.dll +0 -0
- rdkit.libs/RDKitfreesasa_clib-76b8b76748f8a568a06208c1cf633317.dll +0 -0
- rdkit.libs/RDKitga-207f9a96c7e9f58cbd691d1960a3189b.dll +0 -0
- rdkit.libs/RDKithc-319fc15994193cef038f876c8ee8a37f.dll +0 -0
- rdkit.libs/RDKitmaeparser-f8903652653fc892c9c1085e4ae07ead.dll +0 -0
- rdkit.libs/RDKitpubchem_align3d-c1a657ceee8be9d159e2671c69eefcb5.dll +0 -0
- rdkit.libs/boost_iostreams-fc27a577f565dc6b8a557afba178a77c.dll +0 -0
- rdkit.libs/boost_numpy315-42b669e74dcf04927b3becf7a682730e.dll +0 -0
- rdkit.libs/boost_python315-82b1af20247be136bb13463bc7c15c11.dll +0 -0
- rdkit.libs/boost_serialization-8c2b6b3d5949bde58bf4845734b27a76.dll +0 -0
- rdkit.libs/brotlicommon-703cd1c44d30acebdadc1e6eec27f387.dll +0 -0
- rdkit.libs/brotlidec-f74ecc143455368254fd773f0e65717a.dll +0 -0
- rdkit.libs/bz2-d73159569cd2083f70a4365022e8d3b2.dll +0 -0
- rdkit.libs/cairo-2-abeaf9ae3d922c9967b19629c45f35a8.dll +0 -0
- rdkit.libs/fontconfig-1-895f80d8164de435fa441fab34b9560c.dll +0 -0
- rdkit.libs/freetype-9660de65a65c21b19d3dc8815bc9cad9.dll +0 -0
- rdkit.libs/libexpat-95e72ebb197714a784c7f4cab06cd262.dll +0 -0
- rdkit.libs/libpng16-cd75b3de1ae2e7b4033ad9efc0c02234.dll +0 -0
- rdkit.libs/msvcp140-0fa7eb792d3fbcf2233e4ea47e9144b9.dll +0 -0
- rdkit.libs/pixman-1-0-7b47912d6b56d644bdf9fe43ad5ea08a.dll +0 -0
- rdkit.libs/z-3078df27d7643ce11017a85dd4263d79.dll +0 -0
rdkit/Avalon/__init__.py
ADDED
|
File without changes
|
|
Binary file
|
rdkit/Chem/AllChem.py
ADDED
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (C) 2006-2022 greg Landrum and other RDKit contributors
|
|
3
|
+
#
|
|
4
|
+
# @@ All Rights Reserved @@
|
|
5
|
+
# This file is part of the RDKit.
|
|
6
|
+
# The contents are covered by the terms of the BSD license
|
|
7
|
+
# which is included in the file license.txt, found at the root
|
|
8
|
+
# of the RDKit source tree.
|
|
9
|
+
#
|
|
10
|
+
""" Import all RDKit chemistry modules
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
import sys
|
|
14
|
+
import warnings
|
|
15
|
+
from collections import namedtuple
|
|
16
|
+
|
|
17
|
+
import numpy
|
|
18
|
+
|
|
19
|
+
from rdkit import DataStructs, ForceField, RDConfig, rdBase
|
|
20
|
+
from rdkit.Chem import *
|
|
21
|
+
from rdkit.Chem.ChemicalFeatures import *
|
|
22
|
+
from rdkit.Chem.EnumerateStereoisomers import (EnumerateStereoisomers, StereoEnumerationOptions)
|
|
23
|
+
from rdkit.Chem.rdChemReactions import *
|
|
24
|
+
from rdkit.Chem.rdDepictor import *
|
|
25
|
+
from rdkit.Chem.rdDistGeom import *
|
|
26
|
+
from rdkit.Chem.rdFingerprintGenerator import *
|
|
27
|
+
from rdkit.Chem.rdForceFieldHelpers import *
|
|
28
|
+
from rdkit.Chem.rdMolAlign import *
|
|
29
|
+
from rdkit.Chem.rdMolDescriptors import *
|
|
30
|
+
from rdkit.Chem.rdMolEnumerator import *
|
|
31
|
+
from rdkit.Chem.rdMolTransforms import *
|
|
32
|
+
from rdkit.Chem.rdPartialCharges import *
|
|
33
|
+
from rdkit.Chem.rdqueries import *
|
|
34
|
+
from rdkit.Chem.rdReducedGraphs import *
|
|
35
|
+
from rdkit.Chem.rdShapeHelpers import *
|
|
36
|
+
from rdkit.Geometry import rdGeometry
|
|
37
|
+
from rdkit.RDLogger import logger
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
from rdkit.Chem.rdSLNParse import *
|
|
41
|
+
except ImportError:
|
|
42
|
+
pass
|
|
43
|
+
|
|
44
|
+
Mol.Compute2DCoords = Compute2DCoords
|
|
45
|
+
Mol.ComputeGasteigerCharges = ComputeGasteigerCharges
|
|
46
|
+
logger = logger()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def TransformMol(mol, tform, confId=-1, keepConfs=False):
|
|
50
|
+
""" Applies the transformation (usually a 4x4 double matrix) to a molecule
|
|
51
|
+
|
|
52
|
+
Arguments:
|
|
53
|
+
- mol: the molecule to be transformed
|
|
54
|
+
- tform: the transformation to apply
|
|
55
|
+
- confId: (optional) the conformer id to transform
|
|
56
|
+
- keepConfs: (optional) if keepConfs is False then all but that conformer are removed
|
|
57
|
+
|
|
58
|
+
"""
|
|
59
|
+
refConf = mol.GetConformer(confId)
|
|
60
|
+
TransformConformer(refConf, tform)
|
|
61
|
+
if not keepConfs:
|
|
62
|
+
if confId == -1:
|
|
63
|
+
confId = 0
|
|
64
|
+
allConfIds = [c.GetId() for c in mol.GetConformers()]
|
|
65
|
+
for cid in allConfIds:
|
|
66
|
+
if not cid == confId:
|
|
67
|
+
mol.RemoveConformer(cid)
|
|
68
|
+
# reset the conf Id to zero since there is only one conformer left
|
|
69
|
+
mol.GetConformer(confId).SetId(0)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def ComputeMolShape(mol, confId=-1, boxDim=(20, 20, 20), spacing=0.5, **kwargs):
|
|
73
|
+
""" returns a grid representation of the molecule's shape
|
|
74
|
+
|
|
75
|
+
Arguments:
|
|
76
|
+
- mol: the molecule
|
|
77
|
+
- confId: (optional) the conformer id to use
|
|
78
|
+
- boxDim: (optional) the dimensions of the box to use
|
|
79
|
+
- spacing: (optional) the spacing to use
|
|
80
|
+
- kwargs: additional arguments to pass to the encoding function
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
a UniformGrid3D object
|
|
84
|
+
"""
|
|
85
|
+
res = rdGeometry.UniformGrid3D(boxDim[0], boxDim[1], boxDim[2], spacing=spacing)
|
|
86
|
+
EncodeShape(mol, res, confId, **kwargs)
|
|
87
|
+
return res
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def ComputeMolVolume(mol, confId=-1, gridSpacing=0.2, boxMargin=2.0):
|
|
91
|
+
""" Calculates the volume of a particular conformer of a molecule
|
|
92
|
+
based on a grid-encoding of the molecular shape.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Arguments:
|
|
96
|
+
- mol: the molecule
|
|
97
|
+
- confId: (optional) the conformer id to use
|
|
98
|
+
- gridSpacing: (optional) the spacing to use
|
|
99
|
+
- boxMargin: (optional) the margin to use around the molecule
|
|
100
|
+
|
|
101
|
+
A bit of demo as well as a test of github #1883:
|
|
102
|
+
|
|
103
|
+
>>> from rdkit import Chem
|
|
104
|
+
>>> from rdkit.Chem import AllChem
|
|
105
|
+
>>> mol = Chem.AddHs(Chem.MolFromSmiles('C'))
|
|
106
|
+
>>> AllChem.EmbedMolecule(mol)
|
|
107
|
+
0
|
|
108
|
+
>>> ComputeMolVolume(mol)
|
|
109
|
+
28...
|
|
110
|
+
>>> mol = Chem.AddHs(Chem.MolFromSmiles('O'))
|
|
111
|
+
>>> AllChem.EmbedMolecule(mol)
|
|
112
|
+
0
|
|
113
|
+
>>> ComputeMolVolume(mol)
|
|
114
|
+
19...
|
|
115
|
+
|
|
116
|
+
"""
|
|
117
|
+
mol = rdchem.Mol(mol)
|
|
118
|
+
conf = mol.GetConformer(confId)
|
|
119
|
+
CanonicalizeConformer(conf, ignoreHs=False)
|
|
120
|
+
box = ComputeConfBox(conf)
|
|
121
|
+
sideLen = (box[1].x - box[0].x + 2 * boxMargin, box[1].y - box[0].y + 2 * boxMargin,
|
|
122
|
+
box[1].z - box[0].z + 2 * boxMargin)
|
|
123
|
+
shape = rdGeometry.UniformGrid3D(sideLen[0], sideLen[1], sideLen[2], spacing=gridSpacing)
|
|
124
|
+
EncodeShape(mol, shape, confId, ignoreHs=False, vdwScale=1.0)
|
|
125
|
+
voxelVol = gridSpacing**3
|
|
126
|
+
occVect = shape.GetOccupancyVect()
|
|
127
|
+
voxels = [1 for x in occVect if x == 3]
|
|
128
|
+
vol = voxelVol * len(voxels)
|
|
129
|
+
return vol
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def GetConformerRMS(mol, confId1, confId2, atomIds=None, prealigned=False):
|
|
133
|
+
""" Returns the RMS between two conformations.
|
|
134
|
+
By default, the conformers will be aligned to the first conformer
|
|
135
|
+
before the RMS calculation and, as a side-effect, the second will be left
|
|
136
|
+
in the aligned state.
|
|
137
|
+
|
|
138
|
+
Arguments:
|
|
139
|
+
- mol: the molecule
|
|
140
|
+
- confId1: the id of the first conformer
|
|
141
|
+
- confId2: the id of the second conformer
|
|
142
|
+
- atomIds: (optional) list of atom ids to use a points for
|
|
143
|
+
alingment - defaults to all atoms
|
|
144
|
+
- prealigned: (optional) by default the conformers are assumed
|
|
145
|
+
be unaligned and the second conformer be aligned
|
|
146
|
+
to the first
|
|
147
|
+
|
|
148
|
+
"""
|
|
149
|
+
# align the conformers if necessary
|
|
150
|
+
# Note: the reference conformer is always the first one
|
|
151
|
+
if not prealigned:
|
|
152
|
+
if atomIds:
|
|
153
|
+
AlignMolConformers(mol, confIds=[confId1, confId2], atomIds=atomIds)
|
|
154
|
+
else:
|
|
155
|
+
AlignMolConformers(mol, confIds=[confId1, confId2])
|
|
156
|
+
|
|
157
|
+
# calculate the RMS between the two conformations
|
|
158
|
+
conf1 = mol.GetConformer(id=confId1)
|
|
159
|
+
conf2 = mol.GetConformer(id=confId2)
|
|
160
|
+
ssr = 0
|
|
161
|
+
for i in range(mol.GetNumAtoms()):
|
|
162
|
+
d = conf1.GetAtomPosition(i).Distance(conf2.GetAtomPosition(i))
|
|
163
|
+
ssr += d * d
|
|
164
|
+
ssr /= mol.GetNumAtoms()
|
|
165
|
+
return numpy.sqrt(ssr)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def GetConformerRMSMatrix(mol, atomIds=None, prealigned=False):
|
|
169
|
+
""" Returns the RMS matrix of the conformers of a molecule.
|
|
170
|
+
As a side-effect, the conformers will be aligned to the first
|
|
171
|
+
conformer (i.e. the reference) and will left in the aligned state.
|
|
172
|
+
|
|
173
|
+
Arguments:
|
|
174
|
+
- mol: the molecule
|
|
175
|
+
- atomIds: (optional) list of atom ids to use a points for
|
|
176
|
+
alingment - defaults to all atoms
|
|
177
|
+
- prealigned: (optional) by default the conformers are assumed
|
|
178
|
+
be unaligned and will therefore be aligned to the
|
|
179
|
+
first conformer
|
|
180
|
+
|
|
181
|
+
Note that the returned RMS matrix is symmetrical, i.e. it is the
|
|
182
|
+
lower half of the matrix, e.g. for 5 conformers::
|
|
183
|
+
|
|
184
|
+
rmsmatrix = [ a,
|
|
185
|
+
b, c,
|
|
186
|
+
d, e, f,
|
|
187
|
+
g, h, i, j]
|
|
188
|
+
|
|
189
|
+
where a is the RMS between conformers 0 and 1, b is the RMS between
|
|
190
|
+
conformers 0 and 2, etc.
|
|
191
|
+
This way it can be directly used as distance matrix in e.g. Butina
|
|
192
|
+
clustering.
|
|
193
|
+
|
|
194
|
+
"""
|
|
195
|
+
# if necessary, align the conformers
|
|
196
|
+
# Note: the reference conformer is always the first one
|
|
197
|
+
rmsvals = []
|
|
198
|
+
confIds = [conf.GetId() for conf in mol.GetConformers()]
|
|
199
|
+
if not prealigned:
|
|
200
|
+
if atomIds:
|
|
201
|
+
AlignMolConformers(mol, atomIds=atomIds, RMSlist=rmsvals)
|
|
202
|
+
else:
|
|
203
|
+
AlignMolConformers(mol, RMSlist=rmsvals)
|
|
204
|
+
else: # already prealigned
|
|
205
|
+
for i in range(1, len(confIds)):
|
|
206
|
+
rmsvals.append(
|
|
207
|
+
GetConformerRMS(mol, confIds[0], confIds[i], atomIds=atomIds, prealigned=prealigned))
|
|
208
|
+
# loop over the conformations (except the reference one)
|
|
209
|
+
cmat = []
|
|
210
|
+
for i in range(1, len(confIds)):
|
|
211
|
+
cmat.append(rmsvals[i - 1])
|
|
212
|
+
for j in range(1, i):
|
|
213
|
+
cmat.append(GetConformerRMS(mol, confIds[i], confIds[j], atomIds=atomIds, prealigned=True))
|
|
214
|
+
return cmat
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def EnumerateLibraryFromReaction(reaction, sidechainSets, returnReactants=False):
|
|
218
|
+
""" Returns a generator for the virtual library defined by
|
|
219
|
+
a reaction and a sequence of sidechain sets
|
|
220
|
+
|
|
221
|
+
Arguments:
|
|
222
|
+
- reaction: the reaction
|
|
223
|
+
- sidechainSets: a sequence of sequences of sidechains
|
|
224
|
+
- returnReactants: (optional) if True, the generator will return information about the reactants
|
|
225
|
+
as well as the products
|
|
226
|
+
|
|
227
|
+
>>> from rdkit import Chem
|
|
228
|
+
>>> from rdkit.Chem import AllChem
|
|
229
|
+
>>> s1=[Chem.MolFromSmiles(x) for x in ('NC','NCC')]
|
|
230
|
+
>>> s2=[Chem.MolFromSmiles(x) for x in ('OC=O','OC(=O)C')]
|
|
231
|
+
>>> rxn = AllChem.ReactionFromSmarts('[O:2]=[C:1][OH].[N:3]>>[O:2]=[C:1][N:3]')
|
|
232
|
+
>>> r = AllChem.EnumerateLibraryFromReaction(rxn,[s2,s1])
|
|
233
|
+
>>> [Chem.MolToSmiles(x[0]) for x in list(r)]
|
|
234
|
+
['CNC=O', 'CCNC=O', 'CNC(C)=O', 'CCNC(C)=O']
|
|
235
|
+
|
|
236
|
+
Note that this is all done in a lazy manner, so "infinitely" large libraries can
|
|
237
|
+
be done without worrying about running out of memory. Your patience will run out first:
|
|
238
|
+
|
|
239
|
+
Define a set of 10000 amines:
|
|
240
|
+
|
|
241
|
+
>>> amines = (Chem.MolFromSmiles('N'+'C'*x) for x in range(10000))
|
|
242
|
+
|
|
243
|
+
... a set of 10000 acids
|
|
244
|
+
|
|
245
|
+
>>> acids = (Chem.MolFromSmiles('OC(=O)'+'C'*x) for x in range(10000))
|
|
246
|
+
|
|
247
|
+
... now the virtual library (1e8 compounds in principle):
|
|
248
|
+
|
|
249
|
+
>>> r = AllChem.EnumerateLibraryFromReaction(rxn,[acids,amines])
|
|
250
|
+
|
|
251
|
+
... look at the first 4 compounds:
|
|
252
|
+
|
|
253
|
+
>>> [Chem.MolToSmiles(next(r)[0]) for x in range(4)]
|
|
254
|
+
['NC=O', 'CNC=O', 'CCNC=O', 'CCCNC=O']
|
|
255
|
+
|
|
256
|
+
Here's what returnReactants does:
|
|
257
|
+
|
|
258
|
+
>>> l = list(AllChem.EnumerateLibraryFromReaction(rxn,[s2,s1],returnReactants=True))
|
|
259
|
+
>>> type(l[0])
|
|
260
|
+
<class 'rdkit.Chem.AllChem.ProductReactants'>
|
|
261
|
+
>>> [Chem.MolToSmiles(x) for x in l[0].reactants]
|
|
262
|
+
['O=CO', 'CN']
|
|
263
|
+
>>> [Chem.MolToSmiles(x) for x in l[0].products]
|
|
264
|
+
['CNC=O']
|
|
265
|
+
|
|
266
|
+
"""
|
|
267
|
+
if len(sidechainSets) != reaction.GetNumReactantTemplates():
|
|
268
|
+
raise ValueError('%d sidechains provided, %d required' %
|
|
269
|
+
(len(sidechainSets), reaction.GetNumReactantTemplates()))
|
|
270
|
+
|
|
271
|
+
def _combiEnumerator(items, depth=0):
|
|
272
|
+
for item in items[depth]:
|
|
273
|
+
if depth + 1 < len(items):
|
|
274
|
+
v = _combiEnumerator(items, depth + 1)
|
|
275
|
+
for entry in v:
|
|
276
|
+
l = [item]
|
|
277
|
+
l.extend(entry)
|
|
278
|
+
yield l
|
|
279
|
+
else:
|
|
280
|
+
yield [item]
|
|
281
|
+
|
|
282
|
+
ProductReactants = namedtuple('ProductReactants', 'products,reactants')
|
|
283
|
+
for chains in _combiEnumerator(sidechainSets):
|
|
284
|
+
prodSets = reaction.RunReactants(chains)
|
|
285
|
+
for prods in prodSets:
|
|
286
|
+
if returnReactants:
|
|
287
|
+
yield ProductReactants(prods, chains)
|
|
288
|
+
else:
|
|
289
|
+
yield prods
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def ConstrainedEmbed(mol, core, useTethers=True, coreConfId=-1, randomseed=2342,
|
|
293
|
+
getForceField=UFFGetMoleculeForceField, **kwargs):
|
|
294
|
+
""" generates an embedding of a molecule where part of the molecule
|
|
295
|
+
is constrained to have particular coordinates
|
|
296
|
+
|
|
297
|
+
Arguments
|
|
298
|
+
- mol: the molecule to embed
|
|
299
|
+
- core: the molecule to use as a source of constraints
|
|
300
|
+
- useTethers: (optional) if True, the final conformation will be
|
|
301
|
+
optimized subject to a series of extra forces that pull the
|
|
302
|
+
matching atoms to the positions of the core atoms. Otherwise
|
|
303
|
+
simple distance constraints based on the core atoms will be
|
|
304
|
+
used in the optimization.
|
|
305
|
+
- coreConfId: (optional) id of the core conformation to use
|
|
306
|
+
- randomSeed: (optional) seed for the random number generator
|
|
307
|
+
- getForceField: (optional) a function to use to get a force field
|
|
308
|
+
for the final cleanup
|
|
309
|
+
- kwargs: additional arguments to pass to the embedding function
|
|
310
|
+
|
|
311
|
+
An example, start by generating a template with a 3D structure:
|
|
312
|
+
|
|
313
|
+
>>> from rdkit.Chem import AllChem
|
|
314
|
+
>>> template = AllChem.MolFromSmiles("c1nn(Cc2ccccc2)cc1")
|
|
315
|
+
>>> AllChem.EmbedMolecule(template)
|
|
316
|
+
0
|
|
317
|
+
>>> AllChem.UFFOptimizeMolecule(template)
|
|
318
|
+
0
|
|
319
|
+
|
|
320
|
+
Here's a molecule:
|
|
321
|
+
|
|
322
|
+
>>> mol = AllChem.MolFromSmiles("c1nn(Cc2ccccc2)cc1-c3ccccc3")
|
|
323
|
+
|
|
324
|
+
Now do the constrained embedding
|
|
325
|
+
|
|
326
|
+
>>> mol = AllChem.ConstrainedEmbed(mol, template)
|
|
327
|
+
|
|
328
|
+
Demonstrate that the positions are nearly the same with template:
|
|
329
|
+
|
|
330
|
+
>>> import math
|
|
331
|
+
>>> molp = mol.GetConformer().GetAtomPosition(0)
|
|
332
|
+
>>> templatep = template.GetConformer().GetAtomPosition(0)
|
|
333
|
+
>>> all(math.isclose(v, 0.0, abs_tol=0.01) for v in molp-templatep)
|
|
334
|
+
True
|
|
335
|
+
>>> molp = mol.GetConformer().GetAtomPosition(1)
|
|
336
|
+
>>> templatep = template.GetConformer().GetAtomPosition(1)
|
|
337
|
+
>>> all(math.isclose(v, 0.0, abs_tol=0.01) for v in molp-templatep)
|
|
338
|
+
True
|
|
339
|
+
|
|
340
|
+
"""
|
|
341
|
+
match = mol.GetSubstructMatch(core)
|
|
342
|
+
if not match:
|
|
343
|
+
raise ValueError("molecule doesn't match the core")
|
|
344
|
+
coordMap = {}
|
|
345
|
+
coreConf = core.GetConformer(coreConfId)
|
|
346
|
+
for i, idxI in enumerate(match):
|
|
347
|
+
corePtI = coreConf.GetAtomPosition(i)
|
|
348
|
+
coordMap[idxI] = corePtI
|
|
349
|
+
|
|
350
|
+
ci = EmbedMolecule(mol, coordMap=coordMap, randomSeed=randomseed, **kwargs)
|
|
351
|
+
if ci < 0:
|
|
352
|
+
raise ValueError('Could not embed molecule.')
|
|
353
|
+
|
|
354
|
+
algMap = [(j, i) for i, j in enumerate(match)]
|
|
355
|
+
|
|
356
|
+
if not useTethers:
|
|
357
|
+
# clean up the conformation
|
|
358
|
+
ff = getForceField(mol, confId=0)
|
|
359
|
+
for i, idxI in enumerate(match):
|
|
360
|
+
for j in range(i + 1, len(match)):
|
|
361
|
+
idxJ = match[j]
|
|
362
|
+
d = coordMap[idxI].Distance(coordMap[idxJ])
|
|
363
|
+
ff.AddDistanceConstraint(idxI, idxJ, d, d, 100.)
|
|
364
|
+
ff.Initialize()
|
|
365
|
+
n = 4
|
|
366
|
+
more = ff.Minimize()
|
|
367
|
+
while more and n:
|
|
368
|
+
more = ff.Minimize()
|
|
369
|
+
n -= 1
|
|
370
|
+
# rotate the embedded conformation onto the core:
|
|
371
|
+
rms = AlignMol(mol, core, atomMap=algMap)
|
|
372
|
+
else:
|
|
373
|
+
# rotate the embedded conformation onto the core:
|
|
374
|
+
rms = AlignMol(mol, core, atomMap=algMap)
|
|
375
|
+
ff = getForceField(mol, confId=0)
|
|
376
|
+
conf = core.GetConformer()
|
|
377
|
+
for i in range(core.GetNumAtoms()):
|
|
378
|
+
p = conf.GetAtomPosition(i)
|
|
379
|
+
pIdx = ff.AddExtraPoint(p.x, p.y, p.z, fixed=True) - 1
|
|
380
|
+
ff.AddDistanceConstraint(pIdx, match[i], 0, 0, 100.)
|
|
381
|
+
ff.Initialize()
|
|
382
|
+
n = 4
|
|
383
|
+
more = ff.Minimize(energyTol=1e-4, forceTol=1e-3)
|
|
384
|
+
while more and n:
|
|
385
|
+
more = ff.Minimize(energyTol=1e-4, forceTol=1e-3)
|
|
386
|
+
n -= 1
|
|
387
|
+
# realign
|
|
388
|
+
rms = AlignMol(mol, core, atomMap=algMap)
|
|
389
|
+
mol.SetProp('EmbedRMS', str(rms))
|
|
390
|
+
return mol
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
def AssignBondOrdersFromTemplate(refmol, mol):
|
|
394
|
+
""" assigns bond orders to a molecule based on the
|
|
395
|
+
bond orders in a template molecule
|
|
396
|
+
|
|
397
|
+
Arguments
|
|
398
|
+
- refmol: the template molecule
|
|
399
|
+
- mol: the molecule to assign bond orders to
|
|
400
|
+
|
|
401
|
+
An example, start by generating a template from a SMILES
|
|
402
|
+
and read in the PDB structure of the molecule
|
|
403
|
+
|
|
404
|
+
>>> import os
|
|
405
|
+
>>> from rdkit.Chem import AllChem
|
|
406
|
+
>>> template = AllChem.MolFromSmiles("CN1C(=NC(C1=O)(c2ccccc2)c3ccccc3)N")
|
|
407
|
+
>>> mol = AllChem.MolFromPDBFile(os.path.join(RDConfig.RDCodeDir, 'Chem', 'test_data', '4DJU_lig.pdb'))
|
|
408
|
+
>>> len([1 for b in template.GetBonds() if b.GetBondTypeAsDouble() == 1.0])
|
|
409
|
+
8
|
|
410
|
+
>>> len([1 for b in mol.GetBonds() if b.GetBondTypeAsDouble() == 1.0])
|
|
411
|
+
22
|
|
412
|
+
|
|
413
|
+
Now assign the bond orders based on the template molecule
|
|
414
|
+
|
|
415
|
+
>>> newMol = AllChem.AssignBondOrdersFromTemplate(template, mol)
|
|
416
|
+
>>> len([1 for b in newMol.GetBonds() if b.GetBondTypeAsDouble() == 1.0])
|
|
417
|
+
8
|
|
418
|
+
|
|
419
|
+
Note that the template molecule should have no explicit hydrogens
|
|
420
|
+
else the algorithm will fail.
|
|
421
|
+
|
|
422
|
+
It also works if there are different formal charges (this was github issue 235):
|
|
423
|
+
|
|
424
|
+
>>> template=AllChem.MolFromSmiles('CN(C)C(=O)Cc1ccc2c(c1)NC(=O)c3ccc(cc3N2)c4ccc(c(c4)OC)[N+](=O)[O-]')
|
|
425
|
+
>>> mol = AllChem.MolFromMolFile(os.path.join(RDConfig.RDCodeDir, 'Chem', 'test_data', '4FTR_lig.mol'))
|
|
426
|
+
>>> AllChem.MolToSmiles(mol)
|
|
427
|
+
'COC1CC(C2CCC3C(O)NC4CC(CC(O)N(C)C)CCC4NC3C2)CCC1N(O)O'
|
|
428
|
+
>>> newMol = AllChem.AssignBondOrdersFromTemplate(template, mol)
|
|
429
|
+
>>> AllChem.MolToSmiles(newMol)
|
|
430
|
+
'COc1cc(-c2ccc3c(c2)Nc2ccc(CC(=O)N(C)C)cc2NC3=O)ccc1[N+](=O)[O-]'
|
|
431
|
+
|
|
432
|
+
"""
|
|
433
|
+
refmol2 = rdchem.Mol(refmol)
|
|
434
|
+
mol2 = rdchem.Mol(mol)
|
|
435
|
+
# do the molecules match already?
|
|
436
|
+
matching = mol2.GetSubstructMatch(refmol2)
|
|
437
|
+
if not matching: # no, they don't match
|
|
438
|
+
# check if bonds of mol are SINGLE
|
|
439
|
+
for b in mol2.GetBonds():
|
|
440
|
+
if b.GetBondType() != BondType.SINGLE:
|
|
441
|
+
b.SetBondType(BondType.SINGLE)
|
|
442
|
+
b.SetIsAromatic(False)
|
|
443
|
+
# set the bonds of mol to SINGLE
|
|
444
|
+
for b in refmol2.GetBonds():
|
|
445
|
+
b.SetBondType(BondType.SINGLE)
|
|
446
|
+
b.SetIsAromatic(False)
|
|
447
|
+
# set atom charges to zero;
|
|
448
|
+
for a in refmol2.GetAtoms():
|
|
449
|
+
a.SetFormalCharge(0)
|
|
450
|
+
for a in mol2.GetAtoms():
|
|
451
|
+
a.SetFormalCharge(0)
|
|
452
|
+
|
|
453
|
+
matching = mol2.GetSubstructMatches(refmol2, uniquify=False)
|
|
454
|
+
# do the molecules match now?
|
|
455
|
+
if matching:
|
|
456
|
+
if len(matching) > 1:
|
|
457
|
+
logger.warning("More than one matching pattern found - picking one")
|
|
458
|
+
matching = matching[0]
|
|
459
|
+
# apply matching: set bond properties
|
|
460
|
+
for b in refmol.GetBonds():
|
|
461
|
+
atom1 = matching[b.GetBeginAtomIdx()]
|
|
462
|
+
atom2 = matching[b.GetEndAtomIdx()]
|
|
463
|
+
b2 = mol2.GetBondBetweenAtoms(atom1, atom2)
|
|
464
|
+
b2.SetBondType(b.GetBondType())
|
|
465
|
+
b2.SetIsAromatic(b.GetIsAromatic())
|
|
466
|
+
# apply matching: set atom properties
|
|
467
|
+
for a in refmol.GetAtoms():
|
|
468
|
+
a2 = mol2.GetAtomWithIdx(matching[a.GetIdx()])
|
|
469
|
+
a2.SetHybridization(a.GetHybridization())
|
|
470
|
+
a2.SetIsAromatic(a.GetIsAromatic())
|
|
471
|
+
a2.SetNumExplicitHs(a.GetNumExplicitHs())
|
|
472
|
+
a2.SetFormalCharge(a.GetFormalCharge())
|
|
473
|
+
SanitizeMol(mol2)
|
|
474
|
+
if hasattr(mol2, '__sssAtoms'):
|
|
475
|
+
mol2.__sssAtoms = None # we don't want all bonds highlighted
|
|
476
|
+
else:
|
|
477
|
+
raise ValueError("No matching found")
|
|
478
|
+
return mol2
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (C) 2004-2017 Greg Landrum and Rational Discovery LLC
|
|
3
|
+
#
|
|
4
|
+
# @@ All Rights Reserved @@
|
|
5
|
+
# This file is part of the RDKit.
|
|
6
|
+
# The contents are covered by the terms of the BSD license
|
|
7
|
+
# which is included in the file license.txt, found at the root
|
|
8
|
+
# of the RDKit source tree.
|
|
9
|
+
#
|
|
10
|
+
""" Contains an implementation of Atom-pair fingerprints, as
|
|
11
|
+
described in:
|
|
12
|
+
|
|
13
|
+
R.E. Carhart, D.H. Smith, R. Venkataraghavan;
|
|
14
|
+
"Atom Pairs as Molecular Features in Structure-Activity Studies:
|
|
15
|
+
Definition and Applications" JCICS 25, 64-73 (1985).
|
|
16
|
+
|
|
17
|
+
The fingerprints can be accessed through the following functions:
|
|
18
|
+
- GetAtomPairFingerprint
|
|
19
|
+
- GetHashedAtomPairFingerprint (identical to GetAtomPairFingerprint)
|
|
20
|
+
- GetAtomPairFingerprintAsIntVect
|
|
21
|
+
- GetAtomPairFingerprintAsBitVect
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
from rdkit import DataStructs
|
|
25
|
+
from rdkit.Chem import rdMolDescriptors
|
|
26
|
+
from rdkit.Chem.AtomPairs import Utils
|
|
27
|
+
from rdkit.Chem.rdMolDescriptors import (GetAtomPairFingerprint,
|
|
28
|
+
GetHashedAtomPairFingerprint)
|
|
29
|
+
|
|
30
|
+
GetAtomPairFingerprintAsIntVect = rdMolDescriptors.GetAtomPairFingerprint
|
|
31
|
+
|
|
32
|
+
numPathBits = rdMolDescriptors.AtomPairsParameters.numPathBits
|
|
33
|
+
_maxPathLen = (1 << numPathBits) - 1
|
|
34
|
+
numFpBits = numPathBits + 2 * rdMolDescriptors.AtomPairsParameters.codeSize
|
|
35
|
+
fpLen = 1 << numFpBits
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def pyScorePair(at1, at2, dist, atomCodes=None, includeChirality=False):
|
|
39
|
+
""" Returns a score for an individual atom pair.
|
|
40
|
+
|
|
41
|
+
>>> from rdkit import Chem
|
|
42
|
+
>>> m = Chem.MolFromSmiles('CCCCC')
|
|
43
|
+
>>> c1 = Utils.GetAtomCode(m.GetAtomWithIdx(0))
|
|
44
|
+
>>> c2 = Utils.GetAtomCode(m.GetAtomWithIdx(1))
|
|
45
|
+
>>> c3 = Utils.GetAtomCode(m.GetAtomWithIdx(2))
|
|
46
|
+
>>> t = 1 | min(c1,c2) << numPathBits | max(c1,c2) << (rdMolDescriptors.AtomPairsParameters.codeSize + numPathBits)
|
|
47
|
+
>>> pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1)==t
|
|
48
|
+
1
|
|
49
|
+
>>> pyScorePair(m.GetAtomWithIdx(1), m.GetAtomWithIdx(0), 1)==t
|
|
50
|
+
1
|
|
51
|
+
>>> t = 2 | min(c1,c3) << numPathBits | max(c1,c3) << (rdMolDescriptors.AtomPairsParameters.codeSize + numPathBits)
|
|
52
|
+
>>> pyScorePair(m.GetAtomWithIdx(0),m.GetAtomWithIdx(2),2)==t
|
|
53
|
+
1
|
|
54
|
+
>>> pyScorePair(m.GetAtomWithIdx(0),m.GetAtomWithIdx(2),2,
|
|
55
|
+
... atomCodes=(Utils.GetAtomCode(m.GetAtomWithIdx(0)), Utils.GetAtomCode(m.GetAtomWithIdx(2)))) == t
|
|
56
|
+
1
|
|
57
|
+
|
|
58
|
+
"""
|
|
59
|
+
if not atomCodes:
|
|
60
|
+
code1 = Utils.GetAtomCode(at1, includeChirality=includeChirality)
|
|
61
|
+
code2 = Utils.GetAtomCode(at2, includeChirality=includeChirality)
|
|
62
|
+
else:
|
|
63
|
+
code1, code2 = atomCodes
|
|
64
|
+
|
|
65
|
+
codeSize = rdMolDescriptors.AtomPairsParameters.codeSize
|
|
66
|
+
if includeChirality:
|
|
67
|
+
codeSize += rdMolDescriptors.AtomPairsParameters.numChiralBits
|
|
68
|
+
|
|
69
|
+
accum = int(dist) % _maxPathLen
|
|
70
|
+
accum |= min(code1, code2) << numPathBits
|
|
71
|
+
accum |= max(code1, code2) << (codeSize + numPathBits)
|
|
72
|
+
return accum
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def ExplainPairScore(score, includeChirality=False):
|
|
76
|
+
"""
|
|
77
|
+
>>> from rdkit import Chem
|
|
78
|
+
>>> m = Chem.MolFromSmiles('C=CC')
|
|
79
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1)
|
|
80
|
+
>>> ExplainPairScore(score)
|
|
81
|
+
(('C', 1, 1), 1, ('C', 2, 1))
|
|
82
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(2), 2)
|
|
83
|
+
>>> ExplainPairScore(score)
|
|
84
|
+
(('C', 1, 0), 2, ('C', 1, 1))
|
|
85
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(1), m.GetAtomWithIdx(2), 1)
|
|
86
|
+
>>> ExplainPairScore(score)
|
|
87
|
+
(('C', 1, 0), 1, ('C', 2, 1))
|
|
88
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(2), m.GetAtomWithIdx(1), 1)
|
|
89
|
+
>>> ExplainPairScore(score)
|
|
90
|
+
(('C', 1, 0), 1, ('C', 2, 1))
|
|
91
|
+
|
|
92
|
+
We can optionally deal with chirality too
|
|
93
|
+
>>> m = Chem.MolFromSmiles('C[C@H](F)Cl')
|
|
94
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1)
|
|
95
|
+
>>> ExplainPairScore(score)
|
|
96
|
+
(('C', 1, 0), 1, ('C', 3, 0))
|
|
97
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1, includeChirality=True)
|
|
98
|
+
>>> ExplainPairScore(score, includeChirality=True)
|
|
99
|
+
(('C', 1, 0, ''), 1, ('C', 3, 0, 'R'))
|
|
100
|
+
>>> m = Chem.MolFromSmiles('F[C@@H](Cl)[C@H](F)Cl')
|
|
101
|
+
>>> score = pyScorePair(m.GetAtomWithIdx(1), m.GetAtomWithIdx(3), 1, includeChirality=True)
|
|
102
|
+
>>> ExplainPairScore(score, includeChirality=True)
|
|
103
|
+
(('C', 3, 0, 'R'), 1, ('C', 3, 0, 'S'))
|
|
104
|
+
|
|
105
|
+
"""
|
|
106
|
+
codeSize = rdMolDescriptors.AtomPairsParameters.codeSize
|
|
107
|
+
if includeChirality:
|
|
108
|
+
codeSize += rdMolDescriptors.AtomPairsParameters.numChiralBits
|
|
109
|
+
|
|
110
|
+
codeMask = (1 << codeSize) - 1
|
|
111
|
+
pathMask = (1 << numPathBits) - 1
|
|
112
|
+
dist = score & pathMask
|
|
113
|
+
|
|
114
|
+
score = score >> numPathBits
|
|
115
|
+
code1 = score & codeMask
|
|
116
|
+
score = score >> codeSize
|
|
117
|
+
code2 = score & codeMask
|
|
118
|
+
|
|
119
|
+
return (Utils.ExplainAtomCode(code1, includeChirality=includeChirality), dist,
|
|
120
|
+
Utils.ExplainAtomCode(code2, includeChirality=includeChirality))
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def GetAtomPairFingerprintAsBitVect(mol):
|
|
124
|
+
""" Returns the Atom-pair fingerprint for a molecule as
|
|
125
|
+
a SparseBitVect. Note that this doesn't match the standard
|
|
126
|
+
definition of atom pairs, which uses counts of the
|
|
127
|
+
pairs, not just their presence.
|
|
128
|
+
|
|
129
|
+
**Arguments**:
|
|
130
|
+
|
|
131
|
+
- mol: a molecule
|
|
132
|
+
|
|
133
|
+
**Returns**: a SparseBitVect
|
|
134
|
+
|
|
135
|
+
>>> from rdkit import Chem
|
|
136
|
+
>>> m = Chem.MolFromSmiles('CCC')
|
|
137
|
+
>>> v = [pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1),
|
|
138
|
+
... pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(2), 2),
|
|
139
|
+
... ]
|
|
140
|
+
>>> v.sort()
|
|
141
|
+
>>> fp = GetAtomPairFingerprintAsBitVect(m)
|
|
142
|
+
>>> list(fp.GetOnBits()) == v
|
|
143
|
+
True
|
|
144
|
+
|
|
145
|
+
"""
|
|
146
|
+
res = DataStructs.SparseBitVect(fpLen)
|
|
147
|
+
fp = rdMolDescriptors.GetAtomPairFingerprint(mol)
|
|
148
|
+
for val in fp.GetNonzeroElements():
|
|
149
|
+
res.SetBit(val)
|
|
150
|
+
return res
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# ------------------------------------
|
|
154
|
+
#
|
|
155
|
+
# doctest boilerplate
|
|
156
|
+
#
|
|
157
|
+
def _runDoctests(verbose=None): # pragma: nocover
|
|
158
|
+
import doctest
|
|
159
|
+
import sys
|
|
160
|
+
failed, _ = doctest.testmod(optionflags=doctest.ELLIPSIS, verbose=verbose)
|
|
161
|
+
sys.exit(failed)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
if __name__ == '__main__': # pragma: nocover
|
|
165
|
+
_runDoctests()
|