From a6214aaf6bed6248e40d93488b410ee511c4e836 Mon Sep 17 00:00:00 2001 From: ghutchis Date: Sun, 17 Dec 2023 23:37:10 +0000 Subject: [PATCH] deploy: 38943a70e0539abe9c36503515598289c3d440ea --- .../docs/3DStructureGen/Overview.doctree | Bin 0 -> 3486 bytes .../3DStructureGen/SingleConformer.doctree | Bin 0 -> 27388 bytes .../3DStructureGen/multipleconformers.doctree | Bin 0 -> 22708 bytes .../docs/Aromaticity/Aromaticity.doctree | Bin 0 -> 33765 bytes .doctrees/docs/Charges/charges.doctree | Bin 0 -> 4601 bytes .doctrees/docs/Cheminf101/basics.doctree | Bin 0 -> 19589 bytes .doctrees/docs/Cheminf101/index.doctree | Bin 0 -> 18507 bytes .../docs/Cheminf101/registration.doctree | Bin 0 -> 17178 bytes .doctrees/docs/Cheminf101/represent.doctree | Bin 0 -> 73728 bytes .doctrees/docs/Cheminf101/search.doctree | Bin 0 -> 19282 bytes .doctrees/docs/Cheminf101/similarity.doctree | Bin 0 -> 17705 bytes .../docs/Command-line_tools/Rosetta.doctree | Bin 0 -> 60705 bytes .../docs/Command-line_tools/babel.doctree | Bin 0 -> 158018 bytes .../docs/Contributing/Contributing.doctree | Bin 0 -> 3071 bytes .../Contributing/DevBestPractices.doctree | Bin 0 -> 49731 bytes .../docs/Contributing/Documentation.doctree | Bin 0 -> 15017 bytes .doctrees/docs/Contributing/Overview.doctree | Bin 0 -> 12612 bytes .../Contributing/SoftwareArchaeology.doctree | Bin 0 -> 16765 bytes .doctrees/docs/Contributing/Testing.doctree | Bin 0 -> 41456 bytes .doctrees/docs/Depiction/depiction.doctree | Bin 0 -> 12880 bytes .../docs/Descriptors/descriptors.doctree | Bin 0 -> 11097 bytes .doctrees/docs/Features/Radicals.doctree | Bin 0 -> 30832 bytes .../FileFormats/2D_drawing_Formats.doctree | Bin 0 -> 3578 bytes .../FileFormats/3D_viewer_Formats.doctree | Bin 0 -> 3856 bytes .../FileFormats/ABINIT_Output_Format.doctree | Bin 0 -> 4739 bytes .../FileFormats/ACES_input_format.doctree | Bin 0 -> 3584 bytes .../FileFormats/ACES_output_format.doctree | Bin 0 -> 5058 bytes .doctrees/docs/FileFormats/ACR_format.doctree | Bin 0 -> 4314 bytes .../ADF_Band_output_format.doctree | Bin 0 -> 3298 bytes .../ADF_DFTB_output_format.doctree | Bin 0 -> 3298 bytes .../FileFormats/ADF_TAPE41_format.doctree | Bin 0 -> 5084 bytes .../ADF_cartesian_input_format.doctree | Bin 0 -> 4783 bytes .../FileFormats/ADF_output_format.doctree | Bin 0 -> 4712 bytes .../docs/FileFormats/ASCII_format.doctree | Bin 0 -> 10039 bytes ...SI_Biosym_or_Insight_II_CAR_format.doctree | Bin 0 -> 4965 bytes ...celrys_or_MSI_Cerius_II_MSI_format.doctree | Bin 0 -> 3396 bytes .../Accelrys_or_MSI_Quanta_CSR_format.doctree | Bin 0 -> 3371 bytes .../docs/FileFormats/Alchemy_format.doctree | Bin 0 -> 2992 bytes .../FileFormats/Amber_Prep_format.doctree | Bin 0 -> 4704 bytes .../FileFormats/AutoDock_PDBQT_format.doctree | Bin 0 -> 9759 bytes .../FileFormats/Ball_and_Stick_format.doctree | Bin 0 -> 3051 bytes .../Biological_data_Formats.doctree | Bin 0 -> 3449 bytes .../CAChe_MolStruct_format.doctree | Bin 0 -> 3311 bytes .../docs/FileFormats/CASTEP_format.doctree | Bin 0 -> 3436 bytes .doctrees/docs/FileFormats/CCC_format.doctree | Bin 0 -> 3174 bytes .../FileFormats/CML_Reaction_format.doctree | Bin 0 -> 10986 bytes .../docs/FileFormats/CSD_CSSR_format.doctree | Bin 0 -> 3225 bytes .../Cacao_Cartesian_format.doctree | Bin 0 -> 4528 bytes .../FileFormats/Cacao_Internal_format.doctree | Bin 0 -> 3287 bytes .../Canonical_SMILES_format.doctree | Bin 0 -> 11805 bytes .../Chem3D_Cartesian_1_format.doctree | Bin 0 -> 3095 bytes .../Chem3D_Cartesian_2_format.doctree | Bin 0 -> 3095 bytes .../docs/FileFormats/ChemDoodle_JSON.doctree | Bin 0 -> 7222 bytes .../FileFormats/ChemDraw_CDXML_format.doctree | Bin 0 -> 3336 bytes .../ChemDraw_Connection_Table_format.doctree | Bin 0 -> 3150 bytes .../ChemDraw_binary_format.doctree | Bin 0 -> 6627 bytes .../docs/FileFormats/ChemKin_format.doctree | Bin 0 -> 7192 bytes .../Chemical_Markup_Language.doctree | Bin 0 -> 18553 bytes .../Chemical_Resource_Kit_3D_format.doctree | Bin 0 -> 3153 bytes .../Chemical_Resource_Kit_diagram(2D).doctree | Bin 0 -> 3168 bytes .../docs/FileFormats/Chemtool_format.doctree | Bin 0 -> 3221 bytes .../Common_cheminformatics_Formats.doctree | Bin 0 -> 3846 bytes .../Compare_molecules_using_InChI.doctree | Bin 0 -> 4894 bytes .../Computational_chemistry_Formats.doctree | Bin 0 -> 5734 bytes .../FileFormats/Confab_report_format.doctree | Bin 0 -> 7720 bytes .../docs/FileFormats/Copy_raw_text.doctree | Bin 0 -> 5727 bytes .../Crystal_09_output_format.doctree | Bin 0 -> 4750 bytes .../Crystallographic_Information_File.doctree | Bin 0 -> 8557 bytes .../Crystallography_Formats.doctree | Bin 0 -> 3723 bytes .../Culgi_object_file_format.doctree | Bin 0 -> 3406 bytes .../FileFormats/DALTON_input_format.doctree | Bin 0 -> 6925 bytes .../FileFormats/DALTON_output_format.doctree | Bin 0 -> 4710 bytes .../docs/FileFormats/DL-POLY_CONFIG.doctree | Bin 0 -> 3004 bytes .../docs/FileFormats/DL-POLY_HISTORY.doctree | Bin 0 -> 3235 bytes .../DMol3_coordinates_format.doctree | Bin 0 -> 4569 bytes .../FileFormats/Dock_3.5_Box_format.doctree | Bin 0 -> 3037 bytes ...d_XYZ_cartesian_coordinates_format.doctree | Bin 0 -> 10775 bytes .../docs/FileFormats/FASTA_format.doctree | Bin 0 -> 6905 bytes .../FileFormats/FHIaims_XYZ_format.doctree | Bin 0 -> 4496 bytes ...PS_text_fingerprint_format_(Dalke).doctree | Bin 0 -> 7879 bytes .../FileFormats/Fastsearch_format.doctree | Bin 0 -> 16354 bytes .../docs/FileFormats/Feature_format.doctree | Bin 0 -> 4448 bytes .../Fenske-Hall_Z-Matrix_format.doctree | Bin 0 -> 3325 bytes .../FileFormats/Fingerprint_format.doctree | Bin 0 -> 14567 bytes .../Free_Form_Fractional_format.doctree | Bin 0 -> 10303 bytes .../docs/FileFormats/GAMESS-UK_Input.doctree | Bin 0 -> 3009 bytes .../docs/FileFormats/GAMESS-UK_Output.doctree | Bin 0 -> 3022 bytes .../docs/FileFormats/GAMESS_Input.doctree | Bin 0 -> 4819 bytes .../docs/FileFormats/GAMESS_Output.doctree | Bin 0 -> 5248 bytes .../docs/FileFormats/GROMOS96_format.doctree | Bin 0 -> 4139 bytes .doctrees/docs/FileFormats/GRO_format.doctree | Bin 0 -> 5045 bytes .../docs/FileFormats/GULP_format.doctree | Bin 0 -> 3470 bytes .../docs/FileFormats/Gaussian_Input.doctree | Bin 0 -> 6187 bytes .../docs/FileFormats/Gaussian_Output.doctree | Bin 0 -> 4796 bytes .../Gaussian_Z-Matrix_Input.doctree | Bin 0 -> 6304 bytes .../FileFormats/Gaussian_cube_format.doctree | Bin 0 -> 5014 bytes ...n_formatted_checkpoint_file_format.doctree | Bin 0 -> 5490 bytes .../FileFormats/General_XML_format.doctree | Bin 0 -> 6451 bytes .../Generic_Output_file_format.doctree | Bin 0 -> 5532 bytes .../docs/FileFormats/Ghemical_format.doctree | Bin 0 -> 3226 bytes .../FileFormats/HyperChem_HIN_format.doctree | Bin 0 -> 3046 bytes .../docs/FileFormats/Image_Formats.doctree | Bin 0 -> 3486 bytes .doctrees/docs/FileFormats/InChIKey.doctree | Bin 0 -> 6657 bytes .../docs/FileFormats/InChI_format.doctree | Bin 0 -> 25284 bytes .../docs/FileFormats/JSON_Formats.doctree | Bin 0 -> 3344 bytes .../FileFormats/Jaguar_input_format.doctree | Bin 0 -> 4489 bytes .../FileFormats/Jaguar_output_format.doctree | Bin 0 -> 4731 bytes ...inetics_and_Thermodynamics_Formats.doctree | Bin 0 -> 3574 bytes .../docs/FileFormats/LPMD_format.doctree | Bin 0 -> 8446 bytes .../M.F._Sanner's_MSMS_input_format.doctree | Bin 0 -> 4626 bytes .../docs/FileFormats/MCDL_format.doctree | Bin 0 -> 6273 bytes .../docs/FileFormats/MDFF_format.doctree | Bin 0 -> 5990 bytes .../docs/FileFormats/MDL_MOL_format.doctree | Bin 0 -> 16458 bytes .../docs/FileFormats/MDL_RXN_format.doctree | Bin 0 -> 6915 bytes .../MOPAC_Cartesian_format.doctree | Bin 0 -> 6922 bytes .../docs/FileFormats/MOPAC_Internal.doctree | Bin 0 -> 4818 bytes .../FileFormats/MOPAC_Output_format.doctree | Bin 0 -> 4749 bytes .../FileFormats/MPQC_output_format.doctree | Bin 0 -> 4713 bytes .../MPQC_simplified_input_format.doctree | Bin 0 -> 3350 bytes .../docs/FileFormats/MSI_BGF_format.doctree | Bin 0 -> 2992 bytes .../FileFormats/MacroModel_format.doctree | Bin 0 -> 3042 bytes ...cromolecular_Crystallographic_Info.doctree | Bin 0 -> 5808 bytes .../docs/FileFormats/Maestro_format.doctree | Bin 0 -> 3254 bytes .../FileFormats/Miscellaneous_Formats.doctree | Bin 0 -> 3411 bytes .../FileFormats/MolPrint2D_format.doctree | Bin 0 -> 9958 bytes .../docs/FileFormats/Molden_format.doctree | Bin 0 -> 4440 bytes ...cular_dynamics_and_docking_Formats.doctree | Bin 0 -> 4095 bytes .../Molecular_fingerprint_Formats.doctree | Bin 0 -> 3585 bytes .../FileFormats/Molpro_input_format.doctree | Bin 0 -> 3253 bytes .../FileFormats/Molpro_output_format.doctree | Bin 0 -> 4727 bytes ...level_Neighborhoods_of_Atoms_(MNA).doctree | Bin 0 -> 23602 bytes .../FileFormats/NWChem_input_format.doctree | Bin 0 -> 3253 bytes .../FileFormats/NWChem_output_format.doctree | Bin 0 -> 5708 bytes .../FileFormats/ORCA_input_format.doctree | Bin 0 -> 5084 bytes .../FileFormats/ORCA_output_format.doctree | Bin 0 -> 4713 bytes .../docs/FileFormats/Obscure_Formats.doctree | Bin 0 -> 3493 bytes .../OpenDX_cube_format_for_APBS.doctree | Bin 0 -> 3659 bytes .../Open_Babel_molecule_report.doctree | Bin 0 -> 6508 bytes .../Open_Babel_report_format.doctree | Bin 0 -> 14458 bytes .../Other_cheminformatics_Formats.doctree | Bin 0 -> 3796 bytes .../docs/FileFormats/Outputs_nothing.doctree | Bin 0 -> 3221 bytes .doctrees/docs/FileFormats/Overview.doctree | Bin 0 -> 15620 bytes .../docs/FileFormats/PCModel_Format.doctree | Bin 0 -> 2992 bytes .../docs/FileFormats/PNG_2D_depiction.doctree | Bin 0 -> 27644 bytes .../POS_cartesian_coordinates_format.doctree | Bin 0 -> 6173 bytes .../FileFormats/POV-Ray_input_format.doctree | Bin 0 -> 10763 bytes .doctrees/docs/FileFormats/PQR_format.doctree | Bin 0 -> 4408 bytes .../docs/FileFormats/PWscf_format.doctree | Bin 0 -> 3473 bytes .../docs/FileFormats/Painter_format.doctree | Bin 0 -> 7482 bytes .../Parallel_Quantum_Solutions_format.doctree | Bin 0 -> 3163 bytes .../Point_cloud_on_VDW_surface.doctree | Bin 0 -> 8722 bytes .../Protein_Data_Bank_format.doctree | Bin 0 -> 6613 bytes .../docs/FileFormats/PubChem_JSON.doctree | Bin 0 -> 6152 bytes .../docs/FileFormats/PubChem_format.doctree | Bin 0 -> 4681 bytes .../FileFormats/Q-Chem_input_format.doctree | Bin 0 -> 5090 bytes .../FileFormats/Q-Chem_output_format.doctree | Bin 0 -> 4735 bytes .doctrees/docs/FileFormats/RInChI.doctree | Bin 0 -> 5761 bytes .../docs/FileFormats/Reaction_Formats.doctree | Bin 0 -> 3474 bytes .../Reaction_SMILES_format.doctree | Bin 0 -> 4037 bytes .../Read_and_write_raw_text.doctree | Bin 0 -> 3368 bytes .../docs/FileFormats/SIESTA_format.doctree | Bin 0 -> 3580 bytes .../FileFormats/SMILES_FIX_format.doctree | Bin 0 -> 3239 bytes .../docs/FileFormats/SMILES_format.doctree | Bin 0 -> 24731 bytes .../SMILES_format_using_Smiley_parser.doctree | Bin 0 -> 12700 bytes .../STL_3D-printing_format.doctree | Bin 0 -> 5871 bytes .../docs/FileFormats/SVG_2D_depiction.doctree | Bin 0 -> 33619 bytes .../docs/FileFormats/ShelX_format.doctree | Bin 0 -> 4674 bytes .../FileFormats/Sybyl_Mol2_format.doctree | Bin 0 -> 6217 bytes .../The_LAMMPS_data_format.doctree | Bin 0 -> 6212 bytes .../docs/FileFormats/Thermo_format.doctree | Bin 0 -> 4232 bytes .../FileFormats/Tinker_XYZ_format.doctree | Bin 0 -> 6900 bytes .../docs/FileFormats/Title_format.doctree | Bin 0 -> 3205 bytes .../TurboMole_Coordinate_format.doctree | Bin 0 -> 5913 bytes .../Turbomole_AOFORCE_output_format.doctree | Bin 0 -> 3638 bytes .../FileFormats/UniChem_XYZ_format.doctree | Bin 0 -> 4492 bytes .../docs/FileFormats/Utility_Formats.doctree | Bin 0 -> 3922 bytes .../docs/FileFormats/VASP_format.doctree | Bin 0 -> 9717 bytes .../docs/FileFormats/ViewMol_format.doctree | Bin 0 -> 4448 bytes .../FileFormats/Volume_data_Formats.doctree | Bin 0 -> 3580 bytes .../Wiswesser_Line_Notation.doctree | Bin 0 -> 17194 bytes .../XCrySDen_Structure_Format.doctree | Bin 0 -> 4795 bytes .doctrees/docs/FileFormats/XED_format.doctree | Bin 0 -> 3176 bytes .doctrees/docs/FileFormats/XTC_format.doctree | Bin 0 -> 3433 bytes .../XYZ_cartesian_coordinates_format.doctree | Bin 0 -> 9906 bytes .../FileFormats/YASARA.org_YOB_format.doctree | Bin 0 -> 3268 bytes .../FileFormats/ZINDO_input_format.doctree | Bin 0 -> 4559 bytes .../docs/Fingerprints/fingerprints.doctree | Bin 0 -> 50662 bytes .doctrees/docs/Fingerprints/intro.doctree | Bin 0 -> 7938 bytes .../docs/Fingerprints/spectrophore.doctree | Bin 0 -> 98057 bytes .doctrees/docs/Forcefields/Overview.doctree | Bin 0 -> 8510 bytes .doctrees/docs/Forcefields/gaff.doctree | Bin 0 -> 8546 bytes .doctrees/docs/Forcefields/ghemical.doctree | Bin 0 -> 5707 bytes .doctrees/docs/Forcefields/mmff94.doctree | Bin 0 -> 14067 bytes .doctrees/docs/Forcefields/uff.doctree | Bin 0 -> 5641 bytes .doctrees/docs/GUI/GUI.doctree | Bin 0 -> 32336 bytes .doctrees/docs/GUITutorial/Conversion.doctree | Bin 0 -> 16049 bytes .doctrees/docs/GUITutorial/Filtering.doctree | Bin 0 -> 28901 bytes .../docs/GUITutorial/GUITutorial.doctree | Bin 0 -> 4215 bytes .doctrees/docs/GUITutorial/Searching.doctree | Bin 0 -> 18666 bytes .doctrees/docs/Installation/install.doctree | Bin 0 -> 80090 bytes .doctrees/docs/Introduction/faq.doctree | Bin 0 -> 37238 bytes .doctrees/docs/Introduction/goals.doctree | Bin 0 -> 11126 bytes .doctrees/docs/Introduction/intro.doctree | Bin 0 -> 3562 bytes .doctrees/docs/Introduction/thanks.doctree | Bin 0 -> 33471 bytes .doctrees/docs/README.doctree | Bin 0 -> 9825 bytes .doctrees/docs/ReleaseNotes/index.doctree | Bin 0 -> 4149 bytes .doctrees/docs/ReleaseNotes/ob1.100.0.doctree | Bin 0 -> 9285 bytes .doctrees/docs/ReleaseNotes/ob1.100.1.doctree | Bin 0 -> 9973 bytes .doctrees/docs/ReleaseNotes/ob1.100.2.doctree | Bin 0 -> 11223 bytes .doctrees/docs/ReleaseNotes/ob1.99.doctree | Bin 0 -> 4437 bytes .doctrees/docs/ReleaseNotes/ob200.doctree | Bin 0 -> 22034 bytes .doctrees/docs/ReleaseNotes/ob201.doctree | Bin 0 -> 7422 bytes .doctrees/docs/ReleaseNotes/ob202.doctree | Bin 0 -> 5236 bytes .doctrees/docs/ReleaseNotes/ob210.doctree | Bin 0 -> 18024 bytes .doctrees/docs/ReleaseNotes/ob211.doctree | Bin 0 -> 11422 bytes .doctrees/docs/ReleaseNotes/ob220.doctree | Bin 0 -> 17199 bytes .doctrees/docs/ReleaseNotes/ob221.doctree | Bin 0 -> 7869 bytes .doctrees/docs/ReleaseNotes/ob222.doctree | Bin 0 -> 8727 bytes .doctrees/docs/ReleaseNotes/ob223.doctree | Bin 0 -> 4753 bytes .doctrees/docs/ReleaseNotes/ob230.doctree | Bin 0 -> 14637 bytes .doctrees/docs/ReleaseNotes/ob231.doctree | Bin 0 -> 13481 bytes .doctrees/docs/ReleaseNotes/ob240.doctree | Bin 0 -> 33902 bytes .doctrees/docs/ReleaseNotes/ob300.doctree | Bin 0 -> 89030 bytes .doctrees/docs/ReleaseNotes/ob310.doctree | Bin 0 -> 24346 bytes .doctrees/docs/Stereochemistry/stereo.doctree | Bin 0 -> 40513 bytes .doctrees/docs/UseTheLibrary/CSharp.doctree | Bin 0 -> 33411 bytes .doctrees/docs/UseTheLibrary/CppAPI.doctree | Bin 0 -> 10993 bytes .../docs/UseTheLibrary/CppExamples.doctree | Bin 0 -> 15429 bytes .doctrees/docs/UseTheLibrary/Java.doctree | Bin 0 -> 31863 bytes .doctrees/docs/UseTheLibrary/Perl.doctree | Bin 0 -> 16719 bytes .doctrees/docs/UseTheLibrary/Python.doctree | Bin 0 -> 3020 bytes .../docs/UseTheLibrary/PythonDoc.doctree | Bin 0 -> 41991 bytes .../docs/UseTheLibrary/PythonExamples.doctree | Bin 0 -> 27416 bytes .../docs/UseTheLibrary/PythonInstall.doctree | Bin 0 -> 14124 bytes .../docs/UseTheLibrary/PythonIntro.doctree | Bin 0 -> 6541 bytes .../docs/UseTheLibrary/Python_Pybel.doctree | Bin 0 -> 73659 bytes .../UseTheLibrary/Python_PybelAPI.doctree | Bin 0 -> 3220 bytes .doctrees/docs/UseTheLibrary/Ruby.doctree | Bin 0 -> 4650 bytes .doctrees/docs/UseTheLibrary/intro.doctree | Bin 0 -> 6435 bytes .../docs/UseTheLibrary/migration.doctree | Bin 0 -> 39530 bytes .../docs/WritePlugins/AddFileFormat.doctree | Bin 0 -> 24338 bytes .../WritePlugins/AddNewDescriptor.doctree | Bin 0 -> 18364 bytes .../WritePlugins/AddingNewOptions.doctree | Bin 0 -> 20537 bytes .doctrees/docs/WritePlugins/index.doctree | Bin 0 -> 8407 bytes .doctrees/docs/index.doctree | Bin 0 -> 4716 bytes .doctrees/environment.pickle | Bin 30572 -> 413780 bytes .doctrees/index.doctree | Bin 6015 -> 6038 bytes CNAME | 1 - _images/1,4-diamino-phenyl.png | Bin 0 -> 2179 bytes _images/Benzodiazepine.png | Bin 0 -> 5252 bytes _images/FilterByMW.png | Bin 0 -> 3451 bytes _images/OBStructure.png | Bin 0 -> 12844 bytes ...shotOfGui-BioLinux6.0-Ubuntu10.04deriv.png | Bin 0 -> 173641 bytes _images/SortByMW.png | Bin 0 -> 16578 bytes _images/Tutorial-Thiophene.png | Bin 0 -> 1894 bytes _images/Tutorial-Transform.png | Bin 0 -> 1183 bytes _images/Zigzag.png | Bin 0 -> 397 bytes _images/acidchloride.png | Bin 0 -> 2035 bytes _images/bananamol.png | Bin 0 -> 44265 bytes _images/benzoF.png | Bin 0 -> 9703 bytes _images/eMolecules.png | Bin 0 -> 1984 bytes _images/first1000.png | Bin 0 -> 3730 bytes _images/inputfile.png | Bin 0 -> 8548 bytes _images/inputfile_b.png | Bin 0 -> 8083 bytes _images/outputfile.png | Bin 0 -> 7079 bytes _images/outputfile_b.png | Bin 0 -> 5910 bytes _images/povray.png | Bin 0 -> 125608 bytes _images/removedups.png | Bin 0 -> 5011 bytes _images/silicos.png | Bin 0 -> 7059 bytes _images/similarity.png | Bin 0 -> 3338 bytes _images/spectrophore_cage.png | Bin 0 -> 33308 bytes _images/steroid1.png | Bin 0 -> 1569 bytes _images/steroid2.png | Bin 0 -> 2043 bytes _images/steroid2_matched.png | Bin 0 -> 2266 bytes _images/steroid3.png | Bin 0 -> 2309 bytes _images/steroid_substruct_keys.png | Bin 0 -> 7840 bytes _sources/docs/3DStructureGen/Overview.rst.txt | 10 + .../3DStructureGen/SingleConformer.rst.txt | 104 ++ .../3DStructureGen/multipleconformers.rst.txt | 121 ++ _sources/docs/Aromaticity/Aromaticity.rst.txt | 73 + _sources/docs/Charges/charges.rst.txt | 33 + _sources/docs/Cheminf101/basics.rst.txt | 73 + _sources/docs/Cheminf101/index.rst.txt | 20 + _sources/docs/Cheminf101/registration.rst.txt | 73 + _sources/docs/Cheminf101/represent.rst.txt | 297 ++++ _sources/docs/Cheminf101/search.rst.txt | 115 ++ _sources/docs/Cheminf101/similarity.rst.txt | 86 ++ .../docs/Command-line_tools/Rosetta.rst.txt | 288 ++++ .../docs/Command-line_tools/babel.rst.txt | 675 +++++++++ .../docs/Contributing/Contributing.rst.txt | 14 + .../Contributing/DevBestPractices.rst.txt | 153 ++ .../docs/Contributing/Documentation.rst.txt | 50 + _sources/docs/Contributing/Overview.rst.txt | 43 + .../Contributing/SoftwareArchaeology.rst.txt | 40 + _sources/docs/Contributing/Testing.rst.txt | 184 +++ _sources/docs/Depiction/depiction.rst.txt | 49 + _sources/docs/Descriptors/descriptors.rst.txt | 125 ++ _sources/docs/Features/Radicals.rst.txt | 177 +++ .../FileFormats/2D_drawing_Formats.rst.txt | 12 + .../FileFormats/3D_viewer_Formats.rst.txt | 19 + .../FileFormats/ABINIT_Output_Format.rst.txt | 13 + .../FileFormats/ACES_input_format.rst.txt | 9 + .../FileFormats/ACES_output_format.rst.txt | 16 + _sources/docs/FileFormats/ACR_format.rst.txt | 13 + .../ADF_Band_output_format.rst.txt | 6 + .../ADF_DFTB_output_format.rst.txt | 6 + .../FileFormats/ADF_TAPE41_format.rst.txt | 19 + .../ADF_cartesian_input_format.rst.txt | 13 + .../FileFormats/ADF_output_format.rst.txt | 13 + .../docs/FileFormats/ASCII_format.rst.txt | 51 + ...SI_Biosym_or_Insight_II_CAR_format.rst.txt | 13 + ...celrys_or_MSI_Cerius_II_MSI_format.rst.txt | 6 + .../Accelrys_or_MSI_Quanta_CSR_format.rst.txt | 6 + .../docs/FileFormats/Alchemy_format.rst.txt | 4 + .../FileFormats/Amber_Prep_format.rst.txt | 13 + .../FileFormats/AutoDock_PDBQT_format.rst.txt | 31 + .../FileFormats/Ball_and_Stick_format.rst.txt | 4 + .../Biological_data_Formats.rst.txt | 9 + .../CAChe_MolStruct_format.rst.txt | 6 + .../docs/FileFormats/CASTEP_format.rst.txt | 12 + _sources/docs/FileFormats/CCC_format.rst.txt | 6 + .../FileFormats/CML_Reaction_format.rst.txt | 40 + .../docs/FileFormats/CSD_CSSR_format.rst.txt | 6 + .../Cacao_Cartesian_format.rst.txt | 11 + .../FileFormats/Cacao_Internal_format.rst.txt | 6 + .../Canonical_SMILES_format.rst.txt | 39 + .../Chem3D_Cartesian_1_format.rst.txt | 4 + .../Chem3D_Cartesian_2_format.rst.txt | 4 + .../docs/FileFormats/ChemDoodle_JSON.rst.txt | 25 + .../FileFormats/ChemDraw_CDXML_format.rst.txt | 10 + .../ChemDraw_Connection_Table_format.rst.txt | 4 + .../ChemDraw_binary_format.rst.txt | 28 + .../docs/FileFormats/ChemKin_format.rst.txt | 20 + .../Chemical_Markup_Language.rst.txt | 85 ++ .../Chemical_Resource_Kit_3D_format.rst.txt | 4 + .../Chemical_Resource_Kit_diagram(2D).rst.txt | 4 + .../docs/FileFormats/Chemtool_format.rst.txt | 6 + .../Common_cheminformatics_Formats.rst.txt | 16 + .../Compare_molecules_using_InChI.rst.txt | 17 + .../Computational_chemistry_Formats.rst.txt | 57 + .../FileFormats/Confab_report_format.rst.txt | 30 + .../docs/FileFormats/Copy_raw_text.rst.txt | 31 + .../Crystal_09_output_format.rst.txt | 11 + .../Crystallographic_Information_File.rst.txt | 33 + .../Crystallography_Formats.rst.txt | 14 + .../Culgi_object_file_format.rst.txt | 10 + .../FileFormats/DALTON_input_format.rst.txt | 20 + .../FileFormats/DALTON_output_format.rst.txt | 11 + .../docs/FileFormats/DL-POLY_CONFIG.rst.txt | 4 + .../docs/FileFormats/DL-POLY_HISTORY.rst.txt | 6 + .../DMol3_coordinates_format.rst.txt | 11 + .../FileFormats/Dock_3.5_Box_format.rst.txt | 4 + ...d_XYZ_cartesian_coordinates_format.rst.txt | 55 + .../docs/FileFormats/FASTA_format.rst.txt | 23 + .../FileFormats/FHIaims_XYZ_format.rst.txt | 11 + ...PS_text_fingerprint_format_(Dalke).rst.txt | 29 + .../FileFormats/Fastsearch_format.rst.txt | 76 + .../docs/FileFormats/Feature_format.rst.txt | 11 + .../Fenske-Hall_Z-Matrix_format.rst.txt | 6 + .../FileFormats/Fingerprint_format.rst.txt | 78 + .../Free_Form_Fractional_format.rst.txt | 60 + .../docs/FileFormats/GAMESS-UK_Input.rst.txt | 4 + .../docs/FileFormats/GAMESS-UK_Output.rst.txt | 4 + .../docs/FileFormats/GAMESS_Input.rst.txt | 11 + .../docs/FileFormats/GAMESS_Output.rst.txt | 14 + .../docs/FileFormats/GROMOS96_format.rst.txt | 10 + _sources/docs/FileFormats/GRO_format.rst.txt | 17 + _sources/docs/FileFormats/GULP_format.rst.txt | 12 + .../docs/FileFormats/Gaussian_Input.rst.txt | 15 + .../docs/FileFormats/Gaussian_Output.rst.txt | 13 + .../Gaussian_Z-Matrix_Input.rst.txt | 18 + .../FileFormats/Gaussian_cube_format.rst.txt | 19 + ...n_formatted_checkpoint_file_format.rst.txt | 20 + .../FileFormats/General_XML_format.rst.txt | 32 + .../Generic_Output_file_format.rst.txt | 22 + .../docs/FileFormats/Ghemical_format.rst.txt | 7 + .../FileFormats/HyperChem_HIN_format.rst.txt | 4 + .../docs/FileFormats/Image_Formats.rst.txt | 12 + _sources/docs/FileFormats/InChIKey.rst.txt | 37 + .../docs/FileFormats/InChI_format.rst.txt | 81 ++ .../docs/FileFormats/JSON_Formats.rst.txt | 9 + .../FileFormats/Jaguar_input_format.rst.txt | 11 + .../FileFormats/Jaguar_output_format.rst.txt | 13 + ...inetics_and_Thermodynamics_Formats.rst.txt | 9 + _sources/docs/FileFormats/LPMD_format.rst.txt | 30 + .../M.F._Sanner's_MSMS_input_format.rst.txt | 16 + _sources/docs/FileFormats/MCDL_format.rst.txt | 22 + _sources/docs/FileFormats/MDFF_format.rst.txt | 19 + .../docs/FileFormats/MDL_MOL_format.rst.txt | 65 + .../docs/FileFormats/MDL_RXN_format.rst.txt | 23 + .../MOPAC_Cartesian_format.rst.txt | 19 + .../docs/FileFormats/MOPAC_Internal.rst.txt | 11 + .../FileFormats/MOPAC_Output_format.rst.txt | 13 + .../FileFormats/MPQC_output_format.rst.txt | 13 + .../MPQC_simplified_input_format.rst.txt | 6 + .../docs/FileFormats/MSI_BGF_format.rst.txt | 4 + .../FileFormats/MacroModel_format.rst.txt | 4 + ...cromolecular_Crystallographic_Info.rst.txt | 13 + .../docs/FileFormats/Maestro_format.rst.txt | 7 + .../FileFormats/Miscellaneous_Formats.rst.txt | 8 + .../FileFormats/MolPrint2D_format.rst.txt | 37 + .../docs/FileFormats/Molden_format.rst.txt | 11 + ...cular_dynamics_and_docking_Formats.rst.txt | 21 + .../Molecular_fingerprint_Formats.rst.txt | 10 + .../FileFormats/Molpro_input_format.rst.txt | 6 + .../FileFormats/Molpro_output_format.rst.txt | 13 + ...level_Neighborhoods_of_Atoms_(MNA).rst.txt | 90 ++ .../FileFormats/NWChem_input_format.rst.txt | 6 + .../FileFormats/NWChem_output_format.rst.txt | 18 + .../FileFormats/ORCA_input_format.rst.txt | 13 + .../FileFormats/ORCA_output_format.rst.txt | 13 + .../docs/FileFormats/Obscure_Formats.rst.txt | 12 + .../OpenDX_cube_format_for_APBS.rst.txt | 12 + .../Open_Babel_molecule_report.rst.txt | 38 + .../Open_Babel_report_format.rst.txt | 129 ++ .../Other_cheminformatics_Formats.rst.txt | 14 + .../docs/FileFormats/Outputs_nothing.rst.txt | 6 + _sources/docs/FileFormats/Overview.rst.txt | 66 + .../docs/FileFormats/PCModel_Format.rst.txt | 4 + .../docs/FileFormats/PNG_2D_depiction.rst.txt | 109 ++ .../POS_cartesian_coordinates_format.rst.txt | 25 + .../FileFormats/POV-Ray_input_format.rst.txt | 46 + _sources/docs/FileFormats/PQR_format.rst.txt | 11 + .../docs/FileFormats/PWscf_format.rst.txt | 12 + .../docs/FileFormats/Painter_format.rst.txt | 56 + .../Parallel_Quantum_Solutions_format.rst.txt | 4 + .../Point_cloud_on_VDW_surface.rst.txt | 31 + .../Protein_Data_Bank_format.rst.txt | 19 + .../docs/FileFormats/PubChem_JSON.rst.txt | 25 + .../docs/FileFormats/PubChem_format.rst.txt | 19 + .../FileFormats/Q-Chem_input_format.rst.txt | 13 + .../FileFormats/Q-Chem_output_format.rst.txt | 13 + _sources/docs/FileFormats/RInChI.rst.txt | 29 + .../docs/FileFormats/Reaction_Formats.rst.txt | 11 + .../Reaction_SMILES_format.rst.txt | 10 + .../Read_and_write_raw_text.rst.txt | 7 + .../docs/FileFormats/SIESTA_format.rst.txt | 12 + .../FileFormats/SMILES_FIX_format.rst.txt | 6 + .../docs/FileFormats/SMILES_format.rst.txt | 84 ++ .../SMILES_format_using_Smiley_parser.rst.txt | 106 ++ .../STL_3D-printing_format.rst.txt | 20 + .../docs/FileFormats/SVG_2D_depiction.rst.txt | 135 ++ .../docs/FileFormats/ShelX_format.rst.txt | 13 + .../FileFormats/Sybyl_Mol2_format.rst.txt | 18 + .../The_LAMMPS_data_format.rst.txt | 22 + .../docs/FileFormats/Thermo_format.rst.txt | 13 + .../FileFormats/Tinker_XYZ_format.rst.txt | 27 + .../docs/FileFormats/Title_format.rst.txt | 7 + .../TurboMole_Coordinate_format.rst.txt | 18 + .../Turbomole_AOFORCE_output_format.rst.txt | 9 + .../FileFormats/UniChem_XYZ_format.rst.txt | 11 + .../docs/FileFormats/Utility_Formats.rst.txt | 20 + _sources/docs/FileFormats/VASP_format.rst.txt | 43 + .../docs/FileFormats/ViewMol_format.rst.txt | 11 + .../FileFormats/Volume_data_Formats.rst.txt | 12 + .../Wiswesser_Line_Notation.rst.txt | 79 ++ .../XCrySDen_Structure_Format.rst.txt | 13 + _sources/docs/FileFormats/XED_format.rst.txt | 6 + _sources/docs/FileFormats/XTC_format.rst.txt | 9 + .../XYZ_cartesian_coordinates_format.rst.txt | 55 + .../FileFormats/YASARA.org_YOB_format.rst.txt | 7 + .../FileFormats/ZINDO_input_format.rst.txt | 15 + .../docs/Fingerprints/fingerprints.rst.txt | 214 +++ _sources/docs/Fingerprints/intro.rst.txt | 21 + .../docs/Fingerprints/spectrophore.rst.txt | 338 +++++ _sources/docs/Forcefields/Overview.rst.txt | 34 + _sources/docs/Forcefields/gaff.rst.txt | 30 + _sources/docs/Forcefields/ghemical.rst.txt | 14 + _sources/docs/Forcefields/mmff94.rst.txt | 54 + _sources/docs/Forcefields/uff.rst.txt | 23 + _sources/docs/GUI/GUI.rst.txt | 163 +++ _sources/docs/GUITutorial/Conversion.rst.txt | 63 + _sources/docs/GUITutorial/Filtering.rst.txt | 103 ++ _sources/docs/GUITutorial/GUITutorial.rst.txt | 13 + _sources/docs/GUITutorial/Searching.rst.txt | 51 + _sources/docs/Installation/install.rst.txt | 278 ++++ _sources/docs/Introduction/faq.rst.txt | 136 ++ _sources/docs/Introduction/goals.rst.txt | 28 + _sources/docs/Introduction/intro.rst.txt | 10 + _sources/docs/Introduction/thanks.rst.txt | 94 ++ _sources/docs/README.rst.txt | 39 + _sources/docs/ReleaseNotes/index.rst.txt | 26 + _sources/docs/ReleaseNotes/ob1.100.0.rst.txt | 30 + _sources/docs/ReleaseNotes/ob1.100.1.rst.txt | 37 + _sources/docs/ReleaseNotes/ob1.100.2.rst.txt | 38 + _sources/docs/ReleaseNotes/ob1.99.rst.txt | 10 + _sources/docs/ReleaseNotes/ob200.rst.txt | 79 ++ _sources/docs/ReleaseNotes/ob201.rst.txt | 27 + _sources/docs/ReleaseNotes/ob202.rst.txt | 18 + _sources/docs/ReleaseNotes/ob210.rst.txt | 61 + _sources/docs/ReleaseNotes/ob211.rst.txt | 32 + _sources/docs/ReleaseNotes/ob220.rst.txt | 75 + _sources/docs/ReleaseNotes/ob221.rst.txt | 31 + _sources/docs/ReleaseNotes/ob222.rst.txt | 40 + _sources/docs/ReleaseNotes/ob223.rst.txt | 17 + _sources/docs/ReleaseNotes/ob230.rst.txt | 71 + _sources/docs/ReleaseNotes/ob231.rst.txt | 48 + _sources/docs/ReleaseNotes/ob240.rst.txt | 107 ++ _sources/docs/ReleaseNotes/ob300.rst.txt | 283 ++++ _sources/docs/ReleaseNotes/ob310.rst.txt | 85 ++ _sources/docs/Stereochemistry/stereo.rst.txt | 189 +++ _sources/docs/UseTheLibrary/CSharp.rst.txt | 141 ++ _sources/docs/UseTheLibrary/CppAPI.rst.txt | 28 + .../docs/UseTheLibrary/CppExamples.rst.txt | 166 +++ _sources/docs/UseTheLibrary/Java.rst.txt | 130 ++ _sources/docs/UseTheLibrary/Perl.rst.txt | 171 +++ _sources/docs/UseTheLibrary/Python.rst.txt | 12 + _sources/docs/UseTheLibrary/PythonDoc.rst.txt | 234 +++ .../docs/UseTheLibrary/PythonExamples.rst.txt | 152 ++ .../docs/UseTheLibrary/PythonInstall.rst.txt | 112 ++ .../docs/UseTheLibrary/PythonIntro.rst.txt | 14 + .../docs/UseTheLibrary/Python_Pybel.rst.txt | 351 +++++ .../UseTheLibrary/Python_PybelAPI.rst.txt | 8 + _sources/docs/UseTheLibrary/Ruby.rst.txt | 23 + _sources/docs/UseTheLibrary/intro.rst.txt | 25 + _sources/docs/UseTheLibrary/migration.rst.txt | 178 +++ .../docs/WritePlugins/AddFileFormat.rst.txt | 24 + .../WritePlugins/AddNewDescriptor.rst.txt | 83 ++ .../WritePlugins/AddingNewOptions.rst.txt | 82 ++ _sources/docs/WritePlugins/index.rst.txt | 43 + _sources/docs/index.rst.txt | 39 + api/index.html | 20 +- docs/3DStructureGen/Overview.html | 555 ++++++++ docs/3DStructureGen/SingleConformer.html | 637 +++++++++ docs/3DStructureGen/multipleconformers.html | 666 +++++++++ docs/Aromaticity/Aromaticity.html | 599 ++++++++ docs/Charges/charges.html | 559 ++++++++ docs/Cheminf101/basics.html | 643 +++++++++ docs/Cheminf101/index.html | 572 ++++++++ docs/Cheminf101/registration.html | 630 +++++++++ docs/Cheminf101/represent.html | 816 +++++++++++ docs/Cheminf101/search.html | 658 +++++++++ docs/Cheminf101/similarity.html | 620 ++++++++ docs/Command-line_tools/Rosetta.html | 824 +++++++++++ docs/Command-line_tools/babel.html | 1260 +++++++++++++++++ docs/Contributing/Contributing.html | 577 ++++++++ docs/Contributing/DevBestPractices.html | 690 +++++++++ docs/Contributing/Documentation.html | 590 ++++++++ docs/Contributing/Overview.html | 574 ++++++++ docs/Contributing/SoftwareArchaeology.html | 597 ++++++++ docs/Contributing/Testing.html | 730 ++++++++++ docs/Depiction/depiction.html | 593 ++++++++ docs/Descriptors/descriptors.html | 608 ++++++++ docs/Features/Radicals.html | 706 +++++++++ docs/FileFormats/2D_drawing_Formats.html | 576 ++++++++ docs/FileFormats/3D_viewer_Formats.html | 599 ++++++++ docs/FileFormats/ABINIT_Output_Format.html | 640 +++++++++ docs/FileFormats/ACES_input_format.html | 619 ++++++++ docs/FileFormats/ACES_output_format.html | 641 +++++++++ docs/FileFormats/ACR_format.html | 595 ++++++++ docs/FileFormats/ADF_Band_output_format.html | 618 ++++++++ docs/FileFormats/ADF_DFTB_output_format.html | 618 ++++++++ docs/FileFormats/ADF_TAPE41_format.html | 598 ++++++++ .../ADF_cartesian_input_format.html | 640 +++++++++ docs/FileFormats/ADF_output_format.html | 640 +++++++++ docs/FileFormats/ASCII_format.html | 636 +++++++++ ...r_MSI_Biosym_or_Insight_II_CAR_format.html | 597 ++++++++ .../Accelrys_or_MSI_Cerius_II_MSI_format.html | 575 ++++++++ .../Accelrys_or_MSI_Quanta_CSR_format.html | 575 ++++++++ docs/FileFormats/Alchemy_format.html | 569 ++++++++ docs/FileFormats/Amber_Prep_format.html | 604 ++++++++ docs/FileFormats/AutoDock_PDBQT_format.html | 630 +++++++++ docs/FileFormats/Ball_and_Stick_format.html | 576 ++++++++ docs/FileFormats/Biological_data_Formats.html | 574 ++++++++ docs/FileFormats/CAChe_MolStruct_format.html | 618 ++++++++ docs/FileFormats/CASTEP_format.html | 619 ++++++++ docs/FileFormats/CCC_format.html | 573 ++++++++ docs/FileFormats/CML_Reaction_format.html | 629 ++++++++ docs/FileFormats/CSD_CSSR_format.html | 575 ++++++++ docs/FileFormats/Cacao_Cartesian_format.html | 636 +++++++++ docs/FileFormats/Cacao_Internal_format.html | 618 ++++++++ docs/FileFormats/Canonical_SMILES_format.html | 630 +++++++++ .../Chem3D_Cartesian_1_format.html | 576 ++++++++ .../Chem3D_Cartesian_2_format.html | 576 ++++++++ docs/FileFormats/ChemDoodle_JSON.html | 604 ++++++++ docs/FileFormats/ChemDraw_CDXML_format.html | 570 ++++++++ .../ChemDraw_Connection_Table_format.html | 569 ++++++++ docs/FileFormats/ChemDraw_binary_format.html | 609 ++++++++ docs/FileFormats/ChemKin_format.html | 606 ++++++++ .../FileFormats/Chemical_Markup_Language.html | 678 +++++++++ .../Chemical_Resource_Kit_3D_format.html | 576 ++++++++ .../Chemical_Resource_Kit_diagram(2D).html | 569 ++++++++ docs/FileFormats/Chemtool_format.html | 573 ++++++++ .../Common_cheminformatics_Formats.html | 618 ++++++++ .../Compare_molecules_using_InChI.html | 588 ++++++++ .../Computational_chemistry_Formats.html | 764 ++++++++++ docs/FileFormats/Confab_report_format.html | 613 ++++++++ docs/FileFormats/Copy_raw_text.html | 602 ++++++++ .../FileFormats/Crystal_09_output_format.html | 640 +++++++++ .../Crystallographic_Information_File.html | 616 ++++++++ docs/FileFormats/Crystallography_Formats.html | 596 ++++++++ .../FileFormats/Culgi_object_file_format.html | 616 ++++++++ docs/FileFormats/DALTON_input_format.html | 652 +++++++++ docs/FileFormats/DALTON_output_format.html | 640 +++++++++ docs/FileFormats/DL-POLY_CONFIG.html | 578 ++++++++ docs/FileFormats/DL-POLY_HISTORY.html | 582 ++++++++ .../FileFormats/DMol3_coordinates_format.html | 636 +++++++++ docs/FileFormats/Dock_3.5_Box_format.html | 578 ++++++++ ...nded_XYZ_cartesian_coordinates_format.html | 675 +++++++++ docs/FileFormats/FASTA_format.html | 604 ++++++++ docs/FileFormats/FHIaims_XYZ_format.html | 636 +++++++++ .../FPS_text_fingerprint_format_(Dalke).html | 609 ++++++++ docs/FileFormats/Fastsearch_format.html | 658 +++++++++ docs/FileFormats/Feature_format.html | 591 ++++++++ .../Fenske-Hall_Z-Matrix_format.html | 618 ++++++++ docs/FileFormats/Fingerprint_format.html | 658 +++++++++ .../Free_Form_Fractional_format.html | 636 +++++++++ docs/FileFormats/GAMESS-UK_Input.html | 614 ++++++++ docs/FileFormats/GAMESS-UK_Output.html | 614 ++++++++ docs/FileFormats/GAMESS_Input.html | 636 +++++++++ docs/FileFormats/GAMESS_Output.html | 643 +++++++++ docs/FileFormats/GROMOS96_format.html | 601 ++++++++ docs/FileFormats/GRO_format.html | 603 ++++++++ docs/FileFormats/GULP_format.html | 619 ++++++++ docs/FileFormats/Gaussian_Input.html | 646 +++++++++ docs/FileFormats/Gaussian_Output.html | 640 +++++++++ docs/FileFormats/Gaussian_Z-Matrix_Input.html | 648 +++++++++ docs/FileFormats/Gaussian_cube_format.html | 594 ++++++++ ...sian_formatted_checkpoint_file_format.html | 642 +++++++++ docs/FileFormats/General_XML_format.html | 612 ++++++++ .../Generic_Output_file_format.html | 606 ++++++++ docs/FileFormats/Ghemical_format.html | 577 ++++++++ docs/FileFormats/HyperChem_HIN_format.html | 614 ++++++++ docs/FileFormats/Image_Formats.html | 591 ++++++++ docs/FileFormats/InChIKey.html | 602 ++++++++ docs/FileFormats/InChI_format.html | 701 +++++++++ docs/FileFormats/JSON_Formats.html | 575 ++++++++ docs/FileFormats/Jaguar_input_format.html | 636 +++++++++ docs/FileFormats/Jaguar_output_format.html | 640 +++++++++ .../Kinetics_and_Thermodynamics_Formats.html | 574 ++++++++ docs/FileFormats/LPMD_format.html | 621 ++++++++ .../M.F._Sanner's_MSMS_input_format.html | 589 ++++++++ docs/FileFormats/MCDL_format.html | 588 ++++++++ docs/FileFormats/MDFF_format.html | 607 ++++++++ docs/FileFormats/MDL_MOL_format.html | 663 +++++++++ docs/FileFormats/MDL_RXN_format.html | 588 ++++++++ docs/FileFormats/MOPAC_Cartesian_format.html | 651 +++++++++ docs/FileFormats/MOPAC_Internal.html | 636 +++++++++ docs/FileFormats/MOPAC_Output_format.html | 640 +++++++++ docs/FileFormats/MPQC_output_format.html | 640 +++++++++ .../MPQC_simplified_input_format.html | 618 ++++++++ docs/FileFormats/MSI_BGF_format.html | 571 ++++++++ docs/FileFormats/MacroModel_format.html | 578 ++++++++ .../Macromolecular_Crystallographic_Info.html | 599 ++++++++ docs/FileFormats/Maestro_format.html | 577 ++++++++ docs/FileFormats/Miscellaneous_Formats.html | 568 ++++++++ docs/FileFormats/MolPrint2D_format.html | 628 ++++++++ docs/FileFormats/Molden_format.html | 598 ++++++++ ...olecular_dynamics_and_docking_Formats.html | 618 ++++++++ .../Molecular_fingerprint_Formats.html | 579 ++++++++ docs/FileFormats/Molpro_input_format.html | 618 ++++++++ docs/FileFormats/Molpro_output_format.html | 640 +++++++++ ...ltilevel_Neighborhoods_of_Atoms_(MNA).html | 742 ++++++++++ docs/FileFormats/NWChem_input_format.html | 618 ++++++++ docs/FileFormats/NWChem_output_format.html | 646 +++++++++ docs/FileFormats/ORCA_input_format.html | 640 +++++++++ docs/FileFormats/ORCA_output_format.html | 640 +++++++++ docs/FileFormats/Obscure_Formats.html | 576 ++++++++ .../OpenDX_cube_format_for_APBS.html | 572 ++++++++ .../Open_Babel_molecule_report.html | 609 ++++++++ .../FileFormats/Open_Babel_report_format.html | 700 +++++++++ .../Other_cheminformatics_Formats.html | 580 ++++++++ docs/FileFormats/Outputs_nothing.html | 581 ++++++++ docs/FileFormats/Overview.html | 788 +++++++++++ docs/FileFormats/PCModel_Format.html | 576 ++++++++ docs/FileFormats/PNG_2D_depiction.html | 712 ++++++++++ .../POS_cartesian_coordinates_format.html | 603 ++++++++ docs/FileFormats/POV-Ray_input_format.html | 627 ++++++++ docs/FileFormats/PQR_format.html | 588 ++++++++ docs/FileFormats/PWscf_format.html | 619 ++++++++ docs/FileFormats/Painter_format.html | 628 ++++++++ .../Parallel_Quantum_Solutions_format.html | 614 ++++++++ .../Point_cloud_on_VDW_surface.html | 609 ++++++++ .../FileFormats/Protein_Data_Bank_format.html | 610 ++++++++ docs/FileFormats/PubChem_JSON.html | 599 ++++++++ docs/FileFormats/PubChem_format.html | 582 ++++++++ docs/FileFormats/Q-Chem_input_format.html | 640 +++++++++ docs/FileFormats/Q-Chem_output_format.html | 640 +++++++++ docs/FileFormats/RInChI.html | 602 ++++++++ docs/FileFormats/Reaction_Formats.html | 581 ++++++++ docs/FileFormats/Reaction_SMILES_format.html | 587 ++++++++ docs/FileFormats/Read_and_write_raw_text.html | 578 ++++++++ docs/FileFormats/SIESTA_format.html | 583 ++++++++ docs/FileFormats/SMILES_FIX_format.html | 573 ++++++++ docs/FileFormats/SMILES_format.html | 693 +++++++++ .../SMILES_format_using_Smiley_parser.html | 689 +++++++++ docs/FileFormats/STL_3D-printing_format.html | 599 ++++++++ docs/FileFormats/SVG_2D_depiction.html | 741 ++++++++++ docs/FileFormats/ShelX_format.html | 597 ++++++++ docs/FileFormats/Sybyl_Mol2_format.html | 607 ++++++++ docs/FileFormats/The_LAMMPS_data_format.html | 610 ++++++++ docs/FileFormats/Thermo_format.html | 586 ++++++++ docs/FileFormats/Tinker_XYZ_format.html | 616 ++++++++ docs/FileFormats/Title_format.html | 578 ++++++++ .../TurboMole_Coordinate_format.html | 648 +++++++++ .../Turbomole_AOFORCE_output_format.html | 619 ++++++++ docs/FileFormats/UniChem_XYZ_format.html | 598 ++++++++ docs/FileFormats/Utility_Formats.html | 607 ++++++++ docs/FileFormats/VASP_format.html | 666 +++++++++ docs/FileFormats/ViewMol_format.html | 598 ++++++++ docs/FileFormats/Volume_data_Formats.html | 585 ++++++++ docs/FileFormats/Wiswesser_Line_Notation.html | 642 +++++++++ .../XCrySDen_Structure_Format.html | 602 ++++++++ docs/FileFormats/XED_format.html | 573 ++++++++ docs/FileFormats/XTC_format.html | 583 ++++++++ .../XYZ_cartesian_coordinates_format.html | 636 +++++++++ docs/FileFormats/YASARA.org_YOB_format.html | 577 ++++++++ docs/FileFormats/ZINDO_input_format.html | 638 +++++++++ docs/Fingerprints/fingerprints.html | 774 ++++++++++ docs/Fingerprints/intro.html | 583 ++++++++ docs/Fingerprints/spectrophore.html | 887 ++++++++++++ docs/Forcefields/Overview.html | 573 ++++++++ docs/Forcefields/gaff.html | 566 ++++++++ docs/Forcefields/ghemical.html | 552 ++++++++ docs/Forcefields/mmff94.html | 590 ++++++++ docs/Forcefields/uff.html | 562 ++++++++ docs/GUI/GUI.html | 691 +++++++++ docs/GUITutorial/Conversion.html | 623 ++++++++ docs/GUITutorial/Filtering.html | 645 +++++++++ docs/GUITutorial/GUITutorial.html | 553 ++++++++ docs/GUITutorial/Searching.html | 593 ++++++++ docs/Installation/install.html | 800 +++++++++++ docs/Introduction/faq.html | 633 +++++++++ docs/Introduction/goals.html | 569 ++++++++ docs/Introduction/intro.html | 553 ++++++++ docs/Introduction/thanks.html | 630 +++++++++ docs/README.html | 525 +++++++ docs/ReleaseNotes/index.html | 644 +++++++++ docs/ReleaseNotes/ob1.100.0.html | 600 ++++++++ docs/ReleaseNotes/ob1.100.1.html | 607 ++++++++ docs/ReleaseNotes/ob1.100.2.html | 610 ++++++++ docs/ReleaseNotes/ob1.99.html | 561 ++++++++ docs/ReleaseNotes/ob200.html | 690 +++++++++ docs/ReleaseNotes/ob201.html | 593 ++++++++ docs/ReleaseNotes/ob202.html | 584 ++++++++ docs/ReleaseNotes/ob210.html | 661 +++++++++ docs/ReleaseNotes/ob211.html | 619 ++++++++ docs/ReleaseNotes/ob220.html | 658 +++++++++ docs/ReleaseNotes/ob221.html | 596 ++++++++ docs/ReleaseNotes/ob222.html | 605 ++++++++ docs/ReleaseNotes/ob223.html | 582 ++++++++ docs/ReleaseNotes/ob230.html | 636 +++++++++ docs/ReleaseNotes/ob231.html | 614 ++++++++ docs/ReleaseNotes/ob240.html | 681 +++++++++ docs/ReleaseNotes/ob300.html | 862 +++++++++++ docs/ReleaseNotes/ob310.html | 577 ++++++++ docs/Stereochemistry/stereo.html | 716 ++++++++++ docs/UseTheLibrary/CSharp.html | 689 +++++++++ docs/UseTheLibrary/CppAPI.html | 562 ++++++++ docs/UseTheLibrary/CppExamples.html | 721 ++++++++++ docs/UseTheLibrary/Java.html | 685 +++++++++ docs/UseTheLibrary/Perl.html | 714 ++++++++++ docs/UseTheLibrary/Python.html | 592 ++++++++ docs/UseTheLibrary/PythonDoc.html | 788 +++++++++++ docs/UseTheLibrary/PythonExamples.html | 677 +++++++++ docs/UseTheLibrary/PythonInstall.html | 687 +++++++++ docs/UseTheLibrary/PythonIntro.html | 575 ++++++++ docs/UseTheLibrary/Python_Pybel.html | 879 ++++++++++++ docs/UseTheLibrary/Python_PybelAPI.html | 561 ++++++++ docs/UseTheLibrary/Ruby.html | 565 ++++++++ docs/UseTheLibrary/intro.html | 602 ++++++++ docs/UseTheLibrary/migration.html | 709 ++++++++++ docs/WritePlugins/AddFileFormat.html | 561 ++++++++ docs/WritePlugins/AddNewDescriptor.html | 633 +++++++++ docs/WritePlugins/AddingNewOptions.html | 621 ++++++++ docs/WritePlugins/index.html | 582 ++++++++ docs/index.html | 742 ++++++++++ genindex.html | 14 + index.html | 20 +- objects.inv | Bin 287 -> 9872 bytes search.html | 14 + searchindex.js | 2 +- 772 files changed, 164858 insertions(+), 8 deletions(-) create mode 100644 .doctrees/docs/3DStructureGen/Overview.doctree create mode 100644 .doctrees/docs/3DStructureGen/SingleConformer.doctree create mode 100644 .doctrees/docs/3DStructureGen/multipleconformers.doctree create mode 100644 .doctrees/docs/Aromaticity/Aromaticity.doctree create mode 100644 .doctrees/docs/Charges/charges.doctree create mode 100644 .doctrees/docs/Cheminf101/basics.doctree create mode 100644 .doctrees/docs/Cheminf101/index.doctree create mode 100644 .doctrees/docs/Cheminf101/registration.doctree create mode 100644 .doctrees/docs/Cheminf101/represent.doctree create mode 100644 .doctrees/docs/Cheminf101/search.doctree create mode 100644 .doctrees/docs/Cheminf101/similarity.doctree create mode 100644 .doctrees/docs/Command-line_tools/Rosetta.doctree create mode 100644 .doctrees/docs/Command-line_tools/babel.doctree create mode 100644 .doctrees/docs/Contributing/Contributing.doctree create mode 100644 .doctrees/docs/Contributing/DevBestPractices.doctree create mode 100644 .doctrees/docs/Contributing/Documentation.doctree create mode 100644 .doctrees/docs/Contributing/Overview.doctree create mode 100644 .doctrees/docs/Contributing/SoftwareArchaeology.doctree create mode 100644 .doctrees/docs/Contributing/Testing.doctree create mode 100644 .doctrees/docs/Depiction/depiction.doctree create mode 100644 .doctrees/docs/Descriptors/descriptors.doctree create mode 100644 .doctrees/docs/Features/Radicals.doctree create mode 100644 .doctrees/docs/FileFormats/2D_drawing_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/3D_viewer_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/ABINIT_Output_Format.doctree create mode 100644 .doctrees/docs/FileFormats/ACES_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/ACES_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/ACR_format.doctree create mode 100644 .doctrees/docs/FileFormats/ADF_Band_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/ADF_DFTB_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/ADF_TAPE41_format.doctree create mode 100644 .doctrees/docs/FileFormats/ADF_cartesian_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/ADF_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/ASCII_format.doctree create mode 100644 .doctrees/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.doctree create mode 100644 .doctrees/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.doctree create mode 100644 .doctrees/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.doctree create mode 100644 .doctrees/docs/FileFormats/Alchemy_format.doctree create mode 100644 .doctrees/docs/FileFormats/Amber_Prep_format.doctree create mode 100644 .doctrees/docs/FileFormats/AutoDock_PDBQT_format.doctree create mode 100644 .doctrees/docs/FileFormats/Ball_and_Stick_format.doctree create mode 100644 .doctrees/docs/FileFormats/Biological_data_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/CAChe_MolStruct_format.doctree create mode 100644 .doctrees/docs/FileFormats/CASTEP_format.doctree create mode 100644 .doctrees/docs/FileFormats/CCC_format.doctree create mode 100644 .doctrees/docs/FileFormats/CML_Reaction_format.doctree create mode 100644 .doctrees/docs/FileFormats/CSD_CSSR_format.doctree create mode 100644 .doctrees/docs/FileFormats/Cacao_Cartesian_format.doctree create mode 100644 .doctrees/docs/FileFormats/Cacao_Internal_format.doctree create mode 100644 .doctrees/docs/FileFormats/Canonical_SMILES_format.doctree create mode 100644 .doctrees/docs/FileFormats/Chem3D_Cartesian_1_format.doctree create mode 100644 .doctrees/docs/FileFormats/Chem3D_Cartesian_2_format.doctree create mode 100644 .doctrees/docs/FileFormats/ChemDoodle_JSON.doctree create mode 100644 .doctrees/docs/FileFormats/ChemDraw_CDXML_format.doctree create mode 100644 .doctrees/docs/FileFormats/ChemDraw_Connection_Table_format.doctree create mode 100644 .doctrees/docs/FileFormats/ChemDraw_binary_format.doctree create mode 100644 .doctrees/docs/FileFormats/ChemKin_format.doctree create mode 100644 .doctrees/docs/FileFormats/Chemical_Markup_Language.doctree create mode 100644 .doctrees/docs/FileFormats/Chemical_Resource_Kit_3D_format.doctree create mode 100644 .doctrees/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).doctree create mode 100644 .doctrees/docs/FileFormats/Chemtool_format.doctree create mode 100644 .doctrees/docs/FileFormats/Common_cheminformatics_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Compare_molecules_using_InChI.doctree create mode 100644 .doctrees/docs/FileFormats/Computational_chemistry_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Confab_report_format.doctree create mode 100644 .doctrees/docs/FileFormats/Copy_raw_text.doctree create mode 100644 .doctrees/docs/FileFormats/Crystal_09_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/Crystallographic_Information_File.doctree create mode 100644 .doctrees/docs/FileFormats/Crystallography_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Culgi_object_file_format.doctree create mode 100644 .doctrees/docs/FileFormats/DALTON_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/DALTON_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/DL-POLY_CONFIG.doctree create mode 100644 .doctrees/docs/FileFormats/DL-POLY_HISTORY.doctree create mode 100644 .doctrees/docs/FileFormats/DMol3_coordinates_format.doctree create mode 100644 .doctrees/docs/FileFormats/Dock_3.5_Box_format.doctree create mode 100644 .doctrees/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.doctree create mode 100644 .doctrees/docs/FileFormats/FASTA_format.doctree create mode 100644 .doctrees/docs/FileFormats/FHIaims_XYZ_format.doctree create mode 100644 .doctrees/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).doctree create mode 100644 .doctrees/docs/FileFormats/Fastsearch_format.doctree create mode 100644 .doctrees/docs/FileFormats/Feature_format.doctree create mode 100644 .doctrees/docs/FileFormats/Fenske-Hall_Z-Matrix_format.doctree create mode 100644 .doctrees/docs/FileFormats/Fingerprint_format.doctree create mode 100644 .doctrees/docs/FileFormats/Free_Form_Fractional_format.doctree create mode 100644 .doctrees/docs/FileFormats/GAMESS-UK_Input.doctree create mode 100644 .doctrees/docs/FileFormats/GAMESS-UK_Output.doctree create mode 100644 .doctrees/docs/FileFormats/GAMESS_Input.doctree create mode 100644 .doctrees/docs/FileFormats/GAMESS_Output.doctree create mode 100644 .doctrees/docs/FileFormats/GROMOS96_format.doctree create mode 100644 .doctrees/docs/FileFormats/GRO_format.doctree create mode 100644 .doctrees/docs/FileFormats/GULP_format.doctree create mode 100644 .doctrees/docs/FileFormats/Gaussian_Input.doctree create mode 100644 .doctrees/docs/FileFormats/Gaussian_Output.doctree create mode 100644 .doctrees/docs/FileFormats/Gaussian_Z-Matrix_Input.doctree create mode 100644 .doctrees/docs/FileFormats/Gaussian_cube_format.doctree create mode 100644 .doctrees/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.doctree create mode 100644 .doctrees/docs/FileFormats/General_XML_format.doctree create mode 100644 .doctrees/docs/FileFormats/Generic_Output_file_format.doctree create mode 100644 .doctrees/docs/FileFormats/Ghemical_format.doctree create mode 100644 .doctrees/docs/FileFormats/HyperChem_HIN_format.doctree create mode 100644 .doctrees/docs/FileFormats/Image_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/InChIKey.doctree create mode 100644 .doctrees/docs/FileFormats/InChI_format.doctree create mode 100644 .doctrees/docs/FileFormats/JSON_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Jaguar_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/Jaguar_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/LPMD_format.doctree create mode 100644 .doctrees/docs/FileFormats/M.F._Sanner's_MSMS_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/MCDL_format.doctree create mode 100644 .doctrees/docs/FileFormats/MDFF_format.doctree create mode 100644 .doctrees/docs/FileFormats/MDL_MOL_format.doctree create mode 100644 .doctrees/docs/FileFormats/MDL_RXN_format.doctree create mode 100644 .doctrees/docs/FileFormats/MOPAC_Cartesian_format.doctree create mode 100644 .doctrees/docs/FileFormats/MOPAC_Internal.doctree create mode 100644 .doctrees/docs/FileFormats/MOPAC_Output_format.doctree create mode 100644 .doctrees/docs/FileFormats/MPQC_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/MPQC_simplified_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/MSI_BGF_format.doctree create mode 100644 .doctrees/docs/FileFormats/MacroModel_format.doctree create mode 100644 .doctrees/docs/FileFormats/Macromolecular_Crystallographic_Info.doctree create mode 100644 .doctrees/docs/FileFormats/Maestro_format.doctree create mode 100644 .doctrees/docs/FileFormats/Miscellaneous_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/MolPrint2D_format.doctree create mode 100644 .doctrees/docs/FileFormats/Molden_format.doctree create mode 100644 .doctrees/docs/FileFormats/Molecular_dynamics_and_docking_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Molecular_fingerprint_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Molpro_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/Molpro_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).doctree create mode 100644 .doctrees/docs/FileFormats/NWChem_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/NWChem_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/ORCA_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/ORCA_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/Obscure_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/OpenDX_cube_format_for_APBS.doctree create mode 100644 .doctrees/docs/FileFormats/Open_Babel_molecule_report.doctree create mode 100644 .doctrees/docs/FileFormats/Open_Babel_report_format.doctree create mode 100644 .doctrees/docs/FileFormats/Other_cheminformatics_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Outputs_nothing.doctree create mode 100644 .doctrees/docs/FileFormats/Overview.doctree create mode 100644 .doctrees/docs/FileFormats/PCModel_Format.doctree create mode 100644 .doctrees/docs/FileFormats/PNG_2D_depiction.doctree create mode 100644 .doctrees/docs/FileFormats/POS_cartesian_coordinates_format.doctree create mode 100644 .doctrees/docs/FileFormats/POV-Ray_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/PQR_format.doctree create mode 100644 .doctrees/docs/FileFormats/PWscf_format.doctree create mode 100644 .doctrees/docs/FileFormats/Painter_format.doctree create mode 100644 .doctrees/docs/FileFormats/Parallel_Quantum_Solutions_format.doctree create mode 100644 .doctrees/docs/FileFormats/Point_cloud_on_VDW_surface.doctree create mode 100644 .doctrees/docs/FileFormats/Protein_Data_Bank_format.doctree create mode 100644 .doctrees/docs/FileFormats/PubChem_JSON.doctree create mode 100644 .doctrees/docs/FileFormats/PubChem_format.doctree create mode 100644 .doctrees/docs/FileFormats/Q-Chem_input_format.doctree create mode 100644 .doctrees/docs/FileFormats/Q-Chem_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/RInChI.doctree create mode 100644 .doctrees/docs/FileFormats/Reaction_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Reaction_SMILES_format.doctree create mode 100644 .doctrees/docs/FileFormats/Read_and_write_raw_text.doctree create mode 100644 .doctrees/docs/FileFormats/SIESTA_format.doctree create mode 100644 .doctrees/docs/FileFormats/SMILES_FIX_format.doctree create mode 100644 .doctrees/docs/FileFormats/SMILES_format.doctree create mode 100644 .doctrees/docs/FileFormats/SMILES_format_using_Smiley_parser.doctree create mode 100644 .doctrees/docs/FileFormats/STL_3D-printing_format.doctree create mode 100644 .doctrees/docs/FileFormats/SVG_2D_depiction.doctree create mode 100644 .doctrees/docs/FileFormats/ShelX_format.doctree create mode 100644 .doctrees/docs/FileFormats/Sybyl_Mol2_format.doctree create mode 100644 .doctrees/docs/FileFormats/The_LAMMPS_data_format.doctree create mode 100644 .doctrees/docs/FileFormats/Thermo_format.doctree create mode 100644 .doctrees/docs/FileFormats/Tinker_XYZ_format.doctree create mode 100644 .doctrees/docs/FileFormats/Title_format.doctree create mode 100644 .doctrees/docs/FileFormats/TurboMole_Coordinate_format.doctree create mode 100644 .doctrees/docs/FileFormats/Turbomole_AOFORCE_output_format.doctree create mode 100644 .doctrees/docs/FileFormats/UniChem_XYZ_format.doctree create mode 100644 .doctrees/docs/FileFormats/Utility_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/VASP_format.doctree create mode 100644 .doctrees/docs/FileFormats/ViewMol_format.doctree create mode 100644 .doctrees/docs/FileFormats/Volume_data_Formats.doctree create mode 100644 .doctrees/docs/FileFormats/Wiswesser_Line_Notation.doctree create mode 100644 .doctrees/docs/FileFormats/XCrySDen_Structure_Format.doctree create mode 100644 .doctrees/docs/FileFormats/XED_format.doctree create mode 100644 .doctrees/docs/FileFormats/XTC_format.doctree create mode 100644 .doctrees/docs/FileFormats/XYZ_cartesian_coordinates_format.doctree create mode 100644 .doctrees/docs/FileFormats/YASARA.org_YOB_format.doctree create mode 100644 .doctrees/docs/FileFormats/ZINDO_input_format.doctree create mode 100644 .doctrees/docs/Fingerprints/fingerprints.doctree create mode 100644 .doctrees/docs/Fingerprints/intro.doctree create mode 100644 .doctrees/docs/Fingerprints/spectrophore.doctree create mode 100644 .doctrees/docs/Forcefields/Overview.doctree create mode 100644 .doctrees/docs/Forcefields/gaff.doctree create mode 100644 .doctrees/docs/Forcefields/ghemical.doctree create mode 100644 .doctrees/docs/Forcefields/mmff94.doctree create mode 100644 .doctrees/docs/Forcefields/uff.doctree create mode 100644 .doctrees/docs/GUI/GUI.doctree create mode 100644 .doctrees/docs/GUITutorial/Conversion.doctree create mode 100644 .doctrees/docs/GUITutorial/Filtering.doctree create mode 100644 .doctrees/docs/GUITutorial/GUITutorial.doctree create mode 100644 .doctrees/docs/GUITutorial/Searching.doctree create mode 100644 .doctrees/docs/Installation/install.doctree create mode 100644 .doctrees/docs/Introduction/faq.doctree create mode 100644 .doctrees/docs/Introduction/goals.doctree create mode 100644 .doctrees/docs/Introduction/intro.doctree create mode 100644 .doctrees/docs/Introduction/thanks.doctree create mode 100644 .doctrees/docs/README.doctree create mode 100644 .doctrees/docs/ReleaseNotes/index.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob1.100.0.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob1.100.1.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob1.100.2.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob1.99.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob200.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob201.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob202.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob210.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob211.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob220.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob221.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob222.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob223.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob230.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob231.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob240.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob300.doctree create mode 100644 .doctrees/docs/ReleaseNotes/ob310.doctree create mode 100644 .doctrees/docs/Stereochemistry/stereo.doctree create mode 100644 .doctrees/docs/UseTheLibrary/CSharp.doctree create mode 100644 .doctrees/docs/UseTheLibrary/CppAPI.doctree create mode 100644 .doctrees/docs/UseTheLibrary/CppExamples.doctree create mode 100644 .doctrees/docs/UseTheLibrary/Java.doctree create mode 100644 .doctrees/docs/UseTheLibrary/Perl.doctree create mode 100644 .doctrees/docs/UseTheLibrary/Python.doctree create mode 100644 .doctrees/docs/UseTheLibrary/PythonDoc.doctree create mode 100644 .doctrees/docs/UseTheLibrary/PythonExamples.doctree create mode 100644 .doctrees/docs/UseTheLibrary/PythonInstall.doctree create mode 100644 .doctrees/docs/UseTheLibrary/PythonIntro.doctree create mode 100644 .doctrees/docs/UseTheLibrary/Python_Pybel.doctree create mode 100644 .doctrees/docs/UseTheLibrary/Python_PybelAPI.doctree create mode 100644 .doctrees/docs/UseTheLibrary/Ruby.doctree create mode 100644 .doctrees/docs/UseTheLibrary/intro.doctree create mode 100644 .doctrees/docs/UseTheLibrary/migration.doctree create mode 100644 .doctrees/docs/WritePlugins/AddFileFormat.doctree create mode 100644 .doctrees/docs/WritePlugins/AddNewDescriptor.doctree create mode 100644 .doctrees/docs/WritePlugins/AddingNewOptions.doctree create mode 100644 .doctrees/docs/WritePlugins/index.doctree create mode 100644 .doctrees/docs/index.doctree delete mode 100644 CNAME create mode 100644 _images/1,4-diamino-phenyl.png create mode 100644 _images/Benzodiazepine.png create mode 100644 _images/FilterByMW.png create mode 100644 _images/OBStructure.png create mode 100644 _images/ScreenshotOfGui-BioLinux6.0-Ubuntu10.04deriv.png create mode 100644 _images/SortByMW.png create mode 100644 _images/Tutorial-Thiophene.png create mode 100644 _images/Tutorial-Transform.png create mode 100644 _images/Zigzag.png create mode 100644 _images/acidchloride.png create mode 100644 _images/bananamol.png create mode 100644 _images/benzoF.png create mode 100644 _images/eMolecules.png create mode 100644 _images/first1000.png create mode 100644 _images/inputfile.png create mode 100644 _images/inputfile_b.png create mode 100644 _images/outputfile.png create mode 100644 _images/outputfile_b.png create mode 100644 _images/povray.png create mode 100644 _images/removedups.png create mode 100644 _images/silicos.png create mode 100644 _images/similarity.png create mode 100644 _images/spectrophore_cage.png create mode 100644 _images/steroid1.png create mode 100644 _images/steroid2.png create mode 100644 _images/steroid2_matched.png create mode 100644 _images/steroid3.png create mode 100644 _images/steroid_substruct_keys.png create mode 100644 _sources/docs/3DStructureGen/Overview.rst.txt create mode 100644 _sources/docs/3DStructureGen/SingleConformer.rst.txt create mode 100644 _sources/docs/3DStructureGen/multipleconformers.rst.txt create mode 100644 _sources/docs/Aromaticity/Aromaticity.rst.txt create mode 100644 _sources/docs/Charges/charges.rst.txt create mode 100644 _sources/docs/Cheminf101/basics.rst.txt create mode 100644 _sources/docs/Cheminf101/index.rst.txt create mode 100644 _sources/docs/Cheminf101/registration.rst.txt create mode 100644 _sources/docs/Cheminf101/represent.rst.txt create mode 100644 _sources/docs/Cheminf101/search.rst.txt create mode 100644 _sources/docs/Cheminf101/similarity.rst.txt create mode 100644 _sources/docs/Command-line_tools/Rosetta.rst.txt create mode 100644 _sources/docs/Command-line_tools/babel.rst.txt create mode 100644 _sources/docs/Contributing/Contributing.rst.txt create mode 100644 _sources/docs/Contributing/DevBestPractices.rst.txt create mode 100644 _sources/docs/Contributing/Documentation.rst.txt create mode 100644 _sources/docs/Contributing/Overview.rst.txt create mode 100644 _sources/docs/Contributing/SoftwareArchaeology.rst.txt create mode 100644 _sources/docs/Contributing/Testing.rst.txt create mode 100644 _sources/docs/Depiction/depiction.rst.txt create mode 100644 _sources/docs/Descriptors/descriptors.rst.txt create mode 100644 _sources/docs/Features/Radicals.rst.txt create mode 100644 _sources/docs/FileFormats/2D_drawing_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/3D_viewer_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/ABINIT_Output_Format.rst.txt create mode 100644 _sources/docs/FileFormats/ACES_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/ACES_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/ACR_format.rst.txt create mode 100644 _sources/docs/FileFormats/ADF_Band_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/ADF_DFTB_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/ADF_TAPE41_format.rst.txt create mode 100644 _sources/docs/FileFormats/ADF_cartesian_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/ADF_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/ASCII_format.rst.txt create mode 100644 _sources/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.rst.txt create mode 100644 _sources/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.rst.txt create mode 100644 _sources/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.rst.txt create mode 100644 _sources/docs/FileFormats/Alchemy_format.rst.txt create mode 100644 _sources/docs/FileFormats/Amber_Prep_format.rst.txt create mode 100644 _sources/docs/FileFormats/AutoDock_PDBQT_format.rst.txt create mode 100644 _sources/docs/FileFormats/Ball_and_Stick_format.rst.txt create mode 100644 _sources/docs/FileFormats/Biological_data_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/CAChe_MolStruct_format.rst.txt create mode 100644 _sources/docs/FileFormats/CASTEP_format.rst.txt create mode 100644 _sources/docs/FileFormats/CCC_format.rst.txt create mode 100644 _sources/docs/FileFormats/CML_Reaction_format.rst.txt create mode 100644 _sources/docs/FileFormats/CSD_CSSR_format.rst.txt create mode 100644 _sources/docs/FileFormats/Cacao_Cartesian_format.rst.txt create mode 100644 _sources/docs/FileFormats/Cacao_Internal_format.rst.txt create mode 100644 _sources/docs/FileFormats/Canonical_SMILES_format.rst.txt create mode 100644 _sources/docs/FileFormats/Chem3D_Cartesian_1_format.rst.txt create mode 100644 _sources/docs/FileFormats/Chem3D_Cartesian_2_format.rst.txt create mode 100644 _sources/docs/FileFormats/ChemDoodle_JSON.rst.txt create mode 100644 _sources/docs/FileFormats/ChemDraw_CDXML_format.rst.txt create mode 100644 _sources/docs/FileFormats/ChemDraw_Connection_Table_format.rst.txt create mode 100644 _sources/docs/FileFormats/ChemDraw_binary_format.rst.txt create mode 100644 _sources/docs/FileFormats/ChemKin_format.rst.txt create mode 100644 _sources/docs/FileFormats/Chemical_Markup_Language.rst.txt create mode 100644 _sources/docs/FileFormats/Chemical_Resource_Kit_3D_format.rst.txt create mode 100644 _sources/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).rst.txt create mode 100644 _sources/docs/FileFormats/Chemtool_format.rst.txt create mode 100644 _sources/docs/FileFormats/Common_cheminformatics_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Compare_molecules_using_InChI.rst.txt create mode 100644 _sources/docs/FileFormats/Computational_chemistry_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Confab_report_format.rst.txt create mode 100644 _sources/docs/FileFormats/Copy_raw_text.rst.txt create mode 100644 _sources/docs/FileFormats/Crystal_09_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/Crystallographic_Information_File.rst.txt create mode 100644 _sources/docs/FileFormats/Crystallography_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Culgi_object_file_format.rst.txt create mode 100644 _sources/docs/FileFormats/DALTON_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/DALTON_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/DL-POLY_CONFIG.rst.txt create mode 100644 _sources/docs/FileFormats/DL-POLY_HISTORY.rst.txt create mode 100644 _sources/docs/FileFormats/DMol3_coordinates_format.rst.txt create mode 100644 _sources/docs/FileFormats/Dock_3.5_Box_format.rst.txt create mode 100644 _sources/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.rst.txt create mode 100644 _sources/docs/FileFormats/FASTA_format.rst.txt create mode 100644 _sources/docs/FileFormats/FHIaims_XYZ_format.rst.txt create mode 100644 _sources/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).rst.txt create mode 100644 _sources/docs/FileFormats/Fastsearch_format.rst.txt create mode 100644 _sources/docs/FileFormats/Feature_format.rst.txt create mode 100644 _sources/docs/FileFormats/Fenske-Hall_Z-Matrix_format.rst.txt create mode 100644 _sources/docs/FileFormats/Fingerprint_format.rst.txt create mode 100644 _sources/docs/FileFormats/Free_Form_Fractional_format.rst.txt create mode 100644 _sources/docs/FileFormats/GAMESS-UK_Input.rst.txt create mode 100644 _sources/docs/FileFormats/GAMESS-UK_Output.rst.txt create mode 100644 _sources/docs/FileFormats/GAMESS_Input.rst.txt create mode 100644 _sources/docs/FileFormats/GAMESS_Output.rst.txt create mode 100644 _sources/docs/FileFormats/GROMOS96_format.rst.txt create mode 100644 _sources/docs/FileFormats/GRO_format.rst.txt create mode 100644 _sources/docs/FileFormats/GULP_format.rst.txt create mode 100644 _sources/docs/FileFormats/Gaussian_Input.rst.txt create mode 100644 _sources/docs/FileFormats/Gaussian_Output.rst.txt create mode 100644 _sources/docs/FileFormats/Gaussian_Z-Matrix_Input.rst.txt create mode 100644 _sources/docs/FileFormats/Gaussian_cube_format.rst.txt create mode 100644 _sources/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.rst.txt create mode 100644 _sources/docs/FileFormats/General_XML_format.rst.txt create mode 100644 _sources/docs/FileFormats/Generic_Output_file_format.rst.txt create mode 100644 _sources/docs/FileFormats/Ghemical_format.rst.txt create mode 100644 _sources/docs/FileFormats/HyperChem_HIN_format.rst.txt create mode 100644 _sources/docs/FileFormats/Image_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/InChIKey.rst.txt create mode 100644 _sources/docs/FileFormats/InChI_format.rst.txt create mode 100644 _sources/docs/FileFormats/JSON_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Jaguar_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/Jaguar_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/LPMD_format.rst.txt create mode 100644 _sources/docs/FileFormats/M.F._Sanner's_MSMS_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/MCDL_format.rst.txt create mode 100644 _sources/docs/FileFormats/MDFF_format.rst.txt create mode 100644 _sources/docs/FileFormats/MDL_MOL_format.rst.txt create mode 100644 _sources/docs/FileFormats/MDL_RXN_format.rst.txt create mode 100644 _sources/docs/FileFormats/MOPAC_Cartesian_format.rst.txt create mode 100644 _sources/docs/FileFormats/MOPAC_Internal.rst.txt create mode 100644 _sources/docs/FileFormats/MOPAC_Output_format.rst.txt create mode 100644 _sources/docs/FileFormats/MPQC_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/MPQC_simplified_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/MSI_BGF_format.rst.txt create mode 100644 _sources/docs/FileFormats/MacroModel_format.rst.txt create mode 100644 _sources/docs/FileFormats/Macromolecular_Crystallographic_Info.rst.txt create mode 100644 _sources/docs/FileFormats/Maestro_format.rst.txt create mode 100644 _sources/docs/FileFormats/Miscellaneous_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/MolPrint2D_format.rst.txt create mode 100644 _sources/docs/FileFormats/Molden_format.rst.txt create mode 100644 _sources/docs/FileFormats/Molecular_dynamics_and_docking_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Molecular_fingerprint_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Molpro_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/Molpro_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).rst.txt create mode 100644 _sources/docs/FileFormats/NWChem_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/NWChem_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/ORCA_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/ORCA_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/Obscure_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/OpenDX_cube_format_for_APBS.rst.txt create mode 100644 _sources/docs/FileFormats/Open_Babel_molecule_report.rst.txt create mode 100644 _sources/docs/FileFormats/Open_Babel_report_format.rst.txt create mode 100644 _sources/docs/FileFormats/Other_cheminformatics_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Outputs_nothing.rst.txt create mode 100644 _sources/docs/FileFormats/Overview.rst.txt create mode 100644 _sources/docs/FileFormats/PCModel_Format.rst.txt create mode 100644 _sources/docs/FileFormats/PNG_2D_depiction.rst.txt create mode 100644 _sources/docs/FileFormats/POS_cartesian_coordinates_format.rst.txt create mode 100644 _sources/docs/FileFormats/POV-Ray_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/PQR_format.rst.txt create mode 100644 _sources/docs/FileFormats/PWscf_format.rst.txt create mode 100644 _sources/docs/FileFormats/Painter_format.rst.txt create mode 100644 _sources/docs/FileFormats/Parallel_Quantum_Solutions_format.rst.txt create mode 100644 _sources/docs/FileFormats/Point_cloud_on_VDW_surface.rst.txt create mode 100644 _sources/docs/FileFormats/Protein_Data_Bank_format.rst.txt create mode 100644 _sources/docs/FileFormats/PubChem_JSON.rst.txt create mode 100644 _sources/docs/FileFormats/PubChem_format.rst.txt create mode 100644 _sources/docs/FileFormats/Q-Chem_input_format.rst.txt create mode 100644 _sources/docs/FileFormats/Q-Chem_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/RInChI.rst.txt create mode 100644 _sources/docs/FileFormats/Reaction_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Reaction_SMILES_format.rst.txt create mode 100644 _sources/docs/FileFormats/Read_and_write_raw_text.rst.txt create mode 100644 _sources/docs/FileFormats/SIESTA_format.rst.txt create mode 100644 _sources/docs/FileFormats/SMILES_FIX_format.rst.txt create mode 100644 _sources/docs/FileFormats/SMILES_format.rst.txt create mode 100644 _sources/docs/FileFormats/SMILES_format_using_Smiley_parser.rst.txt create mode 100644 _sources/docs/FileFormats/STL_3D-printing_format.rst.txt create mode 100644 _sources/docs/FileFormats/SVG_2D_depiction.rst.txt create mode 100644 _sources/docs/FileFormats/ShelX_format.rst.txt create mode 100644 _sources/docs/FileFormats/Sybyl_Mol2_format.rst.txt create mode 100644 _sources/docs/FileFormats/The_LAMMPS_data_format.rst.txt create mode 100644 _sources/docs/FileFormats/Thermo_format.rst.txt create mode 100644 _sources/docs/FileFormats/Tinker_XYZ_format.rst.txt create mode 100644 _sources/docs/FileFormats/Title_format.rst.txt create mode 100644 _sources/docs/FileFormats/TurboMole_Coordinate_format.rst.txt create mode 100644 _sources/docs/FileFormats/Turbomole_AOFORCE_output_format.rst.txt create mode 100644 _sources/docs/FileFormats/UniChem_XYZ_format.rst.txt create mode 100644 _sources/docs/FileFormats/Utility_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/VASP_format.rst.txt create mode 100644 _sources/docs/FileFormats/ViewMol_format.rst.txt create mode 100644 _sources/docs/FileFormats/Volume_data_Formats.rst.txt create mode 100644 _sources/docs/FileFormats/Wiswesser_Line_Notation.rst.txt create mode 100644 _sources/docs/FileFormats/XCrySDen_Structure_Format.rst.txt create mode 100644 _sources/docs/FileFormats/XED_format.rst.txt create mode 100644 _sources/docs/FileFormats/XTC_format.rst.txt create mode 100644 _sources/docs/FileFormats/XYZ_cartesian_coordinates_format.rst.txt create mode 100644 _sources/docs/FileFormats/YASARA.org_YOB_format.rst.txt create mode 100644 _sources/docs/FileFormats/ZINDO_input_format.rst.txt create mode 100644 _sources/docs/Fingerprints/fingerprints.rst.txt create mode 100644 _sources/docs/Fingerprints/intro.rst.txt create mode 100644 _sources/docs/Fingerprints/spectrophore.rst.txt create mode 100644 _sources/docs/Forcefields/Overview.rst.txt create mode 100644 _sources/docs/Forcefields/gaff.rst.txt create mode 100644 _sources/docs/Forcefields/ghemical.rst.txt create mode 100644 _sources/docs/Forcefields/mmff94.rst.txt create mode 100644 _sources/docs/Forcefields/uff.rst.txt create mode 100644 _sources/docs/GUI/GUI.rst.txt create mode 100644 _sources/docs/GUITutorial/Conversion.rst.txt create mode 100644 _sources/docs/GUITutorial/Filtering.rst.txt create mode 100644 _sources/docs/GUITutorial/GUITutorial.rst.txt create mode 100644 _sources/docs/GUITutorial/Searching.rst.txt create mode 100644 _sources/docs/Installation/install.rst.txt create mode 100644 _sources/docs/Introduction/faq.rst.txt create mode 100644 _sources/docs/Introduction/goals.rst.txt create mode 100644 _sources/docs/Introduction/intro.rst.txt create mode 100644 _sources/docs/Introduction/thanks.rst.txt create mode 100644 _sources/docs/README.rst.txt create mode 100644 _sources/docs/ReleaseNotes/index.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob1.100.0.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob1.100.1.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob1.100.2.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob1.99.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob200.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob201.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob202.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob210.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob211.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob220.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob221.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob222.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob223.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob230.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob231.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob240.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob300.rst.txt create mode 100644 _sources/docs/ReleaseNotes/ob310.rst.txt create mode 100644 _sources/docs/Stereochemistry/stereo.rst.txt create mode 100644 _sources/docs/UseTheLibrary/CSharp.rst.txt create mode 100644 _sources/docs/UseTheLibrary/CppAPI.rst.txt create mode 100644 _sources/docs/UseTheLibrary/CppExamples.rst.txt create mode 100644 _sources/docs/UseTheLibrary/Java.rst.txt create mode 100644 _sources/docs/UseTheLibrary/Perl.rst.txt create mode 100644 _sources/docs/UseTheLibrary/Python.rst.txt create mode 100644 _sources/docs/UseTheLibrary/PythonDoc.rst.txt create mode 100644 _sources/docs/UseTheLibrary/PythonExamples.rst.txt create mode 100644 _sources/docs/UseTheLibrary/PythonInstall.rst.txt create mode 100644 _sources/docs/UseTheLibrary/PythonIntro.rst.txt create mode 100644 _sources/docs/UseTheLibrary/Python_Pybel.rst.txt create mode 100644 _sources/docs/UseTheLibrary/Python_PybelAPI.rst.txt create mode 100644 _sources/docs/UseTheLibrary/Ruby.rst.txt create mode 100644 _sources/docs/UseTheLibrary/intro.rst.txt create mode 100644 _sources/docs/UseTheLibrary/migration.rst.txt create mode 100644 _sources/docs/WritePlugins/AddFileFormat.rst.txt create mode 100644 _sources/docs/WritePlugins/AddNewDescriptor.rst.txt create mode 100644 _sources/docs/WritePlugins/AddingNewOptions.rst.txt create mode 100644 _sources/docs/WritePlugins/index.rst.txt create mode 100644 _sources/docs/index.rst.txt create mode 100644 docs/3DStructureGen/Overview.html create mode 100644 docs/3DStructureGen/SingleConformer.html create mode 100644 docs/3DStructureGen/multipleconformers.html create mode 100644 docs/Aromaticity/Aromaticity.html create mode 100644 docs/Charges/charges.html create mode 100644 docs/Cheminf101/basics.html create mode 100644 docs/Cheminf101/index.html create mode 100644 docs/Cheminf101/registration.html create mode 100644 docs/Cheminf101/represent.html create mode 100644 docs/Cheminf101/search.html create mode 100644 docs/Cheminf101/similarity.html create mode 100644 docs/Command-line_tools/Rosetta.html create mode 100644 docs/Command-line_tools/babel.html create mode 100644 docs/Contributing/Contributing.html create mode 100644 docs/Contributing/DevBestPractices.html create mode 100644 docs/Contributing/Documentation.html create mode 100644 docs/Contributing/Overview.html create mode 100644 docs/Contributing/SoftwareArchaeology.html create mode 100644 docs/Contributing/Testing.html create mode 100644 docs/Depiction/depiction.html create mode 100644 docs/Descriptors/descriptors.html create mode 100644 docs/Features/Radicals.html create mode 100644 docs/FileFormats/2D_drawing_Formats.html create mode 100644 docs/FileFormats/3D_viewer_Formats.html create mode 100644 docs/FileFormats/ABINIT_Output_Format.html create mode 100644 docs/FileFormats/ACES_input_format.html create mode 100644 docs/FileFormats/ACES_output_format.html create mode 100644 docs/FileFormats/ACR_format.html create mode 100644 docs/FileFormats/ADF_Band_output_format.html create mode 100644 docs/FileFormats/ADF_DFTB_output_format.html create mode 100644 docs/FileFormats/ADF_TAPE41_format.html create mode 100644 docs/FileFormats/ADF_cartesian_input_format.html create mode 100644 docs/FileFormats/ADF_output_format.html create mode 100644 docs/FileFormats/ASCII_format.html create mode 100644 docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.html create mode 100644 docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.html create mode 100644 docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.html create mode 100644 docs/FileFormats/Alchemy_format.html create mode 100644 docs/FileFormats/Amber_Prep_format.html create mode 100644 docs/FileFormats/AutoDock_PDBQT_format.html create mode 100644 docs/FileFormats/Ball_and_Stick_format.html create mode 100644 docs/FileFormats/Biological_data_Formats.html create mode 100644 docs/FileFormats/CAChe_MolStruct_format.html create mode 100644 docs/FileFormats/CASTEP_format.html create mode 100644 docs/FileFormats/CCC_format.html create mode 100644 docs/FileFormats/CML_Reaction_format.html create mode 100644 docs/FileFormats/CSD_CSSR_format.html create mode 100644 docs/FileFormats/Cacao_Cartesian_format.html create mode 100644 docs/FileFormats/Cacao_Internal_format.html create mode 100644 docs/FileFormats/Canonical_SMILES_format.html create mode 100644 docs/FileFormats/Chem3D_Cartesian_1_format.html create mode 100644 docs/FileFormats/Chem3D_Cartesian_2_format.html create mode 100644 docs/FileFormats/ChemDoodle_JSON.html create mode 100644 docs/FileFormats/ChemDraw_CDXML_format.html create mode 100644 docs/FileFormats/ChemDraw_Connection_Table_format.html create mode 100644 docs/FileFormats/ChemDraw_binary_format.html create mode 100644 docs/FileFormats/ChemKin_format.html create mode 100644 docs/FileFormats/Chemical_Markup_Language.html create mode 100644 docs/FileFormats/Chemical_Resource_Kit_3D_format.html create mode 100644 docs/FileFormats/Chemical_Resource_Kit_diagram(2D).html create mode 100644 docs/FileFormats/Chemtool_format.html create mode 100644 docs/FileFormats/Common_cheminformatics_Formats.html create mode 100644 docs/FileFormats/Compare_molecules_using_InChI.html create mode 100644 docs/FileFormats/Computational_chemistry_Formats.html create mode 100644 docs/FileFormats/Confab_report_format.html create mode 100644 docs/FileFormats/Copy_raw_text.html create mode 100644 docs/FileFormats/Crystal_09_output_format.html create mode 100644 docs/FileFormats/Crystallographic_Information_File.html create mode 100644 docs/FileFormats/Crystallography_Formats.html create mode 100644 docs/FileFormats/Culgi_object_file_format.html create mode 100644 docs/FileFormats/DALTON_input_format.html create mode 100644 docs/FileFormats/DALTON_output_format.html create mode 100644 docs/FileFormats/DL-POLY_CONFIG.html create mode 100644 docs/FileFormats/DL-POLY_HISTORY.html create mode 100644 docs/FileFormats/DMol3_coordinates_format.html create mode 100644 docs/FileFormats/Dock_3.5_Box_format.html create mode 100644 docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.html create mode 100644 docs/FileFormats/FASTA_format.html create mode 100644 docs/FileFormats/FHIaims_XYZ_format.html create mode 100644 docs/FileFormats/FPS_text_fingerprint_format_(Dalke).html create mode 100644 docs/FileFormats/Fastsearch_format.html create mode 100644 docs/FileFormats/Feature_format.html create mode 100644 docs/FileFormats/Fenske-Hall_Z-Matrix_format.html create mode 100644 docs/FileFormats/Fingerprint_format.html create mode 100644 docs/FileFormats/Free_Form_Fractional_format.html create mode 100644 docs/FileFormats/GAMESS-UK_Input.html create mode 100644 docs/FileFormats/GAMESS-UK_Output.html create mode 100644 docs/FileFormats/GAMESS_Input.html create mode 100644 docs/FileFormats/GAMESS_Output.html create mode 100644 docs/FileFormats/GROMOS96_format.html create mode 100644 docs/FileFormats/GRO_format.html create mode 100644 docs/FileFormats/GULP_format.html create mode 100644 docs/FileFormats/Gaussian_Input.html create mode 100644 docs/FileFormats/Gaussian_Output.html create mode 100644 docs/FileFormats/Gaussian_Z-Matrix_Input.html create mode 100644 docs/FileFormats/Gaussian_cube_format.html create mode 100644 docs/FileFormats/Gaussian_formatted_checkpoint_file_format.html create mode 100644 docs/FileFormats/General_XML_format.html create mode 100644 docs/FileFormats/Generic_Output_file_format.html create mode 100644 docs/FileFormats/Ghemical_format.html create mode 100644 docs/FileFormats/HyperChem_HIN_format.html create mode 100644 docs/FileFormats/Image_Formats.html create mode 100644 docs/FileFormats/InChIKey.html create mode 100644 docs/FileFormats/InChI_format.html create mode 100644 docs/FileFormats/JSON_Formats.html create mode 100644 docs/FileFormats/Jaguar_input_format.html create mode 100644 docs/FileFormats/Jaguar_output_format.html create mode 100644 docs/FileFormats/Kinetics_and_Thermodynamics_Formats.html create mode 100644 docs/FileFormats/LPMD_format.html create mode 100644 docs/FileFormats/M.F._Sanner's_MSMS_input_format.html create mode 100644 docs/FileFormats/MCDL_format.html create mode 100644 docs/FileFormats/MDFF_format.html create mode 100644 docs/FileFormats/MDL_MOL_format.html create mode 100644 docs/FileFormats/MDL_RXN_format.html create mode 100644 docs/FileFormats/MOPAC_Cartesian_format.html create mode 100644 docs/FileFormats/MOPAC_Internal.html create mode 100644 docs/FileFormats/MOPAC_Output_format.html create mode 100644 docs/FileFormats/MPQC_output_format.html create mode 100644 docs/FileFormats/MPQC_simplified_input_format.html create mode 100644 docs/FileFormats/MSI_BGF_format.html create mode 100644 docs/FileFormats/MacroModel_format.html create mode 100644 docs/FileFormats/Macromolecular_Crystallographic_Info.html create mode 100644 docs/FileFormats/Maestro_format.html create mode 100644 docs/FileFormats/Miscellaneous_Formats.html create mode 100644 docs/FileFormats/MolPrint2D_format.html create mode 100644 docs/FileFormats/Molden_format.html create mode 100644 docs/FileFormats/Molecular_dynamics_and_docking_Formats.html create mode 100644 docs/FileFormats/Molecular_fingerprint_Formats.html create mode 100644 docs/FileFormats/Molpro_input_format.html create mode 100644 docs/FileFormats/Molpro_output_format.html create mode 100644 docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).html create mode 100644 docs/FileFormats/NWChem_input_format.html create mode 100644 docs/FileFormats/NWChem_output_format.html create mode 100644 docs/FileFormats/ORCA_input_format.html create mode 100644 docs/FileFormats/ORCA_output_format.html create mode 100644 docs/FileFormats/Obscure_Formats.html create mode 100644 docs/FileFormats/OpenDX_cube_format_for_APBS.html create mode 100644 docs/FileFormats/Open_Babel_molecule_report.html create mode 100644 docs/FileFormats/Open_Babel_report_format.html create mode 100644 docs/FileFormats/Other_cheminformatics_Formats.html create mode 100644 docs/FileFormats/Outputs_nothing.html create mode 100644 docs/FileFormats/Overview.html create mode 100644 docs/FileFormats/PCModel_Format.html create mode 100644 docs/FileFormats/PNG_2D_depiction.html create mode 100644 docs/FileFormats/POS_cartesian_coordinates_format.html create mode 100644 docs/FileFormats/POV-Ray_input_format.html create mode 100644 docs/FileFormats/PQR_format.html create mode 100644 docs/FileFormats/PWscf_format.html create mode 100644 docs/FileFormats/Painter_format.html create mode 100644 docs/FileFormats/Parallel_Quantum_Solutions_format.html create mode 100644 docs/FileFormats/Point_cloud_on_VDW_surface.html create mode 100644 docs/FileFormats/Protein_Data_Bank_format.html create mode 100644 docs/FileFormats/PubChem_JSON.html create mode 100644 docs/FileFormats/PubChem_format.html create mode 100644 docs/FileFormats/Q-Chem_input_format.html create mode 100644 docs/FileFormats/Q-Chem_output_format.html create mode 100644 docs/FileFormats/RInChI.html create mode 100644 docs/FileFormats/Reaction_Formats.html create mode 100644 docs/FileFormats/Reaction_SMILES_format.html create mode 100644 docs/FileFormats/Read_and_write_raw_text.html create mode 100644 docs/FileFormats/SIESTA_format.html create mode 100644 docs/FileFormats/SMILES_FIX_format.html create mode 100644 docs/FileFormats/SMILES_format.html create mode 100644 docs/FileFormats/SMILES_format_using_Smiley_parser.html create mode 100644 docs/FileFormats/STL_3D-printing_format.html create mode 100644 docs/FileFormats/SVG_2D_depiction.html create mode 100644 docs/FileFormats/ShelX_format.html create mode 100644 docs/FileFormats/Sybyl_Mol2_format.html create mode 100644 docs/FileFormats/The_LAMMPS_data_format.html create mode 100644 docs/FileFormats/Thermo_format.html create mode 100644 docs/FileFormats/Tinker_XYZ_format.html create mode 100644 docs/FileFormats/Title_format.html create mode 100644 docs/FileFormats/TurboMole_Coordinate_format.html create mode 100644 docs/FileFormats/Turbomole_AOFORCE_output_format.html create mode 100644 docs/FileFormats/UniChem_XYZ_format.html create mode 100644 docs/FileFormats/Utility_Formats.html create mode 100644 docs/FileFormats/VASP_format.html create mode 100644 docs/FileFormats/ViewMol_format.html create mode 100644 docs/FileFormats/Volume_data_Formats.html create mode 100644 docs/FileFormats/Wiswesser_Line_Notation.html create mode 100644 docs/FileFormats/XCrySDen_Structure_Format.html create mode 100644 docs/FileFormats/XED_format.html create mode 100644 docs/FileFormats/XTC_format.html create mode 100644 docs/FileFormats/XYZ_cartesian_coordinates_format.html create mode 100644 docs/FileFormats/YASARA.org_YOB_format.html create mode 100644 docs/FileFormats/ZINDO_input_format.html create mode 100644 docs/Fingerprints/fingerprints.html create mode 100644 docs/Fingerprints/intro.html create mode 100644 docs/Fingerprints/spectrophore.html create mode 100644 docs/Forcefields/Overview.html create mode 100644 docs/Forcefields/gaff.html create mode 100644 docs/Forcefields/ghemical.html create mode 100644 docs/Forcefields/mmff94.html create mode 100644 docs/Forcefields/uff.html create mode 100644 docs/GUI/GUI.html create mode 100644 docs/GUITutorial/Conversion.html create mode 100644 docs/GUITutorial/Filtering.html create mode 100644 docs/GUITutorial/GUITutorial.html create mode 100644 docs/GUITutorial/Searching.html create mode 100644 docs/Installation/install.html create mode 100644 docs/Introduction/faq.html create mode 100644 docs/Introduction/goals.html create mode 100644 docs/Introduction/intro.html create mode 100644 docs/Introduction/thanks.html create mode 100644 docs/README.html create mode 100644 docs/ReleaseNotes/index.html create mode 100644 docs/ReleaseNotes/ob1.100.0.html create mode 100644 docs/ReleaseNotes/ob1.100.1.html create mode 100644 docs/ReleaseNotes/ob1.100.2.html create mode 100644 docs/ReleaseNotes/ob1.99.html create mode 100644 docs/ReleaseNotes/ob200.html create mode 100644 docs/ReleaseNotes/ob201.html create mode 100644 docs/ReleaseNotes/ob202.html create mode 100644 docs/ReleaseNotes/ob210.html create mode 100644 docs/ReleaseNotes/ob211.html create mode 100644 docs/ReleaseNotes/ob220.html create mode 100644 docs/ReleaseNotes/ob221.html create mode 100644 docs/ReleaseNotes/ob222.html create mode 100644 docs/ReleaseNotes/ob223.html create mode 100644 docs/ReleaseNotes/ob230.html create mode 100644 docs/ReleaseNotes/ob231.html create mode 100644 docs/ReleaseNotes/ob240.html create mode 100644 docs/ReleaseNotes/ob300.html create mode 100644 docs/ReleaseNotes/ob310.html create mode 100644 docs/Stereochemistry/stereo.html create mode 100644 docs/UseTheLibrary/CSharp.html create mode 100644 docs/UseTheLibrary/CppAPI.html create mode 100644 docs/UseTheLibrary/CppExamples.html create mode 100644 docs/UseTheLibrary/Java.html create mode 100644 docs/UseTheLibrary/Perl.html create mode 100644 docs/UseTheLibrary/Python.html create mode 100644 docs/UseTheLibrary/PythonDoc.html create mode 100644 docs/UseTheLibrary/PythonExamples.html create mode 100644 docs/UseTheLibrary/PythonInstall.html create mode 100644 docs/UseTheLibrary/PythonIntro.html create mode 100644 docs/UseTheLibrary/Python_Pybel.html create mode 100644 docs/UseTheLibrary/Python_PybelAPI.html create mode 100644 docs/UseTheLibrary/Ruby.html create mode 100644 docs/UseTheLibrary/intro.html create mode 100644 docs/UseTheLibrary/migration.html create mode 100644 docs/WritePlugins/AddFileFormat.html create mode 100644 docs/WritePlugins/AddNewDescriptor.html create mode 100644 docs/WritePlugins/AddingNewOptions.html create mode 100644 docs/WritePlugins/index.html create mode 100644 docs/index.html diff --git a/.doctrees/docs/3DStructureGen/Overview.doctree b/.doctrees/docs/3DStructureGen/Overview.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f5b969a144540afe997eb74447a7f65a6f65f97b GIT binary patch literal 3486 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/3DStructureGen/multipleconformers.doctree b/.doctrees/docs/3DStructureGen/multipleconformers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9c1b7365a442efe5d6c97024219753d30ab73680 GIT binary patch literal 22708 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Charges/charges.doctree b/.doctrees/docs/Charges/charges.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a73f08252ca04f2ebfe60e64c24e2fba192de1a5 GIT binary patch literal 4601 zcmcgw-EJGl6?QCB6eW?89Ls1CD_x^VBB2uL6b4!w2ntnY48s=HC`yZ51l!r&A!nf7 zoz={&ECmSQAV^RFbC)gp1bu=&LV(-^$fNYWcl~Dn_@g*c+@=HwaL$}PbIv#4IeQMD zH~#jowQKputf++X_^eBUAQk~tnOO*gpGGv+*_YYYr`adjrfEs?Oo>$bG&9$r;WHiv zlE&Fbndw+{%|q2KpKmJaYcAsYan@k-toc#4$y%nNxen>XmTB)XB1hDTaC)dRs|dXt zNA%1(FuVPER(Ld@5S*_wwq{yx?J%1&^QE5yb0g$2%?7DQ%p%cRaxc}0&&D&y17&@0 z`XNyYLi}#TBr1L_1Zgr}c*H-JbZB)_)6`^Sw=%ZEUSrGb4x3{e=EEKn5$(w|j;ZWD z6Y{tx5*mBNqhWW%HA}rN7vCu>yzL@egEmfpDQ~AR82&)RFHhk z($z{}Hue~ecsvv`BAWZkDXwOUtG9nhYYhA0)nT{vIw;h0_**&b^D^}$_a_!Tn_>xDJ9NHRx}a z5$*54`|gALmjj5R;qbxz+WV`jk3CIZ-qV|@N9%Mk8~!vsb_#mzl%)9KW$a|^Kc9;Iy)yRq z`X|n2St4j2wI}niw=TzcNRos)Bo3TMA_#~Kww<>hJa~J{**u{qb@V@h<#GJ~c=`A@ zrs7Yk_>cbhxL+fnC5hFL%55hRA(0gWY{)+Z4$5wvV}n|z@fQDh+xhjqd%v;Z=!DZ6 zp8x;BWAy&{^61^2sv_&E$lw=Nk4oXkR1GBOM4@WGs4$fqRn@puh~_5p9ev1)TZOvs zV%z3ce)D0@d^eF|gg0=}cQv%oB+Q;%GmDiD4X{jYr}2vE_^GsAom=;C%ax?)<;;Sj z8iW|3OoLD|kHm3u#ENLR7c0+nf0pE4A$VgZ(8)l83 zaiFG&PF1DUFpYqE=?KSlo)H-XHE2jmB1l?*-={XH?60Q7V_@Xc*cSn`GSf=+aObx> zXdp6kXL{46QVQuZWN}C(5Vx-SIx{N;(i2u1xs}Xp%d`yX8#7Ou zRU3c;N(}gfdArvRNjyr)hyv~a?ca3_Ddts4eIWxkpy^9PlQF^MGB7K-q^Nti`>`ldG!2A{wiH^c z^ehpIx|2`l6!Eot$`vp8x#9*~5ihiXlwLNgyg-gEBN&BD$de34+ohU2qI^5^&nQ= zH!JhVRATvhOl6l-J;bZtpL=k`MOxTq3}rwE&4tTV?HjvNH(CHLx`u3(dol!$dWe{q)0_O#2#nhOyto3`Fjo*7^NDAtozV9 zc4}&Q_YFc(jpC@qD zj-B6Lu+J{o*B2?fYnR_(sD6&g=PUL_YTA>xn44|;99*z|;iy7lleN+-{GXH*dKm9< z>yanIni#q2tr=mh-I}u4s!q)xx;bSZMOSKD<=1Czl{a%kwiVe*AUTx+BU#VxoaM}L zc4jjdUJ3_LTO^3mNzg`vL4lwTMN=1PABtXqKBYx2ZJIX7n}7g)aT25HQwyZu zf6iRa4tJN!6@{jN40y#k^PkIq|IhjVIX8#D`0Fq35dTG!e#FW2O#Q(Y3m+$;*Z7A1c3*p?N^fiyM0~{OxMY} z8^gwkvHN53j4>7s2WDV%51oU0E^%Bdk?Sw_}@J?L08>=M&PLdHl?LO;Dxc`M~hu%MXM#V~=D`PThTJ zLv-Z2p#{wJS%J0}B~_<-03_rDE{{uGt{4v!#f%dmlW`I}c?AEz8~>le|EEC$<1vBy zoCG&!vAkg{Z!8)EN3DM%U9?z6D-$ZTFniEQk}%DuGy@P zDcsP}{feLpN#`hUwhR#3R~Nj0!-7*PP8KkUbK*VMKk=Rgt=|WNO+~*s0446+yuGcY z$WeHoiURM+|EG=Pg73S5ijV`Kb1{>~H_De%^#&KNt@{CQ`eg=n1rNYm&*3^-g;JzU zoK-kDD>(0S&4bZtXQ+79){&JxZo`VWj&GPP%#nywsb&U3N^~vID(pGeV|-0(wrqYO z;r$1))gJ1&+LYx7JD{Sly{6Kvx6TmTKQ7q*k$XZ4WmO+nS7qd=P8P_OBDuGXipoHN zI#9ppJ<<;saX{L^N$e=D&Pq#-p|-ze@g#&_GrYo>?14PQgtgW!{b z<*6un$_e@GK!kkIIBGr9A0e%$1ze969=d|)m_5Z#eb8(+*V&@xA*?%#f|O4f(bhNEWmDLmN{Xw#yx+QA)es)r&5tIBv{ZJ@XpPzD|mSW zO>K!k{+eV6gi<``Hkbr!I65I(FI)ho^Ho2fjoLiIIL|fpg-Xj=ijBvt z&k;7=Oh`1O*+CqQ$l2m(DD=!YdPwYYIu00>>ImgcL166AqMhZ~dIK}~(KrJACDYOD zsu<&Nw)1%g{gwmTSXX*_|13tZ7G(MNe&c>aG*sYjKa4fbc6wfzP1sSY! zZUNp(FgK3(vyoHr|C24@zo})kenpJ872`H~Rc_=m`<6H42!3xM1gF5@Z}*AdKgxx7 zclrmOGsUj6?s__V+~vL`+p3)_8)K8+K;3(_Pbcv)iBmIkkarvL^ z!sSW9hsDL2r#^Ig@!aC#*~JAsES_FG^A!C9D_xTB7H0r(hTblorT6Djc5N~O%y-uj za;{E2Fi7-55_u3kH#1QP#H>vv@?gfa3#`q;&%j0PQC=$EXs)nq>+|4C5{U>eV10pD zyosT=z5*cYb^7^z{PZ&M)|&wMWNiHb0Y8n|ee0|A=hyI~8t-&rVXe23NsSj#vb-fq z_8u2u-2ldGiwZ_WFZ>s3*;H z8S=>i+w8%gVS&;fL>(eL*@2A23rU2RBGj*uAU%40yZE!w+@8%D(#72V!=@ZK)g$Px zB3XiXQr|i!&Ze9=*)jNT8@P=lKg>CDqC?Ex){!`KDd9|t=vFxM_gmu3y)fV7SCy0G z)M&If<|g9j1zz@N%8x+=-{}+4p9r`fru^_n;ck-MHCxqu#$hZ1uBS`y`aZ{E&(I)o z3t=&ep8dovn`7~e0{ehmJ@Pl~%#%-?&#>tBKF4BuU@T5-7Z!}tZ>MlrfE1PO zE`4~$onJjoNve&;njqmqJHRT&`pE)H8;rH}M(OM`j%?@dq(` z5}ADy{ZylyF05bGCRsVZT~t1j%0fco>!)$bv`{&p?Y+7K z31>Zt$XFg9c8800Q6?is4i=}jzYFNkZ>E_MfRyYlvc37}(cx7{=$z@#iPMYpr~>(U zElmVRM+k&cmj#fEfKigfB}|j#$Fn4Hj~w>N7u?kjDQxzv*=TUe^k>QJJ|J_3-`*0# zk<+(+C+i`W&DwICzxuL)#fSu60|gRnnXgk;8VRVTNNN{q8+?)cWWH;!a9`#g5whLg zAUSSd%T~ITvz}=MN8mOVO>&%XQksS9Rog_tL0Sirml`0sPj9LwQn||O=&#FVaoEK) z_EHk9mdmA5md*Dmn;)R3&q6=cY0XG^;2*F&oDz_e6(5HQTU6d09~ z@G>(>y6M4A=ty6LY$8_X;^;G{j`df>0C^O@uSf^Qp8wre_+}EX zQNaI&fLD+V0h1lkII4$qNOE-z0&{0c;-#JM5ZGrHhAc+5*`@*~ z>up-FtZ{jd%Iu>(%!xv_B13cknmSR{QKni+{v0i7 zD)B}Wu|v5m4hK;CQV%i=$v|Ifuyr?Nn!h~DrZ4&InVP2=T9dtKI*2A53d1RwrScgR zqVbE<%%lL%9hL(RC8&JN-NBUSArI0{h z5~R(3K=EaD8M&+u-sEr>@(TsE{#Id@RfZ@hig~aD%M{U?B}l>bK74-aOJ>liUtjVV zr0`JzpZk&<*C0&yWoFxDChtigJO^&rHqLRLL?vd@~c?m7s4>A1d! zktUm-#Mvb{K^zFdQnSobQ_VGOT6X>~?3|WVH&7TOY@W}k*w*w*u)e77u`#2@%E{Uo zwh3ex14AP-U$$L$Ic$|>jU|eDlVaOamgGi(x7-BHk`Xqv6JOPMoP zPrfyV`r^Puy;1s_&5-|@RtK9t&2$v6JEhvXa8B55cong2P@%{drTY<$H9|)euw!IV zFF0G8_Ul@s;oAE2EJN)m^1NV9#-_Ho0XS0y7*Q`>mR~6e*A=)fO{7Vend}m0S-Bb3 zjk0J=3E6bv%c#^O5dqYgl)x;M#cDokTZ!86buKZJFkay(iS}GLW15v1l9bYu-y#6~ z?|SPc+ER(SYOQA4X3)h)briu4KI)^SG%|QR*rAW2UaxFLy;2`_UHF{t!66-Qq?&jR zns`mXD?aKv6sqW>?&}RISlQ57)hrTY>w@=*8AI4i2>6jV>y6pyAh zJc&ARpdmBX`GL|(p?7a>q-`+GC$_Xs0e~9mK(dGfkk=B3@m@Nd$^M0}~udtV3p|ijg8~NnRLwuSf15;(?Sp>%t94O+_ zl0%L3CB9bDoMlACwe?a0MzIwInMr2A=ZMe{O|EL|h}~QqD`-B&_sIyz+vfdHQ=FVn z>j*?WL~dSs*pQrYGpsZ}^m|Djvtx{F8BbpAaQJWtdy5PpW17&C_M?aIl7h&vZvTcJ ziZK53Rum}>>b{Lm{T@6#1G)W{fLDUL--h_zm$P3QITP}OKy2+%XYfF($7>V@n)2b!hmQGRA}W>MXzo0eILWCqyNTvy8`5@)&wHp7sWA zy-N3i&|BPD^8M&Q1Lv?vzi_4b^3G^41@ExP)iv5~#Auno0kYYu;y{+}TJbU1QQ3mR zP0>=ND-o*ceI%GG>5yDdawQta!L#cHRU6w25blAfWZ)ya^l>=a&(}=Q3t#Jne%?B) z^IEus=_V)-P9+5xmupS5jDhfVPUs*#K4ChbP8B6NE)^ai)gA_ox%bZbCjLIw{<6wF z&-JRv0q8dOKxS{VKGV^9WT5o3}Jm0iWg1Daq~5#y^poOD0GhY5e|?t z-vEhh;1oxDkr`eJ@u?#yuH*Ru++GtM^f-O91)oOc6`00^fLw`2P+#8wnxKfOLrPPp zIYFu7YTgt*U_!9=>S420&4dqx6%8ij&cj!VG~lFY5n@g3&zo944|TV?)+AxthZK$L z^QziYNJ%}Yu9&_lg>$ls4IBcSm3)MV?kCNH-elf3G^4Dh++;C$`Mp$g^UoK{lz#?7;gEk7e!ODwwQtm>59pBhS7nxUX-zv_CEa- zSoBXm3|@%E7|GMwSd0_W${J}$5&F|*P535wH#N$?XRH;P*QcM)A(pj1OFs@hE{kQ1 z5iG^Sa?u2ROF-TdP`5(kBrZ4-0~q6?w=pNWikLWz_Nsy-X5Wj7BB5m@tg?mdLkcHJ zrnX2pXdncwS##}776s^og~kketZl@xbXL*nK->5*^g?&h98hyHX}=BHek#5SO+XF$^{7>xiYNl1a7S~Iqs#7w&hS*YaiuH<7 z^&2lY4nN)aSmTfwcJ-^CQ+JC-Lu|qwMbj#mT%+1}92a-e{k~Q9;>`*+7oAGi^X8y9 zwq#nKR?>Z4Td~T9X6l|+FpR2JE9*t0q*+zXHw~>;FO;pKR&px3RgE{y&5t+CVG&z0 zt`W_LtmU}|eT5jR=|J`y=60{3i>u8W!>{|632s8y%HR4 zDb;K8M?o)Mc8wLjXZTvBe8#KcBOsTWYj}ox#c0&UW?x^WCmQBfbH6zthVyN);@411 zniu2oQTe~JQ`F0&Wveh+Tk}n)IvF1y8}%&T7{LoJ>#K%0+7k9Cz6S5|MqSSzwW`H( zy=079o>Q$?;y$D$Vr8ppH0Jv11#?@_jA({Gm@!=I3go@wIu(}qa@8uL-L;~ryL!<# zT&<$lYF2gC)ATF4Rn`k=ExLQ_1E%lS&Ww&;y?Ql%bu#X_tD_TRW0RwhspVThgCs^D zif>(XouUB|mbAi}Ru8J50Hs$ic=6iWQ4Qq2=B#KlO}#l2RPCYe*4M=Y`K;h2M%;29 zYO2DX|HmH?Xd!gr2-MHK2|8!q0`0yH|J{NAK7#-5#D902_tedM1Enz!m;>fP^N@LX zZV1gdEN&thLfSAlrCUL=!~iO6=q*SBJkF(t%+?)hql zVI>2LqTpUB=%S#2R+Sh-L6vF}?s9q>WsIaz@SL)u zQI1cOG_uJH(2S&(%gm={mUAtfzMqpcSClj{s#eXiO(_-D(jvMJ1xsRrSf-QdB`uda zmu^w?uYW;eJg3H>8r2xvl^6#|Bt@s}RKXF_(@9p4>CAkljnH>S5;T+qgIt*!VaG-Y zm5SbrFu|=domp5&w4~5?R3f|xxw}dYb4g4>U8W3#nWxlkO(@&hJZ-A1g_Qf?CxuH!5KQ zp*ZETqN|@^eVNJ3&nL27D1G;|N$l-?n>IzjaII>XebF$+lXbm}K{#a8lQX0*$@9yJ z`CK>5gA(SpNSL5jHOzh`%s8owajmEtdM3sh=CSGd#6n_;T52JYl>_pflITbjQH-iq z^W3E5IZZq(aCpZjdW18@!nv?Ke-15mHk+7crc64i%_ip0wydgu{hJc(bQIW7@D4TF z%}TTf+Gxjm(Re&ip`j_W@MI+2HzeKc#&pNjbhjw!?r+nb3eioBAD^OzRM91=yPj>q z4ZQcd%8`GUq)7`41d$>h6sgPY#MYl9dom5kLZHK3S{cQ=jvLWDPg!pb#0zT9R zRESU6xB*}wz&0Nw_!$XU-xx4Lg10LHA8Y|0R{$yv<810eQtRdWtmJ!kL%!n?e0M1M z+5$YO;8V764nA#K0r-jpe0f8_lM#SFqXe8F0j{!J+cPjuG9ZS<1Wa{gX*SV4DD^!g zk-iXx)V~_xPJKj)!yTQemsfhchOw~^(b0V+3M)qMP@Afz1Y&o#D;XE^U)|CZ$X=P0fri{GFIyGIH3D1nvrC+iM0Jp`8E zfoVQ@c4=fWlS(h8(&ykTFHg-UwM6j3RK_wBp8Re3qHDQZ9PLhaPji_!u*k{Kec{qw~kYA&QJEVl;Ri(0XwYTdU z8#~T6FrT@o&8O0GX)7;dKlDagT%%$2M zMBgDvbS{c0MpdhMjwpGKu_Ad-suU^k4w)xM{#LR_lYUkrU5G|P?P{d^lt_Uld1_6P zBFdppi0lZUNxvr9j3~CjGQCC(cT@?-gJ3zrS!k+xE~oGm9*{VG6i$CR!c!PgvhX@( z#VWdr4s?nK|g(y1o=c1$RO9MmP>pimQu-4j50i{Ur5c&puJ`??T)B_ zT~6ukPe!o}RV=Di4Ku2Q;YO+!JYG=`k1X6>r!yl{aO&o?++t$7ZS?)?uS(&3J_;yC zHLG#PlsMe`R7o(sD=!JwnRF(+H1;J4@@5ps0P0k8j4L^Ku>-qJDvk+Wk4i5uOeI5$ z9d}ETZ$*>TD{7JnB?(K!F%={e0kefr}dsxyeN78ICD|6 z*2LRS^M~B+^UKNRiXTN0dlB zs<{!<#15q9WM8do@a{VnD_@O*8|3$>1(s0KaYyB<_sA05d1sU7QWSuIg`Dnvve%`w z-iQJkK-FrTDJ2fCOu7-1Mc!Er+D|oGJS=(Mj^c??-D;p|CD3s;$B5ZtN9#pQ7ax~Q z??f|2P8VmCOo2v4Ocy(Z^poa`pO$d%M!^lb(euTml8!wk&nT+8(*)0pa>-!3s#~3Y zThhEAMH8cX)y;QS3B$gLXH+bO+cwF)X%60Qcl^Zt66AvoKq{6Rz%B&LQ5UF%C!X}I|!J}_Dv}RON+#F326B7(6-Zs`Gd4C8tiCMI zFQpdeY3AA+S@ElqsTjpH$knT%(n=^+Bj432&Z8R&lYDNrrEFp*$*}`ngDK|vGH%Rv zqlu_)HBm-M#GZCN!b9VE$nv7vJ$p$?=;P$tTg%uoLX*vR zFHJusVP1@a84BuES;Ke*4Y#L*k>Orc*IS-FmfZxT9Ac_wuMyGpYr>V3gylmT%Sz zh=Ep~3&Nx+Y}y-begL=;4_-2^#SwGeK1; zrTGpAg(GaQhRAqV^NN;HEgG6$Eg?c20`h!!jbgX?2ZGh{cvECfRrA(7->7(j*oG10 zj+!x8w9*I=oP6oXk)O&dj~r>W)lcb@WNUxF-EjYt*8XnL+JA=s`$>xNC&8^!G3@Wq znZt9N>jnEyaoCQoJ~@p*M%P+3eT_mIHH6`xreOPNSGQKRL|l86@)nM2#)4BeiuE!b zr>ey`%jl4~M{Jc9G%b$w`0wa-9C99f8E))fZ$(u`+%VjJ`34o)-|M8`d*nzrsBFBQ z-4{Bl{Fe}0bOb%wSX1isK~R2t#!;=KuAc847F&!;4Jj#>*Qu;~kAwx-*0SBzLX3Y4DmL>~M8zQz@DCQ3;&(bs5K z(RuMRSi(f#AzzIirH%v_SE}Us|8vfcCb>1#Bp3mPk-!5)bZ(u}+Nb=uR^PI>_sct8 za!=?b(d{l`oEaok^@$;X)m^J0j(6nS7?qYK$I&-ae?J;(suA@2@tRp{kfz)fC>4FS z*n*rSr;MDRAQxzlIQ601N_K)_fo`n0HxtgmR(FQvg!bsiiaX@%Nb`~DW*8?HFptXj zO8boV;bg*jWUZ7Nh`lY%k){H}p=c)JbY5+#w{$n`WB3&NI0_PTg1+nUT%qHGnx84Q zw$-aCcl0qds*)jfC|ux?V0hl_J4N3$I+d|`t%cnJY$f5C`^7%xxQ`q*4D~KDvM4<- zE%t}+Dxjk)dX48BX>m*VnrmA2Q|2Yq)nSQX8eXs8yHoLaD9D zn6R@r6CS*WTEt$7diB%A8^K(kNm z4DuNKd^4XhEw;DLaQb0dZ1D`=r*y)G*aM9S5=D_u2xkTVT+!yT@nS8!$+tyDDVqZ%)WomLfM%3}a?O1P^bhU@;y$f*&}!tw3h7xRYeI&R*C z7hi^=vSV&xu}|y@gxyigAlK3mcZ9Bls<7XHZi}5ky^^8z^zGdjLJy1G^bJrq&xD95 z|FQ#g5fO7vUMupOm(rIv4NAq2}O;Q1IXTq3G)7oTAppyrpSYMxOqIe8?u;;!As zHKZRJ`OYUZ`J+@E!{&_2IZ-)LKn;Efc?h8?t@}y&8X$uBM^Phb~=NO z-^i1Fh?{8~rG#6Yrled-Hs*}phS*1UG63$(V?Ku#@;SNLsEyn^b_^oj>8=z*)zcYS z{ef2Xl<-Yjd)aW~mf^4PJJ1b`nm&?+p|rkUfFYI8ug`4}cfjN-`L>0&KOi6ES6>&q zy|t>ZU(1`A`;=+^Lut-5#T47U3bKmxv?B-|c|qL3zk{E7POHXgq;%iW&T|e-4pL?j z;_1uv8pZ?4X6FH-*%e?k!5Nz6%D!PQ^%h9Q4c%u|NPo+Y9vCDgU|()PZ7}qdV8v?~ zUCiysP4=RT_E{>g~f|6hCB`PS<#4b`n zNgcLJ1!YgzPg6l@3igXsP(pzHIVvdf-hQ153V64_Nd?82+ux^xqPy+Crh=lY?SG_# zVwvrKr-Gt~?JWrWuqigzzKM<~Ce}Vc1;wJ;$El#mPkV+63ca**R8YvHU7&&@4eckX zptwH!<5W;co&76RP)wWs3KbMlW`CIq3gxoDK?TK9+25mrVwvo}qJn~n?0=wwf_LnH zqk=+Z?9JHkuqjT(-cLsqC1T%81qEr?$Ectf3459ficYYzR8VMuty4kU@^+01+7Y*Z zkqX*ywttxl+UK=DO9gGO+FzoA_A>3SQ$d@E_IIhE?K}G~sh~|W`|qis9V+`@si55< zdkFr7P1`f}K02b!5&Ir0XoJF@q=L2w>?tZ}VctGZ1uco&Pf$Ti(Y8YcEdblUKm{$l z+P_2vEqU6Xp@P;M?JrV6t9^B`w@ZD4zqi1Dn}G&=^Q;K+zs+T&qtnt>NwkunO-}?F z$mTO5#yP;|OQM;IYraZHNJE9L)6l^Qspi|bkFr6{cW^Gq#Wdd)K^mm_zTh-O^8?XJ z0%UW*uOJJLtwIbn)8N=LM392Uwjo+sUu+-EU&k73Bh6o@8f+)QFQgE$tu%k(8re(m z3)wMjGr=#UqOjcv$^v1#5kcYwTMj&6&ZlUw_25^Kc)%7UnxXz|M4}a6&xRzL5$tSB z=uc_gnXL)Ov>(s*gqvuay}>3WTA|8pR=ABee%Y{aOdGCjT6l!_H`%%bMWeEHiDoz` z8<=RtW3rK9UQEG|Y-WPv5!udgh=4#gG%-LSd2DGSh=F5U<71pBYZEbA2Whaq;ctEf zAy;g3{EMQV*zRy21s<{G;R?qSHQ4$@GwOy7Pz(k^FKmM%2svRZ6wR0pHbfCbQ?M!G zn8ilMh?@ejkv$6Dv1fzCJuEXaNgT7x$S84tATzQ{5p2n_WzsQrMcFn5?@F?9;t*Sd zY@N7+cIMbV=@`3WY@vKS(O?_p1)IDC)puewzzrwPa9tn;Q+0Wv#{WKNxRHRVU#W3CBuhqZ? z^Ys_%<}GxFAE0GYe!!mQr*?F@4g97ZMGMXc`A+~1&X9xHx-S?oJI@67!AXFd zQ7Jg(wkN{3-WWRBzI(W<#^Kgm`JugC^~2Y9eVSbC3)j`Wg2^e|*CG}PXpk4%@W%wO zfJ@(iDa_{S=J}T)m**N;_+ii?cywq*kN!3c`8RvpUToLtZSB+SJZx)Dkm0PX(o;Rl c0CEH2P#XVeH2{Ayr$p{}(`^m@x@=X%MACzrL46Kigud<#fx`mEs7E>Tb4p97Az1V98s3#0M4YRyJos( zd%9X()jK-^94NLWTR~Yb>i8m90b&^NvoElL7!HuP1VIoaNFDC$Wu+y+zHxMq9iC%Dp6Zcr4 zlDCtKf1Z3bxu9#2-IpSc9G2)K=;3(WcOw=gUrF>bbywV%jqLq-$sEN+P`vKVdUM|V zSCR`}P0uQ>d{%j+&phL?9(QctdVzJgRFO?DTQ>(%v7SumMZ9^ zwxofN1qQ>2_w0!K1IuOGLNV7;!itz9B9{l9^hKbr4&=p-iX+yrZqH>pq_hAm3)aF3 zrnZl99T7Mz3Yc5(LzkbSqYF?Dq1sOv>wzLASB4KqR5r=Z!YO^R34htBr?ZB-oJ67;_k-TVZ z1@9Z(@xZdJIN;<~tiC+D^5mU>zY6DYwl%QWfSnx! z)?FuMP5;^ZE)ANEjXW?BHOY**!^hE5tgo+9p;HFxv_#7r@O#33h z)E$_0j&W7R5R#DR@-|!<+!X-lZ`)W5rgOb71?C{o%-k_({hl$lrhk7JDk1+@lSBR# zApg#RApcYv&aj9u*yB62w4})r_>D9C(`;!~C){!}9tE2Ba}x-y>4OeiO63=mOJxmG z`RReA@~Ns+asy7Ikb-%#?!L#d)W8Zb4z>c(560y2kC{BCAF!0fKTR%)4?`0Fa6m~2 zp8x?=gd&i<#eIYn)Pndqj<_0>F3JuD7KM#%U-ZW$ajTHTv;&rs`0eD9cmR_4&jU%~ zyI%}l^0wd?X$O~55AeJ&4a8`0=oDwsGt&@Y;proA?;x%dq1`bPN!^63cF=*xzQ7ut zhUE%eIv$#+Yh|i1ZI}ddi>xDf%jYE%g5;Qd`eJ=F(D=>=lg>Qe{GgIoqU(PrN7qMy zuK$@FU2NBEf}Tr**F?{3nAF1cEVV!(mr2-EQwuM@FmvR{i%5}32N@f3Ot;SsWZ5cm zSZzDP!ebx+SIVt)gzZZLsPgcz6>-+aS_3F{k!_$v7nUWX=@#qrqR+Njw2p^$?)x!Z zBMijq;=-(9%y7&K1xA9Yv=B_MTZqWd1N7ueTozfmJ4I?E3$`29a{=59qHmwK@q+m* zCEoI`EMHvX+XEOQvN^GcWuyLF&xRo}Yan9Fvk@7#DLiZmg z7wsMvVm7iXSXqHn6Ab1ll9yk+r=)x9weR06@-1wx`(cQ9axBq=k%SbabNNJG*TX(ZqbS+oJ-H{;^#ZIk+eQD8N1TN3Wu zhxHlsa7kH((fLomPaj-+A3jv7tud9_&UvT1m+mwbbf& zQzA{%r4F;n6^e{(hqCK>6@|m2N$!te!o9@zz7cJL?u=cr#&8 zK7x)h6TjP(tm(T*K?#RHnFnA=5**3U@YAlpPcTxM;K z#Xydgd@7(dQ06-xx(wq-^04qXFU zPD^$}N*D@>4KuQuhpt>|j0K-50`4s)Ok{e&Thnj7-x?SJ=7@!DV{dT>7g!3k`A*`^p&lb{(^3tY@=M-|Ro&%W3FMn-wNPPQ#euLk;U{8<7lLh`(N^SQs?GaqJesp8K9+93(*q3n$|a1 zT$!{Pc04E|YsZikn#?}00VDp0WJMarXS3zn%U}9`DPUuvcU;8fl=ydqb5kBP$n>M1?V`5+fj2{BK%X z0_QxZOx3~IBdRT%cZ4rP=8QeuJsG%wSNhylUUGeoyw86T@u$1L#XoVY`#b!T7gS^v z>{g_Nnz&-5Cl76;2gXJMo3pT5+Z|`JrjJFUKh|!l?%>g)!Puip3Dw*+;|22hE59w( zx^{FLygmtG-iJ5eBO%dUrO{7!mrd91Df}}c_Y&;0*J(c}Cp5b&>D-`^Cblc0^OE`a z-t+DRbk=Ub>kiRcX({Rb!>Q@LIw`%oPtpXlMIz*Mx3-T_=hLpKl^8^}ggXwe3*9Aj z99HCoy_GxjNUm61l|mBq!HJdn6xi|i!A_=BZo2MGU;T5G8i%h9Iys@$rjp_}rl$Do zhfDE1U|1!$xG!macWPSSnUvOjL9lH`odP_UbDhjwu7Ky)Q?d6n!1FizXYZFO&3k&T zDpImN+iFv(kbj$+;(s|@iVLu0|AW7Bw^KLB_Z z@a8_Jy;;+BZ_l&(OrU-5Xj@7SN&^3nW-kdt!2`RC+nAH42hN zHC6Rk&f38SDU}{hEtTHkO67r@2qk!%GSb5`$T{A@d?*8t%k?Vr8BHeK%=gbV9D2!yMK{kKy~k5k4Vxqgh|pId3@{~Htf?;QpHhv{0)QPSCqB1C<870<7ZR`ujZ zlBgag5Oe^dlBlC>93?I*H52t}jm>8$Z%4it=V7R0dfv!n^5C9|gG<-ULlg^1h1_6$ zG;L{i)p9zhjy_8hA_M4Imxhu=mvGFZ-e*W;g52T}B@)fr<5B}TQ_z#;OdU)a<_KS& z>U3DW#Z;d$N=zXm*%xVgkv0QB&~TAemA~Rp3zXYH>;zyPV`_TDoJc>2Qm|kPxAp8cj(prLDd9BfOe{T>iOKBgQ*9v>AjK+AuFvQtIw_3Z zq2>;igCuBKhBM<~6I(W>3K-*^PFtAIOiPnCFPizWTzoEjAv>pgLoedcnuu^V5e1Zx z-BDflP+_0n&gxaR!yz&pX^UmqI_t7l+`;FT`*uVn4CsMM$sSs2kiEl*qvTt9nFkP1 zlLd~T)1!&5#j3sWsSU|-{owG!CLN25nkYhceHKC7M5?0_y^@N#GRmwO1&5nQo{S99 zbzp&dIUTp8A%FY9;Rhox>yyL-fF?bN$Olh}Uh+{P9oroSiMzNziX+|nzI0Y-x(sKO zU3>;b>5#)5?I3|oNQAopYQBNDOsD;tWs^S2fvqJs?uE?)e-Nx`K)ouRF2tmJL$88gAzwIw>h@V4L(|WhC!FIZp}7F0V|#EUZX2~L^71IiU7Ky(Ojtf1P-PZw}9v>85fWfbO1!3_qa-) zKY3m+hb(MDD0G0xF#=npmX;0L$ujfHOw^yVg-Wg|oq5fv^X>TD+Ze(GrmK+h&l z%|bm2>R3Sg#<@>kfjpO^wlgw3wUom@oDWaChy>X!luB}@+U6Uu{!LHye0;2iy%kuI z+4ES?XMo9GvoOzsfu;-zA#duFa)1K)ou(lMMOS0Urp zNI#CkWGF+}sWsA({;dR<>9tU*D%Aiac#J80+vH^p*{d`%sa!I@ zo%*yl^)VJ~(@z8Fh18wEegQ=uxSS3oG?g87m@>dw1yO*O!cQPz43~Zg;H!x~HPo8^ zSOA(aTD!QJBNM{!44{3U8q@3U6R`2_=Il$Wb$>Fegq(M2{d!#R~Y^e(oOlQ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Cheminf101/represent.doctree b/.doctrees/docs/Cheminf101/represent.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b0fd11605edc0850ecddf77c2df21650096b209c GIT binary patch literal 73728 zcmeIb3w&J1bssF@L5fR>5+#|kEGxc(B@sjjfB;B}WNa&Vk%Wl{1%M*u#s(L=7ua3y zOM7<-LX~aWu~W*v@k3g-N#j@K)=eDCk2GoBB!0BX*TixxwN08fwws5Ny0PQ<>#x7I zNgU_v_y3={kGU6f7XV2)mMi|G!S3FBXa4uhnKS2{IdkS>=ld3}x%L|Vb8mF2xqSIT zUpkvDSF*O#bg#=+GL4d5t~Z}(?s-e|jm>U%TP?lfR2sF6-E^F%G;+28yD^@b;Vt+Be*k4_(=PKo)zJY!H zPQGsUqJeYiW!vfZiQSL4L0e9L&8he2%b8*$YxiHs)l0>JUT3wmSSj|^K{U6cm@nJS z6W2BtbK6yKqBlM>X4mrPLH4Cur6hzuRnBM7{Z=NIuB9_|yJnTr)oQ-H>{#jZ>3lK0 zh)(0(saNId_3DxS{*{%LzLlZAN^QA+aNoY6evmd_&jTR{(*K&i)X7>UV}p`eYjM?T zsOkp+)@dv{ebv>y7G9ukRhFzVkA04)svXqrzhs{x(-Io7`|_37cpS0w1^fbv8Nm`g z;KJN(V7=V!VDdZg|DE{%75M)y{Qt__-HqHmig$AN=Gt?+bKSW;C$^v)x4E~GhM+b^ zU8TH`wU_c`kiJq51}wU`udmN~G+hLju9hCP{0=yB#5(oE`vwPw4p_K8JUM>UntNz! zWM)zgwViJJb8q|QW`OaC38TB!tG1c;;S%a058_s`J0Sz=;eg{_O*q5FYAy{hF*y5% z4i6B{vDxwQ6V~YP$%*;lNo#U^etvuw7*8G__R+OH^WG5Lgb`e)G-8H!oe|oPC`u(j z8_}T6O$|>b0sC|a?2H*$ns09gw#^7kbzwOx6pPVpaB%QG(rj|(*u*HPH9S4$6RG{V zOaCkcvup&@o-Sw2P()g->Ar5EQF%E5%0A(y>0^`Q8i)^vAkHU&ST=*$ZluScfB-*N z*YeQd;Qm93rKe`*=B@DuPJt-%Ga;PEE`@O3ZiLgBX4Pgu*Bb%7ihxG!y5i~R7z0xe zCNlNN_`Jr`kB7*bMr0jq!wl>OBd{X`wwMHLL<1IK=_ssU3}Jo542vz8VeK%&+9R+U z#iC*(Z&L7N(!N1~HF9baBR}l7i%*6yelY)&E-u4Yv0hYjB%q}96dha<7#_G8}I+l z3=2(|VeK@+IxHkgf;FnaiZGB4>e+t~(&`V*prA&YLEUTwCF388&Z1)&{|65avEN1} zhet7oOr9FC=1xs$eDu>F3E_O(2&Yr3HUqlF2uM+>;)}&7KM(F#bL`2JvomKVriSOo zCm%A&rMHK;{?>@ABZC&qux>TNIxd}8OV?@!It`2ntg)HX)2D}L$L6fz+1Z)X*6E4) z@=oaXa)0f&1bOo=YAqo3JTZ5axenz%&<)}(w7*K%CwScB#p#j_UNhU=n(u^ zK(E3bNl4mJry0jCBM#}v?660$s30F47!%G4DK<89YGiU;5iTUrKX@Vp){_LRgN>Mx z-DX54JfHQuGLGzU44L$02js0*Vf8Nxe2gRV77#p9S7t0}{B>!wk zvL}-ubxPG{K(8 zMY~d$WB)S5^@T)SiJJ0VMqH{3FXWxNsSEds*q=W>K09uWpP87Op9^LFr5_LBJevfk z(`MCXLUkDd4Rcg3l`BhvCq}3NW$H{0&reKS5kehRipBAnnG-(5wtpMiJB2?;LfFB! z%m80$1lS`0E48$;E+S%M5DqHJ)}u4@CuqKoOBX|8{Y4U#EpR`fRx_BpjbH`@OfBsw zOD76u-+q~dj?NB?bz#j-4$mF;snh=4TizC8`fd`Y&LviEhIEe+k_fG1=~Bt;fDw)| ziq&JoQ&XC;s;Ly)+maMPX~&H2UL!h@5X(vEMl^I0_KIQq=ON`@mWWMSF=N}^0-LQE zKQt{SFe$(Rxq*Pa%bY`C38 z|B8;vgQ_Ey{djzQcy>Ond}$r{U=pS+IjP=EsUJ3?Iw+K~i^aT{K~Yru21O}6J~KP< zx|wOZMaL&6C!pwP691y671}L;u>~`*y+&X%H|9%Nbui390|TN)2)TMaSFJyJ2aX9i zlS6-Pp`L`TQyMWt>or3AVbUyLhTq!&ZE#?m!hT}<=*0BI{6nE+z4XCw2>y677*=Zr z)7J`&nyJ^whrtmAW`6wG?65xd{6Yxk@gy+qd8}6%z3lx)DB_TusQ8*zgqL8NiD%0w z&vF$Tr6JeE4!ZxB|i-`CrvVRpK`&1$_HeyCLU_{m{+~j!7 z6q8kh`^2w2J~=)GjoF$xs_|3kQZ9Tx84W5nqZu@!k%{^Q7T?ShwfIDgeRyK{LGyo=F1NDeaii4H?nNM13v^-H3)R(u*-{zY=2mFNxTs6*IQ|Mr=a4$#iKkE2N8a zzYIhp~t_ zoi|w@LrR{B?ln3-F^R4WC7P>AwEL3qbV}9c-aBFhbV!&hQG@pM)VaA<>hnJdJMU-` zvbJJ^`urnCSR(g}OT|h>wA6^a7#!LsvP|f7baG~9R-@88LM*3}uxwEko5}PlBcA<2 zrpiiMS^ZHwg9GA>7@mWfF)??-nmIW>J3Oz$x}-TsvdOTdelx6B8)1oMU93Ff89-53 z2Syc{W?nZweN0>Z{YM&&oFp*qsMU<*HAW=TVWoVzVe+324#@i9)Wr0uIcsj>n7(YM zc^uxF1g29eHp98!2uC!UsfN)ogtj$G#m_k3Or7$XsqLBfhrIOOBxr3@4KuDEHR6)t zR!YJ(qTz~6G&-tZ3sHSI5mhMx)vytjto4);M`X}z;Ghxio*srl;nN0j4B--D;gd-) z5Tu1V&GZ>DA`$smP83HXvZrT^K?Gq;L*a8tfZ7mmWz^Y6jc8<1pzJRIuhBk5Ef}Tk zH!+RHx;blVd}?G|lSY@`8TQqelQAW%w2m1ui6kml>Sp_DpJ)T55S$%G#rUxh($|t8 zbxQqaN{t&)$y8fL?2{UCQ9(3#NTv}%1IZK%&8H-!~*?`^WS(0wTE+3_TNTfLUd2q%pQrEe=q2uC!8G3v$eeLloD zpNP+E$Bb{vh)-sqO0{TKWDbiC#J@A z>S!wPTaw^xQFWWibJ7UuK0;!=vT^3wCyM7uxQr*@pdFhydK3$DFp?wgzPE;idQTFv z4mM%N^?(tVsOD9><^|BiNHr{cbn2uv4;wwys@|bFvOkmz1+|)?%o?GHz&e=}F*Yo2 zY@;%KQV(R)T-l#Ug4T{!%*f`9$Yd!3n;cZ%Mfqvp(3rn|gV19@iG@SAJ*$nk&n6;5 z?Pf&tMns}Dob&<35eF}30T|71YD<#xI}BHCgB>@a7D!C$q?1E z+Jfp=6H!$YP(5fwC2C*Q3ucJP1N5K9Str+a-#-k8-8Yl)w4-u!_nkHZ66t-i1_5PM zW4xFwi4i+F3jq}ly^Gok6EI?fX)~JiD^|$1f;}M3`rQ>Tez+>LA~pgI?YHP zG9nS#U9DBTnDv-I+9wn5bno!&Ll&YU$4-rE0h*WI9d^}iNr*aFw;9mujDQsL)GB5P zIUtHKpq!k6@Sd5D#f)FlH1m5~K}wL6f6oX>NlM2bW)T`e@szpNJo@Ltf%c3x@g7Km z)_&4S7->IdL?&KV#5I{E<*0@%I{r0W&uSjTu|!;G!`z9lH{z0w5VdqRpD_%$!2$6= z%^~6+;V`o^GdfRciy(7JXgZ~4GoCjX@rVLkOLUeC9$9i<-&?Llvo0n9>|j%7d<#Z= zGQZRkz2zbg1fPlkPKXQ8oMsOvLrZj*pEW|0$v6m2j!u1u3y4FD`^z;<7n3n1`peTs zOd_Wh=D zn2niH(TB(2+*`ZC@J=n__bW+oI#{)tPRm9-Vyw^Qm(7uB!&>ZDtOw!b*CW%y4IYJW zB!TOccFgE95n zupur6icSonW}j}|lAsT6QEiza7K{)j64J?Y3#!4fFeH*}eqwTL+`w*^v{i^*NtoJE zxf#$oBOsZ8uwNTn-H9nev%!N0#l}%VU~?yj0V}qPNVB@`NrJRRRc}UBG@_Ca{J^sv zLp69vdeY?7)_QG!5}fu#pLWTJMXW$P<1LUxDKvOU?5zNcIoR%7=Sk?L2E}VW~Qnck;yDwPeL}TA&baR9oMtk($c#UaiI+}F2{&VBmz=m z)a?Ch<<#Ji;F28x2x`|n441T>OCLzWvPIQvhEq4fkx6LymG>lEsz^I27 z{!}O!KAr@xQ`#}3YZ%c9d*P+bThc}}bkRfkxqo!8o?E} zSv5d^nG7h=W_`p6NL0TD{3tm=6afUMsHXazQrqIfjW}yKOf#ytY)w%8I;AZ$$^O0( zp*TrS0ikgppIVzRihK{S?=@|EMq96VNfN%TUQ1?#j~Wq*OyheQ5h_E-pgza(J*!zo zcPHZW+A-sMqY4V@sI)+X z2NF?TNI-Sbh)N>zU*}IuYpA6yUc~0j*F~mHZ5iWi60#09WA4ef7_rH$`A8DB5e-{} zVnmkm`K;}ke-X}_l|*Q4#SHDO8nkWhmU>IFVZAq_%G*jhe zYpPPTGmWC{98pM;5-GWzNYs_jHr-t{?eX4{|9BIriwbW7ZX{QF%!iWO?Y^Nuhq#FT zTBBUHYyB&g+PVHp)h;il7wux-a=xBxEFvM5@i&#TiaD&D{?VL`u)-z4?+@DVLlUf} zHYe;LD>V6@l1yqkw`aQ1 zBL5Vr@;L9_Rd{#sP{CDnLK3RNoAEJ7?sOZw=yWb!w~*s4ZTZAqr)vuDKppPQD|oIq z@ARgFPSN}1U274b^>=BldlV}?q5bCG5~A@r<$j+|#%m#wK81QVO{AxShkPP!mmc1R z75(&bEnUrN9eL(f1n$q2Z6-g1;$|(w35zszbt{d8DE4`qx$_)m#LJL-oO*55LQJsS zn#JW}rOG=}-qStjk&dgJu|akuB8(Nl&_FiP^L$*Hrt<)@}(yJEjK1;Iv z!6Sn&7D1+q3YO&iE9UFqXf%)d5wc0l^@_Y!qnx#C#Z?aMha2f~y;15d*+@l)tZ}G; zKI(jZ6>pZZG3x6GJ93adu2!kzgN001R@rWNzpmO~!n!nv8<^q_O)P=}XttEDokOfB zve7yAQln^L7fY>j0h`Y_21&PEWyKO=;E7!Nye)lDtT=W`-AE9qu7a*hBYF{}-7C!p z$qd<>OBK9LP^EMQULut*qazzK+;L0ITEUJ#3jk~AoD3+{sI98(cHOz1?!;B&4o^69 z^nW4XQ8oG@W3EGX27u2y8h5%k#yH9!H#bBWO{@6nSjEX{?I>1$i+3wD7$Q5}!Oe55 z)^_}*3SUI^fneI|@wWd8ozlD7<6pZX=)25gMyr24cxrS7@Z_uZ__wbF-WjF{d2!%! zgg@^CH=I7=J#HuFc;sOC96NZoKW8ABTfv`6Fw1>jW92h-`nQx1Z5~5MT z!`YzbO(9DDKwC6tyy!KJVX(u93>kuAK4JFlztHO zrM)7nm-5hGta{ox$JQYZm-5RE%rTV)p0awF;?SJi$LhszsEnj0-Q`!-UcofZ zhL9Xr5!)fLF$c;_Be`%hoNMqJc$YlLf_XM$rwA-xKF@wpvlM^GVshr>>Q@#{9Uqzh z{$~g$9x}hu_yrOryULUlZ0Hua^07|}UkB?mus9OwT zL#uo}f++zLV3V)f;}2dDwqFu#FEqgwvP+zJo0&S1Jx`lDq1tX=L^ADj3lBFc^@tID ztOo*;l0PE-C4qOJH4c3oiMMHo*hL3&*Rd){f(^mj*ON;1_F7|hsgkK7^Rgp-*d3Xp z-9wjKw^SApeTDO61*SjW=^ng1#2Q~+xE#K!aqrcT9Z zh!@m<3fbW&HwF5gygSgOkORp>5@jM-Jk`7sQ)xZlHg&Obqz1lAk}l>#u|8f|fh`UL zkkfHgAJHvvu|%OHtXfX4QmbRW26I94LYJmW6(~}b#q;?}1NsUSEu>ec)&OmlqA#Dx z!5YqI&OsxnG3Q#1s!}#f?nI+0qy^2`RY{?qw#t=qFH{~I?^d+B{F=I;D8THLH21LV zVafxqQmvE`4=)vM_VGyZFyl8?b{9Sl)0IbR z3^r~5XoGI|7P@*x&;?`s{-$yOM}Ngb-Z==A%RfmQ+2n`b?%r-+sKOz*03Sc*bcn<3 z!s6@B>BU=G z5x=F(0D%;Sh{d3QHyXx0rX2re>wH<*)$q*PVtm6D3h|F0ExU~4V``|%o2bO;raYwy zw|El|ajAJvd0}lhAmkF~IyP))`>f*vhck#}Ur39m8N)P0)~i5tkIoN|?6Intbd}wl z!UI!dlUCQlO_hlcQJlpkaNrH1+r-~rY@ z&^L6zuYcfh()~aR)Wn;@-y!wUXU8ANcT*gK4*vfzHcUD1eYWt<>nVJf123>bkTynR zjfkyyW(=ZPUoG=xS-yx};qYTpiP3eBbI?wfuuce9YhXU8C2%n@>baWjxig{SuVBrK z>vl@$LaM>-dOn|p2EKx&Yp6Q7xi^aqjAaMH5f(%Dg}tkLAK3#jTB*UnVC#J%ExiYw z)L9(C#oMte#?zT(aZe-COM+RkQZ81~S)Ny=K5=HiIaOKvLSMnDzUJ&g z%G1vBHJDE|v4KYCkMe9V`{Sr_xcPdFw@fn9t7dd9xuQe{{n`VC~8t zGF>DQ^2`>@1Ows`QuZf(kdSir(h^)jSoVQDPoJYM4c`bgR!C^j2s&>XZ1)Hj@Mz^i z;v+m_ah1~sE-9@Rw^5OnWhZ2bkU62xnzo_QLvKeE1C(8*@u#}sD9SV(Ij#>8CM%jv zfOZ07K;{ps-iVGsV2gyX4D=1csgxS%JAjk^*gl(LyAm04u=h~xXUcVLo>89IEGDPG zkMkl$FqJEcgzPtc1?-2E9ZBrxes>Tvy*Mak@L`6PLm_c2=Q(nc0|PrxPOPsYfj(Hx zQ&jeP%agg)Y^|~k%|QCGvILp0Y$)}dO^>5E+*R<9h5V;jFQy9x{zK0f=|}b82y8@(#DkhL2424I$lZaR+%?Cc&Tl#~xy1fSD@-vI12I3}WRXiS$keW?f+drD?5jSv6` z(QKYG5Tq_W3S=wzvdNC24BV^y_8|`{>l^OGN~4(dJ@ulwg1y!7L1Y46hD-Q0y8S)9 zy}pvqAbbwX2o&s<#&XW5OT@`S-xzdvJj`IYd^xp;a(w1F8u>As>u zUnY(VmT;h6zq7HFBtA4ABIWD4mfRY;J;QrF_79cbmOfj$DA$eN?VY4@GVLoTN34nR zXl`OJj+U929G}~3ot~VQfh|KmaJX*rsgSns+Y~o@-q**2hkWmAHs*bGr-!Ych?>H+wqPk{97_O%$Mb{Z_+6!^Z$SWvCIK=uid^0#(&3Y{Y=fX#oKf-gZ4;((Q zZ#Ud7Uc9!{qXOo*c2u(wZznF42=%c(ny!lH91~68iU$M8cUX(=6){_q12&RQeKtkGlE*fDGTn053RTes zIe&*4%2q06kcUCrT^_Z%M1r6)MPMw>Gx1&?`$^I`_uQMFX^|lu&w`;ts|ejJs9CA> z6)>(K5=7C_dkBxKC~sQ8vScFfMc8TBap=AhcX3h04W1AT;Zvwqi!Ya6#ZT;biO_^S zj3s`?Zl0ogQg6^#S6tmIwE*C5vIG}JWR(&e=dte!GzbS@q2{Es714ghtBbb0;}1>se%jQ<1|B35ugXGI&ijX|JN0UGBq_UtGOg`OTYb70KRac=_b z86cTb9gRMlD1*3428`puRclUWL{ARPgTWTzd+cT0XE|y(gHy94G*k!+D150c^M)H>;aEv6;_CBgFpy}4N&M)nG4v32remA@Pb{r z1|mqLl5{2mftAN=bp^&dXb6KG9mIHE`cJ)=^%k=*m7LE*aRe6?vHs`P!<9C2FPnf) z?(G=yTsX2H1#}hB;#Wt{u?qM|V{onr9HvaC#Sdc3YlVGEbrsM(C_L_=L3e>?1PTzm zEtFX@4B$ikg-=5q8GY76@cQCTxpr1~R_Nfld}U!S;^gDbET@E5cls)|<$mhivNNmK z`!QE96~QijQlYFL(xMOx)3atBPf+Rt(~?ya;={jEOlaaF*HqNMwbx!9T*NiRz(~vL z=9$buhX1gRQpKf8QHexfw<+e&+3d`{;?_4wKYGg={AH@u|i7;LgS>w^;5`PdEBwN=gALN z&Nk|KFbKskS1?dbNjbAT&aiRlI)CLPTkEsBXCa}a8tL)$BBRQKW_@9RJ$RLszC9e+ zq8WMvRX%ep^8JdCi(qWZ7~ya)9v-4huIkzkgz1FBjseMtbgaD4A>!TZZ{Z1C7knXl z8Q`M91L87+$WXeeU=L>#Ogu7fIMOjq^G%^^*KE*S-k9^3A2KCal@$xckIX`(UB25w zg6ac*XqRlSf)B%1fg>C$ra_^)v!+XhHN~CeUcCXa^q(+LX4> z&WQgJg5$Kk2(gJNOZThi8`X41MjK|N0$$DO=bEJyz550a^bYi5?Xu4sd1`vX@K$W8 z8aRa$9_d&@6RP#2!w+C0hLi{!DwX;&xxP%g)Q8p@=dgf;EpkighrN}gU|^@b4XNAQ z8?)H&S%&JPp6UFIwM4=KeBX zZBV^bs{J+xag}>E&8g6-w z95>1EMESj0+3okn_qtg{M9|=x)a3-@AZMCSJ$*==nZU+M4(}HyBeiaSnf?cm@Wsg} zT$SnF6iaCn$PO^KE+C@oG&jYaVg6v;5lp8NKBZN-D^_7^iQ}!+5QVJOd=YCkuu-^^ zcaz!{A~HP{gJGE@2OVxNc#VrwiMX6D$Hn${taE8xv4+iFf{DfVlDoS%sGa%TcT>Q9 zo{6rt)V*Q;^CQRB)>gO|=-i!ae1Li^m}1#zEZD79UHKKKX z5x-zj<;(cvv&)(Hh_&o_bT;i{oxgJb>J|G|uZCZhuBI#Wsa^$tYLYMYs`^nAeW<=? zp@r`>$!|KE;4?M&OFds3T=AFhE4?y5=@s}$uY!M6^V`J*FIFm)Z&ajQcj0%maq1qv z?1d1it?>I=Wran`b!8qOxU8YCNxkfb=LiZ~&uTtPxw}pdv#8blK1jVElcx&b)?USA zDW7>7iqDIZi5_%W?RkMqCN&xmdsO(l?pCP9YB?{Qa;P8sk+@W~H?x@c{XOYuL;R80 z5HCa&&J$O0dQ$q`PG)@c*EsZ*Lk-hgW0;anBVRR5s#7Vb{n~zpjjT!P>MQ93y(+Sm zVNhEMS?SwIjjvHJA1Jqi7l{>X*zTh?%=9uWLJRCldZXY3<51CkoDkP2x(YaAXm9UJ zCFlhj$>VI$TK$arzmUbWu%gHm@qZl;7F)x0+O=B7TK!^;X5n+r)vGY@S$zz+H@|_* z4c|E8vw9_@*o#UK*6>>|5c^W!eQ6T0G|v1Cdg!V;UcL~kFj=~AP!PIs70DJvjS3gdN1ptZhNxivWt6P2Z$cP-au7aE8Y0-`bSK@XVk; z6N%AUxJ1pMkAQ9eRGwPj4B7!!evyHL$N&zKWj$S6VFw%XhKocuX&`QnfryTQ zZnr~_xb03I`QNvq>?JZgp7-k}R)f97_|wXrAbK#i0yo{;6H~i4W$ShpX}t2~X5miM z=x#-u^;MjfYI^Cy#a0GWShVR+XJ86Xd5q5yKejhbsr>^R>rG~{$cjuZ= zJPpuj3{Z3s=)CURu!icC`Fc<@UpEoor(3ZkPuz+<9I;|IQE}Xu-RZ{*_O95Ay$)jb zG&?r9h~<_=Y^ITmYu0M!h;NMvt5Cy)y?$>h)D$!#x9;^5S5c?%`~3DqHARDEZ@TYW zRI7MkZ@>c^2)$gd=livu-#~To{=U5tM2I4{Ap$>p5&7B62vM!ywVM!5j+>BL;9&_P z4R@r4E{sO&{*TDec&BehhJG-Rp{<|tOb?}vwZ1iKdQgW`rbp|ieiMFf-1_VI(`s_# zn26@T#EGNYCaSOzS2mRO`ulqbk-@8&Q_rfLF>+Q@7S5no!w&1BFs;{t#T*CIT zVXBCn0$4x`9^6O*IPSPxcQfHlqkh!7zc%gZ6KgMoVOpQs@W>+Nye)xG1rPaK0zV3X zkva5T!xq!W%1&N?hZDlgBfFm@7ibvg;i2wfc1^@)rx){b7zQHAGr0;kD9O$y>-Ftl5wsuuL zB>caPRhm4Vk?@|=gh)gOI@6L!P;)&pQLo(`p+bc5*A9oq`a2VU4ui_)60k{g=1uVy&_N8Eb4q5`+jvf;=7X=?(G<=#$JXB-q~pzl1U?-T|ADS)Wdp z3+_|h(@3wbhBU?)*q*0ca6$sJV5UR9I{4`M#oNFePaA-=yOoOabm!}cABBRz-SFN4 zO>zJRIs{xMiLry^y11diy`FM*MhcPpOk#~2kzI~kQAZ|cMtBehw(~MY(W2~6>f7UU z(kHJfY6%E@esPB#dHwZK^RqQ`NA3F0L^?8L0p{r)3N>o(t9RE<(dpb>uNQqkF&*zm zz2LWvC}l?`^$ZWP#~L}%p_lksG3L2-*EwPhW5*jd@`}O)9>5L{zZb8hijbi9Y>J?s zqSqBX9(nA4vD!qI&GUD@)5k7av zS^5xqMuu%*#i`V7Jby}Z)*-Wj%DL|ASv*Bb60%FKt<)^p4Ii=L)4#(J2`*phBqdL$ zkr@C2eK`jP#ojd8EetIRyqv{GcIGgZ%mT+IiE2{jhnW$XANBawUL*aUtaHUoT8*hN02&RjcH&R>AP;~Y-PRGF2mZa*X0sp*L`dzopX zaY5W2qpQm+`SKoBDN;ZPQ`5>KC#R|vB)H&7m0b{ROi zx?p{DRr6K20-##qC|yn)-5x_?>|l+iw_fSRpFP}+j#Q1DZo)16*pBX;!>b&nt)UaN%k175;*b~jyP$*Lv|1an zTBEvyyVWBftc5#qG?nI~b@r`Yc;&1 z<$J`zUy6a>yO|!=T8-l_)KRg&OUAt+>;v$E54#QHAsmPAZ;88b5tr8`{Sm7h!YE`k zNTdz3T8Je6E}^}+zMJ#+T8zOzRw-k=v!l{jsgol-{Pg$ADTre`n4>s-9x2`>*%mSw zSzQiX=hb=_k0X^FSnvYS+V>_$r;FA`F!%bY3YjPi2}hMQ$GBnwPAYBmm-~JOOo5!j zJlivBhJ~4Dc^XNWyb}_^%cmt)oFt4<1J>`^Z(R19qWjdlax#g%Z7?%AoSME*-Z*5N zUuwy~@qrh0P<$oAHX*~ghe_CA$*C8*k<)P2rmMse@`1VA>p2U;6{sVuB#g6Hm1y1W z<*_^hT_vc6N4e7F5ClVW(IL?RLMOnw%Tc#I&|rS=NiQQ7TpV*#!?W{qKG!5(4{7}6 zP0`r%Sv(y)I?*X^m@J@MeDRZS`JNtKv^$RYa%M_=xaUwAil9qpxj2Gl+r> zQw_pG!xVq5aICE_+@HfJ^_eNoLEk9b4(Uy@R@ZU6jFAJ&1V6$_%%lJKx9hc)Tsd_d864$) zm8INEXh+|fT6a;d0F~^Gy;S%bpV*48DV|16-&5Q4 zaAiw<84jZAnoG<91P!&wPF`~{@fddZIy{2(nDt!qM2hnLmK#Ksy$OH7-?!qAufll< z{M|M2vGV-X)V~Ik5GRMtO>19r8=?#=D{FoyWjY~@YpZK6MdK4XWp?tVnfER1;1QBW zi+*b@%c33pEp+hxLethyy_#+8Djbnp3$MYSDEXs+uN(8$bbZX>4j(dHjmS2X? zxws&8+?E8Xk=rx1`&vK1cUR$Oh!2drUg%bIqG^I zeUN1D*2w++t^!SCH5u28D+QC%3f7CLJ=`%gAY;?@m# zQtff6^(x4tH3OsYPx!*?$eO}0;HJXISv-Zp+hP#ob|tnVTz=OMpUVsX9M8q&$E~=$ zc}D*4kRLnot zylnFJUv={C?dh4Gp_ou7y31K#jEIqJ^GLgnqmg)ux(E@YnAoB!@TElC^o%AX9`fFF zQ$pgDyd;D~cS}^TmjYa&nBc>gD<;Umvzw*xCd5SRTi=6$2mng?Nxs$XpsCV4(N6t- zhk9l^$M8BSO}439eG}YQ7WPcTUjX}ufxV0ATBr?my8pGW4-0%ynWD;&J>{jlbvV43 zllcf1@0QC)yxi2ORCvb%gE`WS<>*C-WtAr+S0z`y)8G<64@si=tOcUTRdJ0T!ii5f zI0LRqG0N#lVx$SyKC*I*0Z+4|V*t_2sDaG{_torWq;U4KiP!B+4(ZY>%LuW=S`5Nx z%GL}vomnGkB)##%BMVR9fJI-UbZ-jZU@yXHGJcea;X=rH|1idRt@VEYI2bw`)pL>=81kXv)|T z5P!|c`r1?BgD)J0iR2;KuDyXT3AJIMNyN`=m`nV9S9(2av(4?nW}B5hJMfC~09}1& z%`c%P_d0JMcoqkSievD}7r=-N#}wb;a;5oSL70;78jH!olq~ulwh{U!Bct)nx>VSM z(YO$H^bsq$8)U19KmOcQ*hyi$Wb9XOO;kF#@LPlpXm3LE&>b%Ftk;;}4udB3p>*aZ z1VhX-zE76NkcNqlWvn#&2Wh}R=pW&LpCL89fb4wTv5QMbtk>cY>6Gv7Oox8X(7Sr} zY>@xNThg{1oDYI@``)Pzh|R)zdm){6Q|$7HM!AcQTexe_IS6h+RR5fsb`V50!Pq`; zRS$DQxPGRV_EI!kdcC-lG+e<{QtS%|{eqJ}Yz*t}m@i8nmIl+i}{ z*JFHJcnmJiV0yVBLPK9(YzyeBRrKvxMXe_lZ$X-^%V7U`S&&|*f1pQgw1*^s@cHSZ zaLmVP*Lw6u4ZZJb10}Y|aOOS?jpJA!#tPnE(K6JIiehiIQLA!8l&BA3&^V5v<-#9M z*WrokaLvo&a$icFlA+E6aT<%kQUC*6xpcv;7vypdwY(_LX`Ug9LwtNueZPK`Bw|BG ziBBfIpJk+7MT80oYx!nuLm6PODAX+$re(L!qpjrfp zkx(@K)zgESLSQQ%@b!=Bg-Op^MAJw~k?|L#EXK^}h zVw_D~tItTWf#$w#2FrHbt%bc&WG;k3QRvIMUaV(fSz?k=p&WALw6}(r8o?Olfkoc& zLlR0Z3@y1kyN;)!&)em$`>h$=*for`!x~Zz!bISKORL4Mz(M|=1Td`_ZS#P*%%&h= z5lw-@PitWDqQ++TZi>w!l5T2iiyk<$ms$W8;?+Sz>;N2N5EE~Hpo@wjl_?)9sj@O1 z>I)7|&GVO4RlI@KJvYS@v#jA+b-v)LHP3M9dTLIc+>BG|Ah$4~d-p5LtSADu!pIx0 zP5ODY*u~hTmP3$rPZ&Ih75{u0K6j+ygZ$EZLs^T96|n%1LcRu}rf1Loz0tkXuRnV> zB^&Cz^;mU`xh%&5hQApC$KOz})+|5LG?Z@#FOO`xp&NcM)h0u*rMa|Kw zd{wN<*3!s}1RxHPM)~hq4{DHGQ{je4U;7l;t}%dC)$|p;{lKOpZTSk!IS=QYAGfc%u@)?qzqrOPV&f9`Vfc3p_sJ->h7^{ zkRPHz^A1)JaYo@;kdulCbX^{9%I9?ioF4lgE;Wk&k#Rh!uAircdh-WHV-`oIGWe6{ zkIG&nIcCuB&OU1xLESRVin9`WJ9bsD6JgB)VhUkumU?ymh{+7laS&^1F~8iv)aV(| zRK&4MHH?>&cZTYoO6O4(<}^z(0fX(ieUv^?9`TBZK=0KZ?d(};E>#9K%NgvVBC)zx z5SEvtDd4>jP7=gwAYy$1SaRRuZwOP6pU-pSZ2l4OXwAyj(kmc9xMRh$>0fcGciC>7ohHk8O%oy+y{4;-U4t;gQUCQ+JZ9pOnW8sqG@e_sqWs zL%+ztKbQ<0@#*$&vX}j-rc+p1W8&Y~FcbSOU#|+~?Y&!bGbV~j-SPVc#mEugC9DLx)OtJYw zO_Cpy79z*^xWCfVqv_w!?_?Ga{08%@MIKlEW7eZskN5__##u9QnK$pStF}&{0ou`5`>CUiU>6m%G^OFO$dCQ(WAS zy@0yqeLwk%Yvdo*L+;tQ%?SP)OC$NA7|HQe`*Ux5vh^J|Xxw<^wPADi-w_{&LL^Rx z)CqxwIwQeCQM1)}}L^wELKkBxko9^lHYw4rW`QI_*1_cKfDytA+ueBX227 z<$4{W#$1IM`z31x6yDy5U)lhzqa*$vcG03dw(f|Zi4K}8CZDevosQNEPq)`G++c#P z;SZ{F_`}A#N2BJ&O;Iz-#dniLZ`=T7JuX(%+zb~>Cxl$w`cW^H=0%U`_4tC^Vc&P+ z{xE_I`~Y=R)KxSD9jq9M6jH&WWKcioAg(c7Zlvf_prZ=)@ghZon4S-_i~P_fgrA#c zE(uKyR7Ws=?vVZn`pG8?eAOW_h5}*?JlcX7(P(Ur&nQuzX2@GhqWpW@QTPumeg}oS z* zvlu~Pjwv=o!v3d_7~^IwA?Pi(+bEzaE#On2d(h}U6Sv;ky`zXO92$qu@Co|Knb zl^Uua1K>2>mksP22)%sKi}u>~bL~o@^!MRzDf}i*^Txh~zW{j)7typ+_@erSIMgq# zf}e1BJ+fP7?55P{-U@1z9i?b5$nJ4$b;o{`ZfvQm)YHZ0iECWs%v1N+2q?Rz!2x}( zyCc&;TC#F|!K-fCz25(Yd#9Vz?sbk`r+$u?-iaVXL^c$izNH$24$8=}zXjGn1Af0J zno1nHTi{oPQ?ofODRQUXZC>)rN)455lZ`US`puFs8=!z zi|NccUUixUZd`G1UaC~;aGcuOl@r&xH#l~tj%*qW7cgIy5H08KfQvp~T_9WF40b8qs3@(~(kZnx-8*AfVpSAw-w9&wQ1ylw z{HI?Yy%2lYy@~GtUURVSQ7z(~n(ht$f)Xg6#rHP5+;nfL**N<+yO6bcN(7q0c5u*P z3%nLfcui0wp9QblOZf}U+!l97x>2tzgg?1$d9c?F*+!|l5U?N!D?cC&3l|g+OFix0 zD8C4Ev-`uJs*c^rRu(Rl$WJ$6g%a!73;L77C7JpHto%G|OV+iJ%{$CKffw;mZuN(T z8fn+#eGuWJ7Bld~4c?s#%yQ>6kwd=3uxrSv*ENBaBmGXlA>a~VkhE4AhR zru!1!DFATiLfuB94Qx$oy4T_N-h1}#2T6C-mNK#G`Ab;+y?*t~*ha2BXV?1jc6~|O zfDFKyccmg4+lD0?3?$h`d!2hH*s`<`jL_f(791?b*v-e>o19hb>%XuNY+`D<9YtiR zZo1dY8soyl4Ge7ugt|q(tFH^i3RYwkY46PB(o79$*VK>$m4$?KB4BgyW8jVo5=YiS zecL}R zvn7$>xudxwxl_4`TsC(m=j4`iZ_S<0y*Kyv+=p|`+$VD%$$c*Oi@7i7{&ntaxqp}Y z^V}cizLWcQVH^B+xxX#E6n_fWv)Ikz4i*Pl^spFbahSzCi{mUZEKakiu~=fkOwfe} zi}$d28;cLIc!I?zSUkz%vn)Q%;#nEdGGSU$giN7T2|*_%1))#!uT> z+{@x+EDo^P!(xoZAr^Bijem+;dz7I(9FDT^T%yIG8|ILP7w7UL|=vY2O4VUc0+CKfdoKgr@PEZ)!JJuH5K z#fMn@3X4y$_#%tXviQ#|ew)RAWARlM|C_}(S#)-y_-lT;m7lI-@k$oAu^41=FNFxp7K>kF@t;_HiN)7h ze1*mTV(|?Y9a~WR6+hj=Pg_}ZvDn38fWb=BR9U=} z#hY3DV;1jX@$)P`z~VD3KF;DdS^O%C-(&GKi~q{v_gVZ;7JtT~o!aAH^3%=yw1vf8 zEMCH5AB($L+|Oc&#Waf%7O!XV0E;4vvn>8TiwX$XFgY33aMU2f*yiYvIK+RVMz?O4Q_r4VfR&?pw0 zxzD-nnKZ6^8Gm#6X7113&P)+Ow$0pkxSI-(i?GA5wREl46p@EpF&l`?b33x~Gi99% z?W~B(MabbxJ`H6-7>vrbs!r z^BhvM;sV8+yQPTGg)F{NuwfczKZt1KXJVm9b32O}I}hxXYHnK*a4FUB@DgG{aT6sQ zzEzOTAFWfmx$VWuBTW%+ZYP%D8h8;(IJd3TXo_5OJE;$$Wr{Yp4K{{|HhjuAMYQ3D z3KXoSNH?s&fw7t*-*5}+pj2}^E1dV6BG~YyWG|yaN;G$CrIgRWI%$e9!?kLW7%0!& zHe#kcgOO54JO+NJOmjPUT4GbA8a~@KkehPNZATKMrie4Qt%^?+V)&8FKq=;SA|GH0 zC@8-0V6BpEiU5<(sDvU6_d9r$lFRMH8cIIX6yfD|z#0S1DZcobG^g0YO^W7}T)1Gv zcoW%$wL6dMlwZjCk*hRCY`GmywgUJRTy7^U2r?KY7AysR0b5dP;Y_rAsVQO$7phpz z!Ru3W;Q}d4*@dcLbT&nL@n_sm@x_mL9m+4>frHINg1PO8K52^JLVgw=f3UwP!V5-c zPR0qPmV2Fip$HJ!g^OHDYKr)BI~wxl6kBd*1Ek6|MRK`Y`9%gHg_gTz#m0_9fS}-V z+b)2l6jyG?BhnDXRFJhnM3wh#pef?Y`!?7Vk=39sw&csG$Yvh6p}5N{?Z{GTJ}WAi z_y%x=c6z$-ag_M-B)>G=t*pksPpo+{;J-!j_zf1n0kdA7Df~J=eSyWh5qVW`Sq!k~ zWAQN@M^N}@EJkn;Tj72d?`QGTEMCtGuVe9M7LT&{P3%i4{056R!arGfgvFl#eBqB+ z{3#p%V-|nF3twe%4Zr>^J~iBJ#4Y)kDW=5_aj8Jmj|t*Sg7z^%`k0`+BnTf9be9C# zB|&vb5M2^9j|q~;1jQvm@R+oINm{>T`N*?QmF^pX7I^Lmz8~tAc2T-n4#S%s$uiT-rhDr;Lr5)I$ zdAtRZ?=kjVoOVaFvtPW!kGj+XFIEEYTklz{Ss?yR9XH`Ujl~Q7Y{Wms+iZMESC%Ap z75*3xnH=N3drw#^jY(3uh^}=zIG$kCPD~%2p`S+g(9xc>n*XkbR`OAZDSdx@%cy01D86g8T!K83qRF#=K-YFNoRaIrBY1@RKkE=`4T%ch!4qZzJ?0Y#3yd3m<3nrTn0r`y^A6HO`mfvi zZC}3ex4j*=wqlFTyzRTfx3%5vLC1@aU^_O16&qPNh$_qUE8PiChSM)`qU9yHpZkMe e?W;lk>Ym2Gdh;imX*ZRn=S^f&b6PFd_Wl1*q0rC( literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Cheminf101/search.doctree b/.doctrees/docs/Cheminf101/search.doctree new file mode 100644 index 0000000000000000000000000000000000000000..35a85cb6a8d8985e9a8ab0e59145d3790ec55841 GIT binary patch literal 19282 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Cheminf101/similarity.doctree b/.doctrees/docs/Cheminf101/similarity.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6e19348b85b39dd52579b4bf1bcda20d6995c16b GIT binary patch literal 17705 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Command-line_tools/Rosetta.doctree b/.doctrees/docs/Command-line_tools/Rosetta.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2a09059a0c0ae4b51b529a207d41f980423786da GIT binary patch literal 60705 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Command-line_tools/babel.doctree b/.doctrees/docs/Command-line_tools/babel.doctree new file mode 100644 index 0000000000000000000000000000000000000000..044c4cfe25c606d570cf5a28c9e936451d19e678 GIT binary patch literal 158018 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%0AxZ+ck3bG< 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 DwWCyf literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Contributing/Documentation.doctree b/.doctrees/docs/Contributing/Documentation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..215622d233a08a07622ca42602dfba22bebe0b4b GIT binary patch literal 15017 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 OSyQRuLCC}Z6Y#$>$%J75 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Contributing/Testing.doctree b/.doctrees/docs/Contributing/Testing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c509b68270309041cccd2a88f67e358e83e17900 GIT binary patch literal 41456 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 AQvd(} literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Depiction/depiction.doctree b/.doctrees/docs/Depiction/depiction.doctree new file mode 100644 index 0000000000000000000000000000000000000000..909f42c2947eaf4b1624602bdc7279647063a924 GIT binary patch literal 12880 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 Sekf6QNiXFhoDPOxH~a?(XqgiL literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Descriptors/descriptors.doctree b/.doctrees/docs/Descriptors/descriptors.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2ebf1d7574e64fe8dbeb9cea88e77717202941d1 GIT binary patch literal 11097 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Features/Radicals.doctree b/.doctrees/docs/Features/Radicals.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c4871344ef58b74531e48a4fb7b9ef41d4f8a3a5 GIT binary patch literal 30832 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 Y79y#jPJT4r_=Bi34baGK!<%jYAN-O})c^nh literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/2D_drawing_Formats.doctree b/.doctrees/docs/FileFormats/2D_drawing_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b8607eb498eca9bb56b0647ad9081287b2514813 GIT binary patch literal 3578 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 gwCC2QQ7Le|R*iMw%_IGJg2gIEaXvF6g2OX zK21AAu36ddaB(3mT+zj~s{4eeG^nk*7a5}?m9}M{HO-2mvF0KlyMQ&=va{44HXEAj zlum7#-Ednwn6@3>Xzv9h-1jENxuxfH9$Ul91k)5?)Oj&!?TYFvjhoY1NM|JQ{#A=$YDTat^nqA1X zQE?5WD2uOg07%P$VQR}<-mlban$7CCLPY1oDJJ%_%7uC%__|bMif_5 z_f(q?&CS8qRBA{@pz0-vpD;H^z1fCO$!%!+bWjLzR}~ zc>+7G*MLSp*zU9@v44$$(4PR|-){qif6i0L0pTC>m>dxP4lRCLOJr_8_z_p6U%4F4 zZ=)h`N#XdlwHem~C9h=;tbeNSWnWdA-hADODIomsn*rg!^R%piunukiGmqH;0VesT zKzK9%u*$3siauRUKVUXO1*noEsjEt$w?h_DmP}Wf4{*_Rl|kN{NU&#aT~zk>1JSZw zT0gO8b_1~;8ic9>O)6&HKty3bsu~D7E6d^}Dh`&+J9Jc_ZbxWBC_0LmCQ<(+^8LoC zJ-l;iVS#NZ^Q{ZH(6yXGL@-RNR0~|cJ8ntX`{tUKBv&bMwIwQ~7)q)__telrlhht8 zn6;XRCRmoPP+u~wxRkEpiK_OdXEthzZ;5(lRZ*=G1n360$KBmPid@qi-PQ67l9p)2 z>Jo#3;QK7wWA}TeIi%>4h!)afkr4EBnq&nQ>)}Dvr~C-ZwQ5<)6st`w;>h)KZWj+X zAfY_5W@jLTc5TGeCYrWQ*CFL)7LA;5TpQPN1*eE&k-6qo;mTWqLR0D~(J?x;sO~87 zVs)TuF<}Nt3n6us(pMDbyKL4NNyp2E*`^~7t7)Q3RWmhABcc6ri04|zMCPy>IDqU7 zlqSp{Q>T>u!nAnq`d;8dB;c~9S?a<5_x2UX_uJ<;BPykk5hHn$QVEMYQDbe*l?srP zTN?frG<7pOGgln;06)_T_kR8K?eiNmhs~DL0a#NECQ6}`HJd5Phb0+OSUkb{GR6UO zRnl0aJ$g*YABBd75gk&ze=6y3MvmzQp5Qg;x z4)n>Kr0&8ip5npn+&>`|ik69pMwx@u79ve38cm<{C_#+A;)(}|UWt;B`k_cAS10++92Zi2(Z5)j>X@df1MLjW=5 z8Q1nFTOXNLL5oS!aLQ~rN}oV>7aZm$)4EWPx?PY}r#R6}pBBeZmI z4_a=s3i|$s55Eh0w&Wn5x!zGG*WatJN3aqH*&`}Doa%vp0|}tZbe7_=rY3zvQKFeW zST(!AWQNpOh37cyMXGQJIWt@8B-dmVF+OA|KEUr%Djf7TR7MbJpOuJf1w&o+>#&Sc z5tGWayD`Ho5X12y-e6^KLYzKAZ+hm3Pd^S-dEgA_5i!pPz(AcCc3i4JTAktJnFDVs zNQg!^4jx%xChH?_D}4eH7{wTSX0FHJI*MpUcp70)c8S)Dy(gvFt(!BeE+Q zn2I)tGAnK~(Dp*D**$y@F@Jc={kh@(T*aT#G##TpDWC!7InVlq=REUVXC>QlbKWky z=a1qacaFU%&E~YPy{wxt2V$J`5GYVwNY{Kp%V|pB!!!?UWPOp2;p17a%@D`j&2u+4 z>sS4uopbjiJ4@}#!S&g@svQ(XB%D~3E}dAj9*Z=EU!Vhu&dMhh{Y%*9bNeZR2g4}B z5WhSqz$H95&O6g&%tbAAq7Z>KbzC3o5sXcy2j4Ygntk+RI6^w;wF5BPcQ5K;?z)i~ zMG!-C-CA_Uo%7+};GcQT^JCUN{Hyc-8>TJOs4Cwjv*ZARaDCc)^30W=@Z%5CVg0KK nT8YEIg!|0;*dQM3>pYLsGI6mrbU)mzC9Wt``O`H___gH!33LLg literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ACES_input_format.doctree b/.doctrees/docs/FileFormats/ACES_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..695e573bb586490e9e49721d98bb3d21620b85ff GIT binary patch literal 3584 zcmb_f-)|hZ5tc38Nhj&fl485AV~e zyIk{!rF$^YJ_LvWzJ>h{`Y-l9AIaUllbqOjsGtLu!`T_m@SAUD|JD1?|AuSf&)!fq zs+`@*MP^D`Y4^Q*_;2^p9oc~-XG$2EQD@hnkuhH6l2+~+Hb-7x^Foaq z1AR^8oGxEyJ$rjRPSQ^vfBI$0tJ>&vCS*zU2aat%b9S3(E&0@Fc=z7cd9GmDZe|5h z3PL>hDpJO$t=!bh#gt^HlFp(I9(eBTKFO#$4vvnaBWLWUCUgIqW7~G4;1zXGui1W0 z5QTPZ-44<&Y^?fiwDSoQC7no9Ra8#Sggl*ynpRUXrNwy8H8ayO7e6YCCMGbeCQo=l zpM;pz?VG<@wskE#-qD5?`NOKK^gSE@uaqLZ3R9|88K2#6yI z$#X+0ZOSBLwB$<5MUs&sGX?P(QsYOD+8F!T6xDpiA^Ve08hhXV_5beHEtB>5=O^nE zB62Kah2eoBxjOqdMv79(cJ$y=H#PTw?NN7nnb+* zrDaV2{P{7p$KAql|Nf@fzHVcRF#=t*L)VeL^Gd}YM;tqLNL%n7*}Go&6L^nRe~Dfk zUB&CKaf0<#yxL#V^BVP*f;K2^*x^OH!!_-83Mdsz`P{Ei@_I(>1%@>d+iZ<7@1i9c4y(ib@+oI&hl*cIauXGG%)1Yupp>2qnwwG!vz7 zGzuo)juKkXAW6@_t!di;;IVn3=?F-Jq_vPbE$9o1^j){xj1=9nXZPtjN7gjaMzu;k z+so^l~Tx* zkt#2!M8^G5Gwtk+nCWzBr5CI?dw6B%iV5~#JBmhMef8eujVo{3Js$vorWo>5ARuRl z1*ztS%qh~HV|^Wc+rA}fCS;!G6x}R`8xD+|*nTFe8Dc~_cn+YVp`JU|w3Qk#w1+YiilTa#Zw82}TpM?Ob#mR&LLB}?-UTJxw>;_-S)<(N}F3qDZ& z6Q;`o&IX!HQ9`+9?&+321RzVyTup6ue3z=)Bjm#FsYRv9dCK^l75D+X8-;JFc2|`I zRrcJVs1*|RR#?YnS_pLHnA*dPq48(9zF2I?a!4WGJ~cI5_$e_AFbxS@06ik()eIPD zS>eF*1UU7I9xpw33qfKj`swY|0W;+kjIHznM_?55=7qhLLF+W7CE-PiiB^JT!?E|9 z!3tn4W|7k_>^iMpICLVr6}be(3n=m`=O_-H#wj)cXCH?Gv^2(Cz$W+e=1Z{MC25>V zA%?YCx9Iy4!Z_>u1tyYRqU@&MjItwinM0=8b7Kcysuwkm>xVA$9n%+v9r))%%vsOb z17nA)R~U{k%s7DH4+TF_;w!b)i-%v8L_G}Dxbku;iVhV)_2v~}r#-l2anO1VFCAR6 z55|?+Q~a%~wwfI@I`Bv)jIVWPcQR2FNH=0YBiVf1$iGJxzI9)qCNNN5s-*BQIfAGQb1ESb#?EnA( literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ACES_output_format.doctree b/.doctrees/docs/FileFormats/ACES_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dea11a3280ccb57640557c0287cd4db57e6fa006 GIT binary patch literal 5058 zcmb_g|8E>Q6;GP%CYvwYByI0XFX4tBSJFUs`@>08cOY~sRG^4d9LEVEqLFvTyPjlb zJZF2_PBZ-aPAQ6?jex+T%k}36q zA|pG_uq8d8COI{Gv$|an_@NA&)19z!9IbZkFY7a&(Y`42oQnP)N^-UOeuSldQv8=WncsFY50 z=}kLV;9U*8tHHK)AEMhXx)?V9K0UVEF-7}{al6d|_IdUhHpg!6v)A{_0by&{6t;0- z*j0R9!RI>`Z)?ljLns6Fx?0$c3O#>NWdJGDTsya%^} z2Zh^b@6nxe!m-KX;wD?f@(IK)yZA11w@{b@W0MeSa&K)yAxsp_o~yM|X^jLgi)S>D zi*2tk(WNi#${NF~)o?&LISb{d)fQT1?>5}{m7J2DpFrss)3)VjP}0+segdT*`$*xG zh(zMTHR;BUod>SA2NI^IG#KzamVt$3m7-%j{?0km(Tg-I7?Fvbn1}h!JNo*IrklvU zKVN*?{|ELH(splRsU4adpI{cGgCQx{Y5K`v2fV3>K8t@0Efd_jF{$bjfgJX{?9aJiwMN# ze?`R0^*^f41B*#lwYE;OuAEBTd&*jI`)RXsszcUClaCKAyj$-+EQGR)a=dZrCNu^XqJ}o z%<67b3d<-T47yHUsl(CPJt9uGlJ6wN_U+aHj$1e&}RRY7)hTK_e!h#foGF8q0n`98&oanoCu)6e(J(ibtWP!?qU-w_u?-0UI82t}J_) z=mhg!wL~*7v+&q5F3W|x_S7lDh-a4lOHBEim(Y|tN%#nKH>^oHR;&h8EFEDGwBSO8 zDSb#0zDs(Ek+f;H^g2CG5H&?qDQl&cZpCy^j<8(!5fM3}1`VJ(gQSD-N7OoHKGxkN zw^s+?g2&J@x>Ks*?%iFP;P>X)&X5YhMaW1Vr&J)~*3?KDec4BPVwRSh#ptbbJ?Ex4 z907j1>*pQYP>6=4HG1l9=>pikr^wG&=; z5(jQaxEoO+X&LkIIJ1yiL#A;_!^x2jCCJf-iA+31FNd+O|8S(Ta-mKQq}d9bkw^wd z*fHs9r4|lxC35$+SL`n=BB`)s4|`)zlNejRjEiT}1VqTd7uR$0}7Q=o@ONj?My>cX&LO9jg6IlUya;7vL4*=X<7 zM+TV52B_OooxlV}@eXjRuSL*03TZ}?G{j4TK%sSJuUEHSfHfWZvUaNHX#UWEDCtFC zPLRKVVv@(;6ab!oU2wozhf#o*!t(=Q6WeEi$0&Gbr2eS@V$3#d8f}|GcxA9h#(`lg zMCt|G>1Esgtl2vJB69xlE&J8CUthpisXJCtofPl@7h|XTvC}+tTBjx3uovbncFPUL zKRb@`Qm;<#wX=0KN`M$^Jq+>^o6@zO_i|F=_3$79Y-9tTHt=z(SI-F>?arAQJN2q= z(8ihhQJsad$HBGpb5%V!6j5*@UfObE^m4@06#D`naOf=DtK?4+n(~fkp%-{y1UD@$Is5u^)83PD z1O`ot#l40+AN~!yGmSsL1G@NEyZbM>aOqZc?#=3X3lAjgH}>y8u!oO-J3}$7AD%!Y l4*%lk)5}db9MYGQJW9*hX4c5Qd@aTHNT{l(rAv5l`Y$$eb}aw^ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ACR_format.doctree b/.doctrees/docs/FileFormats/ACR_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..06bbabc613fa290c739d8f30a48f109d719605a6 GIT binary patch literal 4314 zcma)AZ)+UK8J8{HNhjT%PKuqTiPc=3I+av(rx$rql9plwrbbi&H-u6uwsX64H)HMY zY-VO{>4hO_aT1k*Qaqtwqm)u8{Sf^QfxHPMpP|3m*}XkoT%Uy&cAk0mndf=t_x!t0 z8ejgmw^aO@O_ed8o)1VAr6QurnzcxTc|ucdpV_@n?Gw9eT9Q0gB9|exW(gc2<8dTu zYEQA*b^MygYETMjY9c4J{+u<;=3vkd?jAh|#zH1Uzh~L%sWt0FYsp8s#zK}LnI2^Hy=nbjn7LPY5UeX7 z(sSqP=Wsl=#qF^^`zd>iEwkGv?9G#WL|6~bX4|Kh-N5rIp4afaerj{}Benv}Qhm5N}{z+d_5*>&% zz9=mncoTo_qXifFyV9-~ep6fY`{&taNA5|843vu`C&Q!+|Z2J|#v>(8% z{s);urScXX&Jk;s<;$z=5G7_1wNdzYLlg%EF-JsHiKdDH;JP=nA8<{R?=iVRX_s6R zDe~-l9AIdAhM6sM{h+k2Wjf{OKqkM6%xC2dI%aP*toWN+5IkRk>931!LV zL-YFo7dR7s|9SbF|2K^I*CIrU?}9d%mod zh11gcbCzpEk5|kO>3N2_5}+Vb)VYvG!RR6=s^AmLzGH1=e(+otlut11fMHhGO0DY9 zX_aJen;Tk^RK>)liy)I?BB}CayrBiEfIVI^>lF`;u*_Y3xn{ayE?o@{%8Gkp+7+d! z(kEt3QLTY#G$UKn=3$P|t`^K}qL1jf@}1^MaPEq- z>nyr1iDW@264yH^hId`Ga+>l(?=BUyKdGQiKokk z*`nthUeiS9s$y!GMnp&X1jltB6Pdzm-~eP3P+D+*NS#sk3)AH(d=vl_B67*jv~oQ@ z_}PKtc)xXZGoVrm88DJYF_rMRQ#I7qY3X@f4%OGU zu5QeIY@f&hKQ755O`3?i<`D0YUFTCP^1fiP>s7=>Uc;tWDNC0j5?gIRRH zuevuJqNprlk)}>sge%`b+m5U9OF(qX#TSs1P5{K1CtTZK_kLo!8O`d9;f!fJ%7{RB z7aZm_rgf&?8xBEMgX}^xkq(5M46V88I12^98K6w#deAqSHP8?49KH*GcI7yn6YnUs z_;)Jt2v*`Cdq(AeQ#~%uKmr&toy0h-rO60U6lrFU*USzunIJEg;Wt3)_xhpA|$12cS44~H^jyJc!QS<7vk$P z^c$DO>{ImWWgfT$dPK<6F)&aihHaNBkXGmTc;dht3*w{EO(eAc{!F3kUgzz}PoaPd3q4rieLjbJt*r&BivrN-R7B$bT`E-K#1r&K2aRi4B{A^YL zXA4RJS{lO}Qh4NssV7KySEzpA0vXcA(?!#T5N0)3GEOaP6J=K2rl;+q(Cn~p**ENK z_Em0LZbx5aP}$8L-+jTpy<}fs=4{(7cTg$6!SfXpx#`T_W}!_d9;Y`^iYeQ-Bn#H|B^_?$#BFt?Ja`qwOp5k$~GO zqP@pxb@(fIUOI5~{nhtx*X_q`H_xEBVWO$}g~7DlefSwt_M(pWeb#^YC-A+faWjpw zqFpm94hIOs`zQB4aAn2+rhqh84d`eQ9)9ZOnT@F%3Jh=XG>r4e#mvP0GO!-GWMAe* J*9BoP{~sLEbL;>B literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ADF_Band_output_format.doctree b/.doctrees/docs/FileFormats/ADF_Band_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9373db766dfb05fe74b7473cb6e6d6b5b89b7b2c GIT binary patch literal 3298 zcma)9TW=gS6mFaBCY#GPNiSSV%F;qfg|gcR9#8?H0;)h2K|%;2(a7@7c-K}uq$jET<+ZGm-oFd%XK=d=_^?&+@0vlr|ADT!2O*l}@e5<32X~r0!^S|@b2}9$ z$7Ltn7!C*Q!Iux&=R8lDDSc6THZeBi{(h88`!TF=@2wh_9wCs+1(iCO4@-&W&OwOp zPR_IXYdI~8lf{@P2UbjK9ek)XhU+|??2h4WxAwMMdy8dQ@_b5Xqg)A#TIC`>x){0z zM?OBvh0tTO0$|l`^VTD2GBL7co(nsAYV5(t6e1tV{Fo3-Q6?jmmJg8G1?4T4> ziMv&$adh!}aY)zm3MZb&3ITE;KalUp1$k>vzP(qDx!k}d$*uh;ui|$dzt{15b3c~y zro0RFJGHvJE#H2$SY@-A8-FU^8{bRi2KdhhR&ZQYu8*3Shi#}m+zX#tUdXvjk_?SuiO1G=RD zyt@j~j8snZCyM#fzl)F-=1U*m5Qha|#J~#yh$kXt<0DoP;8~Q9<(dnxovQ*CL17yT z^Le!)w@zmSk+;KDZ+Y%CC(N?KnyD48W^>0I&vkrsA*{4IBE_;KxLgeVq_jjo){t#4 zthJJgpnGB23GY=tMSt3y^_z(`xfeOu-u;2=60Kp@vAQ({;-0*_7kX0x&T?;T#3JSB zF`j1y7OS;G1}_I#t~ATiYOL11Nl@_QfOg@yg9zXPL!!(hZ*5%12i*E zu=$e}M8M7`%BdQkmszSDA8SgaiE^ps1vs{bWE_}Kkqk!H8#Ok;!&1F~*XavRoUj!U zMNZaI-1jP;aokhA1U@&3T!2kJ1q!vwl#kzRydV07C{Ef1C9_77F-PpgjPSbjzHs+P zBZ%FwIP%iuLu03-7_O0K6#z7u7a6VxT|X>CzWd(24^hv)og`<>ljOwwoz^^<$_cLr z!VZ=2lgbC!KaxJvaMtsD3<{-Q#z)Ix8-UC(R5aY2^*iPYLdbF0a7Vf4hfJ!e)c66s zi`o$G*IdTIvY$(k+M!Tas&&0&+9bRw?RFyZ93{B;nrx_YRYIITC=0ltS*UuKn$4lgU8@X0kClw(~~_K?+P&$KhH6tpg@9t~A5k zMqRcFd$XAr09HMzd)jeW5c!jcrztGgy#(Y16jh!oki)ZjR;z%siJ$;2k6{k|JEei@ z8M@smX+3m73~Q6wqDvIQyhiWEew1t6g(cdoWjlCfw&hRq$1?Ot>W>P9OY_6y7xJg$ zQf|@rHb#aY<()FD&tG8`!g`_r1PTg%Y6&s5)vJS_m(+Tg7;)v<*ytH5D%GoJgfs2l zDT}?#4C}hm%`0 zj^Sy;K-NwRLqte3AO?$n-2V)I51{n-%ciE#XOU{g;o6y; lMuWd#EUeBdQDJvg<%up+;>wi%Dp*OW$v6FwMjs5~{{p2|3atPD literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ADF_DFTB_output_format.doctree b/.doctrees/docs/FileFormats/ADF_DFTB_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..390157f298f6fea8b2a41cfce66415ef66934d0b GIT binary patch literal 3298 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 O6QL@ewp+qu)c*jVopkR2 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ADF_cartesian_input_format.doctree b/.doctrees/docs/FileFormats/ADF_cartesian_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..01416e26b430faf5a49634821dad21fb2dc4a5ac GIT binary patch literal 4783 zcmb7ITW=gm6?S5e?eS$|I~PJWPMYj)aDrwg4?Lhn2*R!+P=q6`R+080YSnbtOqJc; z)mv2^+Xy3gSZOWQ+ZF= zH7i7G$p;lU{I&BuRk*?|B^gl)M0{@*BoE(~)2f^-1|->+bQpN>g{RisA?dI?zOn0X z?1md{WtKD)na3R*=HiBeOVO+mHh)D_xqxx z#efWG)*ErnszHy7H`0QLKE$g2GoI0B-gwnN-!VO@w5GG#ADAQCN#DIw zAZ!B|VOy^(yMfOwd~V}&=asG4J@yFf4+A@Uo85oD;H_CGgg&M3-H#Yo5&kF9f#jNY zMUfrV3ilda+jtx@lB8r)rn2ulFR&-(Vi6PN-@m-_PuT;nbPGm&Z^A6JO-Vl>6XepKTm&qDWQbQ2IE$-Vd9nWxw;r zw9PWjOGXq|Q*!FfC+7Bf;%fVMpwXW$|LlJN`|oF2*}!=P%)gz*{OjNndSP^DVB!MwY1PA zv(M+uO2b1_EGt*Gub56!N!JR+b>p*Z)*6a$mUhjuqFN&$&@*n1d%&R-g{B3%uf>-n ztI(=7SZM}tk$(iV%O`r zU0mFPhVsaot)URwH5F5vXy?{l*Hlz_eCT=~*Wh(r@hRg(5Vgo&4#l9SW^rx%3zZ<>lrCV6&X=@JjMDd zh6Zz8(nQEKPAMAa6xVRTWY;Vvq8P$Vc!a0GDw_C1%N9+CR9eInlDX=d`}MTS%Xkby zIMx$5&?gI$If2(a#e>^D|AbU3TBRaB%pIgQ5NSeD3?!429wms;*Ie-c(Q9!U$^ZvK z#Rx#mc+R!`$;LNLr=;a1X*grn9A!YDy9*9;n`vFD_xgR1Rj)kKOcXsKM}2E&2>c2stqu>Zs7q}UAvty3|Kb{`{+|o{D|sDq&g3r06ik%#Sj>162q2D6-cXR z_;~KXn+X!4(G80G7MRHg$lFREK?O!J?4FpL3ApxSniHPI7^hvL^=fa{qZ`1Q4MSQx zG4r%|ZP728<&aJgzknhyQnVHTUKpW0a5kY7prtWmBZa4K#yv*DJ4Fq1FvyTL94{7K z2w{YFB?BYU8c}A+Z3fy-s5RSr_Ym`YZ@E9W+@I_CQ<=77)JG*Oz;x$XKl7X?p6jGy zTW;#xW)J;Q{Nv8Cmz7zcervDmdcuJir#%!36c^GBU$AnT68JFf0~`53WMlYv)*EMt zWA64TiS6cAe`xEJd}L>-T{*aUR#v@(qKJf(h{`1eYgQAHWq23ZfTFYXeog-zzWLOC zh~U9wiZH}46AEw%7moAJG#N8eM;$3dU_%|($7UR3lS#sN&=_rh@FP5gbkK_eFro+N z_cIUN7>!aGjYBQ%jeF_6zu}c;wbM^owD(tsf(zy^)2i#=6|>-Af}s8J?z0!J2!$Vt tkQAF=RnSoE{UyjVt7Er##IN!q$*R;v*vS37vy!^fP-jusHsRNl{{tud6v+Sp literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ADF_output_format.doctree b/.doctrees/docs/FileFormats/ADF_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cee27e97709ab338abf13dc9333a80dd04df33e2 GIT binary patch literal 4712 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.doctree b/.doctrees/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..86840ab1a3c5210c119c7253ad1e54016056a423 GIT binary patch literal 3396 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Alchemy_format.doctree b/.doctrees/docs/FileFormats/Alchemy_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b4db73ad82f56e4696f535770ed7c89bfe7307a2 GIT binary patch literal 2992 zcmai0TWecK5KdxCwtSHJNrCq$|?CD-& z=^@ZQ1Y+2?Y=1)kQ7M%EnSOgNvgD>zAUHcaJ2N}`eKYe*>$l%Gua!T)V+tRTaAzc$deR8QFD zao+Mb`~4nyE)&kO85t{`QTrtDwU@zfP;0dqISbd()rv?B%=)!NQez;*cPpn^^|hY5 z;&L&f$(d&3N(Ubz4Zce&FDI3k;QX4UlXxcZ4ZkWy&cf++-!3TPw}G$t4w+vVt9EnG zbih@{2HNF0(}Q!R&jzYs`G}5~>`#Q{Zqyg*y|T*00A|hLg^=t;d0{hHPC#E98{CL@ z{F-5j6)K-6oVR#8W(RvME39M-JN}?H)2nXSJHm~R%Va`*^+z_1ng0*1H=%q`-s4~L zPx%VJKjim@ZbbPma?khS@c{qZ_}{_*qnE+)Pxvv^A6Dx80l#;;x_IEo?=NTk1k1n= zS!3zQAJhuV0ncBm#zSC>K0kxcl|`TaLpCjtCW3cnc)En8WHck?!@dsuIo~q=gZHWc z6;L>Yf*Y~_yy*Pl`2&AoHO-Br@l8mf)kHH>p|fR`r81me^Bav0OR;n@PuG1naXP|^ z)F2xAtwvG;Z|K(zvsUC2@N93+o3U28WjWB>{)tKlsLz?#R?ZgAh9N&5`p$#_i_|I| zut+I5V`)}ku~|7J@N$ObM!j@eVzq5mLLyh#?-BjYjD#0I}pWqQF%tF#jQ;gy{$CV1hymC?%pnxl7@H?ExY zyYT`5n&HTg#D#+2mNcI@I$=n6iuDatS$|WrMCp{I3>7Ga8v%?AeLGS47gcB$j1(9*gH#hy3L8M~`Et(c|Qb`6#(G|FAI+rqYPl zGp753*>ULu>>qHONjU3RIs%1K%fsoqKLj8%6vdjG^Lj^25fO6Xcg-xfbV|6GaEU*_ zyDC-0{g%lnSoX66sSOf!vs_n8B2_}`)E*|BA|5<^MK)x)Od(F6xdJX?PcIu!T?8(G z9+ilE3=A|?VL#Rh)YL0_B8%XaidIyN9rr8%Gua3g+t?XG;0)8jg};?R>x{6B3P~`3 z#41~cy;t``fK`sGns(t=SpF)YSNZj-mVmr~qR3MLa#&K$93^n}5EP(gF_fTwr*S}d zjcT_ft%eAQVQoBLv?GNuf5d)){cJJ^T)VSm zvD0`h5A846N5$1PmiSv&ZPhzybf_bVah*i~mq(HN zJz;uiaJ@N)(mvvhBM`=mzs>*5J%2&z&&64%8EKk9#kcBycHOT=Fo1{O4qtp9n@Tk- qqs}!GXB-gzfHA*0&qs;iO_3+krI9g{IO}etvDDX9F%Cc&Gyeg+BA$W( literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Amber_Prep_format.doctree b/.doctrees/docs/FileFormats/Amber_Prep_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c8ba863efcdf37dc4bbabefa16fecc51ba7c9e1d GIT binary patch literal 4704 zcmb7ITW=gm6?S5e?eS$|JBcxycr%-2gA?SLJRpGaD7dZG;g#thAQuZ3_WHNWf1(NIWAUA+&#k2ZZ<$d{xyw)1D-r>}toEI(4e*T)uOg zU$%bzldU=bpSh+A#`BXNNs?S7R9Ul}h`7vXuI=ac{;%wr-7{@Tj+H27Os$y%N6dJd zNSfQ{*z7od%~RE@E?Cq=j_Bk#Ynkm{uNyte22@5LN?JriAv2=iw`}RTH7i7G$p@vz z>+ZFAo+#XGmg1Bs1tPw;a*~B_%Sl;G76TF=NjeNX_`(xwHi>&^zraKL;UQa^B~3=| zm}M(wA>}!>Pp+87f?TRA{AJY@(hf6p=wcf?7%f7+hVe{Hy7Di`&q-<%ih|n!ao$H9O$Vdbs|>VY%~}mu4(p4uCDe*EZ|bafJxZM-3+Sv&w~zIj9XaexYU{>*ruPndO!jU{bS~J^@o6 zEQPcdOYY6pkkGvK;AyFgQg;+*55n zG&`@muF`)G68-tj-Tp_g|6!JvHJn$#{JUAqzX>Lxm&SGqCO$!%!+bWjLzRr=MFKmn z*MP<#*zT+*v44$$Fqi=0i#GwnKW8cAfbfr5Ob!TthZeuBB{H`k{D3Pms9X-`cTohm zq;UMo%9QJYlGic^)<4zvvj0|^?!4|q0|@{7azOacEG=swtU}v=&ti5!fJweA5H9B* zRhiX6(Wk5C173HGbs9om?qKSH1b`=nLWI7Wp0kG zDf5+Aa-lIfgJ@uAYEcVXzdLR`*t_P2mLyjxapeS3ijkx$G)OHiG)e7~IkQsp&;-lU z)#fXv6PMDpHBr^X9GJD5;v1g>v#hArz&*OX&2jfOlp@zOM+3F^jHD&Ht-7k92KYp2 z57_+!(;iXuLPQH`u}BEoHcheui`DQTN>YA=T7dNI3n+>M}u%;MHltL$K)>D#?N;0Cbc!Kp+wEO0|q_L1m zlu$Im37+AA$$?pnMLvX@un13FL=E|gWs9amN-d%Z$y{~)`Fc`jMKp#W4C@IT=#x1~ z-G$dY#e>_qe?lr0EfW!)WDZgrh%}*S)I8}?f*5_l6%P=-79}CuLy=0#r8+baW@}JJ zAsBp|;nMYrEgGU{_jARz`-Vppl|B|}?rKK@m#<UG9ZxM1&7&TS{Lg5ejjAjD^4{Nc~8hu-QV5sYU9hOllVp5rQ zH)d%6V>mv<8?5Y2h|@=CN6-Cm>F1s*51a!%BIfxJ7^oA&mP-{#t5bYDbKp${3DM|= zz9S3FU^q+=!lw{{QH-hQ=4K48qljjNrx6BWmuS7%o7Fr9u%^S1*3Qj5&0kowMP@mq z6T~l|$nyjp1b`QYUk{v32nA?qOvgy!i5pYTknk>0!zc?fZX1pli!OvP1-p`gL1>LA zv*b1dZ7QIyyTp#PHi%kXw-zZ~%{niiR2qcZ$Kn%%s zU(p+P%7=f0b7nQmk68Ecug>|GOjo8=mAxxw!Jz}O`lEx#PhIT^zw96v)<2A(k2w5G jxX-MPt>J;b%JVoa6Bk$`_ruIe;wnOwJYBbhA4L8S8zJ?Z literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/AutoDock_PDBQT_format.doctree b/.doctrees/docs/FileFormats/AutoDock_PDBQT_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8937089f2994ee8ff6b3c5d153d7fc82e6eaa04c GIT binary patch literal 9759 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Ball_and_Stick_format.doctree b/.doctrees/docs/FileFormats/Ball_and_Stick_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ed90a00435ee014b089752b8a2ed63d63825de32 GIT binary patch literal 3051 zcmai0-ESN<5O15@C6|xON1IYYLys0pB9yy6@PLXcwIEfXh(iLzTV;87eP`>u>%|{U z@=ysLDm9YdYW_2Xgm~dk;pg4k%OwOj>7?~|JTsp8{l@ci>({?luT?+4VM;EFlRnL| zLS@VZznrPm<*cybZ8-QPybAliqv^3xPNyvRYtTr!keOyhc!AAs)VD&K{?tI*Qaxtp z$9c=|_WM2Z1(lM}A|u~hkxs}+>73fffiJxXeuY}AMdBBx`0%wPCc4(rr!`fMJe#z2tJR10lUzDO?;pn<=mlU_L zfiL(DnOz^Nc5~~=fUBGhv?~gx2ggcJ2C8I5LK7zYV_~^V`a)ePt4$1G)(oBt$(~pD zHiIkE(bvWXm++2XGAy-16|*Yv7H`K~VXtL{m27Uu??!7q+_zUHw^!e{x1X4UD#19k z_yaqMMfp$N*P*I7@9|Ig2Yi9wAM$%cmr%Zms_<=izlHy8{O{nu`yx30K0ko^!&;p` z;P;Le=MU`rJ6G1?FfoDevBuuM-;HY36{?b5xI$ge3Ov>36g+{=hw&l8SeOsPzspWa zWRUF3NB&)diNPT_yd2-YFZdcW64OV)mSrA zL%C&@r7|2{^DB)G%dm7Yb=Q42bvlBNOrbXPYmKCW=g==3X00g3;O5qhYa^`+%L+if z{UenQyqK}It(+~L4MTn~^qnySVyRU+V3AP}%+kEXVzqWi;AMj4%5>?p#A@BDltg01 zT{vzbLVX(i_DCsPD9h$HL7?>r*23lFBmyr|s%yaKlB6n+t;E3Od$oi~R!PV)SVJ0m z!{hY8ljf8X1qFrZ)JEI@5Dj zT9uXH_b%;RGQmsVt&N@s&>X#capTfSzZow8pc#(*NL(oRbxDh{qhp42XIS4rXZANW zOO?(@#?YrSxDmj}(6>`njBrP!Lu3Fd+T}^$ZQrHNDsnFJH)0!I&s<)T8UB#fN+19| zT~HYfZd8&A*|GNLqS7#zDRPoWJZ*wz$}lp2vVsWM`BE5B<8y;#!q7yH4De^HSPM%SlmWQ4X_wg21k3r-Bv6%knxt!1e9DxNUZsa^t~TajFVO)&-vrO1U1 z-)w&DyCo~n+eN(0T9hOdu}5b3JKWmRJRS@nHvRI{a#i$|9uI=wiJDaa&?J`SD33)s zmLWg<=+URhXIGEXOXj2G-2B7FJeW!&UMEcV1+$~d2iQO0HkWYLu`~gNGRwo!vfl$B zb2P;%H)s8hm@*>d%x{|0!qOAM#h6R{0p3NaBJS5rPQkLD97t`DsGHTgUJ|KNI!*0f z$|>SO;cK!X%T)?-dg4mBh;u;oE=`-j8PKCrQH+3rrYmg6K7pQkNl)Yvyi(Dcit$~Z z1Yjml(6Nm@MF^Z>qB!$ADYPbpQq#mj)_%P-fx z1mp!2MUe@R!;*SVserSEpa3n4K?eOhi_^p_bh``Edg6c>)<&~MJ5mV4N_;QyB(728 zm*QqE+s7-j$Di^i&Ud2Jo|edRd`q9b;ZM&T-;UpVcs`%-ht99hm#_+9Jrw{#3<`c~ zNn~oHR|h{Ysr4`}q2zg@a9z{nRe%b#ZKe3I<$SkK028O^0~FK_XYFKOj2WhDP7R3FNM~=} z+-%f=IXc#~*Ko5N6W90W&_cWdHyG literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Biological_data_Formats.doctree b/.doctrees/docs/FileFormats/Biological_data_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ba303dec17897954a27a3050bf08c2f8cb50259f GIT binary patch literal 3449 zcma)9-)|$g5%!%eS+XtpNA7ZI6DR5=x%yC8%0mkj2?{hVaA@Kw0*Lqo5vE=|gU-+@NTh0F|7;RQCwQQrw^r;UNWqh`t0 z$9c~`m`*3;cS1|O6e*RHj5_*p;QKFvKcLPTk(3U;qpw|&S=jaasif9Ii0_`FdHprW z%3{4pXnJMXqSnEO$bvskIyaZmO(^}oqsw?G@B_amg<|3PJ>M@VZr}pn^+VEK8LNJK z(|pEt&Ss`mikaE9HdixUFqP1R$>~x!UM5qae^6GNn8B=_Jrj~W(?m^@qWzH1vYz5ILS7){G+wODyNf0?WjsEPV9ZjR&)<8#SH(U^ zbzbOFWg8LJ!Sfx|K&Q^I&FGuGA9KVf{^I{lAmD;p8c~7dV(!mhJNWF=zkc~CsnZj_ z33LDUYbu}r<%_if^G8CZvdn-gS)1i^{yFo5oUSrfI3E7=J^p}GT2vLA`@N;qNx1cW zF0u^WaqCBojZQF7Wu7p@vhaMzA5`_UTFD#e9-ztAmxyWpEq`34w~uuHX1gZ-xXI|{ zwV_49OrYCk`edt2!!luAT`&Bjtxmb@z;n*ps^8JN3$e{kt9An0#K;G5zPpJL{}Z+< zfNp|DMFv#LGLqbosxiL`{3SoK{?QMrpsk^B4u#DNv>~=myT;}3`v=ZYWhIS;A%)RP z!)#42J*OR&b@m&bsu*QV_&q;POA~2_-bBhn!<02O4j3cT;fv~-%RMgD$#+D2KK7o@`EDcBaAKLM8j-1JEknHz!F8xpy#zi_V{-vEY6%odkqZ|- zJNdaE7pz#*MZC;Wlq3|f$IkF?apwyA@oWaMofbEaYc0K9s5h#0y(Cg&c7hla z(Rs=#;z8l-W%6yo$%S-?e{%Btt3ApyKakO;K^23l4)i#!2N-O>|z1h3SzZpAn; zT?JqU4_Ai%y+H_^VZOWd4^wDe5tdUS2`0$MvQ^lp%@_l)%0dm$^@Fjk$P&ZZg+~H04)b{1%KlSj@<3f?nvt?5Mo$cbc=p$Aqd@I8`(Rw-BE>)4w$^N!LW#6oJN>l}}#o-P_r*|9e(_ zc^^6$MZVvjpEidj-)o+=dwwrs0`2(6`LjRAx268C2Xxo|;}GYB|G=0(?9x&J`LG%F V&^XK3p$A!H{DvIk9EATC{tN!eOa%Y{ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/CAChe_MolStruct_format.doctree b/.doctrees/docs/FileFormats/CAChe_MolStruct_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1f8b91f5a0c211e6194dc573c41a25443002b072 GIT binary patch literal 3311 zcma)9TW?f15C)RnWOG@Pa49XMY@ww=ZFYI+Lq%Iv6bZFLq*9A2BtVw;9PiqS&+)14 zLy`xi_5q2ge#8BTeXlC@2lTVgC7XZ>h?S1VAz-YupoDKnN^|H|L|-9PtRuBYjqQKe3pcc-9{a3NF8a{m;Y{h)7!G{f3J*HS%Y zN5^@`T^XBsB&? ze0Or1RbPu~SsX3KG}+Z`Qt9ABq~2XjXu{ccrlg6tZCAJX(k)mz4QD-Ha`RH;%-=ul zx&=i%*7G^nBW(h(>Nau95my--=`zom9_=Z;J5mM9$8^l(a4IY>$3vmsD6342VAhQ8 z3CZroz|H8*2^nf*eL3bmw_sReh05E9;2qu#+1kQp#|kUi%$BJt$}#0@cq+c})bsQBUBvGaejhyb zCI67$g!+w2onPly@6X4W=5u9_d41&}7iNI}bg-v|W!oy32es?N#@!yChfXyu_)Nh3 z+mH)>%l*HJBj@kFyYqMWwdiyQL45PJNWVHBDKf*_%xt+T^RFRs8xInG96;P;O#-*v z^(Y&(zrACLPSe5}br(HiO zb>JeYnYZIs8cAg9j$1U$T9Hpttk&D&GtnxyEC=2+F^7eUT$a1fWnU zw7lz;cC!8Dwh{Qga(t68t(7L6=BZ>F84s=|*1NM+re~~lq80BpPwbp9!T)gm%IJ{; z&Cx5zH%^>%Yasvt&2Z#LA|UTpCC#TLoie05#rh0dl{=?dqI619hO(XF8Uc*#xNf5I z31UP#L<*pyee8SQb$wb|MUF)7OlT{sX_*zI#UHX71p?61IhDcS*(iy~4sU-XDhw-A zMfS6Rr!~+_8AfJLMu>o&&x8>bKF^X=7&?|AklM?Ih8N)23W70ULL?cCuGVT~f-V!= z;l=QUOAOPIh%67*QoQ#vdOF^zS^}Tzfn0!1J_QP;$b|I|);@Lpf)z*QA_TJ%Bx4HS z12fzuZf#+1k46xiVR2x&%7;o%N8Visn$ZDh63a3?4~oBAgnavxTVEibeLYD|m=BU8 z^EVpvU@8rG-DP?xn4QEs!2S`pnZ#v1OUIy4YPr9^=r#e!3`Mc#W?S!wDFQ+c-I_Vb zE!`(vOu57l;GLH$;C{tq6fFC-1gQ-YbuO-}C6Owjb!s;gj;560;VZHs%Q1yGy;~Nz zA`C{cN!LZ-5a>~f$S1%+Qx!Hsoj^@Jp(nBcUa4qB#W1GqdSE6SqhcF-02esJh;`^L zB+%L=ETcja3~`~#Mz`1N;Q?Tkld7g2x;d6V^XN}*v8p8?FQ6#$RDc|oRD)Xt&N`d| zv@9k&)bBJ*SI<%Hj!CNt3}RTDw2N+_5QewVFVLP>sBsHnvyyG0%WU$;{88z8L23^Q zxEscZColQq!;)`=?@de&kNAz!t zR7BPDCxoqb@0i72b89@bam+p{uC}4XUpQ&2-a(^79Z6Ifs)TpTiINiOMhs{q3wLYz zD`eq?{|TJHumg5s)HOgsbzxghX2qD}`sToZSdFypdCjEAzpF<0c74lz{XJ5y1EL1i zdk?O~k>j-qfC)cSv*=aW)U;qaGuygOn v&`zqqHBjN20X>Wcf5VttZZi?FyDaiVmTBP1H2jIMl!hW-*TXRSU@HF)=Clva literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/CASTEP_format.doctree b/.doctrees/docs/FileFormats/CASTEP_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..77d22b74d3c8edbd68964808d4a6ab01b50ed135 GIT binary patch literal 3436 zcma)9ZEqAe5Dp}F$tAfX34u}|aD|qJRJlWHKUC1FLa3+}YFf1jRaK*vZ`XG=*kF3JU{M{B*{fW zm9r~}h)qUw?cTWCf4i4%*R~{ip@fk!b#?(7G2>|>Y3>g3vg7qNPgSon(9}eZ=yW@4 z*sWf#8$G!H+vD$liH1UEMBjC6`Ow)_qP64$qj9o7X^|%iR_$_}5~U!-b0a5Ncv?wJ zF9_tOpkr$->LV?l~>BT z>h_-PHXDAMXBrxc}|@ zV!X$0l(9AISj!lfa-rw)f8{abs*8Wpm6Rm=B2ULvu)Pr5H=$^7jek@D{qLS>M1OvG zM76VPaQ652MfRkQC`5?crjy&=wcB$QvmaKD?a&$syY^xb)^|F=TwQHdNjo}=nNM-* z;w)zD$Mm=W)+3ZEMft@vi3a1SEY6pX8MdzMM{iX@VMAdD3bU@){?&(0ikIEA+gg%b zrNkFjR7f$BR0V=*XrW2!9xd3_T8AcB8jtfcwi6rasUfO};J~iel9D_Q?24jV^LzxR z+?+7q5LnhU2LUyokko*!CfwN+Mi)lA19tnswnh|uLbQ+$i-dsoG|37q*1~}iPC3GI zwOSgPV%63njy&D@w>Y=~59Qd|t)URwBXs5^=&kK3B{x}g>{-GSUI*32izpVECw2vs zSAvA5w3I|Iz-duUx;U}gP_Z!5AZa0_j#B!ZB7JA=DkJG+*|3}Rm?LYNXrpSShHWHt zU`9Bu^Mc46S%U`3CWEAf^vBc( z+1wJ7710EL$Z9FzfS$}r>J6SNB_*=`-A_e@q9zg1apv)~fie?{MzcFhh@d*3bHxKb z&qWDWWRUtmDleDoxJ?+nMBWo} z)OYrR*DM`?W~6C`>j9P970CBLyYm%lwIhe|Df3=3HGiu%k4hyTuSZn&IMu`Q3{-!g z=`6)zElma}p+qzHXvOXTkQqp^s?7=CMXK-!Ik6jRoNIC%F+O4`egN-M>bs#`R~bQ- zJu@h3g+!e%*I^l@A|_R8cVdR-8{^_bu_4Q43bFgh6ga|9W##Ztk-&*M1>*dGMx!gi`cV(~$#avH=)d=`mbj6!YDQy%0m|D54qRX@m*Vvux@1W;N6R ztm!at+KFAH`E!TvV^;!~pm+gAo+li|p`$Q0mcZGBQ-GGnSPA}4{EYV!Y&Rzjb0Ea9 zHk>S)zJxGB`hIcf*g8>m*}n|3U38fprr9%NTVATi1>E(6k9p1XiD6s*c?Yx3Gj_|^ z_UsjwF0^9~Ab6*6PLTLYt@VQQvyz~PAr@Dj4MaLYMX9=dN;uJO%~@>KrR6F`$twKd9tykcC(7SJVWCI#d@1ZUq#C11EGc zE5@+dQDY3-SuLIPyn2FV(^06LXffM;`2$ieJ)*kdzPmT(=8qeGv_eP2a8(Zpy=v%V z-KXs{3k&K!v+6zQtwQhrrXt&@+SnPpnM<0A7{0EU8Fsc9m literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/CCC_format.doctree b/.doctrees/docs/FileFormats/CCC_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4a3c22691521fd51cdffcad82c4cf512bf830b37 GIT binary patch literal 3174 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�c8|I!)#!%JVJImH)dweb9p=YCw} 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 VOeC4oOurIScdr{E%{-W<{{ek#?KS`a literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Cacao_Cartesian_format.doctree b/.doctrees/docs/FileFormats/Cacao_Cartesian_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0a01b38e3bfe1f96a4eba390bcf698c92698bcf7 GIT binary patch literal 4528 zcmb7I?{6GA8BUw*CYxVPa&0NShAus>q(#~72awPm;>)256i7uu2NFah?~HftWM(|r zo;HyPIu1@WlE0n#fROlxgoK0;{{|lr;=eiRBp%x{vy(LKUL$R^e*M^f-`CIk!~0R^ zkAK~q^MB@=Dj3g?2P8>ykx*sLQX=9qqq(-9+6TY2r*_BmBzdkxDPwBQ91t<%X(DNE z4=}mz@S3M;P;JoFL{8{*IqR6W2ZMg}0f~vgf2pbBB#*{IW<v_GruIO)qL3fKj)$I~_8S(V;B!oXX*IA&-Wlp!tZ5XgZj1&C1b$ zi%Vr;iy^jE!^b?OkGr_71zdw*Xt-4Mdvi|F9OA)u)ss{U?PpR0S0uT@X&y`0ksj z@qSB=5|VgvoB79 zKfs*d&$9VrcFz-a3EjFM z?;7y!SAzreMGa;Dtt`Fus_k1u_}`lm;XkvitclQrwf~+4c0_P=KgF_Bb-mZPJECaK+04qWH6?ut+m#UgV(pTd@J2MJB7mqgFe+(dO7h7+p=RbK`-NLmP~ zqm(|QaNkw4%t+b{J7$v}b9hY?U8)+?F`a~t$_b8Je@6f$BYPf{x3ai?mmt+^IF-P)z&cd=&s!pwy& z4!;HZnf0*mREK)?o%0hH7Ml%c1GuIbT$I8lYt~YdPf9YO@OXmpRdmtjElFb`lPIC+ zC=(pRL6d#cjYU3&neYftz*Tg%$Ch=?Iw`e?rXq9Ib-ZgynH5n(K{(b6IM^q1lDZAA zd5I^tyZ))DP_#@$beuU#Z6MNwqEUOLX9;5T8CN_|^jegJ0suoQEf?$1K$xw<7=>W) zafVITDp)i|1MEBXo9-J9QB?X^q`50639ftv&kbBv7=ogkF22B=d;%h-JmcE_XyfZ< zy`aT3X*gq6on%Cyy9*9;i)me`_l84=)u1@hOymP0Cqrv)IHXqq$Ovs7u1DiKmLT7K z_t7`u&viMDFKq85)9vrq+ap+sqwEot15WkWpMeB0WI9W6SWlA?qA1bK?k$;Za56(` ztirR&dXXv|L(a^GI>|LTju@Y?6d&++Ar+4Lt182LCi+#0xK?n~TYemdQ7U3mxpq5d z=)huJe26!A*}D*{kI=84`8S(?KU8_(4D1mx&&S|Eofx)Usz6%3fa94XZz@QLM)!g` zvfxZMLf%&T1S&9!*Wa1B5d(D;(Twmk!u!%CTCetI^{xR~({V^^XJ($}&n!A6vlP+^ z;ulopd4i?_#0zgqPn=CC1!`$LI+4N?_wYMK!aFAok3)#D+qfBYT?pY_=}HFL>{X)7 zqMHn|oltAG4?BqY!>g|De9k^AP0vB}NdevQ?D3!%9&^S%KP%amdkbx|`(ed>_8EJ> zG;8hq_4=*F94v7fLx~`9VO-;aWo=2o;n@p5WFwI_l=0B(7laMEcW%dCeX3uyb#8xT zWYl=X*NuyNRWm4rNHVb~T?(;gB^GIlyMPTSG>acp@=xKFPwZ0!4BCE#9-in56bT15 zxuz|~`)FOAC`4T?ZE9lu6k|>E82V*AiN5oFT!D0S>jyIQ?_J)#-0O4IN9pS~p_L4p zuKDmUxYt>Y^T(`z_-Ei=*8`ePRqw8t1xF49=@0fFKXFAT{8EA>SpU3$2IBBfVL!9d fxWqGjh39cvCN82T?l+F*#Fc_7Yq~ZGKP&tn3D~}R literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Cacao_Internal_format.doctree b/.doctrees/docs/FileFormats/Cacao_Internal_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..29b40a5b1790c32977198e618d8ef87363252eb4 GIT binary patch literal 3287 zcma)9TWcFf6i#AGwtSHXIceXRL zvGfpV9|AF*w@m+4|4S+K2lSi0Np?+A&1mj-6eh#wan!3?lFz7euIG-7W`;`>4hv^4vrC4K{HKnu*u_XB%pF~}&6MIa z#_WFIpR0XrHjFS4o7=Ltb90?4yPe{|oqgm1NjS)} zj1L!|v5CK#59+^h`PK6d|B`>o7x-SE-|1%q$~SR6eEZn(Yj|$pxryi2vCH^vegO4* zg*v~>?;I`WCs|CSITP#7GcI%o|FmQVVR09Z@3Ja+`}TIO+Nps0pL;8j zOe%$vHjd5b{WC5vA+QmG7y*eizgU9l^iM)k5`x7b7= zYlfOkS4s`r2-zST!Cm`=ssveshGH~^q=obc%pc0VwQZ3gM+BgdA+(%rWoCHz^`RDc z-#NQUm{L*^PLnWV3K{pI2FBTqBGYqL8o3o`chBvdGr@ni?ZW6Rfa=qovm58Ww443_ z0Gj5=PlN+GyB^VGl+h7Gx0UHq;H#nOolik(jh_s6^&xz zc+<9NW+a)3>=oZY*264LNsT{bH5XJg^aeL_NserP_cKwdSr$q%i9Mb+K{KgYO<=E< zLj>%6CA28;xj{mq=^*k4DWhDfcma;B;V>FZ$VmnR>!lhQqM_uC?}mSa6U|gkM3#7K zA?|w>%^UYrEP>B0PcFbF83Bcnh=p-KY<^+eDNASN!biF0B?F4sJu~c0ZcM5l^m-8M zZaOtwCS9pUJ!h|b%{%~T62oF#4@$mWhWzmJ`(GiSZ8Z$enfH>J`FoXlFqL||j+yET zW`?;Bu)oJm9Kl)3&;ckE8t#sk?JfWrqbQc#tm_@osYl4E-PF^>&lo!Lna6kXj>ASMznTB#{hgncCfeqZI`hTMDuv%Xtd%^*Br6!cRbXLoSQJDbOR) zc89<~RTZ{mO4crfYz9>n2LyCTJu#l z4|}T|6ady}Sk$yryTFoH4qeGE7qtZB1r$XR3XsE)VnWM-vxT4lErSsb^*i)))N53` zGty$#f*96@^`hx1gfY$c3pC|5s_l~BEM)uWGQ0c*f1cTvmzrscaQ*P`@-2UHn(=M_ zzKeO`Ilq_L_4zBzLs$<4fZ&6IpF-l9TIm(R&r1qD42rn&cp&|RS)d|Uy>?DmYq!p* zwJNXqN84xYqv9&#OZ@fow#pqeI@FOsW`68+b~TVugmmK!Xe3LIOZhuw;f?zVoWO_! zc44U1KtbWKE+_M13~p^b)gV?St$SWI74q+jS-oE0w-3KZ%9Te{r?~IV-i33?o*%`~ z**Z0O!Y%^z^B?AlfAj~2zDH2{`+f70ZIq4dvR(8j00E!&pZw^%N%5Nk1+E&!{bcYL ijM>#X5jk{MMG{0==&3UDzXeu8U*pSi=qDe{-~R&j5D0Vt literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Canonical_SMILES_format.doctree b/.doctrees/docs/FileFormats/Canonical_SMILES_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..68e222fab4def8d5e30cb74c719a6eee3040e567 GIT binary patch literal 11805 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 Apa1{> literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Chem3D_Cartesian_1_format.doctree b/.doctrees/docs/FileFormats/Chem3D_Cartesian_1_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a283c0cec5261f5490a208bb4f69b7247f9a1cfd GIT binary patch literal 3095 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ChemDraw_CDXML_format.doctree b/.doctrees/docs/FileFormats/ChemDraw_CDXML_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a789c290431c1932ee504d334b58d6e64e78edb2 GIT binary patch literal 3336 zcmbVP-D_M$6mOgCCYz7VM?b8sv1_X}iDb7Ag3>A?Ek&t~AR>jf472yn?hKiG=Qb#2C88BkPeybkA>xK*ca-JvdY8&X3gNf zknDaLw;8-K9er(Va6{hl3x*|DsJwXv-s0_;t8Hwytgw>JZ27I)T(8V-uL`)gU539? zCK>1Ee`JU8Vcw?xGL#R`d;Amr0iWa7_xZJbH>7+WkHa^g27Up*OZZ*J@5NhKOeuH0oFki;eL2l_-(}K@l_s;I_Ly?P&%ARpWp|tI(Q7=B4NTSSYmsqD+Pvli3 z$V5-&@~FSNTL;sImdeL7X8Bh!LHw5g?0*^$)4=ck_rSkK;9tHiJ9qf?GAr#mOK!-T zbZ+~rZv|yRQ|Oa&f5NlCW}oUqTw-qasrc0OG5(!5s(@`!*n+}rK=pNNrwx<%4S&IEnj1+Yx=EqcSTj?xzGaoA zGCVlrmuelBV(B8h&iZcRbmS?SuyWt8)RL0P`+m_dYehar8QW;e(g-NAEJsyn|3sxj z326#jTRB@e8}|9mzVD0~$W5)%0gIHP7Fn7VSS(i#3A`L&xinciEwNg)Dj~53#a%dV z;fDGs_|1`0HdmI-Y@*hzMqcMGBZm>#vHEm@V^NSqWwGiSn7mp^m}I4dJV${cbtQzy z$$?2}L>e@U6e5y6V@TgQzr?9*mMy=*4h6Disdc7SYWY^mhHeaZ-RD&2$Qm>>qZuR} zq(5OXsPM{nMUEU1fI_9v3clm)Xz%kqBk=v+$xXtvR+?~{r;=%8JYF@i!LL=Bp0Uy@ zt)LX0+Bs!{|K_`u(dh;1qwk&EICavm#{d8{!;v3}fP!C@G#@)UW=MC6^*J;#e_pdh z>6D}lB|U{30gUYXcB1kTVnjMb3ZSC190uO@UFxhNQ;|OxJI-qAvVt`DLsm00{&^OwHe{&4Z~l;`M;(zF>A#`T+X}+-4HaI+hMWq15v5V9{>@kQs{N zgquyhBc_N5Iri)3D7W;Ga53f*KY({$#y;a$Oh&=7pB+eTkf`(Jx>^#c(73A9qC%tR zC3yIXY{+t%LYzKu1zg0DsqEmBB5(}!s3f+!X;s*abpkc@lpb0pz$+E4s2E3>g8Ik8lOfFnk@O4?ydHu#5^xFy6%~TV8u(GFbqua#Yo{V?W38X8|qVFIKe#=$U$E7bUfxLL`z z(Pg&yWB$nbPL$fC0@sc6#*0z?OlV?LE8&s647fuNq?am2{o!V=8X!C@9R9tOiiNAQ-)?^2b4s|3^E>?-) zmlGu=(v29UGVL0kLXn)AQ;vl7CSR z_s#m2zw-@Jt|Ov))qD4@*R#fnG5UH>m>xP?uOUy`pG;1eEB-QXnG^3o>Cb-~mwao| z$jy2~O@q)Q`J#_^wrr8L&~NjZ#@ I4+i#s01$8+HUIzs literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ChemDraw_Connection_Table_format.doctree b/.doctrees/docs/FileFormats/ChemDraw_Connection_Table_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e9af8cc135e29ee64b99e6671af5b577dc4ac285 GIT binary patch literal 3150 zcma)8TWcIQ6i#CA+Uv{ul1tMzZnjCC+7$2Rp${bxNN@=)rY@Aww;;4L+LiFkXsV07 zeh9P=ff)1_^`DhO>7VH*&CcxFO-UCPMn^~I936e%Ip^2b?}uyG;?Hg9l8a)}r)gTq zlxgplQ<>PD6~@2w`@i|ue$RCjJ=4;vgn4%j8VMI!s#xJ)VY3_bjmUI=YM^bX8nfAP z-g3MBevce-mVXON^Aa-!I%(!qyFz3V0Lo5Jrw()c|v!S6xk*ITz_=r~yMe8nwh zqG0~$x@(sdcQl?axDIKOf>pcD#p!^{oDG!4ebnGgs*`~%SuvzTmi5QNa69Y^`CeIN zVgR#x@IqwlMNEMnd?-nMrH!{k-f>I1%3?8g_t`NfxP5+3mX9(&^>PfjAfD<8&XhNr~hWAdCSb2}{ZFoJ0V<_WU_t)9$19ssN8r*nxr_vj0p@12F#3 z-7<<6I-`*-rIKUCbj6F7k%nge=$c!pby$j}4Y|GUx`|Z*zGMp4W4BgIBEXN`vS!AJ zVhql2H5?u(Sr}G;H|?KkWjC41&B-KyG?22ZQ5;G#cwLzs3?uc}Vl$4?NPCReBF11FInaJG; zHF-U?c}W`lA*)d!06kUEEEwE~l8Ef^_A^nbnN1~` zNGf#fG)q-IA5FauF`G79>N8*aI`%U2aUNp9}^N>wbA|xGefojR)S{ z4w^9lXcEJ6JdeS1EJJ><`}k|*v#UnQ74tzdGykYI52n(9*Au4tf|*hD0rn5L$ul_X zpbmmUsp0-;+3f(3If~+xn@znVx(o=paGUzPFmyt=81oE&fOj#I0rzVjbGeFA;8Nw$I=4XBU=lhwmNq*QflEb?fs_ z7(-Z31b`5Nf}ctfm|E*q!Ou%7J1{G2D))ir+-MM73Q+thvwlCR7#Z@Mh z_}f=)O?S}fP)8DJLzVDuHIZ3{bmIC zeMBAxDGVHc>kmv%e?jTb`H88XgX+=6wWb~Jx?2qJ05iWoe(_^yGu0@M%2&_2VPyCN h#@uR?p@`{KQ6!m71Bb?8?p{el@t@YoFcM+F{RhPf+k*fA literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ChemDraw_binary_format.doctree b/.doctrees/docs/FileFormats/ChemDraw_binary_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d4001fad9391119b341940a0854ea7f33cd29db0 GIT binary patch literal 6627 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ChemKin_format.doctree b/.doctrees/docs/FileFormats/ChemKin_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b7e337810dc8b1369d80fef5676d76a9764775f6 GIT binary patch literal 7192 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 WL%#Lso!Xp7jUun9bcw?2tp5VuWI1~P literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Chemical_Markup_Language.doctree b/.doctrees/docs/FileFormats/Chemical_Markup_Language.doctree new file mode 100644 index 0000000000000000000000000000000000000000..567a1f2082f3e9c3ff1141a20128698c3f922cee GIT binary patch literal 18553 zcmeHPZ)_aLb=N;qyS&l?Wl`4}eEX7toxU0S0x!Yas z?Oyhe$aCQ$1!~kn7cB~Jz6AjS1T7FWMUWt9fqv`Xq;1;TP1`gmP#{hFwIABFFcPQz zz4^1dccgfCw4fHX4O4eF`{vEOH^290=FPnQ%-CmxOS{B>*#mLMaf6MzY1=_)^El5Y z?9fWvJV^4_^SNKjU&&{)$;e!f!!)vZp6vpK<+#2b@gRQ*52uMfas9Zi7>p-o)Z%4z zXDpkk*O{^6@V0B2zOiaXx6+RBoEfxIv&ENlXa7riRx^_%avN!aPEezJT{}ht*?!A6 z;~0hbJ{Fj5`E9~ZJLQjtY2Au=Q_|pzYvtS?jDeUl|VK%s5Z@Gz+HtKG; zWtn8L1h(Da0@zULtQjg*!PaDo;wm;@p;)X#n9L|_CP8yrV!?DCod|r8! z9n&0{R5R0RX0uk?UtsO%_MA{SYVW(wH)x!OtMqCv(BLrVC!G&Fd!3_e&f{xo!*mW| zxSS&|<<5indq4gj!QTg7%2Ve<&K$^3NOI?x^Z1p0LZ(Tm+H6H;$EkLGd4B$Ez;3KQ z$C^Sr^ugR9;gRKF>^KXXOb;r`B@r}JpP$zfjmJq82CWKL=ULK~b258sXT0-L?3Llg zJ`1s*8Kj#}I7fv}#L*0=!~#oWjz^r`yt%k>>gG)rb_it^R`k$}BC{*_ z33{S6Z{Dm?Ka!Be9d5bJE;D_fIbAynTRezC=msspT9>VaX^^nOzF8RHN7yD(UL&5) z&6{;GgtHi^)_oGZGO{mJN0w~Phq@!vuiz-#uM{Prb~4)wwN+T$tg_hNCVn2{{Q}1N zWOjTgtyfy|bF24sm@B>6RtP|$B7{?^_RBjFVt2j5p{HTK zt>4nNIk}~6zPb{1HW@K8)88*96uh)5E z)#qy5=QP#E%xwybxq5Cjge{q1$F83HX^wfuwa%M~dA-}=%gdh%++>Br+H4d_ivfz> zX>Y#wncut@y(t~#=Y}6Ct>@`2_525CAuIe4TorkHsbsh_+vjjVkr~8t&i1>^P9t(V zLv$P_#??S;#SxS+?d-7466{;tQ%N}ZDV7f9lvIFWfyJCNEDFN)Vvznnh*FO5mqs7q!&{E_8*+eV!P;i#3;C^j23{lk~*El+dm`&fd77jCZ+K zTLeISZlyk75L4S(nm6TFpeYP&RX|^5@z0u=(m_Hc*D%@e5KL%Ix*(vQ`sM;tz5{T= zve}HVf(wJhbTP-OC&CZRp(3CM^?^`)s>W#P)Z)>CSVQ59DsK9rnK1FM?p5mgi5t|^ z6kM)BCJPa@Pp*`dBk;!PBk(Xr;9Hmj|5Q(5dQJNmx*$9E&Q&UVUC85nU#$i21?y7$ ze;r-?M%}!h>E7*lBI@XO@`@M=5r<3z!j_vu;59mghNEP~`B4nD!8g zkiK44p7rwi1wGNzs%e33V7Jr7-^P>p#NW&K+Ykj^e62CIagi2gc&I*KR-YSP{jFyw zBR#a~uQ(LwfP0O@1aSc3q`t1D?FKpCxZ?(^*mAiY-?fChkFY#}GoNinVVid7x7}cl zDv|)tBZBc!HcPu+`YC4!EiBCw5LVMcoG`Mf4chS)<#KKTqf^DVCpNqF0~O6{==PMA z09@V?0A~Qervw1EbMW)Sk9eO4^H!-_a$i3Rmr|~)JCf^h$aO`?wfznc$oDQu`Ag^h z{dQpU&RI-~Oq~XZoucW-q1Y~pz$gVk5qv=elLDvs-wv@mm(fTB0w`9AKxMZ^kpzSf z$cJH(QD-kYh}fvO0VZ=9h*3|8jo9_e00cAFj8!(fj<71Pt%+7wMNc|m>?ZDQuD4q8 z92PIcca=DZ7AgYRBBvnSkfe12* zy|Rp=vUMChper~((dyAbhxfELn$}7y{3761UAb;Q-RmIMi3)U&>wT==*v{*M>>yUL zHoGd~?XmVCy@h2@zCKb)<-XH1E5=>?X6;&$= z(@rH8A}PRTToP0sWqTH%kTOnYQ>wb$b5)4EzoS0O^&HVl@gd81Q66u9#N>U4>N4-! z_!zL^@!piAe>DW@w~*!k#?OtPl%yHvj@f zbhi=0N;^?_+qJnpUz3aS%0%?B9r4kco#5>bqQ-7q>6-UL55qaN`q<>5wqU&T0gU&0xKO}N_EJuCP zwp88fW(P@`ixSImZt7!CS*}iWsJwCviut+c7?g~18xJw{BAxg3yNJHh(nl=q(J~Hs zB1_7+eC058wrbaObULR_n~Sib$H9Yy^L||6Qj{W! zJ+m#pilKSLX;edN4VKo?Q`Ebt@k0>7! zPv03rXoaW09fDNh=}ke}i>IXmPjXKn(L)=F7#oKL7K91A!f)a1Nt_&Qg4KV4=Vn;x zQm9~2!)hr06?FZGIFE|1w+3sYK-W(JT|XF1uhAv7cVE%f-U406_DY2dbhS%#9Y^_) z==v~7hn(v^Gz6(a*JFaT7hQ)Gy4pN3=~lre_hzd7NouSI6fb? z-9+3qqnV3N3~}kgqT6H$Utn#7OJkd-vOD0k88o^Sf*%`#YXwQaM*K!a(ytDdygG2(6Ixl_5wKlD;fRdy#Z>o~|#r zK^mqAs-;OMO_niviAf80aS+nlC{}rk>D*U^HwNk+U3>2OYrq}S7 zTHJnYRGe>9_+k56l{g=TM07l?C(bt|9K{xaKKWp{NFPFL+eP{&R>HQp0j#a6EGTjQ z~Pl?S4U|ptlHFPVDA=bOSJrcG4{hmgLPnVrGlC& zT5i0EY4|z@tjx=aaa#K6)P=rjXsA3v9ufI54EZ`;Pgh5*xJF%*hnIAWS)770>?fM0 z8=)-0tyx^-PW*12eJUugU>6=y zG1ALo+}6gaDdAal+wQ-%Pq1ksM+Jw$;_TQrH*i^t(ptjxSlsri;nHnl!dS$yE}a%z z_z7U63xKwbB!J=uFb;TyCOWQl3%$fjmn_Vri(0kksUmA4X-6GQqp;2{m^c6?ogq*t z?*0c_ew_HyO>-Dl#9JmVe9-}NOsrj!WafDj&Ea? zRA(2V4zvU!I*pENd%QH<>% zMWVzRG)}mXZq&y>$rUr-y~WwJ)yvOaxF*!Ldj7c@k{w7Fb#^UOosF@b6b(V$5#6THF32-3G436S~8kNZ*ilr`QQ3D%atS2zf+eV{nP_PrZ=-%WQwnYcy?BOk`kZk@6 zItzlTgu3gx-6D(JIhH*rQrCPDJ2kL;XknQwlitUY5NU<^m0ej)({LLWvi+wGdK(-r&(vZl1xJb;$Wpktg1xSh?f5G%qWYFs@CtTPOfw+9l znOn;y)lIW7%JBoI0hp%Db_YKW$OdtJD7b~6HT5%%eEgb9Ld&2Oe0qw8$I!#5n`cLw zVVGbJA&5Y#aWY^`OF$r8OUHfVie=obN?MO8t)831aC zcqfdI!o@Ma=2!M)H3!qN{yCN%=2+1gkS0mvvUJSmjkE;`rq|6VfYv~P#Z4O}lTg3K zNvQm_Y}ySFtTcd&kdh1YY%)!ni%&1cF1~-T_n{#cpN33QM6iJ}(p@Xb5$zC~u5cL> zT=HzD?@1pE?`gmQrtGxcF$xGmv7$h% z`~xhhz~%u_BEU_Qa|oh( zxnG+G%35Xsh`vP); z7Jw)sN%`ubpU9>=yi+<266PS4G)(lJj3ax*Ns>;yytIVkxZdevi5S$wsI`=54-uv4 z04NP47h-r4495h@7muI(DD*iUHLX7OR8q1(q1n^X9YOXMkLoT@nxYLjfF&ns`)F)3 zF&nTVJ8|+W6WI(f*)|IEEWDl}j&|}p*`c_LOv4Ssaa)d$Kj3$tPcK%;4#se;iSg+a zb{#`e?-Re}Ps0y!V^ykl2JdX3tQsCkdxMsR3Z-L46ZGB?k>8{Iz#X6`wCJ@CrDHfk zt^#hgkIrplUx&s-sxS47yb>^jq#GM1+(j20&J#59kOit+25+0LZy*pxj#hO0uzITo z!0I=pTf39(<-zS7SH!Xj=}r(V1QfCS$6gn}lkYVVz&T8L#po4Yd;-{DKSu65JJM4s zj>@PQ+?vIYaWWyi*@UJHyqDsj8E5z9VYh5w-4!8h29X2)(Lf#yKHa<3sTMDsC-Fz7z%% zd_@2$&8Dgl5h6|@jY-a1kVBS`C(v|KIn@$^uP6ni+KtdJP$vo>>?Q+Ui zBR%}ZMv-Qbhx&P`Czwm&r!0C01x0@kSjaZUaAM#vSM3+?ra<}Y7?D@==V5b5DTnpy z=mEWU=1AeLs>O(4Psex-0B`HkVp`S7!{z->bwl=KcIFbsDk8)(i6?ecFKzl?RCAQ} z{j`UK3e~EluGY9%pM3!s7!YyCdX9OY2i0V;_ zA<#YqV%WEA|5+)N{+WJzE|RRKqyoX&+1c6IneUsKUmL$4ZComTZcFD}WRo6^<4nd( zd$$_P$fhha{=Gl=&A;*cuBGUymR3c~yGziBxJY8fGXDyj?VxW&qI;ErrlD%YX2*HM z-Rt!_@K>ycyz$y@nAcVRJj~VQsflhrWZ*cMe~4 z${2L^BQ-vZ4~h)H!tzgS67u)|55DyUQh0}d#lPfB{LTr#ePRccZzG3%7k*vC{|5dy z@&D|VxBLr!0QCo@I={4b)alU&IWJTA%6Fw)S(A7657wGNB1v?08gT|2TWfS6Q}J#ibg zq=5N}Th+`Mk&VFnohgrpN@j*-AW!pWnpiMxS_zucn%o+H!VgYdYs7$jYNYa5#1xb@ zG|jPCuLzD?##pXZOREyBHjRu(plaB~#SM6<&b-?lN@+4_*xV+FxEY|H*_2EISOYcN z8WkcZkxWCG(lGgXDPajKB;*wABXz;Rjn#pwf*=fvDts9NoFE>1_AnP;P`TT%wsOh{&>F zEk?fA(H@bfatVCy1abj3*$601L@JE`Vf&$L=PaLkMu&;ckE8}5%+-5vm$q9|6}oYp&{^MH_Zx2?}ILnnlb5l`?3c$X6y zaKE8b3YPt1L28XaT`kt-k|YwdKpEP-h*S83#Fu14l#3AJ^w{ROBFq>?SF4J^InW~` zkqv=?x+?63I)R$HpeND*-bB)pilM)cJus6FP_eZ+gA1HtS~+*uBWR5YOQ}c*=Alq! z3%7TwW(%+;LnIUi&fOBrUVF4Sw_4T`kQY!CSu8*fL&_Pb0L~7a0<;WAB^* z;d>7)_6dJr-R67>3l}yc0U!jYa8D@-Os(}w=jSD*9tJR^JRQhnii$$@+JbPZ-MV10 zRo_}1+Pz>O6<3*1;;%2-s&>%mP)8zZLzVDuJ(5X+aN`YVBrDG=`Flj+t$ztlV2A^| zFf3}IpuBKePUgiJdfNI-gIKk6+Vkcns}{`Bk)k>O_wFP2?RQ9k3h?NZ+3(z`r;-1d zJ@0gc?x5pgSgD7I9vly&6y}Y;^+)EXzo7Kz{LEC(LG|R~8dZb4?3M#MK+Nw?j(!YX trkv(c`09Z-Obma(m|LF)sDSjk$fCr?fkLA&d#}Zz_E%*xOhlM+{{cgP*jE4m literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).doctree b/.doctrees/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).doctree new file mode 100644 index 0000000000000000000000000000000000000000..1c50da0a4d85344078dcfc37c91160b2bf51988c GIT binary patch literal 3168 zcmb7GTZ>ya5Kgjd?|LuZOD;{@Y~v*Dc1^JzLLW*XkdP8umbwtyz6BwlBU{2cN2iib z*831>9|Bp>ThxD63Z;LhpU%bhZWBTchNIDFG@ALonfa~p$In}ril5st85ilSPvbaM zF*Dw+$12JbmRkSTcYpV<{E=&EdSXz-Bw>TOm!qGSIYCPuSu( zZ@9yLzeApKmWYT-@|=~%$g!{_7IdO%a`fQa?nBSlUU;`bt<_?bTX++0UlFmvO>Qlc z)EEfy-AHLteyzuOwpfg4G}UZe>fl4f-gTnt;-0Q9?oEa5RTuXj#6EXxmQI2d&o|tv z6e;t^mt8ZXc%=1w#kI&hDp)n^V4MuNO4vZ>Y0C8AMCs{3Wh@=h5tIFiusk32g?gu~ zG%d!}?ktr>hUN_}mt&quuF)(nfRQ0Y8Tyuq6xgxG6XVI^DIaoyT-r;dLI z@$W3fzjGAn>4UgiqyaWoe`2$c#{YBlwJ#vUJNzqthp+IvLw{2e^-|Mbsw`?hGgLUm;o~pi^=Ge6o`7|`4hfn+(++J0YIT} z0EK+S-W#Mj;`lvx&1#w&NkisIrqu*Kmqck;WvTSXm)u6J!(uG+5aY|P9pyUUnN;W< zx~*DLAb#l94YO9H6I6k{IjhH7rIw{2Qu7xobFgk+7n&-!S#JH1cZaSuVITpuN_#9~ z3i?`_WLRugbjK}IEH|oUt|eC6Rz)PxHtgc!20YZK-tCW-vZ=CcX%n2>4wz5#gv`bu zOkio-pju=kQb{OU1|~l(B}}qHLQX(LQWp>0SRJUU3BsURrnDuJy<`aA6}Q2uoG%-0 zkIjGvyvF9HR%*CL%trYH*R@ZmP7yU|XhsuAS_pr{!lV2f*A^*aL;wmEL(98XZpXcE zdPd;;*7;4sv{ssMn#Pi8L_D|}S?_krNH1Aw6jr=DxUh4<1kYT%G`eu0K6>l?#)Xq^ zH#`79GaT`ec#wD7lBScKP8h-+V|@iZz+KfWQaUCvL+OigjQ~c5t{JIxj5i`2A_h=V zjAx!VU7O}sk%h=z2}OE4&XbJH@rS4u0s-jhl*(Xmr;rrL4!K{5GQ;v%ky#S(v#`X;V}kGC`bmQ+m#v_qf!^m5w>C2m z2Lp&rKRdNtrG2F*1MjW}&B6g_63Y^#$08l;koUg0|25*-*5l}c`5;-CKdjAzsWjkq z%5+~aJ1*`3`v=@65|_0s9f3lz<^Fix9RQFCnR9bq?}*6)LeAW-IZZ8{5iTZN;t%ky zN)>RwWfBUO{hEW+27$U-tji^l3X?$@+JlHw_=CikWJ8pT5aRSS&u~SUIEwaG6@fFL zM@1qX0|Rwc*bj9AHT8m?NCJ4Jq9qkWtDkycCK;h(8+!^DIK%96=B`K3ni7^!Aql3V zP-P3Z_o}W7u*xwK3Ik_ug{3b&`kY%YYYE5;D2g-|AcrO8L{tE04^9DE79$htcN}Jw zSEzR9q~$yVF|3W}i)Nq@MxoFz&^x!Nacg0-lpUeV9Pr2dQSMqnYELt`8=CHuH~jHg z&iBLj0s8DCewe%M2u|UiQWBV2>y^$gOG-TqV@P>2QgV)pLiO4O;at0Q z&SI;+wK%kY&OR!xwxPsdzi6x4L8C(*iBuk{gm;^fk`m#@8_-DBo>ua=h{9|C9Gt*B z2XIO_{V%;iuxN$e=Sc=^)OVAF0N5^xXW%ezyr+ue)#Oi u&}Pcv9+j^ie#6M{Cycqxd4vi~Z;CXMc^o)234{1X9EyKcC&NgDiT7V_@Y{U= literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Chemtool_format.doctree b/.doctrees/docs/FileFormats/Chemtool_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7c82710fcf4d3da91ad7e4ef5ea259e3f2af53a9 GIT binary patch literal 3221 zcma)9TW?%75N@07CY#IV(zFz4=#oN7gtFTQkWdjqrBVf|SR_=TN^N9$&+)FU_#7W> zpCy3 zdBg2>yB+d?v&1ST$x!Kp+Iya_oOriJt<_?XTlfyXmPBk|*R4d78UrD|8!1i7uhlru zri%fMPBj~rI`|N=cUw{A=D2j@bGKsYC>-*9%`HojGXLnZYi1NTu%0iu7MWZbt7d&u z*5fK+J)Ng1)4emLPkSn3>3|NH?2d%x`JgM*8)c=59?Y8FLm}D2;>M=8kb zaw~>KR;YB6bKc<1ke@?rHmtCc&1|`AwV_UV$OR~PVgjLdt!&+42Vx@)z@{NqfKSrNdq+5CP4uS>J}b?>tC45%Og zHUm^67L&o46hMCA`7^#@+&gbn0S%zA4~5y#>i}z~6QJ|kZqI6(8c72LNv73EGgH#B zVU?xQKf2`BY8@71nFmZ`W@fP^;9k6m)I= zL}dM6%}$>AT|AIF*xS!|kwhfvj0-b5kodTq9A znng;-Bxb0%G294Xr0<%MN{6^3(jj616(#@N^QLRl+$u5^xhtU+Y{q$#kqQ2g)j}Wu zJ)Ke+3~m*Y0@>m1r=rZTJXYj933%ED&6Hte_GAGOu=BYvqQvJGiG`s987@*qxl;22 z9NWNU446=m3`RFAH8MnlC|cO{@C7G^>4JzX4c213_c|Id-l<#ypF4qEfK56A3Z+Pd z_1|xQ;@TO@rsX1BW+O-j6tM?pxEtKs%-rksAU54>Y`IFiN{@Qz6+yEI0GhxKfY(!|yMoza;REdNahpguYgsw~g<{M7qgA&L zKqe@P6*njKj+iVUeB3h+( zKjLUP5gxuI8?s!a5T{S`3@*YHQ?%Kt2wVU?DiY}s7^thlZm1KesSA1{3E-8AmQ)NA z#;FHpk^w5Vv15e58Rnr2bOvah5|&UQ2_~*kWs9(Ps`d}C%3)d4F5D7JpL=v4w_4T` zkQY!CX)HhvOUfy$0L~7A0<hzd zVY8GSqRZ^_r~FCoT0v^Z8Nv-i!n0TW=|#?W!}mVsf+ze=?lxziun1u@5&%L73VupS zU}~*b20tq)^)T|`$&*1bE0(AzRQDEy6YbWV#a8XLIJ7%w9~D>IP~xvG+NyTY=uk%@ zm4_?M7nVYG?JAEmHaib@Y4SXPGFP)yD**_prCX(DJQdH%w=seHXv3lo%FnV z*5lul^Y&zY*M0siQmzA{I^}zJ4(jQmnr{!nu!Wx1nb0QgBD65!VWRlk{Kr^#A4-3{ zZ6b1ws)b#4%i;Y&z3=)De+Ye~{EGmktsbhwOz!3lw!~)Rn~qaS#+i-No{5$zAJi z_qw}hkq-gdhZGU8Z`uA0{UiI(etUO3Qlyfi0tnsC&dtuweDlrR-x~k?cXy-sbNeRa zLQeZMj-`s3@varCC{LNR{yYEV@BV9l>e`xK8I|jZdA9+Lh>IlFO!`;Y>;`=+64S2? zG%eK=ws@U4+`IjLk33ars$?(XEERIBbV{v=%*UQ@zw&N}TC2qfk}d-aUwl)6P~-^SRr$bQ0e6e8+7iLNb4T$2BvG z`&iF6U7OSaz^XaFw;gbmvVqQ}WO{I=^yNThOpfS?CH;x8JRkLix>Z)17{IIxA$IZ-%IyVzXg|P1w?wdw6@Gdu7N?5pTS> z^#z-TB>hkQZ+w9Q-s3;#KjEAFWXK;4^AY6-NEAPM<@r7Q9^m&jem{QYbN-M&f%@Z8 zoxjf?oo^L4X(20_%4NLdZ+R8IfyAiDYPNirYVZ3F;yw5OMiq!cp0y}&bUJjW>sg^v zNfFV6yu5h+;`c8}88`nAKXgylwF8=i@&(nGc}8APImzjS73#-p>d)m<{(RZuJGZNx zvsq!`(c1RKCojmwr!SUmtb6sDR+b4#KB1P9-%)wFtp0G#=K4iH`e7ZC8zCp;WePOU z2x`YLUHE&l{@!dfLv&Q~(ZUDj_JoX*JVvc1WhVHLf5t!OU+^#apZHh&&-^dUwNg5b zS!TKam(HgBiu38cR>&CEzKgOV*)w>OmIwS07KV|lpN!Z2#1IP zRPfQ%^QP<4+$ypVxw~Pe=)`%Nks5!9Y9SDSo|ZHT2KNg|f&P&Dg(x#Dj}@7w0Z#`g zGi4ZAezSlGs`HI7qQvJuiG`t~gyABUm)rBYK#lF;G6t1U6d8 zQHV?iYccY@3j#!*$|dl57>Wz9krSXW5vj2L;^1elo3U&`7vVB{K{BH7JyeE!n_HWi zj|T&YO+TAiu4G^7$-uk&L9=iGn#8gc>9I&h3-Ys{e)tQ-v#ZC^iuoW}n14Jsk4mKh zua`{s1+(Mg3{?Ms+cd#pZA(Wep%|^=yycDo$Q0eCs?D13h{*y%uHAu|NlT}MiwRHg z19-O*6>z_2Qi>}3YmTBe2-I7}x?GY(q0vK(QS>*jLr5I+^OApMTo5iT#8C>8D^Yyj6A3^Jqu#}2~ zV1f@UTey8#O^g6*GA=po+HErV#$#}Et&&Snynv#Ru|RQHQcmr~?GE7-pk+a>;BR#4 zz}@cXhO`{NA%?Yay=aCK!sH(M1%|;rYTS0%EM=$YGRORi+uXH-)Xp-v8>YzVxBTil z=SSiB7=xqbk8{^qPGR9fClUZca0=&?l2EC0z0&z*NvVf~A?4{vB{eDv)q5+#TDyJ2 zVtamS@zT)^`(Rvc1I6E8wN>q4_5hDW7lhWN-mQi~RM8}q>rNc#zhcTT6yam-zYx^tLjV8( literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Compare_molecules_using_InChI.doctree b/.doctrees/docs/FileFormats/Compare_molecules_using_InChI.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f8a6bc35d1a55df8020c54bf700c30e416b39423 GIT binary patch literal 4894 zcmb_gU2hx56_qWK5+#b(hn=RWRj-xSrQDJRCex2D*8-Ll~ zU$Ou6Et#<>o%Tr>raYvw&>JBS@`R?U_@X%aQ}Md!>XsnqlIJ3zg{IH(kJZMalzJK7J8E? zC8A-ja1yigY7|QBqSu3%NC_dH8!1WL(?*zQ^TCh=6G2CA4j!Vg&__~KGN)nywQ}$@is@4>5~Ac_DLj24Rgn)_ORq~BsEDUC@301I8tl4w z*-(*+Y3-H1U#j(H0C*Mv&!X;iCr1`|tX+FSr^ab-v*feF1_txkPuYF8$_`K1y_0-M z*bbb=_Ffk3Hh%Bm_bz_#y)1I}Lw1De58QP2KD+mP&Dzrf)?_S5#_GrZ_~FA3Jrh-t zy6{F8Ax|-)JQBzJTzVHg_Z0U^?|#EL#b_j)iSpsY%EG2pf~Vu!KJ3>9Ird0@^#9te zm_zgA?VPsVAsZ zKl5mR+&^|n2lIda9TwLt{p9T}t&G^H8PU?)@G})8_J=VKCN&4?u1zUtSYIZQhw$fV z*he_Snn;BGAc?&mpExH!`W6eEr*MvuToSpuHBI7UnGsX`HZq_`#Tm5$9hMH+tl2Vm zh zJ4S^&KDBb+$xn~^7KAPw`rh@M*Zg)?_nWCLr5oxF*jYSm1$4V^Lrv+Yb*0NI!XE+L z8KU@+e*9e^sBL=Hk`>)XF%C_0nF6M|Is0$GZB`$m)OLWX@1e5(wX6^AI?%O!|9-u( zUA<;E*Q-*Y6RqQK&m4v>*2TX81=RNIq0&vPL%%3=|J!wq0-f8eOh}X#>>qj^BXyA> zkXOw~^cMcoX%4-X`kaWg_}s25+qiDqP%VSZ2L7MRz;Dm|cN4KUuY6a$L6$m_GY#*bl}!#VG{`v?U43sUHR++C9nh+ccJ=-1TAiySrjO6a&NmpABRjO-jDLi) ztvb71GuGcnB!F7@CMLjs0vh_m3*U01*9H5UwWa>v8>fJ0VZs3>)D5hTUTr$#PV9Ys zTM3fNn3(eBXM&GWRUO}JD6U9cJYUh9)f^gPm>WEA=uVIe!_54Whn?tlC9#=%qBkT} z3W*OQyK9)6C8i^^eT9Nh=;kLR&Osil6xU6jt1MT=2|GH`tuY0iBZ`XxgOGrQDw1Rv zY`G16>@vY{vmE9k#%Npdz&GsEyv4>1oKRd8dT+$JGLc++33j<{7+jhs{?ycM!#6u1 zCQ;_Y#fEoFsQiJG(3o0@Z@RZ%abWCNE+|PcU=TFpLisU0qk!+G-ee@64I6rwP9vbE zh{|O(si7Mo9p+O{qj#&33hqB|MQ<`u&jgU*{F-f?!59Qs|R zR3?uH1BhimyHJd$eJ;j>Lf`&ym*>K<(SH8~R|cq=fb$V7S->aJPeoV+nRf` zy{?sY;1bcpgD4##2CBlaXG#Ui>cYGzF~J*i;nz0eVOZ)ks7vQ zI|KXrbN1C`&i2d&^8i%gOZFhw+jSS(BW#1pxW0mYoWx{mHP0QsE-~R{rEqyN}1UxrY0;DY9F+Px3>JQrZq?CUF z#6By2hn&EL8QFzTAQDmFHk_4{x)_AMBQGQptCG&zUiHnOMw;w51TgU@9|3Y8%+uHkP-*gyK9jxidDOk~TwA^vn8a*bqM3{1=TcPNx6> literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Computational_chemistry_Formats.doctree b/.doctrees/docs/FileFormats/Computational_chemistry_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c0cdad0dee4c276b988d0ea26bb2dffa5875b6fd GIT binary patch literal 5734 zcmb7I|8E>e6?YP!?Q{GkNt3id++343byRFezz;O25{?r$ZtAlWyJ-o8Wo~!w-p2cl z+1ccb2r7tHF&ZI67laT(2qANj=QLjWLAqQrn2=0#_+UHL)P?2chO-ujNhX=}QtV&PY4TyNrkRw& zZ)FlP=rd3FUJCwd(hXRef{5R>h=s+kDKAR~A1&tY3EnO+_~CoGdeN;Ox70r_&(x%3 z9lbfHX*C}B5zp@&Qxgfpjbu(IRNd*T0ACZmn`bK&hkQk3QN+c{lUVGn#0igDti^-n zjxQ-|E&K6ETESukY}1u>Kj7=J2$@V*4ynZH%jlHr%OaI|)}p$aOu4HS*S87PXhQ34 z5sNkH%Yavw)Wt)L2fA*wi-V2Iv2%QvceSDZ_lA#h;|kQEH|P~QL6@3zv6;0Por1CG z%)^|{;_p2EUc%p(ALbdoOjiNFQo!jlUA!}H?lPq<6K9cEk+`@FjlnjtD+RCKrd&Jf zAZn;<|F2@zeq$tOmkGp}&mvpq5qEKbupGY)p7 z$lODUc-fL-ZFOh&)^=4{whq>q%VKA(FKb0%S8Rp`yb(z*kXovYui99#pGttPy*c7y zBj8!k@twH!2=V8%5xQ0GuUg!1uD-jw)wDHhJ6MUdm21mz6MFr+2j<87uT(q?Ms@2z`ltG1lBwhYc@ zXh-n&`>ETmYW{1MLbsVfM&N;SH)D~^LT4uqP$0(9p}b`);O^4%DxgH#^4d9SHxsQG zR^TWv}wql)v*I{6m?|5>sF{ z)p#d}Tls;SAm8&);pTEUSUvM=_>HsbjehI z6Q~B?8ZH^td|B`W7rkd$d zOdr%#Qz@6yk2+`sPb0F6#;z@5)K)0i)x>=kWbo5|YdBE^Vcw*xO;zu3v_?$E0)=wj z)1``JVSg(+0{Wt(WPhP>dvaECfqn` zM}8ANn%iJoUPoOL#I!7y2?Y zn$lvBT}Os`iKI-@>nkfDr_0H{q&QlRMQ0^f=QPp?0Hh;1$`^ziW;38Ky>{&z(C3_J zyF=_XWx)PQk3Aw4#XC&R#j?+3+nj;uUm+O=IIJ#N3nAp;wYW2-7T}N}-q12O`}xjE z6YU`f>QuTPN!E49?@)k0IPZ86YrmgKLv(b`4>JUH3PrtOzKc&Mh+S5^foj1e6cH}W zR|FeOX;g^ads%`b^w7yXJ7p5U8wH9Vwc!K3tZ+u>3FOovoF8iE4PsV=q8StIu8avB3?4cbLcJ5VQh^f<>zL`@aB1i=ee z^drwla7d>ZiW$c_4WZy#(iBB-GYqbtBHJCJ7Q-!&!L8l@n9w1FxtM-0FlL!yshZS_ z1#J3 z&FhWc0I7o=>!5HUd-a-n%k*E`zZ!-08<&o#RW3FBw1Jnd(GMnX83OB(8#Nwz$HvCe zFCMi$Y5@bNga3w0tZF@_YUK-eOpR;zKxA$-*SGXDQ_Odf`FbN!lnjp^7W~x7zLJbv ZpDYVPgi%KiW~V)!|I1XVt0Ig-{|nly+QI+; literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Confab_report_format.doctree b/.doctrees/docs/FileFormats/Confab_report_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a3db38f845b4e2370da831c69e97b2c678232b74 GIT binary patch literal 7720 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Copy_raw_text.doctree b/.doctrees/docs/FileFormats/Copy_raw_text.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b71fb68a50295eb9efc88cd6d69def2392d54fcf GIT binary patch literal 5727 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 Hz36`cvx03u literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Crystal_09_output_format.doctree b/.doctrees/docs/FileFormats/Crystal_09_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a7cdae3b99c410bfc8013870fd33ad6922e7a8d5 GIT binary patch literal 4750 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≦lrK- zHBmPSD`08X^CQHHyFDbaUCycptq#dY+)gDO6co4{A{4nvM&Tk?^DbI)*fHpU z<7nniL4O~%dN+R)ZiQwQ92A{&0U((PtBBMjqeQkO(7k6-Nv%%KvgKUgS54}V3dlFV zg^fuGl$L>vb!{}2c_jV0Ms550Tr?z~I_=thdBU0trStDbtQ`iI6ZKXf+YpF1!G7x|<| z(==BpGv2jQm6RFFt^e6S{+IvWpSrfD*G82(Vcu;(BjG}(n&ti(UUq`M71H!-15Hcy zm@T&RhP&76b;-G&8cU^AV@(S_{m}F6XWs2lYqc1b7QTb8O_3Vdb=!%g#z2VYMozQp zsg;(+Vlkx2m1d(#2M;3k?jX7C#+Po}(s9`2`HtI?B4_@|9oH-0b!RE|kuwHT{(kkXqi; z#`GpjQhtbJ@Z)Em-^1@^{9eKD)n~rsf8>v${-{#tZ}K;uY{j#;5|tII z%+sY4R)^;s$bm|%X3M9q-~E;&-gT${ZvX)o| z3M?P+ulQ5`HUEZx%m2w-E2EQ?6_)$Y|BFA=EG;5>2X1RD)zII#CKqW6rnqtYwY9mR zm6zF&X_opY8*V3J+o)Vlp}PaZStK+-?(h6zgjy5O`*;>`HZPh2;y(jyQ8VCo%q}yJt1cjiezlq|jhrW-6*}SOq?=qF?L8 zWRxM`cU&hab)ZO66XL+_%_NaT2d-t9wIUy*Ya9ViRTmg(m0JcDaLsS1EPG%K*!tsD|~xx#X%UY1&7wU1PjK>Xn?95(_^rrsTo zl(M<9Z0RLvem@W@fJP=Eqk;H421HSyEV9t#3{1XONtk3&LaxE>WY&J*vEESkBZNV- zLTO7Rd%+OCyKaY5IbSy15t|4^%~D&MnNq_wQZ_8daM!t}I!Dx?p&88}X(L4m3zzag zxsJ#YBLYw;l*b*&#&KpNto736HfC~0`*8c?v_||!79>ARvOWYcPA@v zR!s2!xK3qsae&#@*KfaA+360$1pqX|5g&;QdABcVJ}&8)A>1j}cfkbiCCw605&?4n zCU6sId*GUh%15{(!XZ)s6|^()yy-f$w2CZ5?rv!F`)QdKWR5>XH3|fvr*kTU!GkD? z=nuJHhzi5XRFO#*@N|eWQ-+b{oe?6a&KJUn3ZDlg6^0IFxJZ47)?Wx6Uh zL^*~KyRXUuF2aNw+e=LX=tYnSbnXQ!90#5Nr>^LUEPz)kT9sm$9#-0-4w z?I5+&0>=$QpZ$rOo01=g=M&6%1%Fh!{pA$KBkU&vKnRC|pGp!cb*5JxepyoKVVp{OF&eCh&=X>cXdo0SYRIb2?cTW76&zeB7{XCY|@Z+58TbHq6oZ?X&*& zJ@>&skN_R<)vdDMeYi4{JnRb7MThIoizw~kpkaRJ-RGS<8yn{L=l17&(1B_j|5it+ z<$1|9>dtn@Z3S4MB0n2kd>PtH^$`fhn|()NRCvB!*>k(|;6ym@)&n2PXB@ubcGAH6 MHARML2;Wct10J}#djJ3c literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Culgi_object_file_format.doctree b/.doctrees/docs/FileFormats/Culgi_object_file_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..242096c9884e1a158e9366ad44cca563d9b7b67d GIT binary patch literal 3406 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/DL-POLY_CONFIG.doctree b/.doctrees/docs/FileFormats/DL-POLY_CONFIG.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f4ed0e927148cd79b32990e5a069ca589c027f02 GIT binary patch literal 3004 zcmai0TWef55Kdz6+Uv{uk~m4*xY;IcYE!(Mhdh)(AR)zVaJng_6#5W^_8jd>Sm)?e z(usE;0_{T}2E9f7A^k60I{Wrqrl^t=G`S|L|n*Nv(&%DW;^IxAx*b3(6m&K z*z7oOxU1c6hkW(?=(`use*+jAneLq_ecDqQO9ynoWOpPi&j($h-YY9j^kCNXj)i2$ zN+;Bs-eLf{+E||tc+0IA7FnUvX~21dH$!x=*RaA$Hn-z$RAxG596JZ)|HC4lII;W# z8;9Wkx8fULq?LF07yJ{x#P9U^?S4L>d>a|yyYPDrzw7wj#P7qGKIb3vL#W>?)%jh1 z`(%0kz=7LajC&n^zRzl72ku6t(x$x@%U`)JPigLo%&Knwb)*4XZ4b z{^XKdt94k6Wgen+*|now2Z)ghP<^*iO9~M7-Kt^MigX0d?Myi|)GDK*Ax}vt5e6ndDkV&^LPE~K4N|ig9;*Wt zoe>7jGNmn%>=i@!uDCT$<#gF_J8UcvHA`)7YNdv2#B7j{;I4f}b&9A#Lo=E{(n9zn z79Qo_y0%CWBLYyU7+T)7ayvZw^2neTxLb>xglVlb;WUjU(};MuYGl3JDkD8-rBPV% zZvVp01rt1T?b7J%0`<{biyIeCy6x})0L^g3N8&-=ZAzMsaynuNcZ~HFR9tsevqJvniQJV?B{$1GqlRoYd0)bnmHXciZMCb29*dMwhh3i;7z z_aB6=qleK2^FcB*f3G$VrqY1dQ>MFu*3mF68Z(Y;085rC2W?m19X{v z{+K_?T`NfKB*S$>`+V}2KR(a-Zus6u$9%-^|)a*B#V_1XpDRJ*lcu~mC54(%@3N5$1Pl=!`iwyGU8I@FO!<)KP=w;m}e z5pKKzjb!C%C4Yw~yz$?I6Bx0;E=+C)C@39H%gMYLGfUe{42V@rr#)|O5Ng339ch~J zfA8LR557SHbih}q%zo$2;y`kzBTNSkt~2FO+{Hb^AcXPaZ}UIX&tFjbbAIBfr4B+9j{_%^@RLa2_b*`R1!+`JyjJfq`JPHJ_i!_pX92heSbMIOlN_|xo J!vKVl^B)$Dn$-XR literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/DL-POLY_HISTORY.doctree b/.doctrees/docs/FileFormats/DL-POLY_HISTORY.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4a7d58826f12877f56bb7400fe464bdfe65c3996 GIT binary patch literal 3235 zcma)9TW=gS6mFaBCY#IVLP{wRSXwBFP_a7ZKx%~FY9#(8LgEMTd2YK|RfVc6jgOCykB`6a^T{u*KmJ_1RQz)rCgUPK>(e++ zRm_Zc%dv{`gr(L$_xr#4r+&|MG(9yc*AesX596)SKOi$Df5SyT|1*V zf%SaBbx3n$jN0`{*?_Br4RoHSOb_JpB)SKJDxvKhAA7CRHDnx!^3 zwNuNrVm8dj*sgm@b&9IN17u2I>7e`(3y1R0Tvw#15dkPv3@`6Gxg8yRd|(8=-@G_U znAS=YPSaR2jf#gDoU_wDM1YNJ($Oz9x@u0mLzOad5x*#G;L$nz8 zy^7};_f!sn&#gc%z$P67g;FHK`foSicioI-Q@IF-SqqjSMecza?lo?0X6_6IFq?ih zv0SBnrN;yBt_IH{0eBM25?l`i-Yvs^@ZRkYQO~X(MRVbUWg7lg9Ue@j0k0=a_XV?~ zVh^x?z-=P2S;x{LC=^@n50~980GW`6n~mNPlLdsFyG=7mEj@#9j=97S;9Zm|;C{^{ z6fFBW2dNDT^-3`=heWD~R;AsII9{Fz7hjSMRW3@1)hBs|EkaLIJi3(#oC7^766pvS zs8wM*=ma!%&QBx(yi(DUilN^)@xV+ngkl>zK?-79fWuWzSUrXA4OIS{6+i^g9my(Nn111#8(u z!Hj65X3!24Li-ioi(}8%sBueSvb62tmD%M#@<+Mr1go87NH??!KRx3=p67f!eD9(= zc*JkzZhiI&ixk!)0U(5=uuo|TOs)OORpRP z+ZWzauHv1)7c=GC1a|Dx=^oAGV;(bp)s4v6ZN_uacO*N5B)Ef?N2G+lL@ z&_`;a&qGJ?kNJ=0?sGW({j$!;wW=rVvRe%I59)n$boYLEN6NnsAZ>Mv9eRSl5X`MM dB`83iaUjV!boVQ9Q1?m*L(hZ0`d^|e?ZE&5 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/DMol3_coordinates_format.doctree b/.doctrees/docs/FileFormats/DMol3_coordinates_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e9bd339097c7baff8906ce4f952ea92a655bab79 GIT binary patch literal 4569 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 Vfi~kX6R#zq-q)ouOhK4L{{~qzs7e3; literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.doctree b/.doctrees/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4e0af3e105299f89d7502ea99d5c79ac620226fb GIT binary patch literal 10775 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 FzX2<|;@kiL literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/FHIaims_XYZ_format.doctree b/.doctrees/docs/FileFormats/FHIaims_XYZ_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..079ab7c314a0e292963b21e08f5d9d9aba337e52 GIT binary patch literal 4496 zcmb7ITW=h<6_zFKN~_CSQtZTarDp3iuIxa&erSOp0s7LyNT60moghsw!hk!&T~eAE zPDqZuDykw)Yt#bx7WSbi(B}dLilTp`4@HoF6Cgl84rgXZlI@KJ2pArIB+ohg&V~DF z>n~3>=ZZgbRb`B)lRk-}R76x+vmA*qPiU&`=l0GY?5W)~9Z4Q5k;{-;GY3S-cpOQZ z+Cxls9bWTT^~(*~n#eJoE@v(CTEE{5?!Wgw;fV@9{^hTNk&p?|?^w2UXw3@ITJmA8 zalAWjfkz5ko24)&N6C$m4;?XgVZA8u!Os zvwYa+;+ZnP#Q@u?!F?Xn`-Rc?zT}9$RNCf4)-g+phMJ4Cc0Oydw)4_1CR>{8m^P-& zcDYv%PVIS9d%LCicM9)f+2V(E;;v%``iU)WoAuaR?7M7%-8x{eALK*AHgG9y>(H`m z_<-|!J)FJ4Uf*AY6>oalOf|n-3C!9uK=Bg+T3StiTR&1WC)iE0lK)^Lko{3s3QDZ6c>=FVFZhJsu%FOST=5@?^ zxm9_%6fxB3CuK;_q;muIZa5(|!aMr#28laD7fj$E01Mew>ekgh2u7-x@=G_Om z&T`#TP(7x-p-3au6KQ;Mw_;ZZAwg-_HX7&O3;{Fa&-M(7}{@2pRUUB77CQzc?>ozp2K!`=R&b zuoAI<*R&Xxj=%~3`6jgZ*DQk^E&e$R>eekTkiZpux(D zSO1SS_~!G$9{RL`vM)+YZ#-}N1`)n|IU@XTmX#F|Il z(?=BUn>QRiKt>MRb^taa{K?ktw_e1X!Iw(t-O!>Ws2aO_!&r zF#&iXBA~44p6@TD^UK;=*FH;cNic6oZRm*ksLmOww^q#uOfpFrG)JY+jKx6fz1TitaJO zF&s2GFzryJBbW(~@CaN*2RpH>ZMr1aBAANIyz6Y&qdduinu2g_A>d%2OiAoEyjn;K za=YuFiZVs>NCcC_QECH`CKL^tD+`t&Mjvs-Jw>kukx%3RtZMrd}6j{H^kg+mmTMJ&?P6_E&6zKSOWuF4NV(M=a$U`{#)5o4ZkZGX1$ebdco zHccANm^CLE66o%N!`xt6XX>570Akh8PBar~U&!&mn(Gc(C;()D<__1RaUIK$@4b2N z2k>WCj=~GuJIQqW+tv06R^ljoOl6-_Ju1#X0vIrz#5k;@$q-Q#X=eAA%?>!3AT^fZ zS!caKWsV_dW<#B%noI)5$1KJ__`4VjNBuRG5CqyMIpSKuQLhwZKMZ0KlG3$1Aw%C4 z;^KY0!OMjUvHBQY>RItFE8Yub9ykMgM99+-I8Y^qEte{gRxjXq;>a5d;-k^MmX0kr zlMIo!l|F$AjN*lNX0C@o9S1ZaJPz=Nbcwc5d$WAUfUNPzr?oS)K+{JS{gGMr=>+i$ zD)KZ!D*@v9cVj`EO(+FwX*?{E!Xx*PzaG^LXo=^V$EtO;uv=U8&GJLeq72whgY81hX@!n`v^Te#T6*x53F-d zQ;b(pSDh$CT_vq+V)X!Hb<60xWITl4eh*h59o>4K482>IdzM>0u6ihYy*jL-e%&V@ z{T+8Yt5yDt^^X1q+>5$C(<*D-6|?AwfdGB~;Qj+waQrVJNPyMP2xuOT{_6KLtF=1{ dcCYd@jPuAv)7brvu@bp5P-aZmBH`zQ{{wlwv2g$Z literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).doctree b/.doctrees/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).doctree new file mode 100644 index 0000000000000000000000000000000000000000..838b3ee5adee15bc40a2eb68b7d18e40846c8a0f GIT binary patch literal 7879 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 HZdLyc96wP{ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Fastsearch_format.doctree b/.doctrees/docs/FileFormats/Fastsearch_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..51dbd43b5ac6147e0eb4367de8ccfe10051f395c GIT binary patch literal 16354 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 X-Pj_nTc^_aDT}s?)UwJLVeNka(3|fs literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Feature_format.doctree b/.doctrees/docs/FileFormats/Feature_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c3e751ee55c5d49835ba24e529c9279093d33ee4 GIT binary patch literal 4448 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Fingerprint_format.doctree b/.doctrees/docs/FileFormats/Fingerprint_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0f89160abce36a1d51a9d3cabf707e47183c24f3 GIT binary patch literal 14567 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Free_Form_Fractional_format.doctree b/.doctrees/docs/FileFormats/Free_Form_Fractional_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..048fe718df6a5c7ba3e6e0feb52bfb60b1a028df GIT binary patch literal 10303 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 LOG=>=-nRV*&d5?* literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/GAMESS-UK_Input.doctree b/.doctrees/docs/FileFormats/GAMESS-UK_Input.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b4ab8f08c700ad17b0cf3b069f6c7e7a6ef79ffd GIT binary patch literal 3009 zcmai0ZEqVz5N?~;iSy#TG-(So)U;3%q1gQZ5~@_G6{1i@1c?IQs@3{#eY^7A?XfSd z^Pv)asMJXNt;=8Gmmnm>pW)d%-`O#(uw?0Wc6MfV=6Po4*VgZUtY0dBZc7(jrx z&5rYy+w1px}XVY{$nUxbfDl7@CAbp0By(ROHN`Tz2h(;s(a^ zCD$R%m9c8qH)R7ZGd55*&zTy$kZL@T1leG>eRod6RSA;_Z+h?6r(ADVy7I*Bd*%GL^l<#EwONRAv+>mVacE zkpFipzVc;dd5?d_KjKUL_9?%0YKN3>qXv8ze)sUdhW`!x-+$&U|BxR+{cfes@96O)KBA=@psp`h&U4IPMOY^SXdu&o5X9Q(uC}hN9 zGCU(?nO}PTh;L|j{jDkh2^0>XV2A9T_ibRn@3=jqXs%Nl3PcJe69s^kU~L&`XzEWc zxwTq{#aP;quFI|)SrtG=rjR;y8?~f_;i+5I%ovd;;N4Ecqmh!iVL8Cu{+Xs0$Zwd~ zmevGNpYo$q*GU+VNsUwy<+SFJmm%rc0|*tTv5|NT5#Gh2s_?RA=7p zj-)iXG;D4YMA;0`%xy*{BcM1?r>nu(fE32bF}Stdx)!UAT|AI8B>n%k8j#iymNfncrp&!L? zBY=@p*N$X9!X1$g5d)}bh!fA-u1l?vWF~S~LZjS_ZB~#5f5>Vn5P+V_X&MY}m68(K zq4qOTp_z>(nPdS^+n|}$478n{EFl7RJ{MY4_}n6~&~%uFi%g?jsd)j8ZQwE*OejeP zqnlGTGD7<-8~nBK1t*%Rl87u1)?(Cq9nTZ$R4sweoj@+YCQpFERAj>V@3ud6-GUXf zb`dVK5hO#3*aI`%4Q@=K?+*qL>wa-&xXk-fB?IsFgJu~3G>Ksu%41NDRmhJ&x%WBp z*;S)x!F-U+%-^legQ+y&b<9*>Ff%HBfc*n*vJ}obh7LiY*l>Tc>J9+Nj5OSA`W?|l zK*+h<)@Qk)6T(HpQ~Uwm&kBme<0tV`?up9aWdg_9n$O3p%Nh>Ob_jl}pnQVxTt<4!i z;0)8kx!aGRH6|>hA|;qdLYFPW-kCm*0Bbs`dfK^LV)=8AC(Er?y#(Y16h$5jki(E_ z1}TBFgP;H{gCPa|I}Y>0OLV&n(rTuF7}iG3q8%uNaU{GKcm_A9b}M1Ck{#leIp7cZ z1M50LYR(FT8{W@Huld7s%Xh=~0iMhU{H}GI^Cc`p*o*{#5Q2iAN)nh_>s7(eODa7K zL@0SSlxc&CQgv@Z*l2eySnSkZ%R{>t?4#o<6I%TKqOIu;9y;`qNZP=4@75!krbsvL zfQMw|tEv1Avhd3P08U`Y0=vRM1{72dn|3lU#?aE$XBxz+rOlf+HwkrMjwXs0{J*>R z+!x=X04m_CS5?1vyO}nsS@3pG=pJ6UUPGd|k3hpHg!$qh{Xg^1-%$E%e&(s?ntD=k zt?7ey*)0b&fQU~{AAcWSm1=rMqpJtdFd_U2V{W}kND1L}kw>YG17(sh`>w^I*H7DG Jn1C>K{tFn)p)~*i literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/GAMESS-UK_Output.doctree b/.doctrees/docs/FileFormats/GAMESS-UK_Output.doctree new file mode 100644 index 0000000000000000000000000000000000000000..323e00e3e51f5c937278a676c0c88ab53da37f61 GIT binary patch literal 3022 zcmai0TW=dh6mFZ?iF0u-ZF+%*nifhT6uS=yp-PonAqpsJDpBCA8jW|yJ0tJzEOTj{ zhf45JsgdTb!!P15ASA?};hWv{+A#$zS=u>s=A4;xzVDp#bL-dN)-RMlx1|d%@=2e@ zaV}$~y<3fCWHXi<|JEP=;$Qg#*HQGPmR3c~y9>~WxJYBga{nBg-Jowos{6HpwxKFv zv*Wzw_WJ!E`TEh5ubw?S`r(*7wWhG>Bn2QVrUXhdA{bBQ;{=&e9^TFiZ>X~ zmt2Q5kH)G!ed}nzWyS`|<~dV?mr{)fvS9g;4q4hygyDAB7xJC5%ESO>_298c*<-0P zYV=?+2z{lEw?p1>E1E?{$h-+VZ}E1B5cXO|n3T=!xEqb3UKP#WL1M>v@L?HMoLT;! zO+pg>OZBxc6U=-3Q~n`e;d>fhIyYPJl|Eu_4$N#iiDB zb-X-(;J{s5jQ>$}G0*qe)ZBr)(P;ImEY0pemqAizkj?x52>zGm{kt1%QXqH)2w+HQ z#9}f$C1t{2dH#rRXm{aA_Mu>h>|Y<<0D|9fSB#>$PHD&#DU?hUuvX%>Wu&30 zKfd7BraCOf(uSB_blu3R05?*D>%?tLB_$wF+^S~Ah&%xYcN$KOl*|pwf$R2 z!^(CYoD+U{;yMWfMyZj?V-ZuZ$ETD`O?#cI>Yhy)geT{v#xhU(P2 z-I0_gmxj%4f-;){qq)t_LWA#+2g3uj=nh30^c{!ZxW`IRD{z!PMJc)!&M{W-BuOpIV-Kwig)`9 zI}0Xw;kuR4*#)LYZ=T;+IO(>-0{}G55uX$f@@_Mwd17h85bhZ3OQ^u^vSN``F^L%} zQw%o(7&&q6NaiEF5#bOqfQs5U@x1N2)EY@I-H@r4O)wz)hCIS;x>JC=?s+k5}D30GW}7n@znV zx(En4bKCkfH*`X{NO+1rz`LBvfcp)dQLyYM3sP$Y>Tj03looekw^|>Qt|~{Jf;n z!)%0XVNTw;m zjW?i?tbAF^-y#aH{deF5#x1Zb%w|AA<*+Fy^J2^{U45!Stf{o=d2=IC2j*y^Xu1;C{ zRa~p?XcygbfCHHL?aAY(p{-P-G%DS677Zi9?=a@pn~0PcUKe?k+Bk3~33KpT9EyEi K7sCjI0rYPzb*J0_ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/GAMESS_Input.doctree b/.doctrees/docs/FileFormats/GAMESS_Input.doctree new file mode 100644 index 0000000000000000000000000000000000000000..248a566127ab0c2d8933a294de5236b460160bf7 GIT binary patch literal 4819 zcmb7ITW=&s6<%Lv?6Ez*Wp~L!Oqxx0u}wTRXyI`!3eE;YYt zJ^R=C4g1fms9Z$pNsonLnuT1IWAZAKIi0`eGCGOjNSmcwzfCWdA51kIaL}6)`Mx?8DBHE)Y%$#N;T2YDx zGaE-KFZZTQJ7@4+mtw|r{Q9sMwW~7@`XWnsUlwV~W&b#nNBu14>3|J*+#5w&6oX!r zy-?;%^kG)@A4D;KkjaE;)o&iYCl#Cn?4JkU{=)=-O!+ zh0xo?VWadd4~N~daAM8uFZc-|f0^p%rM*?*iSLQ;h#7HrU%b9w447EO6^QkNQryJn zHa@T7^UZ^@5Z@MCP`~fg#T(-Fy;=Bw&(UMz^L8aL-A`nsx%XjCr&G?m-HXzRBk#SO zBkwdEX{03Vx?@uc1W!lJ1=Bl66(IE0p#XRTb;TVpC>_}2u8fT%(9VY{Vr}7qGh+9g zXac&r9_XeM@;FL>nJmqeXW8(X^MqeYnO{Na)2n#(F_a#;D@67QWMuEL3D^DYUn=ft z!9A7pAR0zI^eVW$VJ3_u6gr18;$R4 z6Mp~gdH_=R`~~WNz6y(H;;xOYc_{z!D&^lh;4Z&{kD#N!fW!7KBd=8jWx`RRPMt{N5J z=B|=AD=lq3Gl|)~S#yVQvf8(9eZ(8)rj{&KF{8@u=Q0~fbX2xGYw1k0xZJy87AhScVptGYrp$6sNNTM7 zaT~R7mMV#Dz4pz#;##8`qRU*XyT+l+Qq5CzZ|#p+T%gsf>Nl!wp{bGE7hC(LGvesR zn9gL0LCDZEYL?^}EV>O*{L>>07skUv#u#;V7WmXF(kwP^!9#gkn)P9p=`_>4F^T4| zOC4ESB>oBFIH7iNnJReh2U$W*v4Y8OISG%smH5Z#2>q&K#g5|z;}#Y$NS`!Rpa z0pGM)5G<~T=#KeG1k^Osg{qWVrWNu*F~WAs$4sU`4H}ZO1d%pF{K70-4*B3k z7E-5SI)xtY{BTD_`2O1YNuNuZNnfxujH#Tr$<;uYX2l`hu+p+tO0#ic=7NdCPeDJk z?Cef_s8+vre&WJnvr1X+sgX<7%M>7!r9^=MqjJmfp~c7Fgo zm*p_HV4frs^Y<(B2v$avJ>s$#aXqwqAOZA+PGW4<(QJSy3biQr=FJ8;nfP^h)>+S2 zIWgqStg6#gvlCxLBN5{R{?5i3QGZD#41xApfw)!x>J>Y7LqE;}HimX15a<#ET%U_K zpll(;>LWD%XZBHRpI_rVa0d2dL6i=`fhsYqQ>s8(y`UE*MBX@KE*k0Cc~pWk$pCp< z=~K8MIG)F6=2if$BcCTMihVr5DbZTD*T&C6kTo81_R2WRG8Izjw`icuOy z2oCMLN4F);8k_>PG+yOM;UT?|pCI9#le%{_#IQE32W<)=Ji)1CpkH2M%FNNElWn?M zvvIhIm_NKne?0oLfj@=mkfJ`#aRR&}t?Cz6^UP|U6=I#SU!LJJ`kgK^%ZMhU;hd<_WqA=>}| literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/GAMESS_Output.doctree b/.doctrees/docs/FileFormats/GAMESS_Output.doctree new file mode 100644 index 0000000000000000000000000000000000000000..10f1b86e435244f7945001e2fda00298eaca32d2 GIT binary patch literal 5248 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/GULP_format.doctree b/.doctrees/docs/FileFormats/GULP_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e43feee58c03e8b5dc5b44ab10b6e9d1283994f5 GIT binary patch literal 3470 zcmbVPYi}Dx6iu7hiIdoQ(3WSYDNvH4*hS(4DlZ|V0%{2e6@(DcYP>u444K{8&ZCV# zR01I+BF#63f4~pr%+9XuL{*E3V##y&?wxz@oO9;-*Vf;^cbBR^x1~$Qi_-zgvO;E5 zd$*R!)aJA>{x5&T}P3}T3VG-@0Q?^GA=Sj3xAA%&HrH!{E)^V$v zriRO6)@RmY?a-HfJZu?m1YLOKc0!PTEUv#lk>;RkB79dK(9_WFr@8#$t0QE6_AYya zEwdX(?D~-%5w?wnv)yCQuHbVGpO^4?<=9*HIy->-&FIeFWY_PlRQYz$IWkeCWQ%Ei za_iOuMw`5>rdfY9?N_<(e?iefBKqG09^6d(_i^4lrTuS}M4bF!aO+l6Lt7gqi^)P{ z_G#z^yY24$|M-4h{^$R_{LfJS$It80hwMhxn|9Nysz)n@H0Mt3)d!60KK@BxQIZ|X zLQLys4PxydMUvt0f2s?9<~#F>e*W(jHOX!u*&m-**$+)cu|lAQ&d{>&wiY;c2o!p@ zM;i?7yPfc~0Ye07WMxf!PZx3a7Is=*#F=}Uo|a%m0zy;JG^JTGnkE&ApLk~3rgkqr z)dlp2!yX(K(`^!KHl2~2z3HwPMG7rQpkPu4L{c4PsAZ%f!rxnR>x~c1u(W|2ms~Hk zDo99D3&xS#Y%G5)LpAkocPym|s9bmm8SDn} zDQupc21NHtKc%54|EKHm0zFCq3Yo#n zyN)&E!w(KM$M@IHKTN1nQYDNOnVccyRF#ig($5mig$Y#o?HmQ{&Bq+be=%- z>TBm8TzJ!MhXMdJ&Cnl#g1qYrQcNtFP_#S4`ZDfP_kyCSR9TWy+%_4u;lRj|Yp1dp zqeirYX8L{Eu1Bnq$=u{Fhbyp~*}P0<_(NAK0|)d}K|~0+Raq)zhqIrXN=*W2&7UP;TjT!dmagJndJ zdtiopi5XMsJHsK&dQeUclf^))$ylo{slt+_n_GKVPE+??rMqRW7gGqu(@&byy$T-Mhk~mpbz}Z1k zfR@4N3H{E(B=`hscg`B8MVJw7JX^E_g)nG_`{LNMO`_duco=Q_xMlX3VGphA1gn{r zNH+{i_D^QcEZYs=_b?wlWH+trE*@c(LO10ALP!exL`z_5;}?@(v_wCQx;XNDB*hFB zmFtxY#+i5LT*OYZYxUCZx%g0AWrD<8 z-M_IgbKD5S6z(&OQ_YAlsK-3k|D}6rX-Pk4y8RG->+pNl9OPQ{C3eZJ1O$M5Ume~3 xCfp?PcM!y_`ALDP;Fq-+&uz^5P$74N7pbsWV9F%?m|4$)#Mf#V1|R&C_!nvdJwN~e literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Gaussian_Input.doctree b/.doctrees/docs/FileFormats/Gaussian_Input.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cb15de9cd2d9323b06d79096fc4ca980fb643b43 GIT binary patch literal 6187 zcmbtYUvDHw5%<|%+iQD$zJJL9=VZ7`E% zotaGcoNbhg!b7B3>bDGn2t^RSNhBnY@`9AS0N;QwfDjVmSKaf^j%DwW)9re@y1Kfm z`d8Im^fnv2Cpxn5>U zrNJOm*qXMQ3w#N&deIA+lpx}FD`FG-Yst@&dN5$#Zpw$22R{No*K4C?hC%m6#QN+{!UYzds_5&5GzltnA+jLVhPsCrruyQ3v!=3H1h|trsQtR1im%!$nIhkaspQ*;0WD zd1Ff7DCIcDkW=A&30(fZm05l9FBnX{J$ zig)8EJaC4_HN8^ZHjagjQkIB@!QzMH3$d+F7f~z!#`Ma+F0LD;TQK7LXIc8aqn5%m z;zb)F^?_}b1l@Uy%yjN0bhOf1xP6>jEB%Y<`>p2hSwm?G;bSwp^WeQ2d2_i4dz~l_#$d_BzwjY%zD}HAz zY3n6ENd%LDYzQePxAm11WfhihLYF^If8c)r`^RV5S3-Fi%paY_{2S{GerjZgU^lW#xj0yT#A>y-X5b6kG&}t^2NK5{)`A+0x3}(d z<{LDU&l-@dkXV89I3&mS$vV2gD^%8`ZT%FIYj}>|n%ZLpLdOrLu)PH7Dtz#>DfofY z!dIvJ{;NTCwwqZzR=IQhZt2o(T)kNh(f2@~2BPmwVH^SGU5(*~bs% zFE2fiiiKfp-gSZJWKp0TkB8xHCm1?O$|YXny{+YCYi4!N>hJs?Qml*`YQKkS#lz#< zPpwk}ai5T!so%uNiQ|u_a9)YH4){Nsf}ap)o&B_kJDq=2JcH@&U|yEZ?5jJ)gS~jk zva$*&CLDVW%bYdKf)^mFSr*`tTI;Z>pF3Koby34~LF%G{!3P<5gO}TE>Ki4qz4cD6 zcO$C94Q{5B3^jN!VKkeSrXs@Z(h0ij<~g>+ar$p zmZ><+G4L7caK$DG1}k<$)DzJzhRek;OGAu0D)wBeziAd5x1eEqkn4-XI962pH6~GR zcc{XRvWdG-1s@gQYg8a4E{>gA4H6>1VJST1hT`s_#&*jt0Cp@E6m0>xA>~P&DmUbh zIovm^mjw%}VM|}&`vJVBn95|y)Y2`V53&)qTiau41h0W3^kkRc-4ZGj%$^gHw9i4P}n#QRsSmcNFJX|1EJ(cV8*3%6sEh8n@8^>mji5Sn# z&dlgFE4S96Tz&26#IePCoooQsq=1V;*p%x|$f8lkMjRgZF`h;9Mqf&~hsU|=b2K)5 zY!d(`J9@#3qan<|#WK=B3SL?Zyvy#4c^uD_($ z5}wpagN#`v%78(43J!f$D3!=p`+bmQFF8;mj(TxA>gW0jaT*1{>7oS3@t{qjmq72n zxcxFUu+pJ-OgvF)@i$BH2v$ar-Q{U7;A&|0KmzCsH3_jEmp-pRtdX7hrb5yo^$)*#; zFQ6Diet_Umu5D!+;9P)GfR;k96Di!MzT*=lydzZGn*j#GO&~P1Q;v)6tHpES{6n|)) zc$n!<^Q?`o9WMZ4NP8$`DHPHrpS7|{v3%&j0vnS-99Hl#te1}wEAI9YiS2S%v*_Xx z`N+5`)+FAgd{R=Y`>|}9iRvM0o3SX}Uj7LVA|>cK78uU;@?~P%&DW{HiR;g) z!prZ~&+`yT{jBHt>v-V>;5)5G)~({sJE!Lf8VJ-kckbMyi^n$UkqFC9Hy#n=k(H-c dDpwekuM}-AMAeAe?8`n~2Sw(jrxH5c{{ym?{ow!r literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Gaussian_Output.doctree b/.doctrees/docs/FileFormats/Gaussian_Output.doctree new file mode 100644 index 0000000000000000000000000000000000000000..84d71239d3281126ad4c5f1df3f6c45f89c926b6 GIT binary patch literal 4796 zcmbVQTW=gm6?S5e?eS$|I~T$x-V9kbI9X=Kkbsg!2rY{O$ik6Ut4KUVt(xwduClwk zdaJ5q8({?_UsZL_w1*^j+~3$vt2Y!{Vm z#VjN|qvhTOvzQZTpi4Gy+QC?5j23H6>41rp4rGyKR1S`WJRFFeWLi1;q{fTh{{HJ9{XKTu9k~S+zBxy_#UwK7f+lC%L_M<@MX0B2JF{!`DBuwf577wU?c>SB2XsNH{Q8 zd-mj5ZL`r}2)L%{3%S-Ru2_m9{~r#(Ytb__rp(1&rC!^tSIZTAK8qVn>_^oVT4t{{ z)cA>-fvg{c>3G()JO`7S#q<%FGH)q_!BBE%uEq(?8}}+_Q#g7;yF-yhs%t@d&)?p+ z>#JqIcFMHPGEH+v6ju#7)#R?Z{xWfu{yR9)?_dAge+%~C%+j)k^9q=MHH-Nd-X!#u zzMX)HPtayDpN{QNg)n)Zz>exMpfU8eJFQ9V?_(egCqVee>j2?zvlOyG`0Fet3xvNw zi(l3!GB@vihbuCyt{j)&MdIL+;^J3Urmh|+c`37J{ar1W{kzii`pZ@{fbgHs284gj z(y|7^DzyFQEM^M?nB=np;nny=$!QoL5SofIO0UsclS z!_H6KW^ciKo*w5Y0s_=A6qQLxqhNRvxVq)EJh*jXZjP-f^SKvtq3}7ynZeN1xz?cG zcU;=Ax6BnSNv0BFlTVOK5lgCk0oKw&!vcGAW~Jt#5r&1$KufO;S05Wc6Z;jV~T2vXdz1sB7(9| zlQhR*)o+LdmK|caQVk24V6?797}#>q&SK*hPAE@Gvo#Vz+d88$iQ;eFmRnho2FJF% zu;pOKW~4j_MQTf51(7#Ag(lQdf+JLXL0yz$$7(@UrNRu7=0fTqq0cGIchRgcl8lEf zvq_IRtfq-BRL#^ft%web7~6G@h|FL$Z~*!#C~cTOq*kf&6Vu@tYUTjA5D~aa(=PO= z_pqlpe&0Ml8Bi&O3>e9xgi2W49yQdcjlHECQd&+*X||_krbHa<1AeCC=G2toKb2$nAjuFkm`OuvuG^A-pKktlV2R+rVTRjNNk_^#YY!gq)cTb&_dv z955cU1P}1LkO&L?HI))L+D8TaTES44-PjL}l z!F3qWl<*`#n{5NFJN9PP^8u{M$cMEvGf%VUC5kAs?86EC7f|F`gn9$O^R2Z5&L$28 zXleA`2;q@!gHI9g&QX1<3^JsR#)C!cLg=z>%0Sz+MwD5ylb*KYbIta_oACLA8}@b0 zzAoccn6_oqCpk1g!{=B(ahzw4>#Sf~wh`QBcid9^vFq5=!mKy%+MRVhEP^aLs*>IXvtY3SPyPP><0m%r_^(EYg!P9PR1pV%^zzK=*cJ}vt2_&nBC>83 T+s{5LkR(lL zRX%Ec_SuyM{f|7)Qx?Sged7CZ;!|G8Wk2!qh{mG$w7B)_;%TuhI~jS*lRWciAs4{m zu^{v_8W#`oab59?Amsg0KwFS(OzZ8eC9n1Sj{AL*a~_b`{aNoG5m~VBz7wapc)egt z4-2_M1ZcxtKnHc^V&HSgmrGtqI0q5GTQP~uuVp_^>&1|Gdl?-W9{dRWLS7!1$Mv4{ zB7IyhP{$RyToPogHWzF~o(qGR7I)9cc1mE8DA=OxxRndAYFo>r0ZSq}$nrR*+2C=K z?G2KY#zQisVSgM5mJj=xK>8g}+FyMFf^YuRQ zQbu^dzxwgEyz)HZMGb<(`9bhInDg6NHh;`+XrL~G`B$@;e`y>45O}SyoygbYSh@ zW-%)uz$K>z!pZ#aHlV1JSMvb5mLXO4Ozz+XvB}raotoZA#;-ujW-?Y;@PuUC{UAfm zo6g2l)G87ui)R)V=D!0JhRH&;Lx)@!>fEdDzN~Gh2$gPc&v|o?9-tok{B4b;ZB~U1 zB5BXyOC{93Dsm<-L5n$pXL1#M(6A%VmkAqho1?EIJa1N}6hQWFl4@`DE8Az4QQ7fn z7(}>=tdM6MRaPgjsohSg(#a@7NKY z9(G1a=IDo1nd_?%pS-KoQ?;uK<(hO`zA}%@Iev} zLcH|P$^J&VpKMkdD`1~8<9B)^=gkqGhQ~p8R6}@FL-+~Kn+L*=w4IY4{$t}zwi{;w zt#(->^;u=iX^=X3OPy6i)f|1Y>l9SER&h2|Q_a_?LH!;5c2rnZ&T9a+!f6HFW2(|? zr`bMLrzU?=E;4VmQ;2Cm{BtGXR1p8e9DcG8-+*6#KL@{pxbf@B_jD}8Pu^l{nTj@> z_K%da?qgMKj;Uwn!+Zq|6{J>UTW&q4@$2aps9;;vR?TgB-SRrNNi?~w>X+&^(zP6} zX(MT~;ZZeq(Ojizc;wgUK60mU(T!5{l^*ro;eo5W&ZouXf9mGfxV(HU7uwgS&=U+z z%dFP++^R8UFUyM}BQXz&>Y&^-OU4=Hrj2fiM3At!yC7FA5B0IkRiAc7u6uc=+FrM8 za(CsLrRc_ZS1xlZ1Ri&o3~W}N{wPagL1VPp?e|HTqbIkG6xtr$8x*_j)~@V~DSBlh zlB~eOCur^kiBc?9&4K8`;yo-^%4ME~San6>xvHsGUvY2?8fFKDyf8`<5hsE+KB9H+ zswO$kBX=J`AE{=3UA0xI>m`vIWN?W5x}ngJYKr?9{km&M3pladP|h0QhK#03Cftxd zqHy0?xxz?TEn9Mv?g#LiAR_0MsU=%J9p+;kxBi%9F}wy2yx1a8I&i;7l~Khrxvnwf z0vCx7u0nQlG3tG%#{>MncJ!l5vn4dQtttA)ID97HO;+Bp+A4iWwTN$}9oVO%-22PCNz>^-Hg~xA9H6 zp3<~V8p@b8MHv$4u7X2eVM3(*^}zsS-cJt%OX7Z#jR%Fiq&T$#;B+y#!1V}R$1>=> zS8snC{#?&S-jsMnsm0&4;t{Nvn&GNx)(@x{=`)Z3224aD4(kXqL=^dg6?d2A7BCsP zRd`le&*iB?$f4Ze2eBagE(^vi#2@f`E=&~k*LXw_XdmW?YYs=fpx0*UhKWZ?*KT~7-=5LOCGrPTpE!ebTKqliB_w3O5vo-lIO3vgzs_uNrzL@-5t^SFB<+7ug#X$-yFw)cP&ouWT`|?mT9_H+V zn)Yq6n?}M-_62)GZ`Wl#m)+*gYt6e}0Q@Lhpq`P)EOaA{gr`2{5s>BmcQl_Cnc>Lp=_TY?QJK}+8)>7T+& zpA-)eN*Hk=C^3-c0FODa%0f*tn#Xm1z!8s@T2)Isc4So-WoAQolE3u>TuG*Y=opwd zH|%3&YNCC^3Alr*=u}bX_vGz9 t|1*I6Xou;l1NhL$ldF|aH27D8*b8%C1>0DS^jCaUCCY@VUQigK{~vc=71aO$ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Gaussian_cube_format.doctree b/.doctrees/docs/FileFormats/Gaussian_cube_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fcd58934881a2af5ffe349825a75fbb3fba3faea GIT binary patch literal 5014 zcmcIoTW=&s72bPc+Gldg?K<45DJkN&?;UjLV04|j@j`(u+n(DPM)yLN^xPSJFE`-bu2P}@WJm$KxOK~2RDbGyxNp<_9>PfX_dx{;-T{ zLME}|S@j4n`^0Z#q6dwDu3>7zXWK=`zA_jD;dfc7wPaZsl_MUGbCoi4uM&%oD!a^# zQF2roC_o2Zma&F#yBH-*YY_3=$yi!HEyZOqTZ~w=ulTs;!Gnw|dwtTJwL@p^)Mr(t zT{LV$J1enl7ZREA>cK_ZEf{PumAGts;naAny58o!p~zD{RArWNH9W}G{xC0iHew^5 z3?|Zuax{?nnY3EO5MuT4zD)RiXSN=m<&1&SrYc9GXBRb(jLfrX2t-G8$x~Z+*)h^2 zy!FZkURprr2DQ1t78Z9L<+k%Owl4gDA5vh>vEymwVlM*mRq?vGENRK*ZTy%_-36@$cRS|0ifVJgrGo|MUg9`1I1Y^vq`|RI5<$!(DRAV>N|nVqNH?O zX_**VBz&2isPQ7mGXx(X8`O@v`~N;==DZKi?>z69rIugb@_z9s-}VH%`aYZzJS-?3 zw72Udai+%P{Av(X;}%r=4yr4;J19&fQqkAHcJi&a7(!`ydM4Lu!!=QPS$vKIiP)_f zTCeP-osq})TC*K62LxJ7;#mW8Vy?}G8CK6p%U^=&7xVD?b1;20kLhP%`f2ScTo#d% z&Rs1H?ecb(2ctZTb(5}B%!}VS<$HFCr-fiz>ejyIpiCw4Md}pXUkm z-{%=bf&SY(CJOXlVa0E}M)n2;*4LaS!pqAwWT!E<*UsRodH(1niGMe?ZG28(E9U=s zv6%mBo$ZIp zg4(w&O4v+;ExUPE6GRP>YlRK+^epD*z0mG)_+qJ8n;=06LyQI0H`xp)K z#g-@7mskqj6*=R}~g$Zn!oqEwEUr55#?w z?PIyzEK8MOwPx}tr1qBH;@}Q6R7aJ)I?i*G<%YLjqK{pprZFqi@Q@ln>TLUTffQks zr_|4Di2PDb;R$z?@Bqzg=$mYu*lcLJZn!~lYE8m~Kjv`XCA%zGGF^7;20xVWnqj8Y zo~dIyF&~u^9M?Z!DudU+0eGjN^x*!8lTp<(+m{)96ap7Hbu^Xjm1ey2jU6rV{OZY< zAy+C_p+Ikxa0QQ(s*$PemDKW{O(szzBsknu9FSG znigLbBHsk8%}8Ry|)N|0JdrsbN4 z?VS!K$kE4A%Nn9r!dPlHO308#%SE3WNV8QKqmc|Q&meTIVGF7EbaU8C^n^n+S1uQM zM$%%0d1+4soq=vitQJ?m=z5&W|b%-2Hhz+?90NKLf;z> zLDqxf$cQ`}gex39+dI z$3RaW$!rV^_`-0NN(IX5DL$DJc$3^sA*2~qC155Up>At)1Qi6wWPfaLMBv&FdCFuG z;@bfgTBr6#Gr0n+$+#|S$M!PM9#`mz>{4A$kiUSU%wmb;Fk$_@zyW6iNΗ~4l+ zV;bw9px~XL)}uejkT#w!x|BlrYCu;8Cc#yv?IOLbXm6OV@ zM0t`RF0cWY&f>cb{S)}+Y4tvm2je`_5FcYS;8GtrtvhWp=A6Dh(#Swho!*arq?%2{ zb(f3@{@(Wx2u08fYG4F6eRI04}q1m?_&;ZQ zvYqDUyJ!~(AV`Yu@7{k%*H8UD4CT;&NJ1;I_vc!kU70$>VSS~Z+9|gt^et;Src0rz LpVTnn1JZv1mjGzN literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.doctree b/.doctrees/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2a2ed456102572933ef08da2e1b9a744f4b3f7ba GIT binary patch literal 5490 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 DP?=`> literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Generic_Output_file_format.doctree b/.doctrees/docs/FileFormats/Generic_Output_file_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8c2003f76e8bdc34fc7909a549fca8e616482528 GIT binary patch literal 5532 zcmd5=UvC^q5qDzm+Uq~-KS_>|i^-7Vf@8e9(TN9?;{-n6`9N0eBRL&U(WrN(cYExa z>0!Dju^%iQ4=0_a27xjs0TLhtd<{Sd3HS&IiDx7vg!lyfx_f4J?2EHLc)`-Hx2vnG zyQ+RwUDY2nKK|jg3G=5GMZ$vkuuFVD<~|jurIOCvq^S)m)+XU`h+dPp={-G&aUF~5=kxv zXUb^Yf-A@{B?+r5w!OZ-nMn@N1Re>)Bgdx_mT^ezJ1Hf;}%Sp?4Ek_f8Qq`nPcnX=GcTe-WX@I*V%1jt7d6C*zBt| zToG^IdyfU8^tVT1r%#l+dm<_PzhNQ;nSS{>7bB z+Pzh?J7Om0@>Kl2Y#aa|5M%ESj{#L1e}y?JXE9a)?uBbchu#15hi&7qgK>!RON}hD z5Vh>p5>RETSuY7{{-F-Gy+p^EC>?y7I6CqN7eBJj1;>`%;CtERf;nzBazn&&Jyxp> zxKv|s14*Oja?KZ9!<1*qCpeJ%nwFt9r7m|0^;&A7SdN?lkk^>lFA5iGW~(;T__Y|5 z_kIbcpO16PPr>w)aZEn~)5q3QxWm0PFy^YAP~BKBZUTX$BQX0s_JyNiS>(bI9)E9? zX{i|+C5(tb)Z{Qbc~4zGPh2hM{rTc<|05Lm!#FL=*t-Je-;HDbjWr2<;mz|5Og|W* zO=G^Oc}Cakk4wzkAYeZ$$ACuPBL7zw%JUnJw#|O1b;XmnJ3(Wv`#NXoQ9RE1Lbn z6#?L|zlas%)GZNl75sA-;Mbslc|I*DUd;df;wsj#G^wk;ftuG58|gdULi)%T3qRYsK37O23Z&*ef1e~i`!s7al7}gL1pf5$6qXjM+iUGHF|A>?b zn)%#4j5MT{5NTXcx4zP#1Tp#~5P^m0qU+l`1Bw)mSJyPBIRH3a)Pisis&h31dgs-9Uxq!~>A*W9 zUQ?cve}@6^Ta3 ziCPjzu_T8s3x+Jj2l$-|bpxvAMMMy2-^mcy0*1O`#&+n29L+AscmP@T82Vxlj<@j! zD;pDH^#O|76Z0Np-UEs}a02vjFNg=gK$#d;bgDpFJ;N778oVJVHX8M-$UzRwM1ACK zA&+nbM)9(9qON)1I&f)3g3!g=kxsPc*vrK`1;82(Y+5@}lQe#kqqtHtHk}}T0mUHp zQHKC{_Pxkxw~RvpS`rURfQ_#obdHhmPEqZn56F-|ZSYSA}&o6jxJLs`-6{5>73yf}6c<=uW zUK&?>zmC%JuNnm}Xx3Dtxc@GxDGd_@?KgL~_w*%XUqz7=%O^w>6#IX%^3+^q7K8Y? aAojw{*AX_jfTxRc`y)$I)o$I`` zn-2y3P-t+#4;_D}2>t+{xi7n$MXiB_J7>-XQ*E|h<6Ll=za<334} zTqaa|x17k>W;8ecwLkd9zwrC6qsVhDt%|947oZU{E)qp^{}h|upl`U){n|j=5S7yD zan^EI`u$$?HKQ4iiHJs0WyIX^Z0V_YE5sPZht|M%@U_4b4ZChB7DQ_Z@!iTvR(&le zwwNx4BtB7eRO#S@C*EzOwVR{Ljkj*ekTe|fY{e}Ko>TweqH7lf5g5-FTql}@j8(gd zln$88=s?*#r)uzAs*`~%Xg(xED*7om%ntip{-dliF@RY;xX%T>Uq-A4b1CR6ZM+?_ zj$6_+HeBYDoU;~dhy3hgvt_subY{!#G=_RrkiGr1PzPl~p}+V89f$P)o7ziXJ}c|7 zkJ+{zs?^y{cH_ZfdG8LgNK!=# zHhaCBhldZ5sa}!sBDoeM z;4mtbOcm7?CtF4uBK(63Zl%$o36?eh!gTUt|C%tAHPF!^pJ zp@No@=sAi&)YK_>tPj+M3u#cakjg}YKBGwACAY$em@Hdvi;g+6W{9!6QEItXLWeem zyY6$Ma%2q}ijoYH4$>df5R`xAx;#gYB7j0B(DJTh&FJW}BhB%B{rqM`m69rABu@lY z$auJFY)~$%OwU+pl~%mlo!gl+!G3k!%INe0&C%=UH|9>d%@6>9rWx`h5RiB4g5;?s zDMh*ytS_OtxXX&hQYBGBQA`rJ;lRkTYsWGlAx5NwCjcty{@Am&>k?~ZG!?l^p&zU# zHY=hD{*cvDzyUp#6A=tubYZ+xwFEx5 z0=WR2JOv5`&$#j5ZGPms1udrKA_TJ*BtwF`2WGfy%$P#o84MuS{o>RxnfIki2j1-j z&GG`!j10~2JO0~2)Qn0WVE=%bOu$*k zkRd3P80H@=yIlY>Ls6``IjMJ%E&@W%+@?Ow4H-v_r%d1n@GgqbIoz7g2w3)$1*tU> zb-7$u%ScF!993#}V}@=ORk5l`XHmRnGtbs~A-^ z?aVFE{Fz5{cFR>Q0eJyMo+ljSFi|yXmB87;r2s91Sq$|%31iU zJ5UHySLhdLylX_erLbAa_R(c_*<<#|x=xUq(*oBGlfsi%?D3gp+u?f`!@(nV%ewX1 zCoHe99&-R8Tnc_FNnmQDS6zNqQt4st!;@!283x7*6{YHxIpIXRb55<(cr6cYpRw6zBMUG6_uvGkAg~KFss;)whm&$L zE5>lv)u$T7YNV5%*9?5@^J?gxtZ%zdzd_1XKvb`K@7`WBUDQMFUXSY@dRlKno1|Y) zN0=!7(r=jU?n3F${~C#0t8QTz-C}ruQ19F0`wv4Oss1fMX=^6yFcbU%V{Ublf)cc= ZJdcG<0!h*^)UPC=y4Qs;%sd#U{{}XS@-hGb literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/HyperChem_HIN_format.doctree b/.doctrees/docs/FileFormats/HyperChem_HIN_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..55aaac171f97d131f03944836fc7f6b76eff3462 GIT binary patch literal 3046 zcmai0OKTiQ5VkGtN~_1}VcD@AE8f_NBN4RgLk_`UurU}Lkqv~9n`wGxdbc~8nV$5+ zS{)3@!C*n(-1%oA5d3HI^}MuFlw@IHy1Kfmy6XF?>(|cjA6KuGKewR^F7nxsCP^+6 zroCHEWNb5*8~?%Y|K{KNJ=at8SWBy7=G_% X9_V!3~f&3@1~BGtp%K-W+;WoO5E z$K4(d2jt~R!PIlkGV=1(m`tR~sCn%9(rfQls4+@J)*yi3a6u#*#@$k!QmrAxcPFP= z^|hSX;%pJo_(-uyrGpQVc(=oYuNb}#aJz%bm$z=o&}lg7`HEXiMb7-;Ro5*j?qWP& za6Qsq9;8X7v;6} z=(1!Cl{Vf+yyuoQi;a+ZTLRwU-H<8lb&N16o7-`BT4Mubc2M1Ru!o!Pm+8f!#UI%$ zROCN(-}$oKe89ivpYsKNf6VWVZAAGdYQneSeFy)W_}{|+&TDV^XM7*(4=Z*4fZsb@ zoIkMVZe3Q1P!!L1Sz~X{-D%YZ*gJoPxoQ$@*2wW}K8i08#ln0P?lzkhNFo6u7|I*7 zghVH#EdE>1pYb*AKDkr{_<_PM6l}!)_3AA+_yf0N6wP%?L&Zp;6BKy+r6-J z!2~Z{zcP9jKy&o&`Hc%F-DbD|fTlU}lj1_&t*11fS~_J&cY^gbbY*v4u~@2vBn(|D zfg1sgj9oXD`2=@FIz$4XqF2s5@47ywIGQoVh_wfFEgglk4Gbj^{_ZGT;@ZmrX%le1kEx4XcEIRl*gbP%a9*@`RE(u zv#%!c1@l32X8vJg9!#YHuSZM`1v8V<2iQO2CQIS0XJ`ZpC5HRMWw#4JW@w5vH`{(k zbP*78>NfRBZs-iXbIMcv0p7(_2HdadjDlsqSddyHQP<0LwIr#GX`R~Lm{Y`q!dGNN zmdh04^pP##BFq5gvs5>MQ=mu2BA);QO;^|seF8o8f}Y3%cvDF$Du!42$OAK3gpRGv z2}0lu)5NK}5ku>Uu#Ae7U|tDbwhVi#ek}pkbW-)SQ@6nKHy*E-TdsNu$O|ZnJP{y= zA=Qjh0%r?B0a^w_4ElExMv1rRcITwkxB)S&P1;2_PzaMscrWlGu2Jol!e%Ag!z;7P zpYkWx^@7x3CMll<{_H(}dTRN0cvg4udOqO~ty`ZjVHv`DEC7TM6#P_@z|=;s3VvQv z>0wqv$+JkNEhqcdFU@F{W(7aHA7A_ zuDDM9s$F%90TN*2tMQBP!_!iY*ywi6Y#PRdKVZzQwpl50yejfIwMpR3G|a{;Noe?W LZwzA)2GYL)a7eOO literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Image_Formats.doctree b/.doctrees/docs/FileFormats/Image_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c5a1efae064f2c230d3c8b162f666db06fad41a9 GIT binary patch literal 3486 zcmaJ^U2h||74@zyS&}XJBfDwZ##v>PY`h381wkKz6a`wO*mk>!5^REfTMVcfO5~a| zoRFNg^$?(aNDu>jTlTp>wLK(f##aV4|K_RaXBGb zR>+KMXM34UtDF|by>XBK<$iFdwy(&AmX%7Wvs>^;85fzNg?ov~k@q)T=t&)*YlvFX z>(^Pw4knXv@-!z)`h{b=FP$9_V-%lP1}pj%wt1!z&F-dxXbmHtI|a$(Q!lH^>%p9) z=ZY?(4<2|1U+#mu%I+Gn^sbH#?2h0CbactZ6lXiO;b(>wKQzmmdRaH?? zHNBAPd@4&?%*mXJ$&wpZ%_m&`qAiA)BCMW1;etMqDknxy!*-K;G*Q~PYR>w0SJTvR zS+vz<9oF?VImKkha3kp2lpTgJ<3$V_iU+@)@93p3@aFW7E*uyevrpLjY@0otu?Mqi zPS_!e%#L3=b`QU|@p}iq-@SAddyhSa`=jX2K41@??Swpgsmx1R71>%gF;TXKD$CR; zx}Ir0_x~1RWBcB(mk5WCGg3Sp`RUA_+;acRw_iSen#5ALpWMv8f6L{Y+24}S{+eX8 z1U@@~hOCjg(%61vgGLY=b4(mv*p;uJ-oGO~RXIpj< zK%-?LR`4BwtJih(=lf^&Fq~@_=lrKlFxZ3oD9OD{{1BmuXv$0DU!GG8Tu)jv2^vVCoT^NTJ} z0yvz&VLinroo3ON_3Q(C&nQx8L44_xQpu&FIx14fNJB)dZ|xJxUHOvUv7@w7UQ?1< zL1uQpu>{qb*`B7x@L~x`Jp!ttL@tyBnm{VseL+M8T(lzFm6ZV+-Hbh++5VD3h=`F2 z`0Zx|I%!B=Vz3t%Ot8v1hJ$)oDS^=thnaYN^s`vF|UuG_a1O{L1bf&nI2#_QqCc2ij_ut$`GX8Il5tJu!f&L`a<}0HIJS??XfPp=3_*vrTha)lecL}_5lvMf zA}xHh4ClQEHN!c@A@F(R$pzRHOQ2BjoE!Jm;m3AV((+m^{ATvOWloU0XNG-;8B^*n zrc;>pq+A&$i-}arsk8UJXGj2^iJ>`;$KW`6u%CVO=^s$fky@l1;l1TL{G%p3m`Xfe z VlY8GJ)uz$)-F0feNkU1!nLHD2a>QK$?bf*iW^grS;O`14Fp5U-%HB`mb)L|iaFL+Z z^eP+DKB~JRfK@D_rd`=>TD*2>TWl|C3CIg5@*?9Phe=|48QQ-iBn4<0h%59PSFP7> zdwjzh8%LNCZP5<8onEe_6t~O?lT1{$@2zH4B3<7@l|M6iRk36L ze1f(~ut$|0t{-7YVVH6N!6$`vqQx_{@r%i?TcRJjUL1Kom!d^QaJ{!-Y`yz8BKDhA z!%N3E;zMzj@e+T3Ggdu=MglsLqU8fvoZU;M5GXhHfQw}J%i8`1Rrt|82Pe=|gI(y* zH6$!9*viSe8SUywuQZ6&Slc_VX?@|+M>w)X3&L*CeriAYI}Sj3e2wGjj~@o`JsfjA z#=SOfsgq5Ro^OKL_|@Rf)|USD=J!<(K5*^e-)3vH-Ur!EeV^U2J01++;nUfZul=PG rzl)%A&F2Ohgjd@!p51Fp5zttlI^NEl^)N`3GDDh z5c-lw*>fx|(0(0+s$CG6(oFXG__(N<`F7iJA4aR<;W{6#WMcYxW*SUu8FW*POX-q{ zz*it>roE6Ug-Lv`MQo6NoAJ|RJm@lSTk>AM2VVjoTm=#M+UCP7HPf2)X?G?XW-<&S zo~@rWQwamlIujG7?v8}SXsVR$haC|Qct@sD#ARnUmfM{;;Zc`$dD!j;TBO}}5WjLR zC(!{})maNdz81>?)2dSn-IhvcX;;+EwBnu);%KB^Q4>?7ktP;vI?y4nESYm91*cgG zxNH@O-IGuG9_jhjn?A|x>j_7ELwr?Ch$|c7@;0iKw!+eC^tOM=&M0??|3VuAp8_j(Skdc_x81G zCBsun%Q)&+h=^~K=;DTX=UAk&u~4hW7wSHQy7#Xnzbmd-iKj{pK=NhQbf@1stz+qwIpB2QSTtC+xpYQMx zNb?;XI|H`Ooj^OBsUeLME_(n|W0!Xw#hLU3R}N+zd>I5D3mqsm^>hmTw{u0`_^)Ai z{G88@|D5GZ)nD~eAFrJ}apHcVT6!xyg$k5bgvpzCpta(Wl+*ON40fRPo{R?;uh<)r zb?yXu*a+E>ODBlNNM62MQ}WGK!K zmkQQ1zNNt;-y$u-GvmFzZIuqj_qLtYIMR|ST_Hk8Mm{6A!^R*ExtE4~Y^IR93wQz4 zPaZw|-uq7oM8wSI>T2`eyJnmH(^s3#hc>v-~Q^;lLNIyLS=6I6@P` zYZ-FkaT?>ND6M*?e4Gl&s7mr^-yXtVe0a4R=HyC+!U3lEk

Fy!ndd)y;eu!0EBj z?S`?pU6nz`Hg-C#m6CI(727b@un@g>^GRp*)`Q!t;p2{XvvsR^d-+aB+??3(MyQ|+>fAqnF55NDc_2GlHwYB??fAHjfYopZFf8y%gn?W}()e&LV)b|GA zib@!zQ!_Sf${lW_?@x;ubgrV`aSYmhDiC<^pUhSvy>XawQf19{v(T&4+FRe;bjS&K z2r!z0$!L3=P;gca92+|w3NB1LO~tvh0wk_%+NW{z`OW3AA24sdo`DLUKC2><5}pDc zRbVV`9%Q(Dwb_ao6_UTMk~|vZzk=#Mvmk%>-_=6p;)AlBFmp%;eJI@BgQltioqL7q za-r&GDu`?jIyP?cd6D(ZRdrpt_fM}ExM?QsUJ?dgptF6uyvt;iy|m|wO2Eun zn=c?`k^Z{^=@&=Ob!xfllnyBVcut8(+0+%U|Fcoz_TFn937N`qJjoZJFmecgJ<1`7 zUx;5)?p<2{rHUY9>;KC}tjU&PtGlSbVEoP~tnZ>W!5CS(4iM*=%)^zl8-$_5!d*60 zP9LcbnSH~0jxs~IZaslS0xA{KPUS=~k_nmeyR;xV($S&A_mDv0HVkn;vipdSQwlKS zfnf&fe$calOy}1t2i2W340wpdwscwL#iLa9e@?D(PW!jlTk&CIEhFpY%G;yB!)qK! z3NDo%m^r%=QMVOG;gG5UxbQ-wBgAagkhT?m=IC=Hj<=@i$gzvXlIgDrXKMl{k8(Bu z_|{3HexSZYJvuh-ra4oVxUKR_CYE?vr#8*Ga=Ka!S1NyAEoH$Ks$MHhUdoz_@Ki|e z$N84;c89KQ6uii`9O7L^7g`K2zzjB2SuR;C?;Z6L#M|aPGV@4nBX3+{1kgQ}O~Q&4QOo>QuNzUt+_|l`}SuY?v9vHPsGi*PNkFhHbx~ ziitGBQ)Z@~u`os7qzpJ_Do%Bh>TE+SZoDDEjhx$EELLp!+1QB%PA`g!##3S;hy4QNQr2>4vba2t-QpVDS zGxS3)p>bl>)0tV!HC>@nvs5y(bZF%eiLJ+gpION1j(I3gUplyO=&(6WG5~8zKt-X= zEayWO^;6d8(72CyeG2_Lb53$EmcHwAN@Q?N0GMo;DHOgvhzX4ZKCp_8+FmB6%mPbw z?2f0*DeAP%`{^KYM-YT!?L+|dNffF?aM8|KaMSaTrxL|eKX#D;W7la|TCBKRJ!w$_ z8{G+1kVACQ^#jGaAqi4&IbE6t%xn(AC>VpaGZ39Gwz)k7N!uZOgTCPs#StFk2ya8w zd_4Iq8k?gbAbN)E3&^3C4y<5+oaWK#ubYL0Cu65U!XOV!fOqgt#$nzRS|@6y)4{ZA zCqpgbs2$6GCo>mlr)2;;UCjr09{6-5{yb^DbK?&5xgdMqA@VdcCV#ag4`XEn*=;V{ z0oOfy2OL00=s}3f>Y8<7MZOl<`ixluCI?8m3iG5)%~qLiUVH4D(`tx@-JUCgz6kLF zekVif&zU(jKrZ3_D1}`sDC(RY=R+4&9xGJ4H0o&N_699m72@=Enjj&h?r>h@=6+xw z=!v}`>H!0#V>nB$0&extzF=#g^h762DyLrxPfpZ2-0a_aV6|nKC z;rs#)@4#%{l*Tlu^+p5Atf`+(Ap`BrIi}1sE#`C0Jk~62U53qXUBaK#)M=SAYa1f$ zhL?7IKNV-GVY?)*+O6VhYUZntYMGix{+&k}+?>yl?Uws;ajG)}I6Dgv47zbR!ik+c ze`s>FyMBOTy}Z>PI(vXV+_2Q-_b(i#RjeTT!LxXAN`3>CgcpbCQrQX>WzA|a|0#6% zN%jG(1lcX@4ZjB{;3B_p$7$Hm;O;F;tdYkl!w9H6%Wts^PlnT{pHLb;dHljTQZ|I&F#ZA1&5Wb~ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/InChI_format.doctree b/.doctrees/docs/FileFormats/InChI_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cf53ce4c640fa7df25fbff0c9e037738a134b33b GIT binary patch literal 25284 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/JSON_Formats.doctree b/.doctrees/docs/FileFormats/JSON_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..65371695002b427ea794d270841abf77c225c0ec GIT binary patch literal 3344 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Jaguar_output_format.doctree b/.doctrees/docs/FileFormats/Jaguar_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a777df4556b1fed95fc6b21c87c7cfb3fa66eec5 GIT binary patch literal 4731 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MCDL_format.doctree b/.doctrees/docs/FileFormats/MCDL_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1e8478148dd6eea9cb2a1fdf2b70bb7c21c86a09 GIT binary patch literal 6273 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 OrnHu204n(~J^v3rGU|^2 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MDFF_format.doctree b/.doctrees/docs/FileFormats/MDFF_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c15800e733cf5b9a20c8ae243af0dd22f77a6681 GIT binary patch literal 5990 zcmdT|UymF|5x38`d$;%h&UO-Tj*J~*&KK|QMSz5y5QKtGL{{#s*a;8F8uiZfZuj2& zW4gz82eFb!G5Db0GJFIe2nl%OV;~{%z$ZX_3x3rzvpcu8?l!;+mi9bdU0vN(^{eWt z{-p8iAHR6P{xhp85i&aJFyD`2pR3%=`>~gWJkt5+`K?d$$N83NrR-3}S?clJTmXkB zWZWHnh|MuT7cjB*ZC{ zbGF{u-+QpTd)p!6ZRg(p{oUPL)~HxJ`+y&j`KMX(B)2XWj(A;M7nj71J@Lw3)?;D~ z4iOsNS^RfExOt1d; zq5gNzv(cO4hP6$zvK4IfRuNAKh%cT|9;kFu&U{D5PTbQBMv_tCZD7Rdr*UXa;&?3Z zvVakCRA+&7Ptq7>51m691ddLRNkkzElke{D-S6Dne_*Za$i6i_MTHaF?*$npnJ#Bl z>6ADvebOoHzw>`|;IT_ToZh9Cw^}uCy;gavipuSZV3vQBO3j`9#CoB!(FApTkiql^ zq0sVcp|xs5YcaMvxq(FTsM2yhU98m@TpTTYF4t1YHAv$ud4>a-qggQ2rp!$Hu!_Ou zaydd#o({#QWhfGJp*GYo>YOz4OECTXyg2#{OrM^|^f8z|DlCON%uA&;S6z+G?fY@6 z9j4<@Imj;bAw4I`!X8h{EHesE@q4RJ%gpmI5ll%{6ID*`m}_T9tRJ|1sIZY5xs6Wi`d|W}WJ*fWrDYv;9QNWsQL=v|{o)q& z;xJ@w#p&YJAQge>9Cl+zCCuY$64=AJix)0fZ2zg+cud+c_fI4Ge{zIzBn+2m^Qnsr z1jDd}73Z0TjHkbvpWcH(~*5;JXC0Dcq$!*5oG-$6!|qZk-|8}uo{VED!q zngMyk&J=tA-|%(ISHs`c?cz>5RWCe)pLwt(Z2qh)_$V*i8@!G&vwTPuL%T?0DrZ$$T~0XTiCUfgb%?6h*(e6a zXV@~EwRWfN#gRtyV@XM@`u$vN@@khYbDbutDtxP8zU>h4wqx0EmF-j6q2;_@@Y6vq zjcVB=yh$m%T>`bHgv36kl(#v7AhX@W0+B&a?z}KSxW7mTQ+xlW~rjshH%f! zE3P%l8FaquqfQppcBFZPma_RF3o`VdRndhKDbpyJ^F48E&$I>{JtAs}G{?Y45>}dp z2?mSBhN#%00}L0+VU`9ME$i5Gsez?gY}~*J)8pK1^y64ZvF5c&w5-e2D56qvkEkD@ zCU%7~ed1F7$5I86*9uB`TPXJseX3iv(b%zEQ1;a@L&_5rL~g(zahPw$EC?2ih7GgM zk0h+7na)(j)G!U7_p$-DTRCKD1gn7qokj>s3+DGYDV0ApE4Ha{fs5FuQqiubNpb-q{uBA>-dOA0&g{5m!8dgefHYa8#L=67|_?eYL?)VJV>X%PX zOe{8Qqyw;~1WXh_r`#+DEE;5Nz+rJ8;~6}Cn9C{m;?#G2j>iEX+epA<&omKReW(eG zNFP|m%fwMGnr4M%I(Ek-Gea*H%YGIn?g)Y~tR+aGFO6700#_}?f}7kwCMAkze(WBF z1gSMdTCBKRUujW-7=0v_EFik-`cko8K#G*7oU1|uVYUQi6oSDvmk_#KvbnZ1r`MPl z=nI=Do>J=r-;gvPE?>kO(P#*Wu2XygIne+>w1rgu-r6_JO2U(I(jaA)h|*&?I|YY% zNobv@JKZkGs*@aR5l5Xk9dvVZl{oDI!0DpNfqOLEF%NqCwViLlo-1kJn-EWwvG|*n zcmyjW$R6;tBf0L|J&*vpLWco1YiZU)6!}`@cjwI}Fc~5>mf<MgO#lbvHAer z+KGK=v#&yB9ykGdVvimP#))BrQU%iL1fL8Eyg|&0Xr#xmgB+Ma^W!6gk8uRS@nm;m zu6p1)aCyjN;Nnp*MWVIGUN2v(0M?*iq_q=siARre^b2ObNGFJ2Kv71%L~v-gcnGxG zt>aLDmc~mVVB^!n-D4!YQ&hS=EE&@Jqd}8G2=9V)W#GMMi77KjlLc+7xNA0tzd+0n zKchb%)1QyxS8w?Ml-2eap literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MDL_MOL_format.doctree b/.doctrees/docs/FileFormats/MDL_MOL_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9f33712dc1890c6d302b166b36955f30297eb0c0 GIT binary patch literal 16458 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 E0SH>ybpQYW literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MDL_RXN_format.doctree b/.doctrees/docs/FileFormats/MDL_RXN_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cc88577f150266c8eed3134a56bdde758745a89d GIT binary patch literal 6915 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 GZvGGW2iIi) literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MOPAC_Cartesian_format.doctree b/.doctrees/docs/FileFormats/MOPAC_Cartesian_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2ea5c86a5818adeb819bb8fde53df87ea619e0db GIT binary patch literal 6922 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 T_Sc~0(3XQTbJ|u3Kg9eG!ayS} literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MOPAC_Output_format.doctree b/.doctrees/docs/FileFormats/MOPAC_Output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4f92fe50df564ef3e89728ec85732d5b069e904d GIT binary patch literal 4749 zcmb7ITW=gm6?S6J*yGE@b}pDroJ_K8Z~~sm0}rqWp%4^-taZ?86^VzaRnuKFRd#n* zZ&h_{Ba8rPrL|OVTL=(B0)7HQ;u#4EA^rvr2=OEMs;YZtJnLk|> zX>MO(v+ejbPgS?Nps9%*((!TDFk9VjC;H&UkDfk@UX;2hbu;I7GGJjOthA~ zUuwMX-kax%!rf*uPKi<=;(H?}S@^b;l*M?_C-I@AgTR9?JhA3_CJGYo3jfq@c*>S$ zQInxNXxXw^NO?}}-WAg<2sF`_&6`#bUa6^%6)`N;mP!J5uaJJ@V!u2VX( zW$ydSI>D};ploL+6XNR~m;p9;5kN;&XUNAOszmRX-*h`6TN zg$0TjuI+rC!UdRmT)A1~~ zyatn+#q=?l@?a^XyI68>t_cavJCCbaQV>0*oxaEu)o~zw9K83v+O_O=UYV9zqFKR+ z;%efaYV(QNdee24{yUK9PnUQ5AHe?mSz6X`UIz1TXEFaen1sGHwo@?iG1?sFvymOD z^d!#{*ipR(H2T4Ir!|TFa|DF`7zqEm3=sY?OCbk@zt3WFK=>Q9_)RU5x%2q@T#aSq&ASN{*ziDuLb!SwvYfS!KS0izcfK^4?g29dq}B;=hY> zh>xp=mTlAel^t{6Gj~8oQ*v?fth$LP@KlY9rPC74k7HwR!F-t>7pUS98WM{3BBn{y zKZ$(vacU3lU74F>tIB-oLN0VLr;rj1lZw?c*YA${6ZWpTp(V*xN?e7B3Mqz?s?bR_ zw9q8Advj*F=Aj9er7PE0Ogk>6>wcoD*V#9#HO2Qw`({Z|tq}@n3^zuN-av|6(;S^v z^Cd}3v}JXnL0RyowEOJQzG)39S|*}}v{)nr{hcORfyGLA5LGHa#B#Y>mNLa^O^Y~k zeVyCI!wpC%PpsJ-2%%jwF|mmbZq4;ed6`AWuK962UE7tNB8o-k`dEc4ZwCrZsi#Co zXxpN?yTpstfvVkv86+)))KN-bQ<(3nS!N_1EgNQo9&=bt6J4sBsbLxk?UzG5*FGXL zht?3-pR@&VL@MR)?NqG3O_tZCY$)FK*_%vIOOuO($x zL?Z~ou%5tyKADr$U3kq?Jh+|v$D~5hG7-^n<{-6>NE3=ilP5h&5TmcT;sK)9q9ham zC{jteSce9}Y!%8V1cQ$=T)I}VMFX_5JnORpSxhBUE<3pC>1N<(e!a;vkWdwotaf!HA zFw}Lw4$CMNF{wF&rP_4OaFh#OXtHsAql-^}|t>2hM;V5%YWi4AhBX)1?Ze z)hRxnIq;@}glKfL;h_a)vOe;*(kBpsQB1UF=4K48!-!^trx9jmmuS7%8`aPTu%?5M z*3Qg4&0kw|N@gjf6T~l|$nykE1%MakWDlGT2nA?q4AMy9iJNCnk?_t@!^{gZZX1ji zO&3BKmtD!gY_v+0S#+C$wi9a2_Q74m{K0Ma=a&0(9e+yGa*X<hAvaZD(h;hdBac2E?NaAHxqbYjg)EYcKyfet7-i_a?hXRysD z_Co{@MpA?!euYqgOL%aUcP7c0j@s%(Ap&das6N(%7#q(JzIVn<`>h|q5z;}g6M)fq za6u>Yz|GC5ftZ}@&Z0YNpAY^D_sr^`pR&%uU!42jGIE(lRrs!$1&0qr>ks#zzi`zj v{0xL_SpR~8PU7It;Xbo6vWJKI3eV%TOk8LU-ETO{iK_`!`gHvgemVI+?J5Tl literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MPQC_output_format.doctree b/.doctrees/docs/FileFormats/MPQC_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fa144a970d8a049b1bcee46d8deed03096ceda32 GIT binary patch literal 4713 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/MSI_BGF_format.doctree b/.doctrees/docs/FileFormats/MSI_BGF_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..255193d31a191c358f3e6b181913eb4b7792bfb5 GIT binary patch literal 2992 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Maestro_format.doctree b/.doctrees/docs/FileFormats/Maestro_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4f947b2fb938d1ab66897e17e736e4d6e5c498ca GIT binary patch literal 3254 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 N@})t7vO>I;^&g%ruFL=c literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Molden_format.doctree b/.doctrees/docs/FileFormats/Molden_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..91384a76fc290f1c49c68ba2c169ec8b5b5fae3f GIT binary patch literal 4440 zcmb7I?`tGU8O|n|$xJetO|rY^sh7Jk=dIb*%q*xNci6h;xePTwx8L1zq1#1-*hE;szfPcYRwW5G2>|>X>O0P z*>`x&Q#Gs@v^9}aIzP@@W@k7YM2|$8&^($5nGyZIWoyUQtP`yzAD0?8yPH;cqQKRx z#VJt=M0{`MBn#gy$RO%wAwK2nr7Noxa~11g-tw z$vtmb9A5nyJ#$`or8A#e?`k$+-(+87D{SwGy>nEK3EP5O*v_$KxAA!cpEvRO%CRlk z+w30TcLSWg%icL$g+}j%n3-#Fzb2U8V@i_2hlNvD1t}j~BhJP6{_BbHK|_qTH|&P+ z7ey(Dsq0Xli`6w-4M4;-&0dJ=Rj8>HW$_#WW^M;SW6LZbjB6)sR>u{>JfAi|EOJg} z4?H-i4Qs|~fyoI#$BX>(OMrf{2=oy^KMj^b-p7)Ab2TJ1>-Tdp7>hhn_iJ^!$Q&}2 zq+kso``D|}H65B2j3}<2-+W*?H8VSR^5v^L`Hv9y4~umAgzfo2>;U}RMd05A1JIX- z_)h>jn#UGWf<3MSy3W&|UnQ_#)ob{+it}+zV*i}ET~&s_4gY!-xBp|2LeA}fUj%Y) z{~NTps3kIYoSU;U)x1b)XfzS#@lmo|*LZC1V6(q@r&!mP|Q;BeJ^nVuDBS`m6K zMIVi65{=Iz-(@fCN&Cjq66-1Rr5B>mq%R;K08O20aqD|$jhMY_Zfi+$l@ixAqC$$P zq$&&xEiE)j?ctJHuQ4>ivUI)ahUv$pbZtJWn);FH)f7Jn9GQ-yTB9su>e-%6F%v0r zO>+zr?T<)WV)Ce)2TFaZi&EPocJIh^rxddR(L!1*5`qy%ldQmEBV35ilb>R_UM)+R zVzsG79J$fO?c(AVB$VgY>`a8vxzMz+iBV<7=L6UtO@Vx`Y@%^oF9kYv=%upJu^qf__NEI$ZF3pxY&ow!V7@x8fAH?r!DqQII zR7Q|!zb=v23WmDn*I^l@A|{n-cVmXRDu&}jzQM}gggAYQsq@l5viw`1ssop16Y}zW zf*7a^!;UKzD67|SJafUD3KFu>J%UaxVkR4-ZYzBb5g5gD?b6(dfjW(7MtBp%v#$!yVfDTEiHYZ(}pdqkNvw;5>rq1Wu5w2<>B%dYQy!9Fid*Fp4o0on0* z@t|iObIHEAEZL5G(d@Fj;ly3`Is2eAn@#_E`8H#YC~*=)h(K{^T;qafO-jJw!HRgu z#v+}CjECO7Mx3F$S2%X-Tm7M(EBsNBrFJdg&UIeZ4jLhfOe{)QLaf<{MVi7F&;gBR z?FSY8Gg#$Q`xps>VIHZ6$F)L;gbQc2rb)&tr?1WxvaY7idSd;cVzWsxOvQNEeEWxR zfpp*K*t-*GAbF)M&gsd!kvqz;!oJ%VA}1Ph1D6ilv*5@Pokr E0Y?Rz^Z)<= literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Molecular_dynamics_and_docking_Formats.doctree b/.doctrees/docs/FileFormats/Molecular_dynamics_and_docking_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e706864d48003c9e6df0375e90462704b683bca0 GIT binary patch literal 4095 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 BgyaAK literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Molpro_input_format.doctree b/.doctrees/docs/FileFormats/Molpro_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5bae479c52bb54df420a37da970b4f572f0362b7 GIT binary patch literal 3253 zcma)9TW=gS6mFaBCY#IV(hC6^x}*>iq3rg72Pi_QRH{Hx7YS9UQX7rDGv2io&v>vs z&F(`bc&O9}zt#K+{v1N$2k?1ryBngGsw<6;kI&8DcYN||JXLg9=-`7#&R&mmS4X+4qr#QT?2;iPf6%cNyC`@<-SJi1ObIeEjxE?$ zP^XSnv&xwFn2c#pWl2I+?@X%Go=j;nAOkA8BW_qW=yG|ftT54oS>1cY1$~rft$UZ0 zqN}uV*?_g|lBS{IGO6p&8m#H-bb!r<;YQGzExS_~>*UFHiex(naeA277DpDJ(6PUb zw`jg{`9-r1`<#8u7T8{&-RWlo!ZvXoZ2QEq8~EMAZwJ2*PF%)5Vuw)QFVxvxcIS98 zkA5+cW-h+lPZ-x7{3o3=#SJ}@iI|jecB>d$xCJs&BxN(Hv2T6W?4EtQiD~c;|9|ig z*j^rV14(@Iu1vq4&lHuRb!86htxM2$6sL~u(yD9+cBfFfps+!nL+b#eRkNltq}zuiIK`-5fL;GLs0gc(a^E2B{X*z8eKAANy84$$onPGRBF{!@a>p`r$>BKOZbfp^goW1Ea z^8lb37#ibx(B$nh!IrGt7N}{XJ%40cR~k z2B1)6m^)s!y8vX2X`$q1-R}aOdW4+YO+85r83&Ayn7|LZI z^my#SDERI9mt`&@vd&(7z);DZNCuo0AsP6vVJLtQSpB zAq-;vy}&cPMzme>n}zHEugorc#-3)j<)vnlB3wT%Jb%reoo8&@fA3;Kc*^!OyFPn` zc?jzv2M~Nv@KZ=UQ!Bk9_*qGzhfxq$9uK6bQIV_OxFD>xTXPm$mDl{x_MClmTxEQV zzj@JCxr2ueeI%5b=eo12p%en;MhkoZ_Y*jQp$6>2*s6ho!eQM`X2lrN z+IpfvtV&wHdDZO4zAI+&dVSA+^*u_iJfb?qeRuXQnMC&d=!JK!Q&T7EB0N9uVXF8? zzhlUI0Hwd*HXqqW`HWq)iyi}@-w*vqKl-<%_=^GUts1udT<{l++10uXIdE5b5{fMH UL>c*6e8BY5)KL literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Molpro_output_format.doctree b/.doctrees/docs/FileFormats/Molpro_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9627544bcf38096e10c351da579b0310b36314cc GIT binary patch literal 4727 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/NWChem_input_format.doctree b/.doctrees/docs/FileFormats/NWChem_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d7df66b84f7805556f74e52502cef3df99546375 GIT binary patch literal 3253 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ORCA_input_format.doctree b/.doctrees/docs/FileFormats/ORCA_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..27243b4e217166fc6b21f837510dd2cb82ae26a8 GIT binary patch literal 5084 zcmb7ITW=gm6;5o=*kgNq%Y|JMvqN?_IDwhT1LCqQi?Wd-khP8!EkQg)t(xwdskZx; zs_NL52!e-|)>6UCHjn%PKnMx=AxNN=_JLo(kJ#^2^<_K`wl~U*r%s(Zb9S*hI2SOc^MCLbi(s=6n&2@{caB{6lfaD&2w+KfcJ)ADy-oo)Pc5&}a_menl|d zUyzx-Cm9{3auz82C#D2(AVS(vLm3wz@<;pfK2OE9U6 zVD$n_i914MUSEdx9H-rN_x{fn?`gq%D&u}Q4tdb4+)W|mg8#mA>4y~p#b0gQbj%Wu zGr?4-rev0r56nB45nZ0p4mADeGa3F_s2-o6^>ukQ*-@sgW7R}+W%e#wO>Gu-_@epQ(FL?)v!V4 z|1Rg|X=I8&lG6#7*z0^35iUQ!$k~L;e?#j(*IEzmKjkd2KqL=Mp|J*Gjm!JX%QJX1 z-}x%b-Qs^#d+&FzUb#}%fv+H@0q*`f3Al7s19taUu;L;oRq$N_|KcV13Bhpc`Nwk> z!RPZ&$|^=NWDCRe2Burq+p-X`s)&~pJ(oyT!KSPFI}kNp)lp*_9d^u{XPT>i*>V(O zn^!yRm|H~sf4zxo(N6V(1)o)7zKP`B1@k69LI%_xdOVJv&F6tPI`(Ww_o~?ckdAm& znXkQ;3r*oGXa|OATPj_vee0%Aylt*)$r2SYs^DHG(~0EDHK#3|Y8Dl{SIlz7!vhR+ z3c;&p&CeyZlwR3D?wQq!Vw=uAv!uAzsEX*cH|x%MEYn2u1kG#v8H;jsx>X%V)y*|p z=3-CW+cTXBM<2>`Dhmt(hL%~gIKyDYZHOiyIlyqa9Og2@sH;=oqgI(_v2hC;%HzUp zjnh<9zcw|Awzx}eXp+a?5p|W+D6df^&pbbk>0+QD@|L6Uh+B$xh+f#M8g}ehE+{*A zxIywPmD-E=OAhzVnPtJEde}0X{3wLiG}F1Nm|CV4@KHX&c58=BCh!_KBxf-w9k}1; zWK{8~S##G4;35sE<1n3EkNZF9s}R3$pPux%l&SOtOM-~XdYe@Bbz#<>r@cl>%StKC z_RP$Ti2WCUpILKq&#u0GdSYg=*&rK$H6`Gp2sRa_8?j`Pvk8aC1B~Zz)iT#4_t9o~ z0mlU-z&0UZvS-?Unv7v4JQ4=LD(*l>g=m{Kmh04ONM?@iM%^HfGp~jq9BT<7&?gfX zk-&9JvEZiTZ%CQqd60TXF+pkrk(Mfs7;aWtlpsc5hAMOrUH5`eu~9^Zlv*xUp@A@4 zg)s`jVB-uzyCs`PMaJIgZqhGoqPVoN$P@Ll+GO^*E;@kD9F->t+WSQ$a~fXhM1_1Nx#1TYjjj<8urvk{^w(4yE~GTXpp zjB9cko^{sqR7MCnF&pYQ(d@_*;Y39E0KW@SO3+_bF+-re$Pw2Hj=E;YZs z;XWvUnRtY}t@JTe5FAegC+3C^t^<$9EQ~xnLQtZ$YHyZzVSqInyR>#<=6Uk6KwoE; zTslGg0*YZ0ga{7pxrYY}oJ}YNXlcAmAcY6?MDPj;?-bQNBY+HP<9g7h5W))tl?>cI zSD7-4H0fwNuGVbtKSa#$e?VV9q_6McD>oft)W;btz{T0Jerh>SEZ0dcw&+5=E$-T- z_(SW&v)pv2&)VwR^+O+6hA`*_D=9Cl)v*M>wgmZxnC_0OeO8RH;%_qfE1P?C#2tz#V zD8R*SSm&K-GOmR2HHD{5UIt9!0!Za=ouM{oW8pW+}SL9ge4(Yte|dAUOm6R3c_ zI>LfM-QVwjfy23|#eazY?{hl*b1tx^RhGT0W`WRwSpC`F<0n*m+^ZULVf845K4Skr iPM%q*y2NYNndK6m@s3Mffle#55MtuqC#(!}D literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ORCA_output_format.doctree b/.doctrees/docs/FileFormats/ORCA_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..14d7709a9575bf1cfd08f47ee72138e8310937f5 GIT binary patch literal 4713 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 KGy>sw&i?=cr-^L< literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Open_Babel_molecule_report.doctree b/.doctrees/docs/FileFormats/Open_Babel_molecule_report.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ddf51d76b12ce8630825ce01ba2c88dfd1003e45 GIT binary patch literal 6508 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Other_cheminformatics_Formats.doctree b/.doctrees/docs/FileFormats/Other_cheminformatics_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1d26c08bee55e37e2144caf1549afac6ea6c97cd GIT binary patch literal 3796 zcmb7HZEqvD5%!%eS@MhglDjlb&pq{$UVSJm1w{)42?`{2ajkPXCA|bmQQ$yucPWu) z?s7|V&(eng>4yX{z;9uHL4QquRr_#vwUT8ghZqpN91e%%%rnmnzi$2ezrD5c&+VC< zi)=ceNs_6A8SgrYii?zG)_?CG{mXylk6l;O3!@4hGw;@*5py9E%`*QSlf9sCg*1cO zK-*G1VT>>#{838uANid z#(KW)x}>>2M(z2n&5)~<4Rw)aOb;)VJ|C)_Wf6^-9884eMKloVMpY( zoJ~W3UZwtxF9E>&{I~p9e4RfS@%y79qI@4g;)l;Yzk}cF_`QMOo6mj0f5{&~{b8lf z-{SY5Y?Sxt#462IktIu~tuDgX5ET_$&6aOc&;8Iwyzd4-&7}YnVys08q2rPJ;M(#J z5HE^xyiC`@<`(oH8v66P5;>OG|(E z%B6oRXl5xn{p`w?_pYsbdiv*&mo4AFt`V;Dm&ZS@^l1^DB0HCrj;~qzQkV;dl+@&7 zWDglBi#!HAzxB-Rh%A;xf)tdMm-&c)%AfJi`4{}}{2$D9QaVjoZn^*HfA~Xs)4W_g zavKw=B7f=HTqFso<azBbVK z$5qI>y&7;Q7nt5dC!)U z>TMineL1Pz&)GBwH4rc!e3Hd1A<>MK-1e2{mhTw%vl~^wk5D**!t#~o$DME5a36om z-LaZxMwWplxmFVm1e848vWUN|;!*3A;VD80Zn<7u=)kO`=FyScnM+FU9l4HS){1O` z!gBzuRfS}%Rc0Be!nMDkvH+HvQq)$3%?s;C{L#pDCk%85zzU_g&dLv%yE=o#=xPQYlP zP8yi}MI~X9l@fA+l0fFQ3p>^e>S6{rXqGE&iDWMs+;`h;aVnc(%N?+(fY*>)ppIIp z6iQ_tJ3M+>XS zLga3T9$_~r(wsE-gI7y|0Q7W5WiYr`N=o#H*e^u6VMU_IG!1y#N17?a$nwe(BFN5{ z!iWl=dn6HtMlxKaKIP^-FOXw9xQsz2RBQ^!)M{i-rtbCdg-yV{fin@9U@bwsx50kR z5coU@$pzSC6QEFvR9OFX|2M9evwT4p;W9fx5>cEzWQKc#TbrBrhC_(WAfH*TvVqc* zp?7zKW_bW;63bGA$08gZ$WMO#&hO#Ro*u_5=7VHm{^8s_GL;6ro-;iV%#O=Fko`k$ zQ;E&GmPSaS1a;y`#~lHXp(xe4+3+1Pc|gde+cz_m$tmHe(K6I&kJe5F-0zr_BFp|+ zAgK);^;$WuhD55ER&~l9#hl_i2z-@n@N(%wtUfPtY!RB=vf$Jtfa(NE=wlbGa2R+3 zoVubX(g0qmXqAeg={)zq3`$vo{GH(loS|L5ba!KDofDQ)Aqg7tz_R7B59%HeV3p&F z(=OdQ%U*gkW3E$i36d936j>sW9F|l~c-a&m;81{;1-Sw?D9?er-Qg8!)lNeUYvX3n z4k?6AJk$#`csta%%`jQXj!|WfxZ!!>x!mjyoz-$!T$bN;Y!yUQUg zkFXnys(T2qsU#s&=X%xQmnD@R-U0}D8Y$VJqEx-JB5bs~S1fktyOxU%uh<9UY8xp2 z?y9YN28{=JBt|0(uz0r}D=Fb_I2MIu^R$+K4=;S-C}@(YQu(3mc?kw zduC>kSaWGp^X3gdRJt%nCumvt_1Sma`+r3Mbih}?ihlpWja|xvzA$~%xqg#M$pFU< ztv>I+=-padGe6$qzu18eRJ-`M+FC95QLa^&u3K&+fCG7XHhTO?C^FS+61+EmgrQ-0 iv02%3+l`A#P;b|bAd+Yj9)ep*VE>vZLr;Xq*Z%?9u+wD# literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Outputs_nothing.doctree b/.doctrees/docs/FileFormats/Outputs_nothing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f7cab968f4cd423ff8caa9afba01159679a30879 GIT binary patch literal 3221 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/PNG_2D_depiction.doctree b/.doctrees/docs/FileFormats/PNG_2D_depiction.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d66d7da1fbde007106739bda604a2509a34a0c8b GIT binary patch literal 27644 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 A$N&HU literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/POS_cartesian_coordinates_format.doctree b/.doctrees/docs/FileFormats/POS_cartesian_coordinates_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f27af1eac9b7024622dae290a0b922b04ea7187b GIT binary patch literal 6173 zcmbtYZ*Lq&8Bb#0+2?<;-6RcZ-7HQM98;ey0Rp8hs44`I!Kq3V6{Ki2w>x(;=e?a} zX4bJ^M1)F(8s=S>ckqT!fOyHvN_+x@1W14s5CT30znR&+TbtPDD3;E5GxN+d^E~r= z{yu5^V)^Ph_h&AujPZ28P2xBeF;#_`jzyFYXsU}(irYUf9v5q-CCMWtav9OWoC8I~ zcoIvR77wwwVCgkaRJ&x*)I|2^Xgh0|o9%WGzIX3?VML^+ijy>qgpe^$35H=;$N|xJ z3O4nyFf&AJ$vZg~+~E^ERyfE^MF~*~lla|8$-w`bj`M6Z=#Xev(yph$4;~jL$b{M$ zp1V;ycf+4sXq`cB>o2-RzF6_8*cV&3I64)&;2c6*+fGuz3Ngz7NiKyl?> z>bPy$m5^&Xs4bhXeg`HQ2>bE!J4Hnz)r6A_l<^Xtx8#ibeBmvc_*h#9xO zu}=nBLhtx625&Q6&D31Wub*GA`Py+UGoQdXBuTX;k*&Qv`2#$ND>hdi! zS5oz)$g|p$cnSp5rYEQ^nF|}GczDusJK`2U8n^ycIx0&%e2M>__7XOz{u{FXbDSkS z1<~Kf5&acJfAN|^Y8XlG)KwSb+WNg*XSog(u8!c<5oxU8sgr{;9uK{4f9m|Xb55R? znWlq`5ye%F)o6XoTs?{D$ddXCmfcwsjsBda4*D&8jT5?xTvtHf7*F4yaICGKPWC1C zS^flN{&56B>&yRK;l9Gs-;PeOe^g`OrQ^-vKh;$KOZH%&*x1zyApI|6{tOuDe__0E z3^3_$oq-NW>2El?{v^JtJDOM5zs?oul*j-^0z@J%Dey7#evJwJaPjOzJ0+~(*8Yv%QFrPT%q3bsP4v)0Tl%$%hRab?@7O&{cVli~i3o9OjgH`I%Ix8z1A|AgBvmNl~3UECksN zb4g2*s)X3U6=qWO5Cnbw+R#Fiq}V=ZW-1yQW0+f~aNaCLxwK_wSQeE#X0DoXh3Jl% zR#a=44r=qIVXfUojiYIb`nLIiBsq%VDxF5OaW1*oVYhco%O~?%$O41dmfIS63I?EPni4UN;eg4GX`*oILQH6c z$G|GuB>M$xngx<;5ss$J1=~KEkMltm4j~A|x(N>S$&@6P;YBy&z-^y@G?giu$09^> z2&zR`nou;X?{p}EjqY*9Jwz{tu@4v!q`c)+Wg0NEIS8X*49?ELbiO1DZK3DdK3D87 z9D)?o*&ssr(QSU9$EC3v=00x(k3ZL=}tY(Jm*Z*~ZPSFG8OSvKt*^Z)ZmA zZ&mDJti(cgm&!J$y6et>1K4DGkl?VECLLH&tXZ)=ZB~HE0Xk`=c@Di^=+p8;v#1VG zFYkwp_gI1t@H?5Kue>S2^SvQF5+W2yd$%|(}-zs>kbD^YeHyJ+K_=h(;QJ|$}al3H6LqM`agrs z_kU{teQ5vv2>)`^vV{5|g9PZ4Ins|E<)NcG%-OQ-pRKT4ZY#d*KK5yD=Id|m?m8cF zAjaMv7xFXKq$@fvWqroep`QwD3_2ni!pD(bIyO0^ZXMy+s!nyAmXGj$GIzg)hmaO}fd@vgIxfRmwRJWEVlXtgxIIe6Z(JCkioc1x zF#z3Zd8TQUQSiK(v|xehetYNcJsXOATOO{l>RThN=)dOqnc1Oo9PVd%8YOvb?W||p R=rgem5T!4*$rJk3{{tC%@^=6L literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/POV-Ray_input_format.doctree b/.doctrees/docs/FileFormats/POV-Ray_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..810f4d31aecda8eee08a1575172df53d3822cad0 GIT binary patch literal 10763 zcmeHN>5m*o6<_aV&vUc&AR+Mqi92der6p?$(qz(P}a6o+OdoP7_Rk2Ar_X7|g|9!`0&$jrcv~>z?|x&rHMqLt8gi zBi>Oo_+guwI1&aon~~mY%CVYitSl9K6TM44GpjBpUEAl`zQ=~pZoDSj?c;KS!z9GEr9%tBDWr~ z9=<#&C8$BEdNUPW$eH9}U16T^N!ZZyS zQlzs0?RY9WpOsH?yfxc(Sr`Sd6Sv3KbU&$sgKj!$oJgvhHeZwTJj)DA_c0IRDwJQy;$9Mu%^K%-Xid{8ElgiO6O8zkEY_KMg(x=J{mH z_Kh11K#BMpsZCJCN-K=XHC1Gcde(P9bccy~ zMa76G^qb~Zbl*-13F#pW;@ED(erXb^ua-;?Lk_p-8@vvKt6Gf$cLUC=b`?{WN~riD zv$~M9Ke#rmPf>8?0g1iU+q~<xiTS*x|AA(TyQV@ZV$tq?J7y{<&u={O=L(#X!lF?rhB+8^gk z114#k2!ZLGDfZwr@%LEFK+|2@*Ii9^Kf3MUQk1_HBIF`HB+ojNevk~D#~zfC4E&qU z)*|fG&A>+hjOYR<-aL#gqkik(`Ke|1PNm~>_8=D98R^wMns(*F_dSf6|8v;!v_r0gLNP4iOO`vWv5h%`)&q=#d4OZFLOSLuOUn2Jf%pV7=d(2k)D;LkZeEFJVsCgt(JFnNq7|{teF``OTq;QUG4;Pyr2Gh-hA5%*ou`469}K52 zkfJnk50P>J+yAp3vbSzC>4p4x37f_MZh$7Q@X++LbW6X1TqEM<*HQ&A^aHu`Lz;Im zQH)IQ%$A8@0S6oVTf$$!akP~aHArWBa7PigZAP21^JnVK95t=o)t!6GUr7mebq`Js z=U+KuPZI}acYy)x7hk=~8U`KsP2}W2 z7cVT<>vXm^c}Gv(1es2G1VEH9$PjrDq}i+>h>^OWcuF!o%X&e|)@05P$+bEq54IjQ z=-9BlT(2{h$CY{<+Ss95$j(s!Sv;!vQ3j1Fq-yljkm7|q6jOPv0b`yVS0)ZDJaDA4jKA&HfC)^)Cs7igG&lW(f;h<@aQ`idIkDidIVx+32h4_oeq=7#V|w zw71ZsbYPER!n-*z>qF}!3WSSO$m8WycXt{2wy*ra?xc5l+gG9Vfcth{qGc(f%DC^o zFAtHv5>>tk(jm|^OAJXPoBuP{dl#<8f&;7V}=`~COn{8=zjFrLGP_w zf6)qWaZGLfTR2q^yGlH6)el(1B`m?+1Y*qL^u_kCG;&W7gS$(Lp9TWO@8qh5633fK zA2Au)ce9rYV!l0s(D}~#tr19b#Jnp>2N82}@ipvrxa0G&_g!ivb$qWKM=Wr_7_u z6iI$_UEbmkR19Q%^DHLRN~+6eae}Xh$gXP0vf{9Ts}@sh_cVFw|7PZVL<>I?i(}hT zp>*I)%nt-rVT#!ng*!%rAip4k^o8F?DCkX7c|_&V@jLR z9x-R65dmGxYYbMzOwl6i5>~{%JZFrOj6-FK1rp7;fAvw~FnvvTQ>3xVB8_R4i_TW8 zg%wfDFWG`9!-GtCCCG5&VZRy>`4fK?kM;a9ja)ph{o5lcfVB zRQ8UTQ^hC1MPO3mM%2=z(|o!a+xY$9;7g6usa3Adxu|1oVoxo7_Gb$AFjk!)ioet49qN6?(4PQ>e|re6W1V-k@cvLiAom?sP*|fXSMq+z)I3J%M5S z9blkv42Q{8z^!hgllguOrYmctnyl3fnDN^1+i}vv6fBNfvJG(*F{Hk#aZk5hO*c_~ zCJV#f5r^_xDS*}OD7UsDCb)kyL*`BFQ|<)z3n>$` zlHq3H@Ib37HbXPGb;^fnG9lEd(UyS(=!_nVz4TJGHPl{n%J~pmj`LUg_b2-INBm1g zjR+}OBR304`i`XBkW?F~b(l)7PFZJUSA0=FxqYW%wz}MMy0eB&mnGPPFelYQR$b63 zL8~o_4pnu4hu03=5>yT(iIJ%iv{s#LZe2x*M@2 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/PQR_format.doctree b/.doctrees/docs/FileFormats/PQR_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ecda5c505cdeb809c7ca3d78fd91f413a58cdf59 GIT binary patch literal 4408 zcmb7I?{6GO8Fp;n*=L`BHYp**^qRK83G$skfP`9!FQ5oyaN1B6B(Sz~yK^^V@9u18 zW)oY&s1zz^Z?pCm~x5~{3OPDEU0G}rbsd++!5-0qr=Bu|tmWlXJ^10rTTO(f0j z5nir4yymIuR|?vi$T6LM&RS-p-|t25zV|2^37HZ7wq;94)~pb%B_Ea=+q!KQc%q=v zEX65N3PL=$a*~Co<)kd8iy?_mBpn3|9(V$M#Yb{4>|jf?q{-OfEn6{*DbJ}rxMtb~ zf!*4&1=EQpj$+lW{rhmhL`Da)%yTLSPlP-fh=S%rGNfsL%rz^AeJ-9U3n~Uss|F8v zN*{P<)nMv)Un*_OA?uhWMPtoHJ_#~wv9^oKE?%}Y*C}nhGMmuR3$FEc;pRObK|mMZ zr>8E|&p>=?{pqnD`!0K(EwDR>?6t#kNZ2NV&9;v$yN=(h_}#?s){!mQx7j_w?*=$~ zgS~dJ2y5R8G?-d=zZRJ8BTACq!@{|uf=&BZgi|wq_;O~v(=em$gSIOCMp4QU#+sc| zvpQz80f@M!*)vhy3N@CZEWUz3P}>2}cxC4ID)%~Ot@>Pny!p5RVv##Qw(r5gZA3Fx zGeS-PI+}GZzXs@6vp^pJ^otNFq;f2|4_CuNbL;-YQWvG}DVUzp-caO;>WMr(yI(V^ zgA^fSNeb5ZkbUf3>zHMl6^tmZzWQ?C+tOx)q^iUMJq@cmdN-+Nq6Y#C)g9G$w4Q2nUJiYlm z^$j9?{&Gb4?<_BCB6Q&Ge`bLl5fGA>CBlpGKWk9Y7q8|9rYlh@_d@MZmej>J$a_hsIZQ$2 zw}OPG)Jvi#7(}9aOu~-U2i4q!Fi2VmsiTxWrU>7>Sz#odEL&!ao^nJ@6J4qr)H1Dv z4$CpNTYo}ij;H|v)@G1&5dN4tr|eU+&U5sT2)qypP}X!xJ=*)hp5l1EefecXr4%w^ zBu`Q*5pic~tgYDyk#1;dc`erLTzPXv#qsw+KeHb6PHm{azJ2+{m5k}t^ejP+ zKIV!Cif%+nDC=;fvT~_T4WwBY&L|{<&od}pt6XU8Uv*E|L{aH;k>;*RBslU_ zTmf)YVF`+Ex%>ii@-c{*@{DWy^Ud#|B++78G@LVCCm9mh?vlgYWLg*M?ZE(I)i2I8 z6M0|A@xYoJ4(Sa5GQ#kNrS+2=x#Q2z{_<_HRsc_Wq zs*E7fJ}Qyd3W0jXufsA*MNF#D?!*jpRg8lV`GzR_5aR0-OraP49_8o$st#O$JtF4$ z2pp&j!?r6GD63a+Jagnt1qs>cZaXKq5zuUix~=pXOkfl@vI}z~2I?fD8R2P!JD)4G z-t4XFJ_53)qfpi^%mU3HTg*RZIg}IRFQ~}#1fv3o7w&nUI9o6Z)Y7;JqJ$^zVs?&# zcS#y9ZxBP(5kcb8xW)y~nv#ISwG@2F zh9aF%#zU`P5l+yZOBy@%uKuI#OZrifrFJdg##LR_8#F=`nOKyrgjlm0i!{Yqzy~y% zr5{!D&k&VQ?IR=%hIynOuFwh;2^&soO;e0p&$>EO$hulO>526Pi%mwtFa_hHv;Pwu zfpm211v2#ROlOiiJ+69acfCnECH=|#d;B+?<*X6-6V^NaD{wEG=1i;Vao5bEBLouj zr-u(7x<(WJV}Zg~U;i;Q9RDTgGpmy@cvi3SJWk8RWzpFE-(e+j<-e+wZZyKR|Nk53 Bk3;|f literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/PWscf_format.doctree b/.doctrees/docs/FileFormats/PWscf_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0aef2864ec0cc07bac4aeee1988f02798a24959b GIT binary patch literal 3473 zcmbVPZEqVz5Kf!eiIdn(LRww}ra(yxu`56VQ4m6i3RDqZQ~^RntM%R5yX5Znx-U)q zp%Q!m5oy15`3L+^p542%od_r*ily7R+1Z)dXP%k+x%J0y-KF^FuIQ4B;&edMw2&#& z-mRrFu{kS@f9!Am;ve~a*HQFDOREy*-4ZksF0xdy!XM#fFX$VQ=|OFvZK#^C`F7rN z+k-)$eD$49#$+s2PR;wCuO4}~PK{AwWDO1u2Q7C(LGO9I%cy1Lmub$RYTh13F znj9-Ou5|DqQtvj)6P$5So#CxpHFOeoc)spdGEp#p?~-em6uukJmtBXG|N%ES<6_3*C9*xeYe9xetyP}+Dq;vKiD zSz?4NW~t^a-VT}B$IF%xCSwb)+-|heufpr^$6#;9OhSF-K06Ib{|BvKeY{KF=Wpj}t6AC~P5aT~H~ZLO`f}X=+S0<AuFz;W;KmPZK8fQ1)?DtQK?As=yDnj6c&G51Bb{4DaATB)LV-0Zj z-ENdM5NPmOS7lxKo-G3GRUEjy2r&07J1tQZ1QpFtrU^^QXi8!cKl0r2P3@lkTNTtl z6!xI7=yl^uwr!nV5b6EGt^k!D79QGWg|PmalI3&3SZt9*=ERiZDDMPnOaf|>)4qZEu#TYRn z9U=u#(d$ki5+2QWzqEa)PN^+V9 zJZ+)Oq-JDsXM_l<^P$k9!siu|3Qb2@2&DFMwW$l#*d~I}sDxN#Fxsuv$QaEr_U>!p z35RH=Vj;33SW9u=8yGuqPt_9m+z!PB*c20>FcY~j{)?^GU9V*2oGwBzn?W+7@I6$9 zdxjfR>i363i1nbH8ZL{0RFk21SA%AB0Ght57B@Zl$S|d?U#dWnLnM`P%+P#FMQzy9is@Ra_m_qD6wk3`T zvs;`pY7#gDdSoJsF)+}u!cO1`aOwp;kq7W*l2)Y{rmJHQ%;Y05wl-6^z!|2%Gj}zC z)-ho@6&b;t8CW*Dytm_1+nU-)j zOiA{4Zq6*<3D0{Nj2`eC)^!)JFuKr91b`5n!a0>BRBEGFIlm~W^f2q<%JY%TW~hj& zyBCBr?an!io#xcIY3H1MFs?Fz;;&w`Rlh-_1CJ!q2A1${BavB#bRz~dlGRUY`D0|^ zSN{!a0`nZI3v;;!3aSHVbh0SMT-wu9jlycAv!2(Cx_mwb#nBh@-dmp`wdyW*$*lwkp!z;Py!&Nn vCDo@8*sb}dz*z9pT4m2|%n}iyyCI4svuP-mN%)*uPXou-bQmTdd`tWV%jZFF literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Painter_format.doctree b/.doctrees/docs/FileFormats/Painter_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..40d82c109aebcf011b48fd82855a2a45259882da GIT binary patch literal 7482 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 A-~a#s literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Parallel_Quantum_Solutions_format.doctree b/.doctrees/docs/FileFormats/Parallel_Quantum_Solutions_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..82806d24c276b62a7358ee88b60f703575103f63 GIT binary patch literal 3163 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Protein_Data_Bank_format.doctree b/.doctrees/docs/FileFormats/Protein_Data_Bank_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1a3698c1bfe6ff803b7f19df08140f640ceb581e GIT binary patch literal 6613 zcmcIp|8E>e6?bBv?en+TZqgV7AtZiAAW&8DUjV8q_)n0K0QDC>Gqbz5zS_QX5s}WhdGqGWd++n! zoA>TXa(j>;M^JW&_Wre+da=gfM~e0i z<(ezFI)Z2ECpe(zNyku|(x=x8@tS(RSS|toq*G&JzA-bqZke6f&}JZqsGNXldzf8* z2&V51V|o)zZ#YdMGz22D>Z;vPUtGJFsWelb#MNW!wRjRrk0S@|b8Ih6v!P1Wx$VD6n{cm_P;=e;CGOVDURh z@wmJZU~nsvq*VX_Q1B3IB0(z{{Gw!KAKJ@58yLgZN9|Cv_1{ls>yL&BQrfx+f&My- z+1MIV|9@>A4BGlXm92xmtv?>c*8dtNkg@eYhcOvj|KotIFRb0^BwSGM=Dn?N-F)B) z8gLQHwV4@r_sZ1zg(El}Uj>2g#ZzNrg_!3K-MbHg?j^%Ja`u78ch6(RFeytQ%z*#w z2>b>M(8@`%a6JEOwa8<0Rs8@xCy*J}U8;~dDRZr(dwqH>_kJF?tmj^n^p45B^KS{H zxWVK*K&=9A_q7vQ0`GwCooa=RunV}(>s1^mo-`+ljLCqvbg4O^%$Z5$Fx?L5Blt`= z0N*gIz-_ue9)S;@)7`dwwLp1e?H2bEuDnN9*LcLnQ9z*egU;kB?nO!Hrc6%t;9^u1 zIkobz?o;f4FrM~F*Y!94m$Pa<_pUkRL_YWS2>K~~ZV`HVG6Fw*uF&W4ZiIB({XunO zgR~Q8Tt0}a_sxDKu6Q3;AAmjzuKqZJdbI7!hO4iwIp^gf>O={!s9>v*%R zqdd&n3N6#is=iXNd!~%`Oc{MhJy{jozTxr>S5e&Ov|bIGj5O{{>Z(C~f$pZLZ+#T) z6xDY?L%+4>+uHnb-kmrN1k6eO!l7KK@*m@}V5m!2UcEfGD&N@^eO3vQ$e5V&(uZIj zL8a?9G!$1P&hL)tnUaTw7-pu3J*5|dOqk|?U$g?Y^jt}??Sm~nEvZs?`J#ieRCPq! zf+vb5=tfMwN#YExi?Yf@O=t_Je2ZP%(#;Mno6XX*#MXBs{d zTYkn-XiP1|e}t}vUv^+{VzHoT$v_Q)rd%jLrVlC9cUsRd5?8~9UZT4Zw5Ev4WXaUf zjgYpo4vt%RL_`9ufdlWG9w<$yKcGga{Fz>e5)_v{aKS@x<+_=v_WIY?WrXjS4o>=1 z2rhg^k}#$M8aG!BRIblBP1km5*j;kHGB7i+Mfay^U=>ZR-JDJ8 z1(GT5_euJ+X?D$rSugb~2tu)z5CMH6A+g!;jHOs`8}s)`siaxR{oS5{)FM2MOX}BG zT9m*?A4W2A5Iy6EuHJ(n#Vw~w*MOVNK^O^VuzrS3=LC(mij!;SfoM^+lSP z>M?}LXVGhfsoW3{T{8X!cu#$sYnZ66e^bAoz^SBWDlXSaL+30`8HkW`+8CCC5r6&Eb6cr zAK-T)<_7w6vPa-(Kgr?qZnr|`JDW9isM6H9H{BFcw7O?vYs6vR@}`4J2uNx?V{xa`y*}( zWfH}?!M%zZq)UXNfM+JqSUOc5I3~1oYceZZdGs(&QoPuCk{{Dc6M)y~4KRsJ1#d^YQ blmu}W8qe#PpFw6q({m}Jt9ef0cZdH1dzyJc literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/PubChem_JSON.doctree b/.doctrees/docs/FileFormats/PubChem_JSON.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4bd3aa06926768adb6a047b16162d2225d54aec4 GIT binary patch literal 6152 zcmb_gZI2vB5%$aN-tE1t&o5^u;3I=Wob!>}br2t-I1pKu9m0uo7l#lUH}V6!pH}Wgp`RyegNd!|6Cy>51b+Yt2?-&PczSwzXKrI|*Ep8W+ODpt zuBv{jx~d*FKKRdtW5qvpN~APQ_Bvh=BrG5zS91aLvzR0@e?PzSUj86oQ!Vc83YKx7 zTdpCrN%En{CZ6!$@>W0Zr-g0jWNx4RyNHaol&Z-VI7(_nYtD-g-T!v-fi~ z?@7tSUM6v{KImi^2nbcPe&h)OB7Qd#FE+pCf-J2TJ zc|8(!2BD-`uM@H-(u{~M#ER~%Fe0}Yk3A{6b>ll+$UN)OmYNmBmmyTOuBHvz)Sg+x zWzpV!{6ub=NbJ1y#n^jhMm4hU)Y=}^lrh0-hg{4t*iIO`ubf;jB@?L zZif?@@q`3UZ{LyFvj)8L?YEpeH{ZSM2*P(lpRBK2E1E)bmJDig>6_Xk^s0L8|COFs zrr(&}^y@JFYm@wQjb1AJ(zJepf8H=*1Ki)!8V8>A9G@l90{{ajOyG%7IHiaDhzSzy z!&8F9y@&|wqn8C(CE!hK6iVgKWEi>;fwea-$HzHy&MwEwN!qNs|*ig{BenK&1|fO6-rEq&Yywlr;{N1 z6EM9uiRs5+`jK%IUICwng}3TvyuBWT!UIAb0aOy^qy!H_!RB~L;0!Y%fnr=~xgRD5 z;<#R?&shvOr0x9cN2dG7T#~TL7BKPd0Vdzdp zuRS7Pf}r{%q9gK%#IW=ojsP6b3}e(PHT-4z3(%?IlgbmD=b*@rO-MFF{cxP{@GyZs zvTKBPY(V#OOQQc81#(;k^1r7EUta|VL!y%!!n5w ze8t&C4dW!t(It`7!-Z}Ohj9dGfWkjE5)EZ=`Zs=xlsGL0K6AO=vo47oR-QQsOc`&#N#0kb!Sn=LRez}?@Qf*-&v zujOg6c{IOG@CXo-4(s4oOS?M#J|V-Kjp{OGoM3FnNv6qRj6I6SUZ^<}P38Bf=wGzuxXS{>UN z6EXZV;HTO~Zl#0$`r_e@v5(cVwgFfZ6fTNjQ?8aGFBxRsfWYGc)+aEKQD-^v84uim zU|@mQ+z$bhE!9N-*@v0%NEiUC7?$xJ;2su#8Vjp9NJ(q?98sQK4or&~xMJLtG0u>TIz#OE+S^SGso9 zrx^A4==e;$!OMjU@%1)3;DciPR}8AkJa7Q?Fkkn6Rbn`!Qw7rM7+)A`@J7rt(WnP> z+c_{3_mH4a68Bg%LQ=tc zZj3nMZXJ@?vZodwojD{QiJD9OGOUctDtGWcBKP<#(}S*DE%+>oa7C~I@6YUwlKwti z^eDfBIKtQw5s7iI0CLQMqZCvpV-V98`zS|aOC3FxcEVas=}g~;`Qlf;f&1VZg^t09 zbE#goTyikA!#ju}hpjF;RoVXPiOFUAHPmw*@Ez5_s7Cqt9al3NABfnuw{G3mFOZqQ sBO}^THmZr?D@LAL7&)SV`$CxbQ5NX%8t5tde4yWjGKK1z2_x+P0zcdMyZ`_I literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/PubChem_format.doctree b/.doctrees/docs/FileFormats/PubChem_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..80322ab402cd89e29f34ab67a13ba258de140548 GIT binary patch literal 4681 zcmd^DTW=h<6_zdSO1rvP7duUxsF~VrD!I|FAMy|+Zi>`^kwS@56oye06(-yn?vl~W za7uD?c`(pEq_6?Lg)NHyi2%tz$}j16hBLb>!LX8|Zxyt_kUVpE&f#|szcYXB{Nuyz zh5FCkGNq8k`GBQqp;B(VTS-+?<-D-|E5H9Y|IF{Xo@Qr8RXX9`EkGg>GD|ft{4o|c zNZ!iK3>pPp%k+fLUKbs=GZ;ki@2k-x!Si^mbk6MiUMwGb*JsvhIjStSrmYrbYM|CF zCmAyalX&hFEDujBX;sb!BbJy`}mTQ3$}FP=J#QMdIo9SW86p{|O8>*1NwCqq^8V#G!~8%(4X)o38qOXq@$A=H}T zW0~>CwZmq3IRFD~tgl9*=avmmtW?D`;G!eC6rDXRcC54+pIdS}jh-mD810qGejQ9m zFFoPs6#176ed+7-6p{Fq_?cJ~caOwdN7aalO@v--AA4~dzt`}49lxI(`%3&&>_hzR zATI8Sw+@$Tn|lZ#n`l;wdD9-=zyDDY{qfUJTH6v;SSAZuOd?qXd*Nt=|JDhdf|lG2 z?%!{H=o+h4F`3gVenZg^58QkIt#&_i{n7V#{Uf;k>+9n4fw)`8rQ5~{@p%{$2gpDF zymj=Uu(o`EI4lD|2SqZHgCffZg%pE{Ivsxac^pX-v1qJ0&n^zwDU%r+WxSs<%SO!b zNR1-`w@g?TB`PmfRit>MNFyt_)KRH{QEe%nbu@PBz)GkiXs4=8_SYPQf@c`5Y1`waE!w^Xl?Z`nnJ z%Ai?d4Pj*lBP3gu*h=&H1bwH)RKHXf87f%@1sT=#h~+??B`7K=((|uTK$1#RWret$ z6iV}S(0_vcnp$Nz&tZUy1VEedD6cXrOFW=ZkO>_-A#n4{E%GBWq$j zt!Uz3O)Y-qJ2PYd{lksjhOz&=uI&2OqfmZvjm>gp&uuk{-q3)9GVx-Uw@JU}cAE7T zm-QVwB@Ycn@qGRs{5dvU49V z=B;k6Yd4*85pmDmM(P$OV?+~TRQZYKCJ?5MRhDJ`aKZIk8ICfwP*Lr=;WnClj2m8a zmc zIbo9c+Xl*(EMwe(#8eGbz7b}4#_O5*3=}PHNhEe`UT9b)!k~Gnw2d=<$`QVst}j?N z9d_InKbJO!H?}gZP{(yrKB^|zZsUw;qBW2}dCD=}OM@;Z>^Q^PKRs zi8ND&$MbL25J7gHN+Sb4Z^fxJM5y3MW94$27s#zJ&^rFVe<@|^*}h0La7!0aK-Hckkq#|xjC(Ou_*~5FWjcN0M9>d4k6w?sY+}?ZD!pH zHAUbB(4!J+DrQw-o9YB=>J>Se6L>SlLMl=dc;bPXe8f}a?*&W{91ZIWcPD|=Nz8LF z?-(sHRoU9?t)@i-ShI1cX)oL&FHSu!9=8%|38x~sDT`DhIcyx-;2JnvFbdGJ=#v4P zlzP@@sCJiTLtl$&Xd6!l#FD8cru*X9i#2B4GA)L=J=`+8;v4a`I1{#VJzB9BB}}G< z?%U_$n-}8jc_p@KxQjOKYy7MzDz`p=nzc3Si3BFdK5Q9gC}~@{;K%$-kVAit)6YjL zn*yX3y?teJD&4!JvDfZezqEZxKZ>umRPFCv)zz%v&O=E_h>s%nZZ%O^hRDMQ+$qbC zn)$B~j4%Bk=-U9(NHly)FaSi@a9UaBr_nWSmc6 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Q-Chem_input_format.doctree b/.doctrees/docs/FileFormats/Q-Chem_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e3acf95e54f5ba03eee4779070e35058527bbba8 GIT binary patch literal 5090 zcmb7ITW=gm74~h$9@{g%Bw0d;+1c!Fa11k(2ZY#VS(J?wfvok4)e^)*)T-&OnQBkp z+*KXh5=QW_(poBb+2)Zy00HvBzbuSG?HGLLRC7%ly&r^0Rzbw^DX2<1BS~uIIqv3P12t z9_24E*&%-A2eMxXXeySDdA(dT^xb~H>-@a;RPfO8qa;(#C{9DB-p|GIi(IcVrBZ*G zDeO=CE&85>Y`yFTOiB>(yAiR_{#x;}q#g{JJ4yM-^5BQ><@(l9&&5_fvsKS-m1lZc zu`w;o#j0Kk{D|lK^SYTZSfX;Vs9R2DI!4XXVt*jwkPp%8?PIxqALmu?U zz7pB6@5h(YtcU@`%E2=~;LnWJa&U<&`l(cTHWV$rEV--vII8?F8lp*l+Qno;`6}R3 zQ~I72)-}dMP!hqu{jA zwO?x4!bz}k$`UbUp7;q_E*|TvMbyeay}9yF!~>&r14jJ#I!k|a(NcIuylcawKAydj zpxeJBGrON8bdb_o_;{9DEB&jRD@`7MKIQQhrBPfK|Vd z*MRNUU^+48ZWO|iXfCEIPu9 z$?ITs1g6LyA+oQV`sN&`-Su$q7m|0C;9Z$;*B|-Z>z3}O5VC>4XI=VHi9qo;6E`ir z!ox%`>B}jZ#pGlC&P_xYC$tMq|8+B$QD*oD*#CZ=^<@OEg88r4G5^`R>T0J4VDjtm zpfC+9pA=a%y+{zp%yxp^9y;!oss!X@^)+C_xRSJye4aQSa&{g+DX{@$mYc?O8&p(!+0Agpk?x4Jrm zNBzC8v)nHJXSw%bdwy=Nr~_X^Oby(_4H9tUss`*Hu3^P>PAcKM2L9z6@DqaJ)T@u@ zbp&6{KQ5{m#gHis(;Mh^QE!Vv#L6OGOmuA`l{uTP>hD0*bX7-8n%xjhKs3Q{wHRh;fKgk;u0zc-&0^yQG)zx( zy*-L!Mg7{;B--LOHK9=!Iw#aoQls3VN}f1w9Ma`LLgcqBg$LYFoMZIDPT8_!$6`Uz z!@~_JPvTTL0e{Kiz6HH1SWpccdW)a<@S0*OlO{_fT1vx6 z$@R|6%#4V`Bfw90tlZaE-@iC9vsiDE4ZxZda8Ur8a@`JCG|t$V!{Z*t3%G9STPb(Z zW;q_m1;oQPK45a7n{FJ9U?x1`d%!AgK_|Ir>JH0P?9?Q^K)0i|mxYN_K@g5L1Rv;2 zBNmXr4MQ>DrsJzbOO6<>R~nQcMqm2Uw-DWMJYTY5K!y}rE|;N! zFk6Q)62V~N3_{xln?ps$-0I$-U)V(Q)Wjl>NScQuU&Fl=M`eeA=oZBnkQ0poMANh7 zA8&p~cM_h|NrQ}8C(4jPcM1-DS16Up_Xh)zWj{GpB98iTIv(Wu4sjX0D91iN7~pI{DL_l%bpk2eqep@>B)kh$`;Y)Kq>ZXUlR^k@5L7a7 z`&?&IFVm!@?b=$ibNB=?fA}GNy+>a^z*nYQ#HdaaSb&SOVg15zo*S<7Ol;GIdPh7o zOYw)+iRYPaPoK5Xwe9*q3~3LAEQLb4zQ!F2zOMs1V7zY)64D0O~V#VFMAhA{M zY8Gu@kdN$~Dk=weW@QyKD2hlpZk$n4$n}~V2La9nHlXM%KP~8A!Z)AipCWj0=|>pi zX-5JscEc*~Op|e??8sAz2rQ{peJt;}qQ3o@P9MGXdq2fNqy)XL1xEM5CC$qNdYV8D z>{c=6^{Wp5@GBh8bxr;gbbznu_^-Ia>PAuc=JgWc1JU}kgJ+*m^|5bj$cE*!6gr8+ j|5$l?t@4L~`kEiPLFQ3tjp<=*)uWnFq)+OX@ErAj=3{`r literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Q-Chem_output_format.doctree b/.doctrees/docs/FileFormats/Q-Chem_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8f9661e73501c4faa0c3b5d822d3e4ef68dfbbdf GIT binary patch literal 4735 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/RInChI.doctree b/.doctrees/docs/FileFormats/RInChI.doctree new file mode 100644 index 0000000000000000000000000000000000000000..864a9f64363d1e2ead1055e11fb8c5e850e47d1f GIT binary patch literal 5761 zcmeHL&2Jn@70-uf>=}C;$D4%g60=Q~4USpQ(WiQ@Q*ur%YTs#jI- zz52b+pSFH+aN~mevsZL3WO~$Rahzr`*QH&Gv#6Nx)Rdo>cYjtsD>rRNu|u5|D&nQR z0E$S+Bvw2vpI~v7=#5NtzdE38m>TohcG0rS{eBQWdYIl958o}t;*-*LnK4QZ3xg}^ zipw(AILbTv)I2gWOB=CDVK2wv(k@%LbXgcgNcA*uCc5trSyZx0^28SO4|y}M@15hGS!th z?TEIrG!8Up3V6k+-WSBouptBX`@sh~I0WQy3HLhgN<%y;9%U2Qrelj3m}W)5l0!Dt z!9M4?+mIy*6D0hA zCpsWl#Q|QQ0QCa{05TO<$WlC4T!Yx-1IGc#A^^;b$P@}V0_O58rQ_ffjErOsQXp5R zT{^G6yT;D{hAgu;j?e$bt8;G*hn;5TglE6yJcN7SLnRI0&eCLBJ$t3a##@Pl%7eaq z(~RAt^Rs&$?3%NDs;Xu3z7=sryj{E0I*e`A6Snt55-j-0VN_RM<@D@~>7Tzk(-f~h z^W@IQ-*oY6IdeCKiA1!m6PG%^B51D7t%u-j@*EKb;gyPNtg<41jsgU2PcXM+FKr{$ zpdi<=y=uD;5pzW1&($Lmv6mWB{6(J;n!fTKFI~sQqS=({#j|be?Bqhl8}GDItKp*b^hZlo!1Wk z4G{l*J^``Y=hB=P``&qX&5Y|muP#{4^DWOae`)6UHxH_p6a5-QznYornd#^+tJICO z=FGep&MvUM%3oG)h1CgdwGem%)FqqGaKDD5<}+M)jMKRu$?b;>H4MlrYhF6?f1U1Q*sX?zN-*k~EDEX0qg7no0*7i^+VxSE849Lzizx1TR9B_N zBs`+biORiI^1ylMlVziEPHDMQO1p7t<-9|C@M)t@`# zq27J#?PcU}>4=;rvdA64>a0)Y3SJUI}BV*)SnNDlQjm(}0<+Ko|{UaCU}6dlgwY zLe=lu5jW@;F3}u`a+cz4=(HG5zKkA9GXzAhl6?U==@>vvwZ2p0##e4#)HycCrZZvC`05pcpfC4b_w&_Z{PbS^tq}= z(W&EUW_J9Y`gp2F39|cK^(8kWcLyB6K$uB_%Q`4lVMVbK<<64b04674W1fxI3w2Hi zIkszhiVEW>6ml#Qe1PADgn9*bMNd#wgij0DwT7Zzb7MaYlMHo_SM5e5(2|Jo@ZR2_ zWv4>y-bb=_>>5$7iBkE2W1uICsP>&XhIMikaI2^2mU}iFe-_~Xd z76eC2>)2k8K(!z836n{Ps+kfW18idIZass;J2C4!V3@{fqh`=16GHQhLI$$X6{hVXE&91lA8R)D zsOhnHoxaxStB0?`c8JhSb4Y*=kt6-oQ64+0<3g-c=V(LRaa-|^_KD95+naxD$7?T= zzJw%v`57|ln$Al(KjZ1p=L0q-!z^jw<4CWanrx^$Cr<3tx4KR1C(eg=R))gC_0wln zD+r2kI8j!RJ1OmQlqCt?1uuZ0vv|Ln{~WscqRsg~ta_>5s=r>iw-WPb0vkHm# zM6mZKdhwSO9JW=(x{G#!AOQn?xclHE3OK&?3kO*DQ;|IE{lTASmm3v0bT6Y1n-now T)0mpL-I&5a5gh5Y)YtNSl|u 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 IJ{acz1#_$?OaK4? literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/SIESTA_format.doctree b/.doctrees/docs/FileFormats/SIESTA_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0e37d9004e8e5f0fd9d072f6f2df22872b92194b GIT binary patch literal 3580 zcmcIn-)|hZ5tc38Nhj&fl484Q6E$0>btM~e zORo9D);$<#9|A-G-@^U}{RjIW^y6}O?@mbLyj0Ku%i(Z1GyBaqv;XM*>p#Pd`p@0d z731Q1O!8dFoNDiOa+%qZ3gf@^r~mYC{fQeW@Kl_VbyJC1<@Kp zJof}Cv>4C1VRky^@;hbG!~|yb{`E*4aHc``33x_GKGUj1cIf9r{k({j~}{i!0BLX$#B~_b>`ujCD28R)0e= zo~~l}=eTuq6~pew^tuA>@OnlXQur4eZnxE;IhHom-5oc|tO`_>HpF!9_FG9!X6J54 zQ)9T8gSihoCZ3@t3>6^6{+Fb%V9$=r`_h`q8h_4C&)r~7!EeM!<*~>KXxNal!eTF8 znBtZzEO(owRRvZk0WzvGarbypix64S;Eqm^eUUOv45My<# z)N{R@PVF4mjouI?kTqzaY)VK5NPk8{Q2rY?;sQBJ0ScKz%e#R!v$Nj zNtH5CR6!Lo9$d|gclTnZSFH4EE8ZR7+PP(d{o9SA(WL|J(GS-*Zk==oApihPGvud0 zKxl~t5pzrC6zR^fzKg!?-cvM_Do=BYu9o8(v`r+TpGh%8j7SI10aP^AYtQ;_M68kN zQsnN|%{I4Xm3H_;R%-zV^pqe)FnF())W{C+ekrOnwYf~M%Ydf?l$q2tT|HSt1l9SP zYaa1=FU`3o(;@`Yc)8uy1!`;`!Dv)M-8*1(*r=s5G~s$kco?2=iKZ&_7rdBYEyw%b z!+_H*fzQKGT!4+31BC@Ix$%EG_@x_Fv|7?d2xdP>rUbr+%5d*9V=DdWWCF1sR|~_W z7)v#uc=sS^)(${3HMGR*0hPNQ$j^T9$!}1rBQ?uznGces`Nyq!R4NI0y`pN&shQPx zp!z4wlm#vu7&1i(<%aneJMI{OEJ2D*ZFYQ@>M9`Q#vSN|FyuOAe9j8|0N$-4bXB*n zOM)tUWl_``iF&VI$7Nc`j5Mh|&KQP)3@<(w8?s!d5T~zfg)738SPwG|3Ea3LBwWmZ zftD4H0#ATbZ|U(efVYq&mSULVt~@YPPQlpPEZ_p8m^W|SgA7_%DJ=;vQcSdgWox$& zn;{EeEoPC^ZrmmnuRXet+lgF);sq4B$T^C`q;ZO^fpZ9_04;+t7qH30%=s2lXb`LKta7zqs^lpJ=xoHlyqWUFMh>_R6|JkeWpWcf%lNzhUOavZL^PjM?iI zdu-is^%d4G3^NWO1gCIMl!Quc^`i5ulBkEF8n3*Z%A!L>t$P2Ku+tu_Ssb*t)`yPP z?1OQY2^9a}wykCdjSf7LNgG(gyS+>nVfaG~Xe8U8H}Y?hg|GczP!kw3QC;`|&_F@F zu%nYzF^1ofUT73nEA4t-J5jUcC{$0_m=S;dN2FW@L?!WkCy&V|R~>tgv~gm3jDZ+RX#WH+&dIAAGd@7h$YtbpQYW literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/SMILES_FIX_format.doctree b/.doctrees/docs/FileFormats/SMILES_FIX_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f5b09d000fdb491a02ead7c119e9aa46583481af GIT binary patch literal 3239 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 X-myXXmPyMqCGr}=z*0noocjL% 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/STL_3D-printing_format.doctree b/.doctrees/docs/FileFormats/STL_3D-printing_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1ea4258712b17b3aec96d07de1d5e6e81f9d43a3 GIT binary patch literal 5871 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ShelX_format.doctree b/.doctrees/docs/FileFormats/ShelX_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..73d02bc00e6bd89b16e32b538f098008cdf9ee56 GIT binary patch literal 4674 zcmb7ITW=gm6?S5e?eS$|J6AUGX2`O^33w(#NT5XsEsG+MwT`r`B6x^eHQhB+Wp{V= zR#nGigb_Tfw3g~^3jsn%z)wI(JR>2k5PyRQg!V`9RaN&)dq^_b)s8cD>eQ)oPJQP# zzij>bTRRK>KXXMDjOXJXNs?S7R9Ul{h`7vXuI;Dx!LRI@-7{@TPLwEROs!b}N6dJd zNSfPc*z7od%~RE@1T1SJM|66ewaj*}*NuM6X!?_AC}c+TJC?0Hvu2HGE%~6-xY%8^ z$P)#jW+hIEQXt}cD<@g_wwjd1bTJ_Dv82PmgD*U>W<%kQ@qW0&mS#nhkvn18npsMD zPVK=Zvs@79t}RHYVbDAPAq*$$IkCBXZ+au7iC@cHTGq;$nG7oyNBg~ur0Ws?L4#W8a_AhxrNUg z&uq!wWDmf8Kd`g6*xiFAulrIi^abs1f5^D%;(r3ANU|^T^t95oS8LdY@5xA#f;H@7 z-*YCjN9L6hrmDa9`l`Rn?s=74FyXuN?EKC}JK-1hc8GxKvplQ`X5#}G*?m&D_fx^X zM>E8!%0GR5m7TYrHoU#+y}d5{MN!IuojNe5YPHQ)gCXLYW-sL0sJKQ_l*RvX07A=w zp|NEy?^ouv&1Q96A!_qcgNgmDdP2t>%!V1iP;-#=b1;qPJnNZd?6Q_ zkTWO+hNkwliuJvdPJ_K=u4zefl@eD*qC$!h%nHp=OAAd>d$3^EY95+kS-P5h$#mjU zx;`eVx|Tz;QB!=Ub7)o-)f#w5Q@1^7(uPvxn&xPhmY*8of9H+cnur?aRy2o?vJT6%6?)xJVz0U zfD4g;%bIqnhx^~&R~+B(T-=PPltM;~>I7c#6c29q z{8Lh)Xqkv;oHAV{QX)yf|WSP9#h%lR1f_fNC17NvlN%LH5nj^63y(vs@Vl5Go;2UJSSN% zQiVgvx!F>uxhCU?@exb$0e+WK;h?{vGJ-(+s6<>VIO?ijhh>zCm{hLajTzeh7!M!f z4PN#x#OY(Sq33>v^wUn22hM>W5%YWq4AhBX$E6CS)fqmXIq;@}glKeA-mwK{vH|k8 z(x*^?QB0%f=6VdS0!`KQkqzxyFWfwx2cwNcB0JK4rS#g_zwijy6 z?$Miw`J>zJ&kgtID*lwF?HKiG0Shp?dDc%n=eg%PFWHV8>2}$De-!_?bL?qpHk)tl zb={0P5aYCmLV@B!y5hq<_JDSDIU_~>tV zmwEm1yR3WkSNHC(7^qCEs(6>ok^=_9^hbw}pSZFUe!D>$tbYVS3vu+9AkVB%9N{s( b&ht1e6Bkn>_xsCQ;)+3)H(jHIA3y#F54Gub literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Sybyl_Mol2_format.doctree b/.doctrees/docs/FileFormats/Sybyl_Mol2_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..51a5b6e6194880326f29513487f0f93dbb2c32fa GIT binary patch literal 6217 zcmcIoZEsvh6?S5;?e)vXPLnj0IK8+uIHukW0V%YB@S#;iWwL>!FCefkv-i&K-1U9q z&fLT+5mZWB#c00u@;gvbrAXxuAR!?k#Gl{;LP&h)nVI|MO~|ej5y{ccnRCy~IrBVc z=9~{2zq@gMM*owic+9-;piNvij9khyx#&ht8qiQ=pJtbToju65WHTZ6d6Xs&&EyO; z9On6MLc?qilP#q$JfF971M`9;16qB~8uDDbZP|B6y^(LDlQJLs?|pq(TQLz;B%N6CICifPy* zJ?ggyo?vOO?L|+N8513t<(-?JPj70UdFQb(v=c6}w8xrqfm26#QCLQvHQ2n0(H15f z!V^BNP03Ad%2E-vjHA|8;9q^sQm(&d@zK@GI>PvP?j3rdPGqWYKF;*9GmCwleTB`k z%`SVnoAwA>!||}wdl@@}zjOFIkH44pvXot9m!W>isIynt%e!;%=v9NC%8TtnAXn~C z;##+3)w3biSDa>psoU^V}o1MT6Uro?P@#_Wn#HeMr`4xbQl0;Ro4$MRDs{dkhn zdr-P-0)-UdB%Y2|ZHMxE+xooTee>>3>#fMyx407}lv|wKqpszJmJS z^`l9V|B!8Jwk$&VSCf=~X^x3Lm4`oqQnw<&MBe_OwgXL^v{x-4R}#>4#{idSq#(YL zTa~<)2)>F9)DwYX;8PO8>iY=@H=YT`q}2g@G5rCkjP$6A#O?|l(gPp#CTCWhXzm>%GbC6)ozfVKlzfL-AMcltkQc}eIGu(Pm>_~od`*tegR9N01 z)C>hnJvXJ`sJSALZ>_B;^hcKO4M^zn%iG4Q-xN03zqD6}W8*9G8^<r=$1fYT}HUzY#mU4!)2(o%Eq!p+JkWT|DXA0*OsD3_$o&wdL z)~kW)`u1Cq6-L6kuM@k@I=v>CTwL6 z8-9Xq=3Kn?jQgu$@S(DHEDU}$MK}u#t|6=+OrftZXu^M73_e}IcoL}8sxQ!b=9H`Y zT%YhJFcZ@~3UC)!d)Sf}A1m2*P{^1P4rNTnHfWKtx8$Z))Xt@|Vi5jAMw%^N_{MED)5oXQ@`mKWkxWdj$H zDsD2_Ohtd^+dJID?+ZsKZJH!eVl%w1e3~HQYO9XO z<-8MxeYlB;crLJtF3Um2=4FedBC;!yJgK@bt8N;^b_qcQRtr3!FA0gS44%>w4Q_S( zl_=&kbtC&AP>@;!(;`mo`j;9d;OIS%dj_JXY}ezY=PO6@T`m;V0L@n53jz{1)79rnx^~$#p z&sNfR#>^{8W&ToO9%Lm7vime?dsOuG8b|;gCITOeH3jK`MXq4k?xNfPCIh6#oStRY zvw5r#awymMC=}$tX5N6IRA9jGoF6IZuke6?Xun9oYmPv@pvPut`;kNP&~B(ppEx*p z!#6}(hY(-yqk(d$TZg)0vFXC0dYv;=yeNa3z(LOwvkJ0dlWN{C^tUk>IKh0x7hHECp9 z=C0WoegV!8AE|ribN1Qr4{G##{Fln6QWm2aUZ5eT)gNl@L-zThRy<7EY1OOSV3&-A zOYAdtU4PCVrE;}??0Va)jtB54N3b^|QS2`CjKg(_(L-kzFbR5*Um{7Xo*5IC+RY;t zo5ia7qti$1BT*+p-3({PZRIn#ACY^UC{>vylgm!zqu-=_!2PrEW-k8}A^JGG10JFC z1V*BZ%z+%UV3~sIV)XG^e8fSX%RE!+ZRkzQ zlFe;b5BR$$CqLjn#Eb8T(0f`{C>!|=ctXx8kbt&tcW>TS*N|!9BP|vka6Bo7 jU1Lu!m(kFeU-m-BPhG{af$G37x$2dk=TY@=Lg)LxhIalc literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/The_LAMMPS_data_format.doctree b/.doctrees/docs/FileFormats/The_LAMMPS_data_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..21687ecde4ebb86192f182f1feb64899fc4687af GIT binary patch literal 6212 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Tinker_XYZ_format.doctree b/.doctrees/docs/FileFormats/Tinker_XYZ_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8972aa38fbcadf3365382f3976f4a4762753d0b4 GIT binary patch literal 6900 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 V&ya~9;g=F$+N&z)2OiAN{{o5o>U01A literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/TurboMole_Coordinate_format.doctree b/.doctrees/docs/FileFormats/TurboMole_Coordinate_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..348c24d72a9d3b45f4d9f778a5e214499b748730 GIT binary patch literal 5913 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 Nqqtzriwa%a{{d8HmTdq4 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Turbomole_AOFORCE_output_format.doctree b/.doctrees/docs/FileFormats/Turbomole_AOFORCE_output_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9164ddffdf6391b70f18ecca22f191a6fcb3bd2c GIT binary patch literal 3638 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/VASP_format.doctree b/.doctrees/docs/FileFormats/VASP_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..05d3747158c6a8ae629c44ab9614e38b0c2ca503 GIT binary patch literal 9717 zcmeHN-ESR76;GV_uHJ|EPna=lS7!!*<;;a=A#=gc~_YmxnU_Qab-? zdM}+*wb))0Q4%{mReM0;cz)oUMGenxGacQ@yL+aJl{=g4;dS$N~>)DvOOuc=oW)-61Z7i42UiP9cUyhS7 zh(*{zO=|*yn0Rlr?2x`t?0e~I$x&+ z7_QT6sa|G}c^~mU?CtYTu6id{lcw#>U{So;o2hpgzmMSe2!0>GnI_(cym^qHG34GU z@5Gh;TBaJbYqw*&=T)cv^1{MP+;#=?L+0AjX015tW;17Y=(0>2CLX78Y`G$ApZduw5C_`y?sSTT$0OfPvFeVV8zi*t1aB$9K}|)80v~ z&9Pj&(CRbB3cb-+uJ7Hm=edNFngYM;OQQ(V>Qw-gT_l8_6|4p1F%NnL=G%)bhU)P^ zWTeD8eHP5IL)PTXW=&r*SfO)!<7p;6&YZx9ec;iS%oi*X)VJi%x`~kWL~wTX;-x6O z!()NfxNw2=Opu?Or|C6$8^dXK1x%-S5R!6dPRV1q`#(!S@-h6+ z(P3OKgSTfQ>Gh&m@?xdmU*A#&clR>PY%9YLE^aWFx9lX4i_Df$SLg|^#lDoV=qP~= z8as+&m&XL@4NcLDxgaymzWQM=k@apAaQH_KON*F*#Hl_!O7yV;c?t@RtyYczs6&5bPO8#hM&0@{Z$q|bwH z7(=>01RWXDJxy0Jq~iAX$7S;tInu$E~v__Y>da1cuve!~b`ZU%2IT&tV{vcpEi=pceaG=c?< zZfp!^>EWDyeUddAjk6c@^EsTck=Zhbm?s%hTZk$a8J7+n`#F*jU8Hre$sp&~f6B?u zFxfeXnZcu&&H1hToI;rhb9C{!J6}hSjLN{FIN#)llXBxaGn`=ko7l)m;dGuDMl%)L z+)rJ1Wt)4@VMd=l%mER6bY;RhH(_zNPW{ z&S5wa=RRcXA+d9!ujgPB!#S}-V_`E~QS-xtxAYqQGaYRDIXF%i;22C#j@!6^!F2zz z;~rT$ZxmYi>CP3>WWJrB&lU&sc>(Ri`03}hUI*)+T;b&*=*Sgb(sY&WytQCrCOc0h znG`5xM|2XJl1-T}a&!i^0k=p#E_Yz?RmfQ8*%RG|5>s3Im3Q;kWkl5_XgLQ^bb`H`xD7|HrUV5-|yH;RssPCg^X=bnPO43|{g+hYC=0j#? z;5C?TTQeKnB|leCsFsJ|TaFe}dh6ciY+*hOcep?_Uru9Aov75;maxG~$BvhJk)VI{ zDfN!?JpP+gr>LnYSY_mk%+N0~`Z}N0?6R_8%BxW$opkmY80w?Ne)Sk%N01^dl>0b} zcn){1=7yz9eD~7M_h~IBg?e;bD%1z>VSXT}%9PJGAGfFidZ*N38QY-%&Q9eac zEJV^5b6@iA&x4i)0FJ$Sx(fY z>aYOIqo#!iT(?+jD2`fr?G__u9kOCB)DUyZ!&?Er!=b(rRrlyy1bdRG2HZ;9a9Ji3Y?p}XsJQ{4kw|~*VVL6f?L2vMD?yz)e_lSdTL4dcs{oE zqs8MmiY;9vqiCBdh`u9J1pivo6)vNiORA3ded%M-c^mLk(}r(3hrIW(tsnY2s~M63 zSQ8#p6hNj_O$DfvC3c%b<1XGuP;XZc#R#lp*K#=uelCXb0h3iV2J31;OlZV+fmM{l z*HdpyP1}i#tg=asP?>znO}ag+fFKmB8+@QI4() @H%w+_d~>lRodyXrNi9tqb0_0aM?5Ke z;==MWnnk0xAwASNqPV@Bs)vbEPXLq_(#cpJiRG9;`_k!^^U&vX+;aNZQ%lMIOwOK) z-vrs)JZ|`0w)7Zq0Lz~21{ka+?Ix_qm0o&fLLCPtyKs$}c@|#J5=xva-#=XaFarJdR_O~)byL0b~Ev2>7K=L?~G=Jf5gXo zpqc2+JyBCt6lf`?oUHy&$TKZu>^Ys0zuIExu;xHbw;2Tmur%r6zQ%&OwuNIYA60jn z-NGM!JC?LjJlxMK`-1HfuE;^j9eBge??eIWm8NW@#xG^wOq@KXm0 eJ!tSB@Ixm^Tr##cS#{l|T_SU+6hYy}(!T-E60{`% literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ViewMol_format.doctree b/.doctrees/docs/FileFormats/ViewMol_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..87d14dc07b67569809f6599664394e4be5de4d57 GIT binary patch literal 4448 zcmb7IU2j}D8BUYTB$JP6lD11J4Lfw%k``sA7mI{;C2l|!C~PXaP>>)x@|@!tJ2~h0 zVEg1lB4}Ay(MY~qbAgb!MnXb}zrh7s@o!dIX&>9?%$#J~&UU1c#;+gS@B8|BKRh3{ z{_=~>IsY-&Rl#_E+9yepi-am`mJ<<|8O^o*#6I|gJ-0iiBgu&prHrXHb3nw5r-`Jw zJ-}qw;WbZHzuKU!i5%1Ea@I08`u$$?jMJ0%MH-ES%!q#1vZVuSR*2S;4@-@s-BAlX zQP|cj#VJt=Li}#!Bn!Wmld_l&h9o|cbQCc7!4qq`$2cVu>25g1mS#zlv0G!=idjr~ zPVL?`(=G_~*Oo1qPBbwXqjqg)GGHR316k%dm4g!@j|QTk`H&20+8=Yx%3+_27s|pG z18l1Xk9kTTdxO>BvIF{3Xq3G=!4)X1b8gDcUMD0bLZicQWvG}DX5;(-caO; z>WMr(dsx$|gMcApNeb3j$UgL@b<8r&3Pu!HU!HtqZoh1EJ0-!zS0}-rVa}gs+58c^ z=ZU%u@b71Ve-|7?Ul{^F189HBJ%kK0=4_I+tYh>;|{1I1VSP=kJ=pjXNNkM~^m7x9~C*V6T2M6f$ z8p=McEWQ1*?Hfe+|LYOqf3vKtiO_+y|D6SPM1V_Pmk6)M|Fl6xpS+p}m^F!1xf^na zvZPMFLEf9n8_D?F(6X6~kp-t3?3f#uE8woH4wh}xdg~o?t3q5UAd}izRcK3_CBU7! zFy;T=qWL;KEl{{3R9=c=8q*{io<+XYp4-FrwYfRArp(t~h(f78hf)AEm9JH-&z)3b z_LjM+CCODvTuq4zDaMkj&@!~N&?L2cb7rN+&;-NMRjzBM8<*16`lzbx`(~|{_-~+&6Dl7)d9?mf57I z9A48zm#PM}Oe>+oa*X4;Cq(A(8W7-c21y6*kEt`tJ~v&SqoPFMg-C$1rc>(C?)P^U z$M3tBCnGAQkP#z!l2QqeJ5^(C&Gq2v#x5v~dVMKqxx9P0%f?2|c3-G9wi~k!;nhLr8+baW@|7;AsBp|Vbk>r7LCxz`cC@|_X~$8 zDt#={+?9+3SH6m80Soow3sFhXUv+D3<-31!C`JQ ztqb+;U;we|7iXG@yf5Tp(#>IztgO|MvvHA!->4kr5 z`S(DT2QI)K5%YWm4%CTZ%cTmW)hjrjIr650glKdxp(6{d!<=#-mlkhJ?3DE(-=wwi3{Tz z7c6T^0uIks@F5%e_imt!hu*v*oS-|GcI?!r`bArp_D4pR+LeG?SNE!BPzaG^Vo|yj zV$EtS(iC?A8&GJLeptyrfmc4ZPZ2O^?Gbu-Vk=N295~4}O)=g;U3I1qb+vR-6YJ*| zn>2`_C&shqogd>0q@!CekfC?)a))xS$5js{uQv&)q(AA15C4w)oYfS6#CnH+1MXG* zooQ8d?wVP2q(E@~WdHFKS8T#R8%Tcj-vekI4*weVGpiFRDJ*B;?-fiD1fV4&~- literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Volume_data_Formats.doctree b/.doctrees/docs/FileFormats/Volume_data_Formats.doctree new file mode 100644 index 0000000000000000000000000000000000000000..add2f87686a44c3611a3e050f7062bd7f7691dd8 GIT binary patch literal 3580 zcma)9-)|eo5tc2HA|;agVLMHms9}}Fk&%i_&^#0=3dE`7CUMIciQ)FeSS;_B+_m;@ zue*B|^$?(aND%@1md$hi#{31%w|B?miE@GpAjF-Wotd5a=G)=FTi^fK-zfgvp2@gK z7b6Mn?GpY=< zE!A_jI?h{ee>57Br%J-^Fs7D%==t_D?{=uQT1;~bzroL@hz)GI?MPB%AjJ1pN|W+i zC(g6gVoIYk&1R(zzKGbn-4}(6)8NAAZrjp%IN{?QHB&L|?co^QG?sjrGv zdwD}K<|<)hou?_&<8!6Y#wug!lunr(&4uOpbR^VEWu=KR%$o5-A=yKv6Kc)4ygCVS zkxDkw#`=89yKdXC$O@I#`Q|O&4*5C3X3GjIS!2uHYUFV^D;*T+g!a}Gwg`!Txzabj zC?_BCclq!5CO@9=HzxU%@_i(qA3pQ^Ha@T5^C~{SdFFHeTYeAfcT08tCV%76RuOY2 zQc0%rG;Tyz2F*8+cNJO9no(DKKj(-K-CO@p(f|$APKyE%Clhyk?a=)P56P4Jk3ad~ zeNyJe|JP64+t>8|N^@fbO-YnbSyT1**Hphi@gMxNsTlOh{l_1FRTzKw+KIKL(LW)Ycdi}y>dD{8A0C`$8s|hhU&X^*Po$B|V*p&1x8@W6n19Ki z@Tbgm61s?4X1V|TfA~Y=(5!&c#BI%`n)*xE<|2;Ks+X=`S*it{G*6~Xv)Dh{a61Li zj7sGNba&A4t4s$Re8i87`nQ3HKd*zv?Nuc|J=ZkLnD%rXM}JzwQ4e{qfp_9=HCp$y zM)eU}LbBE<_@l=CvgHe@XHDR~1&5nW;JRP4MTS-*U<=$jjaW>k7o=c_uRYIr&$wT` zR0Z4ug(E05gIQ00c(Vp#lYlirG!aVNXR*e6)jWpK0Hi>X%$wyJ6hXWGr@mwgVN|KfaTHG zuWqcJbo=1~0Gi>*j|>ds`jV#eoX#229bcw&pi?gL#Hxaq>6HT*%#=s9xh|h2}P5^Xunb;OR99Qgl}+S zm@XQTrNLT^dhdeYP^WSUd>(}60&LPbP$)$rtpEG|J8qD%Y(*F0GQA*~Qp6rQ!@bI_ z&CG}6F~nw+U0ANtk<#}Z{GD}M)ec4r@JNJV5n#cL9w{l2ZrlM6$@X6=`FF^|H~vfX z1m<&e7iN9~6qF8YI%$eA?hed_L1QhY^_#aGprO)*IXcHs!msbX=idJm1<(Os!?OCr zr1eB@fyt9HX}1xTP9 zKbt)KB0MeSuP(6N@&^pYgy);3J-1sYrhxKpHQ=Fj=HaK)P8>MDqQ@`^;fKpl`dxdy literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/Wiswesser_Line_Notation.doctree b/.doctrees/docs/FileFormats/Wiswesser_Line_Notation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b14eacacbef41ea03feb64c2d2acaa200a1fda4f GIT binary patch literal 17194 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/XCrySDen_Structure_Format.doctree b/.doctrees/docs/FileFormats/XCrySDen_Structure_Format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0e9aae69241e9228061568c569c61c8f5c63f496 GIT binary patch literal 4795 zcmb7ITW=gm6?S5e?eS$|I~TH>IBBvZI04V(fd{k*t(L4JP=q7xt|EAdS~cA@Q)PE| z^;T8KGYBJiSZOWQ+cpA(kbqx+5E9QwNNC01-~l0i1YcEk&$Nd)n^16FH>Q?W|?)bh|9Z5RyJov%m(!4c_~oWR`ORt#rv2O*@>J0juR&d(mSer9D|>8I`?b zA&+_@r&*u$Y0@2X&5C}Pi`UZp5j`BMdQW*mz3!@au35TL>9Xjvwpmd$(p+Q{kFXY7 zwl>?t!!C9`_Ah-*N7h*v-S%neK*0j`4fa*G z$nG7my9Y&|uq`-^?Yu16HGFR1a}%GpUzP>C!ybbDfoEs$u)EKeoL)Zu*c?&Crm|ua&gh$XZM`QEvWF_d3t{5 zte&t7yYGW&>as^Q!EAg8C4=X=^{w*yJ)R*>MgH-{MYh&{(XjTav-Y}h7ljE2uIkvH ziq$q-4Tg|wn!c86qv9G$QRM%}0YEK#hQ=dvdB0MxZ8odzh)JFe8%*pcl?yGiR~u^l zOwB>oPr)>r=ayGsQuCNT0aNBJg+v%h?#$JY(7gTVd7<+{2MVGmH0X;gR)GcSBk#TM z)vjf~b;`8ODot}n6jzONs)vuw&GU|{^xuO-f4sQce-HNG&C{}m^BS0cGmrUK-X!#m zv7La4Ptj&EpHA#hr73xqz>e!RpwaiXJE=+RiwO|=Qy~2FB0%`ZJcTR}{yvY%0^x7a z;@7oA=JulxxFY?^<#2w0GQlN<Wm$&u7m#nS_yMN~f`wLOC zvLh_ls%0S)tTwfXLfiS-r?|KU3FWvnI|CuKZ7muP(cNv@E-EY1aAbXB`@N1WLU|a8 z)b_gyN8a)jnovgxkI~YFb^nPQs|{5{3NuKW3#r3|zM?SSWwXXeGFi6FHXU(TO%q+H znyF=4G3^&aT-P}!GK1ADZYW7XX~X;xwMvzrnGVlTZ9?Ee#NaATyU>IEZ|^IP-?z^` z45^ethKyu!LM1G2MU8Z6u6Ro~PHDMQO0zrjWafy&1HjL8{JB#Z>fN``KA72TwyX}o znqn|f0-Z{;nUHK)kRgS|W2`S@f-qMljf9NDn4*tHvmSB4u}1y}hcAi8bi3&_ca0Aj*ZuFD^8ecg0&nopC4Rc6Cd`UJAu;4n9t*13AO z*8^E~^RZ?k>k2vSmFBwTbOL}gM4Jcqpba;xpzq&*{4LnCBL~sU@s=_@{y}{_f|Xdv z9#PrlR1e%8NB}*i(*&2bHR&UYV$I5Dt7aFNOpzL^@SJ45P~{dOr)EoyGfhSz<3pC< z1N<%}!a{#Tr38WYNrAXlFw|AI_RBC45vfeO8!^lW5ghO14OVt0#O@>XtEX;Wbt6-i z2Tp+=5%FvQ4AhBX$EFIT)fqmXTJR=<_-M3q<53CBq5DL)J7`Tzb zV>|JlAmN>%`l%RXoHm#&mTd@OptdCglhOuJX2m}Av^`&Ib`S3$<_~Y#uN(I3D!vNS zwv2k5Lj%lsj`cIgdFr@M3$|ltzg_mgZN(qEkG&|&X4BVB*3F0mF;;pA`vV(kUnCRwIM!=3#0hu%%!%##R<~*A%=yU9QrmKHefF&C35p^TP9zGOPD-;L zi6ntvpaY7|%9D!zIc)Q3`5}S_11iE0?SH~YvFSwN zI%!O}?|mPRkQRD@2S#vyUvtmS(x`-(rtAKqJ87v8{|YC~>#E;p!Qo#l2;MM;nO0T) zE}12Z62$Be4xT=@HORj-LQbsTv7nzg{IfsLtWT`s0Kd+&C@EqaU_<+^XDzmsp-Q5* JYr?yg{{ec98(aVY literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/XED_format.doctree b/.doctrees/docs/FileFormats/XED_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7f0bd174cfff82e5d48cefb240fb5aabcd4085b1 GIT binary patch literal 3176 zcma)8TW=gS6i%D$CY#IV(hCI|x};DNq3q^?2ULVmDO8|{AfXCXY9r&F@vg0S#)Iu? zHV>8Hp;9CKR`WX%5W{C($~-&%hjug(>JZrx;Dq?104<5b1W zc()X*C{I{w{cFGXyMN(#T}RVXqjDWF@8+NpaUo;PQh$t>-JoxUH2umz+fqGd)6aR! zt@ryq^5olZ$Vlmg+WVd_9(%V;t<_?fTeuBw=0$8^(k(`k8UrDoTPaP-r=>X0riUSo zPBa^pI(QH<>`hp_UwZJlTeNf>^gUm83sR)aA6{|oj3RF9`Mm3pCQ+Q)b$-7LxJuYS z=V{9H;8f|8fy!7qq(dhAV_|td>5ncJZ=hg_UgPmD_-gUYS~N7isPl6@==-V>St;euKtKU)&z=@lW}Oe4g(d z@jFNPkn#-_n{OR^ejUG?_}#+qyM54?@#y(BtIM_PHXylp8wK_%bbB^i(2w9|ezu_QT{g*Z`2?tC0As{rGCU&% zR9|@hjISE^&Kp&LaVTsuu`*Nt)=h(an_9J$q6Qc&s0Eg5F5NXO_Hn@tB8X_Z=*f{X2+smwv#riZju zZnNC_BffX!I%5WQQLD7aA*Sd6mL?evE2TpMFDE!ISI1mSoYt(0NML?=3&$-)sL#CH z8YyK1L}y-t>}!EzX`YZtU{0Wa*P!8KBvMIea0VvdFC|Q}LPAc#a8malc&t9C8WPH& zS*Elll09cA-&MEFsceodx5*{~RkPIQrdDdXR?LR^81A~KRHvvKG&G|LBpsALVj(I2 z%5_DG8WDg(#nAGuliSh$=le$B`S!(^glVlb;WUjU)2Mg|HL~8VmzAEe(kiTYw|(i& zB@_G)*DZ}s1E@c}eeuPmFWp8+06;Sw^^r)(yERGEaZbk!<&JT_ih1F#X%;CRlbE5W z#&9Emkt5fRR60VAD2IpvRP^(S=WW-exm9E;a#us2UyJi3BMtsg)j}WuJ)Ke+46YZF z0@>m2r=rZTJXU0q1UzkkX38)!`(*(Uu=BYvqQvJqiG`s<84{_YT&#Hkj;$gY111zC zgVD80jf^k?iurUiJi&=!x*#G;gS8m=Vl-mV3Ur4LMakq{SO zX}bu?tOm)DBKE)xcZ*w_nfrqQ#HOE}S+3H)(&K@5H-csn05pkZ39bjd+$}-A|M9_R zsApG?qD$t3WNQ9iZ5~Xe0k0=a_XV?~!Uxzt;5LzP*0FR53dNTD!zH&3KqhF46*rrH zM@$wFa_%)WRu*y-{)6U&IOP_m;8@E*U5|9^A6lp9# z4ok}IsQ}I*4K4o0Wn0x73_A3YNadkRc()QM zDN%0ZfI+hOu#&$<6<+$EzzOUwU>9~z0~C}Fn|3lQ#tzmsX9mQorOnK%S33T6xkoqW z19$KpO0ENjOf6RZZa1WsL_uIA~*Q%!16}J$s z9<2NR=+Td1gp^A@x>~(4hjrjD7;`I4_61&7L>kFF4*VF0J$*S2jlJrDVco%+{4d!W B+mrwR literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/XTC_format.doctree b/.doctrees/docs/FileFormats/XTC_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ca514ac2a8c10e84a5e846d11c069447d88c79cc GIT binary patch literal 3433 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 HE>Zmp4zC}& literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/YASARA.org_YOB_format.doctree b/.doctrees/docs/FileFormats/YASARA.org_YOB_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ed31dbf1c80c06e4814a4bd2a9ebf2501f68d2c9 GIT binary patch literal 3268 zcma)9TW=gS6mFaBCY#IV(x&tlx};E&pzQX62h@U4s8oR}QmIs^RU28}8SmQ4%y_Up zN%o-vr9VVB028T zFid2~w6n9J46>Ld#=Ub}zq!|L)3y{n(lS#4bM^u>0xqIZvBd3Tv+ebbh;+9!&@@yH z+4wkb*c;t$hrHPRY4_=FSE?a-@#H%)kSeC;zT-3d&dyO|l;~#$9{3xlM5tli&IA$F z8bW+G5*im@vtgEw7kwHWC^jf`@F7BH*G5!RMR#!7&PeumipyMPXAB+sqmIwn=}08Z zJ-%q0DMd8K@hRIPb@*5{tEdlpT*j=YvLs=ucO=z8Po^yC(>{y3Lt%K1aiBK9bcTldaQM^|a%vOaIw8O;JCWKzEZZ}6ti)h0F@Mwp0AY}uP*a~)*2Qv}@E zMDSaAig9ZC89VmR@_ywvE`N01;a~7i_!QsRM-;*fO;ze|6++uN11O>LA+h7$+* zw?2G+&tCt}<8JKy!~gI6E}Z}7LlHjU8+l~SD$=aa>XdBS>*oT_W6$w*R;6sy-YoPy z3p&_5{Z18ZbBfS|QU2QTSA0R+kIq#A zQ=qU8g~?zlXRAwV7VtavicvJt5uQ#aBvo>#m@XLGFw)S-J-%S)DjgPLnR$3zwCx~M zo@1nB)Sg|aBsmNB?5t+Sh-8Qov{ILp0We@#0!BA~rcnm^*F~u*Gm~b?@{*$(x0QMJ$()BNPWxRWaOH9w^Hi(x6x>l_3#3WJup7 zJI85MFB^7+9Sda5P?PCOsbL!->t{n;*FK^uLDrz57>yxmA^idKLAkfKEfVC202DHW zmb0zQ40gWS(E{JMPHz&XlvIS%B#f9s#=Wb7adxT5^n{g0ZpGR4GdpKY@ZW8_FgkXi zI(qB$#+j3L*#`iiX^#9v2*}yRh$h2~4jIxNVtok>$X-?~kSZi0Lpcs{jQ~dWY%`F_ z05KvRA_P#;6^n-60aIPU%pku5?C)_CN4TtIXde^`4R?=c?K%J%qbQc#tm_@osYl3(UDl(- z&||{IkVp6dywj2IB6dN?6fFBC1F1C4PlA z6@J{wyKh+pPJkX6h-3f^R8?Ws*9p|rGkPNS;Eg0LsOZO!0|(5+eN=31MsR^M3{EF@ zEr8YmVKEgE!D!~IZ0`0-ITZk`(V(blCw7V@hYl^;&K9)<p9_7BFUz5yd@yYP3xd`A#sB~S literal 0 HcmV?d00001 diff --git a/.doctrees/docs/FileFormats/ZINDO_input_format.doctree b/.doctrees/docs/FileFormats/ZINDO_input_format.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7a6b31c646b9ad9faa677ed573a0372324d30cef GIT binary patch literal 4559 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 IZLaJ82eOq1UH||9 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Forcefields/Overview.doctree b/.doctrees/docs/Forcefields/Overview.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f4f194afbd39db71d8932bd95557cf0b8fd3dff1 GIT binary patch literal 8510 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Forcefields/gaff.doctree b/.doctrees/docs/Forcefields/gaff.doctree new file mode 100644 index 0000000000000000000000000000000000000000..af6ab59f9e4860b98201349a909b826ab2df292f GIT binary patch literal 8546 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 gCdN9N&>T4C2DXB}$g(9vJo^kd6FJ^KXq5uE@ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Forcefields/ghemical.doctree b/.doctrees/docs/Forcefields/ghemical.doctree new file mode 100644 index 0000000000000000000000000000000000000000..54cf637d88e049673473a14b61e1646143a07362 GIT binary patch literal 5707 zcmeHL-)|hZ5tc07Nq3fHTe00Zwd}2vx)K`Q8AS@TN)0q9AlDGA0;yB?2i*1EF7HTd zf0g9QrvNU}0s&%xZ`lBSE{Z<)xqn1}p+g!bUSaEYrUT5-{UM1VG#TK86^4pg2mBZ$yXkirW2R${$rnK3G2%uO_}UJ%j8i%%UL=I1}yH4 zgyzMdC$g8$IT3w`RegJJtBUH^3ihPZWij9#v!Yn2MV3y?&Re`q*4f6#mKHi@jZfxg zZBEaM^{hF)?ON`RH7s^6KV)Nii?cU;TH4p<9{(Z#9$(_O4*AW)Vi53)coM$(xa61d zcNKqc;_t1;Wx;Ro9W1}?mh-py&4XoomkvxCjAW4WhRVOavAD4CkTY+hxqTeZTEt5N z9df3;AobW-C@s>FM@IIX1-%^49E{kz-Dg~c+{H1L3M(+->CDqm?V%KTrgnea`_YV8$m3b$ZM(CD>f-oZ z3I?Q~?DV|*+RK^5*$MOyLze4c5aax`Qj_jdX(e#QY}n1@C`d)P8;c`WtHo5$J=&fB zTMF-YhNY%xz5DuTeV^a5C~eoM1zLaRf*hjMzaKGAvM@^!{UWbW3@_y|xHkhn0FFIG zm%S(V7=l0$i;r34e~=8AY{s)EUM9P4-Gc}F`#*he_9MZwdiv?BziY9H1FDT5rQ(=L zH5(|O5FWkE>2i`=6ir1q;B50d=H?l9D5rKiXxfc0m^FA?1gQFB+_T}g=AGBMcpY!r zBDI0FP9BJ2k0^>kx2;o6*U;<_P0eQG&$d~%>X{{_5$IR&|1PP^<^$93@WdaT7QIXx z`w*8)bM2MUxkT!tMM)sik`K)aMjF;H%@Q4I&f|YJ&SMb@UB0lNp9L~4KePL)JZQE? z4afu*GI&g+z$z^vjQ+X;<{Gp<04VR6WkOQJCbO^ga01$EuSA=Bk>A%V`6tygYSa({Z%%;?ri*W z$DB9wKPod{dFk@TY5)B8mj3(yV(EYVSC+m~Ov2IG#=dbzlzK(*VW(1zI%tz`SgKJB zrW>~5T`%E!yY*zrw^+?vw$06YdM3L!NYj)#&OnPbDbG95W68apqdevsVgSgSPtgEW zGDKz=ocNY#J}>##d`+3}ymSe;Di&;ELGw;1bbb%jt(QOEvOB zY1+RD;sOM`4(z6#6*@0;dB}GTO~=JJoyih|C;*e!L6T!|-W}-Ulp_qg)v%B;M(a8Y zePZzR6$iJVp*$(g<}k~2nrYVf2&%qL962o#e+(=pMBX zHPofK;4Iyc(y~%Yvo-f+PQ=qiP;Rr~io--P?o^ufI7mkY zcsMK`VSElnpm~ExlZ^a`5re=npl+~3JIvA{t_h2X2v|jFHZFPFYy^eQ{OOcAMJ2+~LqE>Y8gQoF3OUNh5D)MC4OX@$#O|Xa#}U+Wumy1y2VMX@St!yWFi;1E zO$rqVt8?o_Lg0uT}zt~56gaWNq`%+b? z1FZ4Tg|!!EiKWLSs%5k4!U_BrP!u54a1QM|DrkEYm!K4&r4e5Nn}|9W&k^uuW?gp! z(~vft42ZB&V}w!$2=!W^%nE&UbK6KXTl_2jWnnrrOFY$P2LAPD{HqrQ-=s2r3n}zV ze!DR1%_p=ftb@e5yn=Jw40&q3&MDuVA$ZwYJb5z6;t4A3kvo6te_|XIv!>*Dtt05a>>dss`<}hu}{kn;S*>}z`M{!Qa}M6 zhz7}qI#KYTdUlfErtOz$h4|J(YQuO1qMRg1qHU0QiX(lv3Jkpcv?UYz^OPelzncEd z*D~*O?7i;I_}C;7oEzDT9drJ>?*UBM<0B6c>nMog&o`BTW;_t zk{(*=^IfaJY)&#ujRiu;(+JBaHI!}0O=lsMC1qxUtry-#J{%5qN!}MeE)F&S41dW6Bh}t?taz=fjo15 eVgMVx&WkjRi-@A-h#Iinh|+wO5edBLdj1Duac!*t literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Forcefields/mmff94.doctree b/.doctrees/docs/Forcefields/mmff94.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6c93e9c285c944a894a9cb87802749c06b6a5fa3 GIT binary patch literal 14067 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/GUI/GUI.doctree b/.doctrees/docs/GUI/GUI.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dc64244a563d4f83ba83aa058e7bb9ae43e0b07a GIT binary patch literal 32336 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/GUITutorial/Conversion.doctree b/.doctrees/docs/GUITutorial/Conversion.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b3385f0c954b6392836f54b29fb8c407b1b03082 GIT binary patch literal 16049 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 Ml?8R08?HtFA4-oy)&Kwi literal 0 HcmV?d00001 diff --git a/.doctrees/docs/GUITutorial/Filtering.doctree b/.doctrees/docs/GUITutorial/Filtering.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5f11422e44ef8851791ed1e98782e45207efcbff GIT binary patch literal 28901 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/GUITutorial/GUITutorial.doctree b/.doctrees/docs/GUITutorial/GUITutorial.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cd1590e26b915ab6e84c2a2a8c2b9a697f401d18 GIT binary patch literal 4215 zcmds4OK%*<5vEA)i*L#nV@IMrM&O7-w7Wj!5D0M&F=9g?ya8e*(8U<{&h&0K*fTxu z?je^50yqZ;rqMS~4!Iie|H*I2FUeOuvrorD4CE96E6!ARSJ&gKuWG(%{au}Gg@69o z7DDE;0ZY?dr`%S)o9d*@c}obzU8D-d}YbM`J!~%NTwp4N2QhdG;)GRAN}!pMTc-^ z_XVGkF|XSCWmQ|+E*R``l{odic;SfH@$JU`k>6D^=hdhjGrz~2Gjd!y_)UK9$kdWg zokTHfA;fblXIcH!P0M2WGG@t@;S<_Z`i^5$TB^jccqk6UBe5gSJsS$0@u4a6oSWf| zHdjMk@O;e1Tn(nuiE=!U`ajBQYlrZ_4iSoZj8>lq#=_6HF1O1ug4BcKY-(5`R)YKT z!M&}m7ed-75v*|BL{oXqZDbuU`s3R^{f&_H#K?kDW+?|k-$YI$6+HSqtc`w4=03Jj zP%aZB3QH!EIrL3f!lMfq_=Jum%$VCqmoBpKJ4$qxL7!vx$_}FEF3Q+##FW+1n3Ik) zVm9P@%q&dQlZZuyVE_+Zf|H5hnan5JWDGLt+SUu`CkR-Utj#=|1CsKO##ru8qg#07L|>78?_?dL2dpF zzjyI_jNcQ~f%t{!i*xZ5sN9{`0nj<9X+*UA=tFIyOot>jc}1QHBz4J0(pj!1Pmx(3 zWY17y&ps;*zm~dO!uZ#K+;2Xsvv?uS{ChuEZ?$yp{Z;40mOlXKQ_xU6!`&;zl*&JP6|+Fv@1Tho8F>F<JgqLb{9fq0R_E##d-u@Kmkv_d{<+Cf7v9e{A>@ynAog$2U_h)D+l1crJR`Lp z(8My6{>?e}_I2J5ExwO>?-M@QoI{qI*5`nF(+a`t;ijFsSOU?Y{jHbFs%eY1FP{3> zong6EXeBz23!|ro+q&(yoOVprVQTh-sFf6%d;TaX4Gk6XVuU!DOX^X=cP)1gxy1Bz z3MACy(8Or8NTAZU|HKqJ)B>KqjUHK)t{REsk?&18#sh{S2zl+L48w?HS%H`R`ob8u zT;X-Ec`c2?+aYoi(-1rg)jCi+#ff2(92l{Ne?MXI5`C_Ig&YI6!SdMM8_bd(oOom>RXBDN9&6*H%6OS zU_elSC(;hz5|Gew9qAPkw2*PxhW7vY4;~)v>r`#_^h2>?c<5@;{Isv0=%j4CP0V0WuucehW zK9A#6S~gbXNMmJZUKgmb12}_8EDuEnrH9S7cus8ojGk}_M#xZzJSS}_^1TmILZ0eZ z;PaG<3$V$jK%tTuddi753S12(cX$w@&DM zpv`nx`3JN!7=WFz;~CQ9kd7|o{deE{CE|HxCdr0+k}TE#e6Ajq$_TGl+zcdllW+&B ze<)n0a9Pi>F-j;U?(X_?05XdgwYhL0wgn;N&Y#%Z+_70KS9BbLkMyDsw{8?eX4~%(2xL{1|&3LFInL} z@q{hM8~bEN;8mK{rAXgUR~0aW4wIsOZ()Mq==yj5L4sXZF~{(rVtiE+%LcPgo9{w^ zRZVJ6yYo9dzou_7->ta>#S17(3}7e@7uT~y@a_~w0a|D!#NTL@#NGb>nza5pgBaQ- zix(Pt=)(^34hidL@tyeA`W^{rwxMP5-JKQh;P1EM!1}}0WQEg*n0M;-0gbhUYI44> zHgi=%KnhYMHydlU$bS&Nz9C%f?yYI;&2J5d?yu!FT^2b`_1$Lh)fBKdns{S LLj%;U@u~Z7h#y|Z literal 0 HcmV?d00001 diff --git a/.doctrees/docs/GUITutorial/Searching.doctree b/.doctrees/docs/GUITutorial/Searching.doctree new file mode 100644 index 0000000000000000000000000000000000000000..74901e99e204eb06a7445288678522a820554fc5 GIT binary patch literal 18666 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Installation/install.doctree b/.doctrees/docs/Installation/install.doctree new file mode 100644 index 0000000000000000000000000000000000000000..27afd28cd3e96807dc4811de87a8a07c96678d62 GIT binary patch literal 80090 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 m;JMW>NjOYl039%P;;vWC z8A=ZtfB$He@j&!}Dj>@4s~JJNxB}_{mt0*T4IvYuy=WLh3xSHR_oBtx)u_<{=BcTv zU)zdfjBLTSGdXy)02M%D$Pc%U_c{;z4!fOhK~f`aLByLKR~ z{tmVv3fH`kXdaGp5b(_L$flwYJ|jbtLhm5VqkM~^9E;7sKx2`Aj!4de1zHPOqG$5( zgIs9w3S8}VZ#NQ9S%f`=0+ekbSfUk~n_YzO(#sHQ#L#_|3gS!`2u~EWAqN7mIsq}X zh;V3hZM2396nP)pqGjDWA<_o{;>aTR`h}gVLN4j$21x&y`qY$?`S2dQ#m+;=!p{98 z*m;}y;#V)iXmPLxPBSSA@Kkrml9 zt1w2*S;Mwi^m1f3s$4CS;K&D(6{Jiq*Vd*reHF4HyYQzfIJMl~5qy{O5QKs8?4Onr zd4Fo>q0lgM1k?&pq`81u7(A?lBt$4|iUd6{#_2ebb|U1Hp~IYQv>Im84ZD5%Bf5-e z-jB$UIYZQn?Ux&&nkE;20b=_iMjlISkM4^?I~?GPKKqh{yNA0I=z6Q=BM1swVA9F( zI=RAi6s7rK0dSK;sYMP!lH?*Z*D3FMo|cN?v8edq$ng%hYqwW1Io$80fFsi=9FdZl zarX$MLnyFQo`Onu}s)R;GbN1cv_nNC~P4mLLJ;i?txnY|eq3rE4x9z6KI z2m}}gWe9Jatg&<9X(b#Oz}UU7%=ktw*f1C1x6d#x26)(JoL0k_JiPi z4G7Gww_gdFqeIuCRMLT~wN(6mbH-^@=0#A^+yg59<(iFQY$OeBXTuYs45_|WScs%K z^&z2b<*kXT4~VQNMuG$)uBly$+HZlLC3lIum{@G{u6KiN)7>hjpv$6?V#ZNj)^d zySFQF9fC|9E?#LjJ+5)XUTJAk2i45P^f=xp+P`SI`oDhi7Gb|U7Q!w8VLv}E!j5i~ zp$=-J+zv7i+hUB4?02BGJLFGyY;8veZmcb1VfEd9)sm87(!7%j+l1V%>*_cr7RocG9c{ zMNWk?ep4p1T(`J#88eT|VhssEwa{8q{)6}&wIgX*n%S?i7|DmG?!e5-LZcp_+>Fj{ zngy4pg2!Lt1r9$_4J^s%Xc_oaXhUDI@CF*^3sdIb}&KvhfM_QBw+DEKPK`G7U<7yo@`*e_Mmvgmf zK+KkL805-uSr0iw_m!%fZ#`0~8oNMGSOgZt$|6r`wh$~|LR}qLf@K(p#*LmkPqEAzodY0gtm zy8-m{Q4Iw4Xs}}*?VU$I`DxH|HSY%#(^E@3{U_?_DLN;}Zu7j06hPmu0R^xT=_JNt z3&;jRib5Tg*XPY;U^4L=@oWy@+aibZt~sZMxUJdqBQc0#{D9vxu_Wj(qbw!Y{woFK zT7gja+jsZs#}dV8Xa;F72NCMs0vJ>$Z=kXzAx3W(8J3{xL|bxL>4CdIj|?byXcfbK zq$*GWGto~Z1m0LOCyi7pxLpD>NsosR;UTsVajvn*`2fAPeV#B8`|vhM(b{dVRi%&s zYutBg?XEe^(;X@~H1kfKKz;#5D%+vlsjpc+;80IE-5QnUP$J&KCZqzx*P!smT3rz$ znlW3yd6^{Q(Ka`^M&ns?9a&_Vbf- zRbOD?pgjUvP*r1TmIBlkg2*@nEXdsRRr{MD!RzHMNCK)SAycUFRN%c^uu&po%}Y(Q aW#5vkdnC9Fh;xe}>A6ZJknu)!=YIh<)edq1 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Introduction/intro.doctree b/.doctrees/docs/Introduction/intro.doctree new file mode 100644 index 0000000000000000000000000000000000000000..82428da19b1e1d15805cb178003f31dc4984a400 GIT binary patch literal 3562 zcmdT{QI8`v5}w`JWRjUAvop(bNV~%|La>XNNqFD^At5Aq;#QYK2%UI1)N*$_ZExIm zW4mV(BqVqMF_Pc#N$~5C?vLDk?(Xztvg{)dH&Qflxm@L{`syp^``*8QAMe$F?%0%! z%hi-*nN%4y-VHL9Rt1&T|Ki{I!GGtUx}hdlMpZhc-t9pnWn5&MO8>QYlb~+7Fw^$@ zfuX78N_NLtkM-HX*ZwIRx}N1$(5)>u`b=7_vZ^@~^q_X{OS%gFcXogD&3*bMfp_cK zi5te`t|LKYUXh%dNG)y-X2g_`Cz?vv=7AJ7ecS zC^ci>E#OO z@IU#vd-$S}1^K4ldhNw6%ZOZtgVc?y{){I%;do@F4#Yd3DKbb^7biiB#K`Dc6Xu;xIcq*z1u5ZrnbSjhAzZKnIk z^vAnpamQ^^FRs7^CDoqnR_dcog<3m@RYJSch6uO#mTXG>f_$s=hcLL`Af<)?2b(6;E%>_0`AK%{CIqB|)001<@ zkRO47yc=&u8`7O&eHWeS9%z~>oyF*6zyxjroy=Vyvuc4Dkq({#sA&I{XMHyzl~wVL z$lc|@);Oz*GVbt)tkweb71bDZ!QgQ%snH*5eE;Z9>*CsBoP#Ww6{Fi^aXlsgkTIhp>8r59k*)nhQi#d;TxP7OykgqR0eAq>U{+6 z>6XCfNoX#>M&>}F;03q-@Asd$NlD8XNdbY$v`*M4ND_j(ht6=XF>6cn;cN!6nU-tI zl$yqjzr*={M zK=;p>Ed-nmElJQq8Cd$+z?}h*Mcnmf7eH*vfRJl<->ju2tC;be348$FdqM@=k4!<( zW#3e2YJ)^QsMpOh77C9mi1BPZOBr5eDGJ{-8?s!d5T}<_2^ZmYT+@9^0+DdPH#z@ zr!vH_w&)i9&_Z}+Lw*p1&39I?=f(|#z^+T&@H@|nYs22a|L1IE+<3cK_33fSQS#s( z78^slzOATT26BTH|-e{{YV_c3S`d literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Introduction/thanks.doctree b/.doctrees/docs/Introduction/thanks.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b9fa55ac32f3ef88040583d9b45e4942db7bee4e GIT binary patch literal 33471 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

*`B8Cw+K0E`RrXSkYqS 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 TnjUl)X~yoAp`>XUR76j&#bJU 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob1.100.0.doctree b/.doctrees/docs/ReleaseNotes/ob1.100.0.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0b16e115b31b7fdd94147a23ce533bf17bb5d35e GIT binary patch literal 9285 zcmds7-ESR76?Z=Tas3rLaoma|WtvjzG``nPp%RTKqDdNv(%2!1(zK;o=I+k*uDxH~ znT>rVio!#s290>>_5leV5aJC92?+@y-gw{Gnf%Mq}{dTVji}c<7i9vRt>3m_rklxwE=qRjRv(^hlxc ziazXnp~zO!HrL}^sl;oi3YL;(hdf7;6{EJ#r9>ls4~IO+e~me5Twk=gy^)9xjY;*W z;%n5Exkua+?xcItJ>;I!-&=B{KrAI`7>Zso7`a?^IpiyqpRYr6ys zQ?Ucl!JAaKvRP4|?$2#pSx5J0nuoHMo4 zXUYaW_omC$3zCImlXa3PfWKdPrPOSmIv?EoNq={(*f)2t82RMYe7I3?)Ic`T_9J`4 zdM^d8J)qrr`S8$ClU;~Hpq4lyVX7N@;TrQKi$&6jl0Z0Y(*;evAdV76eMW!k;!3hj zc$S3`{)zZ3>WnkihB(O<-b;C?(tz2n2t28hE{l^0ZVTihyYtrDi%clHb*9Bwb0ykj zZJ`wAx1*3mOQs^GT*0o~T!qAoXU{UJc2v#MmLy8v| zw%CFc0s#2Y=9yl7uV1^t)yb7c8^=NRmHu7@6^f+7|#;Ia!0t?!hOru_N93WY0wbSk^*IutY1wYp?!zBUiZ&E;F z60`v=42C-;rjn2+@0;jR(uQ%#IE%g5Acvo)d)z^2fIp{=Q8~sX+eqz;Fb8p-xm^bw z1f98xK(aPMjfofWw`tU6Zwr^4-Q|fVR2OV!fdB)#3_)oF=17D% zgPlYYiv$=IW*X;QzrxCWz<7++P+p3*x@5TQVyb{fuXeD6(nNyRpd?t1&x`O;_r=<( zW(Sa9Iw*nwK+A}>N7!0!R1@vg_l2^2tni+|Qg3?=>anoqf}U>uw|xyc`yFuh9&U12 zT2za#g9rwj0fq8KOP*iDM0q4!68!> z3I31gjebynQGl90RGA0&K6;|3pB}3Ia&X+If&0$~$Njm=)JGq<`eFKg0n@JTt;zI< z!HuHFh~Euv)auUD9Gy|>bMb)Z!+rq%QUI{;^VDGdb#Sm|0M?%e2dljktoppRKS$qw z{5~o0>+F4MYzjNi-LyNnQB{&){}_qkOv9+v7=}$?Nl^J7t^Z^=Fk_1M>8q06FHKSf9h4gJbe?iOE1u zT>VfqYbf?8uts2MPYBEbfwOx;;L?6PJN5%|sRm?!OMTw*H5os|18oBm%)|)=n?aSJ~5w~zg_=6jXq)K#xvNwKK=NdN6%dSDvMp^il4%S z@$TLFXrX!}&$?v#K+|NSZxz{SdhopdxG1{PGuUK`({??Tp4&t+x+$B;R5vNp+dS7q zrka;I@VtLVCY$%>#>b&WQ5L9D(4UeUpIJe=@-ihvFXu_+(!)DD>V@^&LA*_ciuK=A zcNnF<0JpDJkKW&D;xvv#=y|sCCLLDUYO0X@9B;mE@}uY3_0`+W8@#(%_Ftjg=y>x2 z4m{@>lDmuSwkI~PMgF2W?0)4^Uo6p2YKHkIA-Tr+PZer|R7Fk#??3K>=_M6ueCeNU zY@9JP1UH&Rvb=|h)VD2@ioTu-O+O3a@E)2UrQ%f69J0Z1)ZUuQJ)%u-k$o;Jb323| z%1?fVO(;w~I^IAI;6+TF~Y%RO68^ldb&vATUBju zvTVs~e0ofxgo3m&3YoK2WfDs`R3daTJ#w4-DT;elX>%kp9M4wVBP+U5r1_&H!-a!l z2g(FNjEjkULS%Tu4P1^FmuceTYDz`6Mb$y-#l*wN4kuldEjv-9P!ke8omUU&DJqbL zX<%)UJ2SLQqcG&f7F7o*u?&$X@)pzqO^ZbpCabJbV#eZzqG-9IClf&{*Yd?(0r(E; zahLnm<*=R=Tb{CDjY?%XXjl(B0!evHH@(S|5U61UDk}k68i3yxWK{N{o;F1gON4er z)uK!{Qq^gGttmbHKDoWq5=jyzmWyn;FA^Y5s@f{kM{=ZlqzoG=nLgFm(Avd|d zZi=Nyoygh>h*C3Dl9Iyez0aw|xOa3N1&=rGaHO31cJ{gQ7oT59oMF2!T9a-!^pNLnacb<7+H086e4d`#9*yp2`lC^x%0rcZ&B zfmJQf$^c8o#E|=XMs`ERw=CCNbA5ck-@|@H)Sr|A$3injWC@^-nd|)0LVcN|9!b!i zvRxGDZ8$z(Z$Q~Vh`Uh~#T4}7gn1jHhy(Y*p2+r4`K<%PQ3@5v0QZga0+drR8P8WE zz2C5rfipo{I9S46sNf2rFv)RLK>3Cx0`B=1YJUj=E%f_P&lYcKfUJHe4{P`JAraoC z_ayXK9!{`+K}9cgJS+}nDW0qegeO=x3#C9Ug*QJy8;9PCcpm|8TWkL21ezhOQ(cVE z62eOtXdk7<{P)88C)g?1|4CoJrmtVo*FWg%@Ayh}gT|sR59RSff*F0^jJ$6~-A~ufXol%*9^?qxkzeu044vz1 ztVTDsNo_sc4Juqz_spk7JwB-0aigtDV~*#^7L=*6P_BOvra wb_1&iuZUnBqEaitmwdu1@N8?IsG5z-C-RClQEZL8J?>C!EW!wF_;`)wf3nXodH?_b literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob1.100.1.doctree b/.doctrees/docs/ReleaseNotes/ob1.100.1.doctree new file mode 100644 index 0000000000000000000000000000000000000000..43c80878cc275bc6eb574ce422b0f47dc30d2ac8 GIT binary patch literal 9973 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 IkH*sf0MGfb!vFvP literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob1.99.doctree b/.doctrees/docs/ReleaseNotes/ob1.99.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a2a019a601f095a07ba31b6974a96ea5c21587a5 GIT binary patch literal 4437 zcmeHKTW=h<6_zdUN~_Dta$+MutaO6FO#*9o9itC*fIhT&s}L0pf*^S?2Amo0k`RZS zk{n$g473FT)BxWyMSnv7OMg|r!Z^UsJrM=Q(I}AHr&%-?>HE+)AjDZc$gOMaJ?A%jd*XhaJxrwAF|s@u4^nkHxk)2`^{Dlze7ut+}0D8GA7^Ff1dx zrVHssolT{AE3MUb1`FKm8?HEW{M)o;{y@F?s%C+WPWQ__^)QlQ3h}nsF{ZB4>$Tz(e9=#NiYCp5XT>exJj7@l;I2 zi8zHm_m^!m%`NAr3AugJ`V@yM#d1z)PL>B-sO5r}(s_G> zI}}v0OgqI0w@GCU99;I^`(H9?74hG^d&Gxtjrc!*>!bHe;9vXG_`MM^L|+?^XcpE~ z6RF>bN=%Z3xx_(48xI7lWZosn@OW6301(ON1@KcOnZbX?763rclQWgqh#^=g)_?qZ zLsTEm{~CQ)u{wMASna+oR^R{i&eqmia!Q@68bv?xS0>3#Ss4u%JIXw)N;rB#1vH`h zF8xjPJWIZM`ZQ58v&`O16H52D@*?UI;nD@dfuzqM#ZmAOuQvcd$!n}!NX=BzqM=Jd zz{&K<$*B@takPs|W~HfJ60;a_-;8urYE4Th(%H$B>Wc-^ezKnSIocnocg4XJ)x46R z&{Z6^qsFvukmN4|h&j(~Qt(TzOcg5(SPV?Du>=9k)G%8WW1(?o?ymsoB@+K1jsJ{j ztn%!Kch9rERi5#_ZHA-Rgd&pBi80i$WhZU7I*`YChpjhP61UxI5t}TU{?B*ge$Wx8 z;r%rzr!jfBYX_ZyH=e2HY%A<7d3b?kP0jpH80WR6F)Hncrh_G=9iGCj}Kp7+DWR+5BqLK!Y zAGQ?C8nFe7{ z@T^|ox-n8+!)xHMn1MhU!TmWWqnf{kvDENU$~DRkxSBAk{e1H4iIez#yt$cjYmH3> z>apS$9w$|EkI}gG^qQ1Gl+uKgTRXQzh<}7}D|Ds6^62Bujaw(feKG)}k`vu<)r3RE z^rB`94tE!LBHYExAiQUJjs~3;9P?O#Yfv}ggkf&<95%uovH(!|TwXU~7{;vjCS8%j zU0FbKQI}QP;}2eq1Zpf6y@CWDMM^|A#ePMq9Ip$LUYCTY`~12xj;HGoh zd>*BRbSzV3NT=n_GB1#02QbDV6XKW%p@$t?N+V=^Ks=%^T;jN;Q4)b6X$9iFk0(^W z1U`=`xd0oz01A~XrEk8z|7jRkyh`B|j+D%!!w!g&;Z2ZIW`qxf_m%r{HUrsBs~azj zo*KKDHQ^y~Mg_o`dXA9^>4xVT=#wYUeg%Jy?L5CFo+vBvzg&t(rZU3o1-Dc5zj?d^ z**_D$RJd&9S%wrUylBpL!wCRcrhRVq2BfY65IC;74#5|ugk6oyaswqF7+H3 zSXPAxR3}`W-Qtrafma#UrXsx>FB)K`%y@zPy@3jXbB{|N=HR+WdC8Uf(&W%elesJ!c!LX9U`{hLJ8@@hzS0sf`+depZe~Z|2k2WNZmbb=34>shZwpvfc{NZg`-40qB zDn^diBw*2m{oE)8$HE4*jGeDK`cE+a$L1TLA8%*m5uW%C@oq2d3&#d|zbD6#?RNtt UAhMun?G;qpx-vlB8jt&b15ufiR{#J2 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob200.doctree b/.doctrees/docs/ReleaseNotes/ob200.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2076fa701f2f67dd592b175c33571b5783da0b1a GIT binary patch literal 22034 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 BVv+y= literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob201.doctree b/.doctrees/docs/ReleaseNotes/ob201.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cf08e6630fd3f35f3a6efe2bf67aa6456a111613 GIT binary patch literal 7422 zcmd5>TW=h<6_zi$?CNe?s$1L1Bt>cm*6vDz(FR2W)K==kHLMD;n>1*R0e6PG9BF2_ zAvuz^fC0CFff(RhrVj<0hyH`U^r1f@5B&=UilWbb?L)uA+1*)bZ6vz5uz+1H56Q!G z`OYDE_;mb_|G7Hm{_MQ&h$!8!voK6$$aQX~LK$QUPfh-1{{HXtC;1IqQEX4kOa(l* zV;B*LC=L}*^T)ZJqv0lsb-g!#QuDw>G9648<6=TgKF)85iXAtRiTO~MUHD~(r`{db zNNkEbjteocj0r))G?u%md3#$*yR!G}`2DdZ{0teHDQ(tbY^YEI%3$0-|0;YJ(+sztE)e(t=_7w{it3TbJ@PKzh_G5(J1uT z6mOBW#M>~Dcn6;NK0fc^a~+@ep}x2&YT}w$fkfx~>O->W0xPAn7y1Od^r>Lxy7p4O z=e3kfoS#<*qEYXQr+*shFGc(5w-=2(@?kODi8$$uHr>qPm>WNiV9GwMOHpA}>hUAP zlc8?=#lx)Ak;-^2sl2cYpGSe$%mDrNzxpQhKg6J|5@LuJ@u>97U3fk8n77MR#7)kJ1OBK=CjOc)vf8sm_uPWmgXX%hHgmJ=S&bBq*-e*D%B7 zk5S0HS%LvFZ;U`CWIjJSWTt_J>=TIkO@}2 zC=KGwWs-!Y-D)#y*Ic3*armjSUACvit~B=ZqZ@k`#(s7pW48!(F2Pd3yqmBc?gfGe zJMVhfaE+%kYyvCZo`?eBX(6*X^g4>~BCX@UOWnFkdpvoi$+0nT&u#G(kWq>>kBufA zamN33*=4(ZK+6|T|6J<%;^|kXt7+-bzZ~76v|WF7B8NUKR1IX(iDKqbW8Y8SUSx!K z``)ityt_P)%J$YYBS&^F(_6tkCOV zs8dRRl&PjnWX$PQlrXbGC+!pmFPx?xL_3Vf)n7cQE8Xs za4XGl_gH559?Wp(q-MCZA+r>vFI?^^h+1?C9Z~c*rJ^q%U#jx>SgKrsDxV!o75>VC zkew)sE4e*WbJd~EUUi5r)2Ofo`$)d_=Lq7YL@-7mYtB9>0~C~6!V+5(&i{fG9y)vMo1aju%v^=bg>|6 zV(AW=)m}4GFsPq0AJ4-d+G)w$_+H`YJ<}_-p z9Umt?s)%W@yi!n5o^TYO_7T5ddc}&p3B6kErkyE{jed+%B+Pf#Rt1Yu!Yi8Nc9HK# zu$o~e(`m?Vd>^L;p zE|3nunieoo44ra28?&^Xu{MXrL$uGLIBzd19$;VgLymX|u}lP*Y}yHwky=m_7KuV& zl_MGDV#3a`%t*f^*|QPgH5;PhrR>8OC{ydOrIp+X8pdQwjILjz$p17$RV!EF>^I@=rOyTb@o@R#Wq z7D3&VE`#t5aSP${X}n?#nt&84ID^d)rHP`v zPr+d?3u8L^$BhQay54c6nz~f&MsAmAq!R!meN>a-9s_qwfnIxW^%m?or&_@w_CzV! z|Dewv!O94-J6zRKN^H3`kN_IOBrz7N7}i7-g+}D}r|dOgGVurDIZ(jY9YV-+yP&(N zVf(&_+9JjW_&rah>D4pTfMMGr(_RY%-W~!tzKAzi*_jZt zcd`zaptm6Rz|+eE&w(BpL}?2c=qH8?lqz)AJTxv!2)wamMKsd0%?_S^c+%t{LbwYN z1m^~eECm>~h)mnLtY8!2t)~V zI*_Q6xmQB$EtBqO1p1e-$g})o#0cKF5N&vg(?CVB;2^ymAWsj-n2$ZJsE!hl+T_z} PNExt~ENEND8{Gc@=-Z|6 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob202.doctree b/.doctrees/docs/ReleaseNotes/ob202.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aeb8e35d265c858d69fb4dff4849452df13e9c2c GIT binary patch literal 5236 zcmcgwTW=h<6_zb)rPXC6IhI<~RyskE*g?I!vJmtVAZU}IMGG}bVL2%ZG#GGZxJ!CD zqtQXoM3V6+1Gmgz%*KJ-TvMgK!l^gjeee@8!ZW-pTBG=ky^SYdd0czDitEtVVGA=Sr zW%W_zI-cEfVS3H_MMG1|m7FYR3#`Q!KdK(Ewp*~=3OY08Hr_9&jNTy$713UAx3^b$ zUa;PJLQlL7U%>IKs`Y9W1X|dNZMt?mQJc-XR-^5KyCt}!)j^pMw@j?nJSi=#^j6LD z%yuCcMU*5l2CV-_4 zo5@gREDH-kU?tZVk`~B|T8@(FLZTH;y21?k`ukAQsFMG7uw*e7*1)lg0 zey`$pAHUaOKKm}~vK{si8r>S356xEUSeZI|V@z;czhcDRH<6^r(Lk#_`1#R9H9!0L zr+>OMKUM9=UtKltk+*90pyFZxZ6zs%pf(m9P>#cTswz?VVM|9q~%0J z1AanHWL0DtjSk=Y`7eHQ7!jG_^X~&`Y3f-_Su&3doscCXK&9U zK5-mD>=DaT4o?&m)vWM!DmZbUj!HqJfztUhiUA)=UjZ*U=xY|d?Y=&NQ^-HQI^-)r zGrtz(Z~heNkwwGb@?x3-iB=;NcP^tNitO;E2^Ibk2qXi=XO=j<2r~P9H~_ZYbwp0l zIJ-I;Ye3`Kwb1zR{n8etMdlw9Eqz%yW&najc_}RK=1R~s#2Xi=DcnSpqUjNp_>$T-haryhzaoGSaf4vqick2{BcUq;I7)CFh zRP3LP&0o4^YR|u}ZqFv{`Ny^F`PRFtM1i3OKE#==!_gZKgG(;_cVo_%Ety*LpQ~GQ z8`gY&b!+Hz+c4LvTbjz<=!Tx`py|o{=@}ZJGMTP+TgPa!x~7X3tm|8_?p}Ad`=}!0 z?yhFI+@q1%wr?4tn{Id9Tg_~-;k(^#Xm^A3y&36YE(&u^lYdF@d<|+4j86CY4d|q~ zXAj*StBEuMhq{t+p%pUK)Xn{ZRhEcqf6gtBd1!`V>HF6ku9KG9UmfDfMPYSJsV@v} z$)HN04C6+$Il1BhI%%oQD%bjuh!Qu2aWm;!DwO={fUO_6_K@NdK&;Xg1{pywZ%JNY zuu^Y`PE?LCTyBP?78tErmB#+6;b*b&0yNa8mAgGq%1Yb_W+wMF_o}A0a_cqHGg20Ul*;W~n7JV0=?`zr&ACo3cdEm9^}X{G z7Z$q>Zv$e@FhC?=Q{~nKk;9Sdh!DNUK-Sqi|$dN+?qTo5V)q5NFU8kT$3{WVtG7W&OdP;(; zaO{)AeUn*Rm^b@JC;E2zPkGc@a*V8dO^IW zOvS%87LQ~lK4eE!_i$$$ggsCI`po76o3$-TkVTng)&7#(K}_cHBt0hv#HR2Oa^^P7 zskG!IW_-v5eu&>&Lix~NH965X{T-hoMJRHaaU_S0Ezv`Y z@`S+Igi;7Cizg(6P3E6iK0(1dN3EY>K!&uzWYF>{gclsp7d^55e(_c5ieHY{l=t`>a z2om1raJDRl?g;eHfXK7zF>=H|VbB=wUj|W8Z#XG0=g2D)a&YVlm#HW-A4o&*)8))p Nz@}LEV;wJF{{`@Np?&}W literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob210.doctree b/.doctrees/docs/ReleaseNotes/ob210.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8fc666ba363a2355a65160a11ea96231c8066589 GIT binary patch literal 18024 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob220.doctree b/.doctrees/docs/ReleaseNotes/ob220.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2d35e883a8253e85904fa092f96448da4fcb62b2 GIT binary patch literal 17199 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 MU>PhZt>X#x|C3ZyRsaA1 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob222.doctree b/.doctrees/docs/ReleaseNotes/ob222.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ca04908a7781b95209a63b33ae86d39cce5eaf9f GIT binary patch literal 8727 zcmds7-D@1z6_-CGc~`P5+p(I~u`@{<+o9fFM^0%INT{oP8At0Rj^hN94tHnn?!D5? z-0936OPdgqJ_PD=-#j7YUnr$-g+ifFO5gei^dY4X3Vki5e?Wid&g{%evQtYNL8!#8 zX71-Xzw>d=Jx3o;e>(s8l>ITs(pbo7v(0=zQa(>}bHrC(7V=2vck?HIo`0BMFpY$5 zq$*21o|`F*@PrKfgh%;%xmlp$S_WymoIjg#PfHb5)5Wxy5wq{*7evEMYpDZ1)@2s2 z$2@X=!g@S#mfQHvX)J~wev@w!4fh!FNnX%36Ejeub8*}>+=^^*$jp?~cFo~HMm+Ck zJ!YCr>qPc44K9hRL()%)gIO$}`_aQVpv`Lb+ zPuKX+QJIc2U5c<)*!|vVX+L?X1vS{cpcWt~?|(TWhCx5AtsRa_^eSWj`6HDWi;q)BvRwAb7S@Dt1sSYJLD^xFn%~(O~%ZefF%PM zB4oOTGY+$*C!7rli-#fiWh7y-@E4KQiRJd?X6b2mi1iys+LHMukyILUG{NV;L}tWvmyL5sWw}8_>2g9Be?=WX7v9dij zxyI(R-D7hS*xa26o9A!HK_vUqW0A(`Cqo#+Z74m%xelm2sfQMkYkWP!ao1Bo2hkNK zQAoK1m|vH`OuB51%5Qd$%0ocqR}-Of{^|&an@pB9+=KAKfe2wgw}w6v3tOm0Qg@g0=!c(0_e!MFbel5&b+4pcG%ayO9k8Y zIyK+_**)J6gYSP$#CN-kh`5DNJP2;CY*8YoQX&gOalP7RS8I&}Q&S_(X(dScftRW{ zUz?*&We3Xr_UfzmR?xM6jmiXz)}V+zfpQk0_>+S2`bwZu zx*Nd|9oEM!3}#x~zS>UV;}|72aEsEyd2L8pKwQd_(Uc991wO7(Aw#51>9p+*&+OL@ zOZ%~MEt8M-B$G!WlMg19$>Eu{H5Y?H{sy9F?6$u z%|kk2QCb}HE~2pk9d@?LGOZP|Ci%4~(;SWAK3+2_BpfgcUY1Y|$E_+h^P`rca$}C9 zTvJ{SrK#gptqJB6X#~Z&nR$x^8A>*z?5&w8G%4?jV_nlI@7^lO@j_t>ayVg(m$_m? zq<*7yyf(|%ED7*-R4dP=nh*72<7rTs40Cg$uarjOo{x22J7A7d$t%i2cay}Gqh$eE zMj5+BX#k?_n$txKN)Ohfx^&>VqskL@EGLwusIHkubpp2H2K+V$d4l5GPVSott9?(qpSk+f{ONW?Rp;CDu+HoSHHV#kw^OquGya z?btTiED{gUwNwD206gX9XuzUD#s(aS`*=Ty+N3#2rJ2NcN7pA$LQT46##2!rYyuJK zLsvNtz+B9j1(s>$)=lQ1gnAwIvoLlm6$G%hK|=eIhy}FZG23F5o5Wu?#VOBxuoPHs-oNJ{`lx+t1ZMik;Wg7(%Em!1Zm3rXMG zwmh}e%by!9PZvE>*>#?@CD(ns2OL00=rF)$4OHY{MZOmKwIk*XbTV`+^Q;(f)0i~m zj#*5Hk!G8&kOL9m1N}W5poEv3dBi<1w4Y^Eas^N)?R)X+1_~D#Gy~c*o8#}wSM(7Lnee$I@)Kcv3S0)_D`Ib zYyY6H-_h4^>Fe+G^##5%)1a|>7z13Cn(gR2cH|v9>P{veqjp+A%-h-GIXl$`8<{ye zE^NE|QDmR3WsrguEo9T9aRr;>EyXx659J7ZDya0w4t;1_V>P<5WyQv5S3Bv%mi6JD z6HVvAsqJf(JvbHNaXgigKgrFUr%;cy|2~0JXLhA*zYByu$=`tWpcVx?#J?z{(3fJv j%JFPzo~xRz$mdWd4lHQhB+6;*e2 z>arRUOq>UY2B1o9I?$bSeSf5gEr2LFhB)zv*clDuT)g?N`iQ>RXyI_EprnvXkw z{=@!C_0R3-g7JJlBx#zRwcA_E8s{N7pbCo z`9bOWp51VvhxPe2O%uaqzBtZ0tjpFuC?Bw%>lkhXUD|TH?-VqTeoiJ-M90J9;iJ;? zg7waObnbQd3XV_8pjWpb(882#&-LPk+HBQzYi-Bwj^H^h$96*81~EqQi8Zj&TeZql z?JZbK1koBqeDCBW3*XjLTeOP_Nlq1=dLHZ644L_@lI^gU*%rIUR@tF@f5c=)N6O|o zRiiVhPDc`^O}u5p88^&MhFpFnEoeJ}1$y)@6_jW?mQZsfC&$N+hDyW4S59u*31I2L zW-?QxV9O}JR3A$tnMcPDAO3jo@P~s(Zwv#NcimI>YbasIDA+M(uXwcBw*e7*6`uGG zKCj_(AD`D@KKmXUutRnPjqWt&L$l2gE3LD48-hFd6(i=pj&gbyO_j_lKOZkt^Sl4~ z_^;RYTh)I0?5cT>ycyUl71yBJaG}ZUJ;rsU0>t=RD5?=aIwE<*vqCCEauZGLY%t~X z$QHmkrALuAO6D_hjuVN@kQ*sYH>OfWM2N_0s&pi$Q5(n$*#B?$wOEax9jnHTy#})? zz&0mV2x?-%5q3=pXx)kk^gA&(G+Wws>TN!!smCtjc{JtujH*I$4=&a|vyYFWGe#AS z45Lv>r^E`g%;*u#h=DI4hMP#xd}dg5Ms$=g0(mJUk@N{w20jz#HOj4bzcCf=ek0bm zKA+v(=Uec3^1t$&fa$|FnNSzlWRXip!Qm-2q2Bux&cDgJ3aQCHD=Eh=`z?5yKO1&ZALuLQk!r5t<2~<-UXZ zY|vN3lr@F#>xyep_{+^v@b&Re&xOMMfP$t-L_pw8telOce*E~YU%VZKG`?o`-)omY z^ZC}!f85;8UD)}z=d$zQXRV)oRhy!|U3cccYO9{Y-P-W)o7=Dl8~%B78|YJex9f)5 zUbKOzmP8L5)~Xi0jt7gc-pWOz;RY5=tojPdB{Q_Er^WJm5rqe!j=@>b??q2vrh zK$r+SMj9f@lNGno@X!=X>xZ6OuAf-t=goLAU2Zj$FlD-RO^re8!x+7{n2P~jj*gX< zuKPGtGceVrm&_Qvz@W)%_t^EVx%guNC^f&L$U&k&2S-Fa(;^CM!mF3V6|;z z68rho@8aSPG*suM+n-8la*UBnnmI9k)m49H<#$tZtY(u9H&a6|U=_ z5tRcqa41SLPGZFOi)-@CkV<*?iJHXznC14IHgm2O*L zma$|;fq07bZM>u03x2XxX`E8zLyBuS!es2aiOi=k6NqrMRlGp>ykuS1C)UWgCAr%i z;kBLGtcVvO2w*D$W-zMIt-QdUic$r)cYjMNG_|RW=a~+)rKNEBCLWw{ zRahcK_k4aKa{NGuEXcSiAMf6G{el)TK*3O%Clz2@o-)DvDfY?XzQv3w^iM`3koB-Q zH%#V3sb-_n9eB=40dU3`X5k(KcdUaxceuNYRIXX zR(GHPjF`y;F6$XGK^CQkl_%@&5HXp>i}YL=5bMH6$c5Y0=eZ&CnDH4C_#l4o2)sZ_ zx1}?JMEi~P&qDz9LbVRdSjdFb&>mu9hCXn7$Ty%|L5S0*w!jts*pF0O=#dG} zr-*^3FzowMq3z@fAJ2U73Q0mX`WN;oUg1jslqbB>_n;I)%iwnhlyE#H zeED|!m#E?G4l<-o7mKb>Aw2s*U-QK9{Q>)ueZf9wpIO)QRC8WHP5%J?@`8PSVcDzx z`xoeApRqTs+g^5EC2JcKVCW~1A1FRU8@{0QGR22gMTM)gi4==ysE99KAuhOkmn8O@ zTdPC+m*k_^D&wpB!BtuH4tgBwM#x`Yj4%`Pl3WG<-5oQ{Oo|N r!jB^w-VYZp%E%@1=7L-~aFgeWu&EE2nfKjB>MLDc6ny)}&m#W?HRb_^ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob230.doctree b/.doctrees/docs/ReleaseNotes/ob230.doctree new file mode 100644 index 0000000000000000000000000000000000000000..249998091443ae08c3ced838bf13a4f0b69b5554 GIT binary patch literal 14637 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 HKbQG8x+ck} literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob240.doctree b/.doctrees/docs/ReleaseNotes/ob240.doctree new file mode 100644 index 0000000000000000000000000000000000000000..defbb97d45504a4413193d2fed67895d81438afc GIT binary patch literal 33902 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 E2h+H>!2kdN literal 0 HcmV?d00001 diff --git a/.doctrees/docs/ReleaseNotes/ob310.doctree b/.doctrees/docs/ReleaseNotes/ob310.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7d434e11cffd7983670d94224b8b4fd3eb2c8ce8 GIT binary patch literal 24346 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/Stereochemistry/stereo.doctree b/.doctrees/docs/Stereochemistry/stereo.doctree new file mode 100644 index 0000000000000000000000000000000000000000..941deb1a18b206de443c5769a612c80622b0da8b GIT binary patch literal 40513 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/CSharp.doctree b/.doctrees/docs/UseTheLibrary/CSharp.doctree new file mode 100644 index 0000000000000000000000000000000000000000..31269f2d21d87af218aed55033bcd0f892cdd03b GIT binary patch literal 33411 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/CppAPI.doctree b/.doctrees/docs/UseTheLibrary/CppAPI.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3890aeef1f51dd39a231ed1ae14e4c9e7b5ea6e8 GIT binary patch literal 10993 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ξ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 WR=l83_hlP48Q?buOw0=BJ!d9 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/Python.doctree b/.doctrees/docs/UseTheLibrary/Python.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0905d52a54d4abbe5edc0cb7d41eecf21ccda5fb GIT binary patch literal 3020 zcmai0U2hyU6it)tW;fa0e6&TNCM^Y(wxZcZhzGJ z3ofZ27cp_0#9Gbc!s0~X1ZzAsq1uf^5MyA(b4!w}dg`P_e!hrFa-!)Z_!Mr#l4*G5 z**3eydTgJqu><$Zh^dT@bRi|xqf@0%Mk=Q=CNUMmDYvYMhg|)ut*Ul}6PVFYhCXHV zdmd||=cB3-Lv3)#+efQKjCOPqmF23C=~Bz8Zn72BrV^{^ay#pHcW`EQ7Y%(MzkB%I z$L}G2x7<5dW=40=V9m>(JQ%y%S9(5yoAR&y*uDE7KE@IuO0WGZy&kKi^tf}SM|3<# zQ%k4!{>SNy<0qxx-7EdRo{=mUIN)nfU60E|6e*qXU^tf@8JVRt zx6B`{0yiWtK@F5mg^K-|Ycrmv;J}&d*MS;CM;2L3HBJ4|irXw9Z%i9t*k#MZbKCWd4^K78bE-XAo@dy9c#g{u2k@s&2-nUlc98`VmMk?U zLX1tsSgWvI)&lTdtYbN8!#MWH-LRTSBS`2?lxsEB)KrXXS%vvm4XAy}eiR|!H8)5K z9rzqI?CmWq6^mWRP;0rILXvhd&`M(_T1iVm2iN|YhyrtKM5?U{n-|uP+4k6VrxeU2 zR%w8=n-b`N#ptovsuD)Xa)RY%y)3lAs*i3*f&bwx61T#r=HBg1l(JG;y7cnsn(GIt z!>ps(MCr`KGB6-e9)Yz%K@CFQsw`B{(h{9Q9ioK_A!EIvmZh=lX__l-BSBvP_JH0d zBcfTh+%BDQbj=c5n1xfzwNe@vQ=}W55-rg+cxXy8Sh^TdLc^i_A8x=UdK6Kas1#n_ zbqhN={PfUpJnvt88Bwj3ju?@t0Prw&oGr25ZC9OMiqa~hcz1B=&7~0RPdBK7o)@s# zx_|M-rJZgk8~{Kw4E+%}kavASJk`tT} z?cgbZ3ewL!Yr6p{tcuP}Zj}RD{j|vPsKFn)S{gW@rzH^~;C5*#(H~}iZpsZUQWedz zfTtZg%ax(g^3D<>iH%-x!z+AlM=3WX7U3Xul^Y9QfMY!z#()VW$q=+(yG0A(a&Ltv zBr#N%M5HoAOEK>)$PMOHErHM7KrX;WPJu$fGj9D4JNMlnr+I{?K(l00HmnycF+uHt z8SZUnZEijrjbJvzN>qkQPe#4iK371_|`vW3`vQshVx?mwl% z*CK$=0W4fjfPsZ7>;;`LMSRJRX92uIk&24p`f}od8GJiZ@OO?97^N0TZYJb%Vjqb5!`!v*gUMyZHZ{^^EH; z53AhWPdG*%(j#JJ37lN`Rb?()DnAsD;byTC&HPK(8<&iYclScX?jmcsY41XOXsfnC z%x_+fRlmVE9g30QS_W8nx0NU%&{&)SpNx&KYWo`;{+0g`=*P_!Ji=YmVBS^2MmR2* dw;FRfvaR}F0f3S&pqedbIv{Y+;g8@_tBqxVio%**y1%ztG<-i%jLRL zHoR7_q3o2JHKXpgUTBT|O6z^CY%uKV7d)rwmW)=g3U8E5%PzY{y>%83N9cXuvb}r= zV93|qMMHjWt_ybL^IE}a81(91=jPCocRc!jef!bVS zl|8@@)|YJE^KcWt*VXkJ|FxmqY{)-~dg+{NRQNmiVU=6K?NM_%-dv71*J=jqeSMKW zZkd^2t!>qf*0I&WP(w$L{Fb>U7%oI4z+Xe6=lX={)QkzYS+5)J#0AGaHxadwU$lI) zS@(|Ctfbai)m;&Dcbhn-U1_54<|XbuPKJ)`7XPCcT(xy~FS z8fEctop1TJp*#w10W>W_BqS=MDPCWD+E^k^ba?Bz7GtofnRlCanrqC_6XqQ!nnm5* z3Kp2#&$i54@ZW9t?@jpcEoWOz^XJSlynYvd-P~o~acnKadKmQ67hSz!D#*=my=m1d z!f(%>2*W*lLL9Y*>zubBb6VMQ(Pd39l?>0*d`I)~$;{n%YjY5p%n>FtHYb=?ah;mR zsg~DHo0g{)t$Nw2FKYO?Xn-}kZs+ry*$nupF48W@T_vvz@MIW!9a`nKS3xt_49`7f$``gq>}^;pUy5F~H8?(0kW44Tw6*YKLQKhD56Ty)%O=(Z*XiB7^w)JHEe2Qd5&ED-Mq zhxjWG;?|*sJd@3=ISJuJw_8#M52`W<;T`gP*QqZm@)T^22@;p`$zV7VE(O}7Dzxqr zeH0RX5K=rj|Gm|#R;`HV8&^CP`G`x~s$dgFJPqf<5=2;)xzWqZv{1K0R-M@sVL73> z&ywbbu;1EtOepy1o#izftYt_AYdjyOZ9T3zLefa8<^lxy>2CTv7{YfLm91b0t{sh0 z3nri5tLav~W!k}d{N*nL#*`LTP>J6ApC}CJREp!w-K+li~NvT|^Yah4@+!R*5sM3mj6&Md# zTw5J4n`30cxr9sI%o$s?s8*0bJ(@Ma+mF)8=}S+$Vwp|#cE z^g0)`l52o#FsSefaD^*UgkJ#e)s0+nIfwsow}p6_Ip7pAd=4xyUt(cglYf&_fgAL_ zyh$F$f^a}2+aDPWGKvIzRb?3@U?ap49!3pbKuMK?5s4d|p#>oZ$=i|vuc&~fEYL(? zx}_%_(O?}E4f*+aJjImEUw|85Wdd^3xaw8J5&n8KTDM398ASz#srwSe?{!9TUw0Ju zCQuyW{Od^9wrDaQw?UKNmuUW|Gn)5yNAsQpn!{3}B={IXdmAaYDmY^o8dWzDKJ9M_jqtxTro*xEsPBhSWab}U0a zvY*A%{E23bgv-m0jcL11nNHKD`3IhAlUkPPfw4?R2N3qMae-b206l-o@aeZz0)*_n zW16Pzf|u_?VKDW<-*^(UCdbWA<|oIsDY{JOC(#ZpjpM?VA!U=v6jRWtt;6LqiA{D2 zAK_!(07D4gf7w{V6pD3!s;ACON1cgvomyaBkM(>?%c2`)bes^Gu?^kLjy({{^$Ovy zJK_1rHnr+b$h_BO@*fN@)$9Wv=F)HkH#9KT4EMZ2Dx>;V8e!bYyF-k$m{t72aR%#EY@HN?6O0}0aynZrC4MzTyZPzZ-nLVU=RMp3bMa$3BQiKfdG5HR3U*|4@W z{pWLC2GLVM>Ms6(>L8ni@s!mwr;g8R70WipxX|kwW}W~5C0&MnHkZq;gV2Jm@q#jVnyDbx}6qQlcjtyk|! zK#rT>`@0*C`-I_O2r?`D!t0SQvb#w__GZW?q;OYvfMCL#m^bmqW$lGil#EFj4*3A; zUww}(!EF6-y*$_SA7L`yG~gueW5QId(7dgmacyWGS&7FX>D{bE^=`aS9mgeM819o}N0~I+ZB@3aW0`sl z1G+lgCu*TdThx16{((Mas){`A8ZiOIqBQP?kQ_tZvy~z&5HtmUE+>g zo?y#QEH;K2S`>av-IuE2xxQ2b0+H4CM_;g5X`Ian0RoY!5;X~M}ZRx!u)9-tVdvcQF+7zxwRQsOzsj`;zFq;<~>O@r$prBK|

0)3sW`RdJk6G+!jNv?|dO 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 JhHSH#|9@m*Gk^d9 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/PythonExamples.doctree b/.doctrees/docs/UseTheLibrary/PythonExamples.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bf02a4cea104048415c974673b321fb633da749c GIT binary patch literal 27416 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 a)mzhDGgWqX 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 N>K{9jo4qlc{r?o_^UMGM literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/Python_PybelAPI.doctree b/.doctrees/docs/UseTheLibrary/Python_PybelAPI.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0b344c559b02447e8697ca3df552e97f8bd85b8c GIT binary patch literal 3220 zcma)8OK%)S5RPN-+Uv*0b{+(X$>Kmr1l|o22NWq%5C{<&OoRfrXw*B?yWR54^rX8d z_8ua_AyO>$EzJ#n6(9k}`~ogW9QkTqyEcKa(n{0S)zw{9-&a+STi+k8o+^IsjLC#d z5Bn^NQWbII-BP5&JmIPJ&;0f8{3CzObu>FLD%T&B%)ZfQum-MZSO}{eG zwoH%t^tfobZol6P?oNh0?tOIk&P^{C?|Zk*tkrUuTii;w%*)8YqFW4OW(fl30-gPp%V25SW=WfxmF{yj8>=t5~a=$z0+8M*EtrzpI6EtpO z)vmo84}?niK<8=7_25A1{ejAOI%KfiA4@CpVPC2j%1RRhm^Fj14ZkP&=W?i-o(%3z ztWas`KiuzYV|_jp9k*zBXr)SLtzUF`H=ssV@+1Y6?e{RmYSGRw1Z5mvF4^kUCS!VV!wOJE!R5qx>GsDWzKcO zToY!33L$%LwU!j9+H*^WTPxEssI$>fVWd@Rc?wjvzhQ9>2sdPEtK4R}^?Ty_p6iS` zfX1xS9*c;93zj7r7Axh20dCpHa=BXOI>u_vsxTl9&@L`+;e~qQ-R4Lsn<~p^HWBDG z!daRp!Qn{hghJmnpk5Y)Dj}vDn0&pI@R%2p-~eC`Y9`{w>Oe(JghBI6X&c1+AxHR5 zyJf-RX4!HZ{7@olmf76YN-ful_%I*iy6yqfDWV1q%~=9T2jLGnIpv?au1pc508mj8 zv;eT&j&?rWF%sXGj&BBBYo!Ch(kSK{5vQky*1I!hq-U(O3M<}io!B{HLOgKY(&+R7 z_0dbmH%^>%>*N4{W(49B!y)h1VwR3`Hs%O-g!O3@PIp%GQ0XX$ILb?eYa}qT=h~r4 zNAMBhkP(22%68~Q+jUuPRWKE~(^T=+qCClh27icZA&`KcPFYL_&lHjZ*_8XKC^I~d zRB)IOp4LG#Wq2@qvVaKK`A`~J;`2-pNyCOQIa0lHvE~IhwhCtqm{5=mM%OB}U?k(R zhF_pBTw=H`h{#j279rm&=rG7rxdc8ph+Ke8ItB`3nMmuuSbxWLGoDS$1v#@yk|D#} zi5c#qur@O{2Lp&rKPw7vU+M9{yYr-3JOG-3XE5iM%Nf=o6AP1=p0(G`nm&+hlA*({W6$*y;An_&H5al9-IK7`|xPsbr z(Nd}+a0K+IP^Kebpsos=R3}hVPw2^nz#A)8Qjyx}z6WNKA& zXP|yZ)c7Bv+8vXY!vVywHfk1aq7dc^>KEvDtIW7X+N@-^#g=g$64*(Gmr~z(YQ!e> z$}P0STjFZ&)@CzT+`JY_o|Tk(Xq3owGE{K`hC=n+31Oq%IcBj_ z-&!2nJZ2w-R$Hp<=TF+IcF^BYK0=jKaqw;>RB?*m}7p#>bhv-jzj)Nsn#7&WjOH5X`j_~`{hmD_AeaUH-StUs5Nb`!(jPONXZ!DqNq z6ZPt#mEod!ce^J|4{g8KRFHlUIl@r=H+<#t7XSbN literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/Ruby.doctree b/.doctrees/docs/UseTheLibrary/Ruby.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3e01b33ddb0df3ba898346979ec87dbbafc09c2d GIT binary patch literal 4650 zcmeHL-EJGl6_zbg67@q#POKD&ootY%vQe9q-83kO*g$QxC@Mz*g0yIX2J6|~A!n-H zoz2XwMHL9#Tm*=Uxy$yZ=raV!`}AGf@60aAC1C}b<{bUG^Vhd; ztoR?dX9^+nNuMQ2t`cr4x0$H8%y@3AZ>qarR$o+iTvxMmqe>m~%B|o;EM%H!o>!k$ zu1CkMOijPJzhQW6rOId5MMtcQjnAq(qU$ji@}TZseL4QJ|!Rkz+~b?Vkqne*zjjF{VE)@m7*7S@pVt1>a9=|-F~V?f0BPR_FW z+h$T0^F_qsGtEbIrgR&YjcKbAd*V&8BW{URaohc2AXLT&y3BK~2j@zk4OGGNh($c@ zkEIo5)R*d&v|8H%EHH!L82+i?&t#;Tz8H`b`r5$6w@$8?kyvrNLXJg>k4;%VZh5SB zrg$5siFe?&cky`-pCf$k!n8Gi9#-oJc8(N9?b7X$e{yAo=0>PAss6J0&-&+ODSj;O z&kYp!phE{bbX^yIXJgF@(UR{bKR3ZS>YfBSGhN?KwyPTrz07Yc_n`DHn6f6 z1+spXM7nMK=940ov9!PxZJ#rpS6};kmgzCKmD`V(f?AP!zZADUvewDnaPpzM^}Vsa zA~^g?^GL{tEg?Q%A?Q(E#6-uvd?wF$!19a0<0?~0neuxcXdffs!4pd18Qg-Hrs`tOB$6HKR}?z-KnWl^f)vsUK*&R$zt`C)*VY~gc<5Po-feEeW|{5a73^HORa z9L?(Z(bl8K0m>C$IQ)UWAf}{9BOg|4^tQwBVy6zZhr-5-@ zVUaL&nwDh+7TdMJ5K_*t+-jDkPO;jxDh{c`q+JN^Ktp{|xf>&;EP6BE+B~`DcBzr3 zWSUSps6gpaS{5PRSL)9VSiV_Pc*;E`q`oYi_PLPQTxc5KQ@5jep|lNCjwh=+x$d?E zOJ~cDJKz%uuUTeGGdL+*4l!zMN&Cbm9J(lTqjbdNPNPLY~Kpx+k;~ zr5)Y>*?lAN{np}U$hB5F6f93tuHkV~HAefeS9`j}rQ^9&?)K8o5)1JU*Q=S%6_{SV zwYaf#)9sT10GdI2T%Dj)%H5=sUICm8Ezb}h>q`_b?!R~ZKK$9!qj-ru zQReJ_G-Z!WWrWu=uKSYPk(Yt&9|)VJ5Z1LULJB2TR41G6HUOF7DQVzqyrE@aFKn7u~PDL7!&(NInEaLROUqA)H(XU^+ zn=wwEg&a*$8lpKt@uxBQYj@C$@&Ic(s%zS%Tjlu+8noSJT}zO>fFjL(NDdp;Q-BA~ z0h9u?EQ%}YcS2+J7pQg%)Oz#=8Qey*1x+e6wS&Gv#QMAVPJC-zmk2bK(6;#Q(ujBP z_gk@J+-^Hq{`M{=mHPPr$C^SpIXzda*`^SXJQcysB9+eK?}@K35of2n3mm&sss7T9 z1^%e5+EOvUxy-BC!IOrH5v!828Z%dn85)j-3-M%ZJZ|sLY8b@M60H|W~#IOrK;+k zor56(+i0O~?%Z-uaxxg4lfe)IIp+{e2qA?06$Tyhd(|J)yWU+p5CS0)ESjpWdR6b$ z@BQA#&t`sc@zRw0XV-Kl!(^|^gCI!*p$j`7q<$WY#1tPD*MDBTS8Un^#YZ~Ll`jfA zg%!RGqdrj zjJOgk*I_bbMhfV=6>X;*3Jc=hh-ybqHtKxsZyJd#U%jHWzihLPZ z{kB6&Y1o3xS1@%Af7byBc|(4WE`)1bu%G^S8v7W#iUS5XtaV3Tky`-fbnONXpwmfe z+QjfEI5jo(S~8xzxRKm|9ss|i*@4A?3*-GT5Uf9Dc-C06bl_G$d1Lz_yO;N)&}VOj zzDTrSyTA*0irswTb=d<6JcfxMtOQ;Da!(5Cbl*)6Fa zT>VbT)feoYf1CANj`FDOD8x(PM*%uUXsN@EoUt!`&3o03xN*|6woc{kQxCdl8=ZFA z5wty7tewT3a}^eLQyP=q>h(sWQFoZ+-Bb;GKp3G*_l8;2x!HZSD@`0ZZ}))rM|NHb zokqJNDDIweuK)ah8hjH5Ie?6B#vt>s=mP}l6Y1uDO*19!5bZZ$e>4WkwDJsa0C&Dx zB^)l~P+$^VhtZhzDL)Yb8z_V&_;i=uNf=V6kP;pi8W+T{i2J@ka!@TSc>(+&RJ6tJ z=l$^(yZyH0Ds%GRgnJSO1UQLEzPM^pe}zM@(BiK5+uS9e)I4ox z+)LF=I8CG0F5BL9yo1z?S8kV2?OH`?dK3U+Rjm2LB;+OsL_23BDOMEY@D{ zl8afx)lf_-8ibfj-7fRUXt&s5m0gulr*L+fOo7}DsT{?MW?bcQ@~QkK<#NA5MzdTW zN>pPPo6uHq{jZz1dy@`7DRwoN`ufmv@U|O>L!HbeI-M#Mb*eGE2Y;AMO9xQYfv z7wR^J0t5xs=C-|b#KPNI_S(HW#fQbVy?XTLAC~Ewc599jQPQ6K{H-HI5M3YpktqIH z!6oM(yO#ok`?zt$sd0$v%azq17Q!x9nd%^nN@K`B$uH!eOJoyNFJ} zFb9CQ z?F!z_qxJ=T#lbW5=;Okk8>FeBO0D(r?kT%MJs+UP+oMJRGF!V!#Y^T<3jtd-L|!gu zL?qmdH$rp6tD7h|vD#2|RkrQ25>$A3k=PY5-)XxjdDIMN?7G+sVKsx~Lf4CC>`Wl~ z`4GpgqMMY!YE;+@9%E(!Pvi?ys(5Bs!vr?+P34t_Ya*`6gGfHf^) zq6j(_cBRe|VetUt)9`Hjf)akJ0uM9*q~I80&TTu3DsuoeVUaKZR>dIPE99(QrEJlg zOxe>R;I$IuappA;gkjwTT1-ME$O|E6&CNImpy!`VWm@Dx>g}Nb+O}uKUY2U%wRbv{ z_{Q4}b!Z$!*F4m{RH{Oe>Xvi0YrxHxp^SzzlvD`RRLi`Y3GD^?g+sJJ(VixF8C;tL+k|BT?g>h(#AD_KuS2K}$P3R_NmT9KXad&bKdy(=5jj|8Zx|_M8 z-<5uaJx?p$1+daH0(}8^96F|$@4WKrcVW*}HSiCKr;bWc_u)kWQT)8U0!+qU~eXQE?M2wz>huRC31+`(H z+4ZXN46sInlGgU^8IkN#BbVxKq7(Qpph*22IEV4dywGX4j!OYr2K)-x1k|>D4}^DM zwruTU8qx;!VAGzQOd)UNyh%b zC`awY=lk-LXY%uBxqO+1U!sNlvHXqvO#U{vEA4l8VpseS=pjvT({hH~yIxmn+@2}d z;gx}txSvK1l-$x64^1|!7Y;~Vs84m9&K-~srdEbR!}-IqsxQbjKt4WlNqQx_&1X*vSJj9 I{b;%W6V!NwoB#j- literal 0 HcmV?d00001 diff --git a/.doctrees/docs/UseTheLibrary/migration.doctree b/.doctrees/docs/UseTheLibrary/migration.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ded1462c86d4a0038e7d48aabb84fcb97828d991 GIT binary patch literal 39530 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/WritePlugins/AddFileFormat.doctree b/.doctrees/docs/WritePlugins/AddFileFormat.doctree new file mode 100644 index 0000000000000000000000000000000000000000..19f437526f25a2c3b2081150afd7199ef1948863 GIT binary patch literal 24338 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 RxR?kYuyPh@+rs5^{|B|#7A61y literal 0 HcmV?d00001 diff --git a/.doctrees/docs/WritePlugins/index.doctree b/.doctrees/docs/WritePlugins/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..37c4a054ac65745f85435c34d7b2d24e14c04c1e GIT binary patch literal 8407 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 HxRd`Eo?9$+ literal 0 HcmV?d00001 diff --git a/.doctrees/docs/index.doctree b/.doctrees/docs/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3f3907523eda831e03f221701d1c11d88d546285 GIT binary patch literal 4716 zcmd5=TaO$^6?S$#yF0Tt@5VL(d!3F@umheMNAQ3wVFhg27>6-(9C(V_HQhB+rS0x& zs;YNq5uk8Mltm?kNP`eRBH}kh%1fmDA0GKmb@xo~fQ=A5U}@y8Q>UxW^*dkh`<*|r z{d4}G+cmk6*=)e#I8!kZCHCzV|3K{c~w4ikUDWB2p zXZAiQD_hobhMR3E_FOldn<`e_T5aLTolj)O%TY0AuE(s^a$Hz=MxLz7*pSuhQNoOY z5YL^ArPb3$T;z+zm_>)0Pe`Y5>y}Mvs}#H9ir5lY#i}@PkB35~e5i{o<9c|k^x;tD zJR7qyPX<$IMKK;o^)F?WwL^GdhBAx!Y@iLiy7p+L7>ms+@QcV@Xaw%gV_Xn?k8Zdb zC>;oO96SsX&UD7(z^WioM?A2C2a({ZG*+Jk6PfT}qIAk|1I76Ae|=1y4#eVC6^oI$ zMiCdUBFy47-0@ZXUdQh`es3Uz;u}76{YqWjgsUC6+I3xIlub3uMY}Gsy45xIeo zjQ+PbmWvR*)eaGPjI!dWV)RqfW1{1}@^5T}i7!%FT=#?abI;=&^h`Ui{h!*b-lTyGl75)=>01Dk%~w-5aGU6rORi~9ruTg&_j zuXv?aoHbn zpEEMt44<%AMl3OY?^<=UqWl7+5y0Wy*23#l!TpJrmj5UzrbuVYzS?i#8+?ZeOMX|W zyT?tWWsc;TAx2#D>`%W~`_A+f#zn&a-@5k+2ecYKQUId)z1(fdEJ}(P!A`2W6k1qu zBxd4g;^*R*;(hUJ@muks_(=RtIPrV&2k}Qyia(3Lh`(~Tk+K;QY(@EK1(S&7eq3U1 zO%pXPPu-f3ag6DD>bC1^=7No^NXJM~`zE>>mSqbFNFa4A)`P(iA0reFySz`oMx)@BV zu)$z3=snDke%j42tO&79um4Z~dS4H21DkF?oAS)p;L z7~%VydBI3@-C3I4HaR0+wUMJc(9zsa%1_RQ{?YX|FuU&%$>@8`>MPv`1?bCuO#%8= z^@#%Xt>FE6%l4^I`!xk%&1`me=%BzKG$#}CKOhsVJ>7e-xh6)J~8fl9v&|#}BssL8>qDfYBKXKDtw3=n6!u~MVYKpK{+^=I5rb5*?wT|zjf_mj8 zw-Xhbm}NNUkz0+V;*)NJ@EQdUlDr4ls8}!9MP@lhpIiGeOA4StGt%7}iasxFITE`g z*F`OZmH>n>rn<2wHZ0At*sLxLamyi=y?R;b1gmXyX-G_zc5!isTKuGR`xB*X22^To zK6=S*6Zr;4gfq%@3CRu^pv=R%6Ag~MQb_=8)W;?~22TweK8zdd7ixk$a$B0`O4~32 zuR{1%Tu-oMzU;U?K9h)=1;Cp|spC2^9~Vyk0C*$-EKq*<7TMD6R*`O<(($L1?qF$W=?L+6 zw^JRuFraz$>e-E@H{Att0EK1*;*G-dWo-o z%Kbu=8(zdJ1lB<70-xpJ9bx-TUm}qWkED@ReeQ;_G=$D@q_%Rs=?nDO7MwBY1W&MV z=yt6ZHsjD;rYBs2o~Pl4#L#Im^1X>MHD97W_o%s0HrW(an8;Mx@`o3$yPcfp;hZLu zGg~AXV-|(qlcu^1T20t#2WoJ9-i= z9Z!N2fBX*F&xclG};D1KmFqHcfC@7gG!^6w@@{a0e*JG@SS5+<~w{`BQhn zoMe{GLLsLj!4JiIK2cQnTP9`bvY!@2H4vzm{kmF)i2`SW7@w;LL{eCU#8=IRDEkoN z?ZYAm5uh(}&kSl10F8hI)DAV!pu#@kgek^LdNQTrO%ym9nM5Dbhb3wToFhj6p1=gb zxy2=yB4{0kJjI7sh(8_>%6hZ+>d$`^Yci=Y?bNOE?1(KCWtv(rMnM$eyPaD6KJh1+hY&Y!gnQtRuS%B7M}hcb literal 0 HcmV?d00001 diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 355c6ad1dd4954ff74f2d19c4cb69ea01f64a80c..14389061ee9cf34ac5ce55d67c6e73808e488e20 100644 GIT binary patch literal 413780 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 Q7Kw$Oaqg!O3Vj>?AHUx%I{*Lx delta 11581 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 RBsz;T6oE{M%@Shii~zGqJazy8 delta 157 zcmbQH|6h-#fpu!hMwZV!>V7?(i3OSZnRzLx6;s-#B=+!R<|XHprlh82=A;%+iJg+g zz{tRmxY?9<12d!B=4S#wnHgIqKM*lvY?>@CD#zG7*-TW4aSBjGVsfFV0#J04s3}V$ zP|suqQBlUplOKv|s!9X7Sz0GypTkZ4nca8ViF*dfFSLLgdzxBxl$GsvIt5jK@`lQm@A4af}&DY zKv6+OiV(Vh29P2}2)#-tARPnYz2Dw{yXV|7z}~oj4~#p5S=%rP{$_4(4nYO?M0R}k!m;8xn^X1>6sZnD*O(B*gQaUT5EPDq zpgC^{A|^wSRB(E^lL-X<(%@+4VhsRDNB|55n4Sh)F3{5h2n1jOpeh4uh5*tFAnk!D z0>rfgB%Hzlq&vXDhyX74fYc$tW&;!wAjCn>7AP+V?(V?Y7&tkBSFZq#2Gkq?;uwgJ z2Qp$HI~$w`0L#lj?J!8|0YoA&MFO{nAR_}Hksz@j6cz%hBS1wOjE#YjOn@{6gK!(F z;Ot9q<|J5I0ivQHpcG6^0ZCC16$KD#priy8Zh|LIz|s=f-35;ygSt8(D*C>l` zm6eEy2uVrFTeog)Y;5G_<|-&CxVpNIjg4hyX3ELQd3t)Tudhc(M~jJxvDs`xLqh_A z@a4;wiHQk$dHLz->5m^jnwgoct*uE*OV7;A3=9m6kB`sI%`Gi0ZEbCJc6M4=Sm^5N zR#jCo7>tUFivIq7H8nLE8JX?v?VX*SgoK2kprD0?1sxq7OH0eHt}Y1)iN(dmy1F_X z4tMM`_$A_ zV`Jm7W5=4Bn)LPcjg5_4T3Sp@OzP|Fi;9Z!^YbYbN^fuPw{PF9tgN)PwZp^1X*613 zV4#dMN>o}L~OiNs>D5C}v;K>@BdP8{BKfwQ(GE9llIZ!I*rNA`fGV7B2$1NemgL$)$^x!li9za1fFE&Wj_LE@m5gOlT{P-kmBa}+_` zO7qY&D1@_zHwNB46E1a(e}6sKpBBoF#uKNZ=&N7&Wzi_+s5%3kY5Ii^|6g)};T zHpjl`fz09GYdD*@5h`_)Lyy1@Ek)fp2zTH!*G(I}%=o-JaiKHZzcC~~F8?lzjVx1d z?0CNTqhDmSy;vqJmQyy>B0uckQTVVv^9m!eXH7n}`204tf+D1GDYkStXk<)25;f!b z?%WH@mr&y70&3|ri=H#x{z9A6%Dp<%wm#FRov?i^bq_CLo}ZX!`LvqP%N7`HSVOm; zSXK?L(c8!9q+_gOl`Q?xH$$Foyqvif=^7z@SlTG2jX=P8CvC0tO$%hB?Hh7B&asa6 z4m&iU0-G64TaQfRC)h%J_pbZQVlqSPcH(-L)pK)cX$EC6TE*y?mxX{Rgc^nZYCjGU zn09Gxy^8dkM4g@a6deg_>n;_Qn(Gwk`UWvIH#Ms*+ch0saqYG_QwbN4xq9+YRim^e zu)=&^=@e0JyMR6VJn#MGrikUBv_~t=cA0C4N2|4=vF_NYNi=1jK35?sX2JM~vvN(` zO$&N*h+%w>YFTBRluE(bctJa^tkDTgq@r-Ly&>is-mnGk! za&A-AeN(dcTIY9Bfk6 zvfbEybDW737QFM;5l7Dbnbm)DW;OhZAkwAZ%^r(7fHrX(|NP1#&016O#rx6ru~X=` zuS{wCP`4=3*{4Ij|sD@~A;#lq02d(UU^oQpy{^pL5aFlm~< zrXL^wP`PdD`;ylx!(c9g|9v;VP&T=-AxQ{sf=*3R1mPH9HcVdaV7sfDuD>P2Q! zeZFwDN@A$vFV3+elwM&egaW5#~URxa6}h);hY+7(MS41XGKyoyr(n$hw{hEczhGcP#E{x->vHRW5l`Pq^u2d?udi$5p}qNJ z!TFPCh1{Y$XQBC%b-V}fQ15r23wiUKDE|3oT0-1)4FUM|C}4+8ZVwjG?Xj=nP>pWw zM)&oh`w`ED`oRR@FgUC(Mqd|)cflGG4KPFuRvQB&=5_7q`M(rgr1_qwUitq8z3EG* r;R3Nge{iNz=@CAmeh?|t&o3yjM7%yI$ifGATQ>!G?GAXg8=Xvxw6##dbdf063l+>S|kr&F|ZL zX4wsdKg_sQt7^m=qrVj5KZSb5=EeGiC_UZxV2ZnJi4q{Fe%#j3tB-yEt@`%ymC9BSI@_wXcN(*i77u3YY|Y=y@P63CArzt$@9$WFVeL+$lDTmT2O;+8WAf z$#FKXl;~7M%nD1a_LMJ}`xOjf=rGWRTuXI*7qwt&CZgD^L8y<^WJ^T8gNg z?{Q`PFc_FLu2BlUXHkd_KcNOD!TGJzgltD%1hm}V=cVf~#!5Ar$a9?@OKoj3o*LsP z(1`9)=0dy~K_yNhZfrNe(l*rs(PRwaXJ*B1B`;Js(3j6k_sb9Zh@cacv`p#CE2jZH zTTBOI#*w;5F+w?BxLWq)ZX`j(oHM05#MW*+1&Vn_D73AzHZhNk=95EzwCTDhv!GB_ z<*5X8U_IpUAJr8>#bDPTEYG?mE7(rqc&^2E>kwL*PdCLAOW?)wHiRy4&L=2Q`F8o1 z%cZ83K;)52|mP{#Nc%3g%VLXuc1!%Rpq?$)XzBL!AIz^#@O`r}KK z3E_m=?!QlqO?UEB<$Xc2&_e~T}J zedl8syL6m6|EzWLMLf2dN`t*m271J1`eVJR58cdYGl$LP;XEDJ+Nb%PJS z#KPlw*N{`39?K1}K@(HR;Dm@+57IX%yxn^R-qQ~D32j*q{L;3fkt6H6^85%ItEVcNzhe-C{?CaryzJ}FFqjR0>CHRs|TtS1EuEX9*k zPbP5|*s0}1#SGh*1={&aLfy4o7;~$aX|-PChOV|i0S2WV%ZJ-#2qS8LW1-QtW>}{# z!HqfUuHM7PNd0voQ1|5<#XsKjseB*gmm(wwCnPFF#v4B{$F7722EKr=LEjzT0iq&i zGri_etGP*_M{7f8`ArpS&OA!ygzzVV4GfrDX?#Y@g}?JB7Gmznr7-b!CG{n%c4hF% ztNloWhSK0d$8g>{jY(49^9@u#YoU=_Z zrM8k;-|(yx)%XtjqxBr)6nN?B4H^IW|U|uVNg$ifISUzU*`(^jh*BeN>(^OjWaM(;L>rpt+v7XGJnfX*F z7cV$&4YB7q=8Cun?-eKIBMG8%ZOZLFU(gN4%0*%m1``i_eSLWc8=A#QF2_w9Yr~~G z#Hg~hqS`|eW2U8j72dq{zxny|PTAs#4N#=ECL1rZjs<)bFTDO|dR`Rxh?i!^=HNm< zM&i$+B$5`R}(Maffn{R<9b%xFQ=ft zM<*W8pAsVUL<)6+qouVWIzuJF~&$07sz<3;u>NEaA;EeCf{jnjiG}$?r z(IXq?8D~WnmDJ_Dbj68YcjSL50dIaAd0{|bP65e5ss+Z`RY)&XMY72R*O$}xb-OMz zUQ-eB+k&tGv5zXwLJNz9xv)&!n*5~Jd*G!U-3n6WCXOav=CST>yA+9|wX`Qdqx zs4rwyS>0A$4B6Jwn9KY@Ntj32irG?7{Nnc2v*pE5t+{VRF+O<|lU&1$%!}!$9&5r2 zkloDlcMRotwFl>A86I&)_1@=!%~dq)e{t`2EwNJXPZP$rgMTS}-8no+K=}6WUh|q2 zpu^2?{`h3}PLh+M)P*grta0usUYTe3t{N}UooR?^H3e2HM*HsHmw+OjG-%(kO5Wt? zSA*e<@X6XnK_65>(#N=VRnE>&Uxh&9`yh2U?|HCl*Hun(OH%H75Y;j&6}3w z&b6tPZj+PyN0s7kk|^f@hjbf#kTKg~K}R)BD*q*(wTqmPA5VF%S^2-)-971lQK12Y zxW*~KlVP&oks*Wvm{F^3MNGrkwQ0$LtAykAw#w zmD-ean~5i1>i345$FCT3t9|pQ$t&Hh8n*oHAK4C2g3T>oSnuScnNNpEkejvTcvvja zl^oTzxW{9wFA5TXxb|Ed8pD9j(S5z08o7OIjUs-U}Z2z>L5B z?2qMCUHH>Ig>OUI;PcPg{dp@y#CmHPLb!xxZrPbh+1d6VWk{A|AMC^Ntg*R~fd!+FPtlr)=GgR^dSe zU2a1Iui}0goPYjAG;*V6hnbhS6Kj{Nj{?d_bIk_9d;ARFG6g<{m$Msxb^uiGrQXk`=Y9j1rg3PvPp>z?CUAE>5i<`jt_%yyXHSggFUJ>Gf{1&)j8?*( z1?2dW%je#ySjHAH&Z(=jk<6!6Nt)Ps z%x+0md^N*LqQkY5OGtbWk&ToQ_)3bK z=dV7Yb^P$B4M(longlUEHQjl%5bluGMB~UilhU&J^7`@~e#Kz;qMv>$lpXSwAjTK| z;4KbmN(aSk(plAR@H7%NQ>2LJ3&cj=pUnXX;7KIOf^8)GPrib?6s z$3j=;nCMx|NAng1LE?#Rjx5x&{71`=Zx|`%WcbUkD%3~VwoHGUmQgX+kAXn1$jdMf zk+%`qz7NJ*pRTrp^PzDyK^GslCV_F+g*EnJ0mhF1Y!>EMR<3n6Dt#lEi67%{Ra+KzH!Lz( z(<4Qc)zthYNgm6Gk=DMYAG+*yMsiLfrEV2{*l1&J1BYrHPTr~(0WFKJr{kAgFIP@> zWYiRKQ;uQ3##xNwk_q~k+0wT!EuI)DbiwL2(fe@-rtZ-s(ZMriDfG2lEo~RK*-y@B ztUqIiDsML_D(*nIYW;g)*L2M0hr|wvABr1`D4w$)uiFQ>vF;+SqaZ zJcZDCyWxmDF8lM{8VZvB`mD1LS7$cJD+`;=gy%78MqAG~#;b*60yIKfe}zel$?e~tv{)nV|7ZyL*~HI}7vN|aZC6?xH3vzD;85iY(gb5ZVl79q zmM|02-Jkqa!Pm1n3#VqyNjeAtH}mt4B!R7#78kocFWFbj-ap9WGUw!?@JmYnABY^JpZ0v2(K1K;V|82pM>EQ9+j#g|^Zej? zRvqnla*23i!#lUGu|(PEF;-kok8gp-1((SjgS^OAqmoXD>JFWIAv*sW!M4gjh1G>T zdY88!Qpz|;yH?E zbXBA+UgS4%p}pwRCK3KHi5(XaO22>b#zZuDx&G1-86lwdEp%Z`%1w`LPE|DLBETk1 zVh21uZwTtyB@TQUS?U`0n4njhgKgC2#yiDd!~q)0!G8~$BX$ixW{ZB<6fwE)T&48& zL%~W~yQd~NYLUBnN?s2B=PE(QJj+TeAmur9`~H*!{O%7uAWD-|^wyo(nB!1Ms7T${_8O?6!-Gn9-ud}?Ri+4xE9>u*H^(_8%Z5nt zWHRn%(j=JNmnFKON9Ya1G>VC_+zZlY=+I^I|CH`2oy<-Wa}o&;QOtXu&${yJYsFN( z)dGdCXf%@5f!Sga#viS?g(#Vh-rf_Yb*s};hxWebjSL%r@~%sO#yK!NJJxO0VyyYE|dw zwZhrL(P?3sQAmPsM}d>D=p(5HT*`A zq`;4Ef&=UOp)Ib*1A^{NQ4Uv5FiboK0|wt-Nv)?1)%`aC`w9Ka z5?u?I9Nj8(ri|%Cg7vI|U7dp6G+hGSC<34;uc#m+uOy?WYN4Q_sVuK4uOKB)S>>yU hsNMhL;Op<|=^p<7JIv-EpePOiLp>ASdN?}ze*mm}$JPJ< literal 0 HcmV?d00001 diff --git a/_images/FilterByMW.png b/_images/FilterByMW.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4e1ee3ef280d8369567d9a2494f21c486d570d GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/_images/OBStructure.png b/_images/OBStructure.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6e0fe4296e945c2b934800d0f214f3c4c8e974 GIT binary patch literal 12844 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⪙+ay(t;ET1tp8Ie} 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 |gX_tAG6#KDn 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 literal 0 HcmV?d00001 diff --git a/_images/SortByMW.png b/_images/SortByMW.png new file mode 100644 index 0000000000000000000000000000000000000000..ce75be645617c25ed3fd6f2575c6d92aa5d476b3 GIT binary patch literal 16578 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 VKhR(J*;^I>Tpis>kL+p5{{sJgTBHB~ literal 0 HcmV?d00001 diff --git a/_images/Tutorial-Transform.png b/_images/Tutorial-Transform.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b6df641a0ba48f0d2ac9f63c5aa9dad3daddfc GIT binary patch literal 1183 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�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 literal 0 HcmV?d00001 diff --git a/_images/eMolecules.png b/_images/eMolecules.png new file mode 100644 index 0000000000000000000000000000000000000000..4542ea7643f86c2f24315b60f48cac2aa0841667 GIT binary patch literal 1984 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

5a{&Suyz+OA zcb$CZZ|U9c$-sRUy?fw{SqA;tl!0?1pK7?pVs5q^=Hh2R&Yikc+(b^1tLh8|uLN3zmZ zR_~q$`T@XC~yK zf@CAqH9xP39tSCEk74(*-Iy3oASxrL+KnCugv&ptHojE%I`7|rnMny#K>5U*1DR`p9{@OtP`uN!iQOb=!?u? zOmANW2I_V=O$J=bg``bODW^@URLJHT?HWRufYhKLd}goW=TUudI0c8l@ShzgcSDb_Kp?Qz}S}H5&e|GvdcXnQ1ohx~Hd5L^me7L_y%==i@VV3ZN8Mr{qFOQz3 z@qW7RAAIK1k}3Rh(tA%Z3R@}63EHZX;0z~2lc{QQO2&m*w&@9)5(*5=r$~eSHrx1f&dA-$>fObF3V`V~Vg^}q~ zVhtUDjm+N}+tvs7efdAmga>kX@ZWAF;gI>?!iPB6;JzC-7@H1BL%Z{^p+73JoDKWL z3+)d1m&cCo)K~2A@7!1xt6K4n!6OuUYl&`mN){)aiX><*Ko8G$3AYmlQ4(cXTs4HG z5(Af6Uf08L90{VzK5A%a$jZsp*?eA^o107Fqah*w`-*{%j*gL$6dzX}^A)89C({q6 z!$kq2$|%5R$VWZISQY>xg-)dC|3|ZE9N-n1J~hZ%Q#qOW}bY8X*Y8R{wQ}jy5xwkp>I#E5%AJ zU+Cgsb-;Q3wgWfrEfbKVhu~Qhgx**ML3IOvG~Ya3`k>kkm^NAf<@&UE5{QDI*Y zO*%_6&JrUzne!iax*#RNlObQrEkm#(r&&<^5PMJ7@eId$<&Xe)e<^Gx@;ihJ-s}2=en6r;#)7FEQ z$dmTi6&d_s{(@cSlSjaAc8gfHhC(Pr`-554L}O|uSzG5YDHz{y$!Cy>Lh;7i#AL>; zuG7@Wh~pSe(yL-UiD=W%zrUNcru%1PAHSRq=?ibdqhbI?B6?60Qa$u>pAz?c{<^l} z30T|j{(4xz47PVrP3)iWRq1ADNUDX_7h|cm_VD&%Rnd1Ve(@mSlO=WvNV=oLZ?u!8 zX$lftt#st0p5TDgI1Sg|+4)qa>4;G#BpmOG-9-6$jj0Hg{`jxK-1U3!PC##%byhoCyI)a ain+3pS&1r_AQcB&6rioHuU4x9i~cV)D-EXr literal 0 HcmV?d00001 diff --git a/_images/inputfile_b.png b/_images/inputfile_b.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6bc984988258034ea937a8b614800b39319b84 GIT binary patch literal 8083 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 V9ptpPS^xu@oV1cu1>7+3zW^^_61D&U literal 0 HcmV?d00001 diff --git a/_images/outputfile.png b/_images/outputfile.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7ff4f4b8707d676e7477120d466dc3a43490ab GIT binary patch literal 7079 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 Nh3Bd=pQKC!{tv}M4GI7N literal 0 HcmV?d00001 diff --git a/_images/outputfile_b.png b/_images/outputfile_b.png new file mode 100644 index 0000000000000000000000000000000000000000..eeaac77c89dd3e26121f8a73c29b3be4b42b672d GIT binary patch literal 5910 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 literal 0 HcmV?d00001 diff --git a/_images/silicos.png b/_images/silicos.png new file mode 100644 index 0000000000000000000000000000000000000000..717a5556558b8bceb34e20390e494b0b38f32643 GIT binary patch literal 7059 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 RZQwFQ^MQ_9sfxv${{!-Qh}QrB literal 0 HcmV?d00001 diff --git a/_images/similarity.png b/_images/similarity.png new file mode 100644 index 0000000000000000000000000000000000000000..434f525b6c23651dca3dd656a5224b6e789f341d GIT binary patch literal 3338 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 SHoXM_0QB#fK+5krMg0d;dyG;5 literal 0 HcmV?d00001 diff --git a/_images/spectrophore_cage.png b/_images/spectrophore_cage.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7a45b2ab05b0ad332887be52a7027f32ba193a GIT binary patch literal 33308 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 TOn=S500000NkvXXu0mjfyM^xG literal 0 HcmV?d00001 diff --git a/_images/steroid2.png b/_images/steroid2.png new file mode 100644 index 0000000000000000000000000000000000000000..cebf8a37886893306646e19b81b9c28d7357755d GIT binary patch literal 2043 zcmVPx#nNUnrMgRZ*|MvFx_xJzr@9*#L|K{fZ-{0ou=KtB*-rnB-%*@u-*8jb|%*@Qi z#l`=vt-Zay|CyP!wYC3`kFKt+|AmGBe}AQ=rJ0$T|7K>4jEsbYg#S=bdwYBTKtTUG zI&*V#|1&dYW@i5&Apaa3T3TBF5D-#QQvUz|N=iyXLP9z^Ix{mfDJdx-At4zV84wT< z2nYxO000)LRa5`~00DGTPE!Ct=GbNc0004EOGiWihy@);00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-mf0um!CS@dq+000KgNklhN6ou26w+uxXv{Wb* zhoPkb!Y3 zD`RD>_sY6hZMK`I?A29f9mF7kh$Q@{&Z)z}w#n;2;7tnTX}Ytt7Ov5J1A!VJxi)oHUX-Ob@u z3cCH=X5()UR^$*19oILIr_H*mu)c4y@k-CC6JMx+o1~Jqb*xCWBlKgX>A0@%+ukuO z2SFabUqf)d()NrMsW=I(5ci&>I8Zm|eOp35_hdyjF}d@dW=GUIRz3qY(p48CwdWL} zrwqgTd%ZvRtHXg_YNXBrN|hYTR>~EOW3;$K5Q!?`?+MgH?{Ab<_WG zR-U#cYX%zVl?bqdUMXw%!)5s9-F4mV67*o@acs0rK){KCa#qm_h_9c9Itr~mN6j4^ zv_L)eJ0_X2BXpLn$go5!B))c@(_%!QfSfOlP?AO3zjhSK6i;bMOgy!I^|hF%txH({ z(L30lE~vuh=b#>6Z|x5!VSO*IMP*Nwec=WH)aJg5j*C?&xREkt=Bt_s(RfEE5f)f zSv4>tR=_3Ab=I`^+?-g!I##6mp*q~!;qHdjr(ty(Mz*M?JtJ0*G{mqmcFNwIwYfGq z`pBjD=B&+o4)3qW-C}ReDwF05zZeLk9-Zh}`5{^Vn3|P{1F)iwv%h7H zdDWq2^@m{9N&B4+dFqH)*r8dy_Pcsl%Zv-f@mdo@v*NZMOw`?jkq_slFj8-BwYe;iY<;;Y{Sh=QW3URUcBeaM$y561~k%Z_SVFlGNouFVvab1g;x)&Z6 z=ca*M|Cu~)1>JMtaje5NN#b>Dh#WO`!3xeg;*eV75D)sokdjX3?y$JR`Ouz1aUQ?W zAjz)rNn|EgWp0Ibg{sL)J#*DBR&+S24ydI(j!a@VPeciinZx5GsZU#^MgI50U#>~& zM@>?oo*1-?5Ex8?J(0%++?2MwA5~TdNI{a+JSpw!6Cu-@gA24~zj%5WX+3jyaHr^X zvrPlj=DtTm@?C_5cG4_X79N72pNBwjhC4Uu#OKc|@>$v{QB8iP5ua4!6{f$~zL{L$ z4Uxm_7X~mArs1p9)N{@{O z$LWS+6h>_F|=bP8yf>Vk6<Rz>M#5Nt;Rw5(vVtP-}>4hCozdKM)s+E0^|vpoe$aqBbd(8@@m zw%^mJYU?nXB&rr0DF)y2IY%I3C)ZiUfaq#x%N+2S7-)i|vR^91dXt9EnK%z$-p)UY zj*O($0g23bM0Mlx!CP2{hZ%avPU?+(!x@1OxMk9GG{vhb%1>RC{9C;*I|khca-NJ9Z#(u{WTaMbKdXfRvWgN$@0m3X-_^@<0salvo`bP6R>sO$87pIDtc;bhGFHaQSgV8jOI{~D=D@%P8*EH< Z{14Yp%qi5lv&sMf002ovPDHLkV1hoG?{)wH literal 0 HcmV?d00001 diff --git a/_images/steroid2_matched.png b/_images/steroid2_matched.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c5facab50bfc78d5b66443c7db66fc34c6ea3c GIT binary patch literal 2266 zcmV<02qpK4P)Px#^H5AwMgRZ*_xJbr_x$hg`0wxU=H~V1=jY(y^WWd!-QDrl*6-KX*U!)F%ggG_ z%*@2Z=fuRsy}jkWzP`A)L;#2d9Y_EG010qNS#tmY3ljhU3ljkVnw%H_000McNliru z+W`U+BQ&G?Q@sEH2UAHzK~#9!?VNpoqDBzM2`eFb7=rPJvBp=+E{krp;9cBgzq8NK0rSty}>&2j8Em#ZIg0)~RSPRyI zwO~C|)>5mhcm3G4)$%W#bo2pX5<%#?f2B67C4CdRa|oxB_Ny`Cjw72&WF?3Nd@U16m=1~SFP2Xh6PWJ|oeP3_Q`b!)^I-9t{m z%2`%D>@`aAWxHgh+XgZ^Zx%rIj6{;{>ZQ~q+kKhMW_pcCz)CB&5VhWliUi=ZGLkXX z+V4#rm{O8Z^Usr19aJ*y1JPD0v2M%y^^TEDxDM(c$yNjVpPlL#Sp>#+m=i6F!j zZ5$nZdOAN0RwHs=8^#|zrRUa1=S(p58qG@fwOGIOa7%nNE22_hC8%j9<_*4PccZjt zR)UL(6)y&7N5e{pk+*lJf7giPVFjuhCDyOR5wQ{!;zM7%eVCmc4(mAnY`V06x(FVv z!RhD0>A|p$;#uqV;~;o=n|k|jFsxd<4NpT-6y2;PyLZ-b-!!<+*cI=cHT=vu(?4f> z#O|9lDwa5Z{*-CxgwI+|gB95Ah*w*KQkEexHY;WxFq#!8(Xs#CU6!{x*sNML1=dc? zJzeQrE5lpZv{{EytgOw({Q2qk^XyU+X|t+PIT%Zb{rlP?ZptF%v_~7p%dK_i3(6vu zh|Ov$7>5oeA_&!;a;7Iw^Y|%)6!Fi02{_X@3!-T!CJjS2CmKsIk_CrXo48DPedPW4 zK98GHPW^l3amk3!$J46aA?py?k*j4jxQKKa$=JXpv1=UXgLz1iW=V$tJ=CMT5}Ou% zb_%fX*)J(f(I`~4;08%6bbjrs{dOTq?W(2EcQn0Ho!8wlX9OaY!xz#pN6V9up^?xv-+I9DK}qjr%V?8k;3-paWqZGvNnVa| z&yqx=d!0rjA+6YANLb*?R(x~P(_ZLyRmTYVH)rL(Ef5)v-5Uv`%j4`)woN#SbevZ< za`&@?R5~lvof`=`%ZM%ulDy@rkJVxW4B(!&5UbX{?bxl6&^xPtlN)*^+;Jqn5=m7 zm|U}tFSxhAHU(nKfnB*H-9wl zExd^1D~oByK8=jqK%BcTD3_0ToXQERu|Upaf*YDddRG9IKc~Cf(YlJSrd+ewO}n+3)X_QU@ce+)`GQQEm#ZI o)q(vbuQ?vaz)*~06eF+WKS{SF%TwcaVgLXD07*qoM6N<$f+~Mf5&!@I literal 0 HcmV?d00001 diff --git a/_images/steroid3.png b/_images/steroid3.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc79d377495c4947b271445b91895d03a5a7071 GIT binary patch literal 2309 zcmV+g3HtVlP)Px#{7_6(MgRZ*_xJbx^Yi@g@9*#L`|0WW=H~h0;^yY&_tw_l-rnie)%DKK*4EbZ z!ou>sz0Aza=E1?m#l`TlvhJ*`>8z~1y}j+Eq_wrR?4F+Ll$5Qlt*xb{rKP3jgM-M8 zjnRmR;(vdmnVIE#dzqP;*MNZIb93TwaJ_kX;c01%jEvxAWrT!;-db9bczBC@dwY9( z+)`55P*BBGRGDUG+e=Gxb9324Lyur!*gZY5PENx?L1t!VfmvDBGc%|~Mb#@ST3TAX zE-tb%GMha;!zd_IQ&Z6%9?=^cv?V1;NlDKT5Y7t=LqkI|GczeEDIg#q8X6i95D)+W z0Jr&oQvd(}0d!JMQvg8b*k%9#00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_ z00007bV*G`2ipMx5-AlGeXD5z00(tRL_t(|+U=Zcf7>(^how~=!ql5F!?-gZkcoBE zRM3D5%EVZ>l+n#;iNF7ML9*i{PJEG@%g=UvUi3w)xOuGqIXcogHUNVSHrT#RI0uV9 zcJKaKCSl{xjQW8NqOj>F!t0)(+gA-gZAW%b(1Cl?XgIzJKwr=SyKdm_P!iA|bTFpo zW9b<52_26;)1ltA)hl%1++f2HciXZQVq#Vs+espqAZB+) z$CL+*J3B$IU9p?2{wt0$!v$B+S98mwhFkeRm#PP0`ogJNLU4bj{6tjEfe78p%(# zc$TxIznEu{zG0ZN7%x&A3Nx2qMn@i1+{sU3QQXbgg8S%hM4T zwD1<$(m3t5Zrt6I8>b*XH~Qk9k_IfjgrU3dX)A7wZsw{EuNX&(X^3mp(SlDlN5|ag zpV2GSMRdCg9XP_kYux`J=pwo$Djg$WwOH2J1>HoK)iHqu<*qUoBc=3cZ)Jrohq*d* ztE>nu;@c>Sr@>|!dYjSJP9GJM(Ar(iqiv{fB`2Ixocjx;(qx|}P8yYY$a zo~*vt^6Z%oUqtfys+q-vA8<(v=^LEG@55jq1*u+Bj^5l)N=~7awEDZFQ0PvJr20bL z)vGqDzU8mw!L`E{Do7J*~R6J=sr5qa-j zd`h^N65CwLva*}CdJ$b|rQV$@tvl8FNX+NZ7Oc#XKYuMll(+^-07Rk7qfiz|XQ{q! ziT1Se=9?p+KX>_)`?)0K-=FN%HBvNGe>yoQOI7qJjiYL}kefh&9 z-5^GCBG)dz@N2c~)mNV#)DCjLY(2}l{Qa-~`t$O``gx?i#705?*^0d@+dubmi{P9XG>0I^V zVcob6J*zH}DZ2Xk@VxFuF~4`{G#PjP1vpUjk1y{XD*DSO;6Txj-h)F$KYh|ObZm%j zHm+0XmLa;~xB-1YAJ7N%0lh6|c&tK1|In$y)0M~pgxiOR?sHF}JN-h30iktBHrG$( znxd1ApzDHR4LVLv-PLTGbphaRoWiFCLt51r0ezaBL8DNTw6I(q6MR8Ca15Un46~Mx zB6HGr5$NU!3m__MCf;G4IF$5hR%~({R@^~>N&0-YmHpk}RbhVR1r=>In`QMOOY_ZN zE|OCPP0H;`>kCzsKdlb^PLx-17|uvhNSySG%ay{Lo2o)LM=Zm_P=>Hj>#PG>haSla zhVG(K3gs%K7Mp3EuB~a9O1D7kUI(=9uq;yBG$&D;Wqs**riGH`2#4nzj9^f#gtlp& zWL~ZK?6qZH|8cGgx3m!`=khM^g4T7x5YALjJy;N{BtbZw#r2B(O}TuKB?s+lZC;ye ze-tQYOtM!7*}NniD~%^ia8$EWr9FjkRMjlm0t+OkR0;>;xz??Ubx*mxXV4tsaOw++ zLA%Ly_=R-#@*g-?eQ9Pd%yy{$By72Z%T&5BeQ$zGgSrWYSB911vD@)i_~`XFq?Jv;Lzv9Bjd+n`+^R6`uHH0!J(l8ESQ6A zUzk5Y*&Foa;T&o3ezYE<>*(Gn)9w{|GaJwc^Z|W9AJ7N%0ewIp&(|f00000NkvXXu0mjfeG-8f literal 0 HcmV?d00001 diff --git a/_images/steroid_substruct_keys.png b/_images/steroid_substruct_keys.png new file mode 100644 index 0000000000000000000000000000000000000000..7e021d89709f86b1e8ce43213c354d26ba12d3a7 GIT binary patch literal 7840 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 z%0DoFKKrpV$ok-?(xBf#v^5p>fsYBa=Hbj?;W%g}S1XS{+r~yVuj4lUoGh|?J<^c+ zXA+HG0HN$1uMBqPw{4YeKzW&;)4rd+(&Wb|g@;xw@&`cmYa6?LL5&Cz&Y_4yPsO_C zkHFzs?V_!%RWFcNVj-Awg(kY}Aa|u%6J|d72p5p6n=6WrHI$WowHu%aFBIIYykRS^ zxQSl7bw4cR9^F0%jzis|b_B~}Cx$3a^7nDjP7F*X5Uiab?jPGD#}ph z_I~{y`r4P<%MFkhm0l(buu|^_K&=bcH7n<$t6$u*oIC6$x}WWM4uCd$!8!n(Cj;PW zoqS@M6_yFnY%{}egj8%v5Y5F@vm#O1ScW)qvXB8HmzFW}@b3CsOidT?=Hd*}iv1=; zhXQz~cxXi>yyWMd!UnXoMaAMcBkx|*1DwDe z#5UbQa7w0Ndhy~-*+E;))8CG(*y+nFG06SE@8zpkSx+xoEKT#TYah3%cT$! zFbv9L^m1evoz>xVm^UoLa;PH|1ft>x%Tv_u!l}ATo&7bmmo`prIT>h-u z`GVRG43-jY^Sr@Z#%|}I0&U+2F5 z@f3en9de;o+iaEnN!%_+(zvDM-*S=<*tPm52X-BIL8;SfZX`X`6pxx|y(Pks>$(fQ zoS-FL5wJt|L-hb%yAg+4;WLc-|4*uY6IaB{@lU&hkgOGqzqe&&Vl*+?8B|7vnV|ru z`%ucUSGQU%jOhzY!MCvCuiemf9PAA(YF3R^0*WV^!W`za&Vh(@oT4L@_~zqj4w(wH z-|wiOZaZChwT)GZFG739=ADTtFWbJf@(xLf|CN}=WKY;5?nVhf;-GwKxo_89b2ag4 zMP1jZJh2%@`-GSkKF(TR9YbLdHP#`E$m&(gF7p(=QCE5w{VSDDjm1YxpYScfm8SsC9!r#GHJrP!92tcX%ubCx}`&2~v6>rX#Rd4SN#p?FlUY8&Yzt zh#77^sl69qK%>^|+Gko&B>_bHenWj|qX?lt1Vs`pHzQU~(5`|5MPQ|*%94C>1hPh` zeg2_eIER{UL7R4tKMRcR5Ckmj0=1XOl>3DPaDULf{Bh%_+U!b6)x3rnhn{-ILiHJb zl!3SO*IoE5=cTQ5k5TO*Cv~`uItd982*?#^oQ^%y?9SzPh&})y0)rO8iolj zSBrWbRm#5O?f{yMT3uuDl`RH>w>fVKm`wz~Y%D+G#C9s^eH34Y$GOc0k}bwse>CA? zt!SwrZkW(GSmppOBDM*?@t8&*HoGxp2-gF^+4qLuy?bf=<+C^Ro>N-E))CzQPASMAa}L{GNP59iv7m|js>WWBssh6LA7 z3W4V{z_Q|=ZQ`P$Yo&FG_9FO9&JhQKT-l`;+W}TNqzzN=p0FSPnHU*7*8vUO3}p&g zzi%=kb<}-(EY!sL##vUq%GulcPoSmb(yFv`&x-%N!uVAD?}>xo%bBRaAbE%F;VZds z_{>*F*U~$t1lXa_p8L?LV7-nJm>tmhumfzT*Bnh@Ac>Xg_R!oc%<&azw7M9a@aw}~ zng*y?n))L})w!AY*O@(5rG}7vuiZ@W-AsKODE!a{1OTWuYr!gUp-LzX7(};Cus9n>Gu=W zW<|TdE^;@Rki?ZSbjRsOgHed_Tbqv>=lNX*r=PKT{~Vm?M}p3pUMzmFM~x6~K##x( zadLwgx};k<=3TOCUkZzOVmqam=nXP3Oy0Na!0*jUWL1cYgls zKuro4RIKK2XTImCpH?CHZ#>@~eath_{#YVBpBv3up_N9pkg7(J_+pB|w_+rmu0wbx zRQM;kzIF2F6OOxYl%(mlFE{RqO_eNdEut)qjb!-c+xun42U;@{W~6I7`i*_c3Q~Pk zLF}WcKFQ}6m;)KClw9g%&CL@1XVx6{Qs*Jh1M$a+3BM*1HkUfRZ5Dd7STw0tp7v$2 mOt(ggll;#&=1}`. Please cite this paper if you use the coordinate generation features in Open Babel. + +The functionality of OBBuilder is not directly available through **obabel** but it is used as the necessary first step of the Gen3D operation discussed below. + +Conformer searching +------------------- + +Given a 3D structure, the goal of conformer searching is to find a low energy conformation. This may be useful as a "clean-up" procedure after an initial 3D structure generation. Note that conformer searching does not alter stereochemistry. + +The Open Babel library provides access to several algorithms for conformer searching. All of these algorithms adopt the torsion-driving approach; that is, conformations are generated by setting torsion angles to one of a number of allowed values. The allowed values are listed in the data file :file:`torlib.txt`; for example, C-C bonds in alkanes have three allowed values: -60, 60 and 180. + +1. :obapi:`Systematic Rotor Search `: Systematically + iterate through all possible + conformers according to Open Babel's torsion library. + This approach is thorough and will + find the global minimum. However as + the number of conformations increases by multiples for each additional + rotational bond, this can take quite a while for molecules with even just + 7 rotatable bonds. This approach scales to the power of N, where N is the + number of rotatable bonds. + +2. :obapi:`Fast Rotor Search `: This iterates through the + same conformer space as the + SystematicRotorSearch but it greedily optimises the torsion angle at each + rotatable bond in turn, starting from the most central. Thus it scales + linearly with the number of rotatable bonds. + +3. :obapi:`Random Rotor Search `: Conformations are + generated by randomly choosing from the allowed torsion angles. + +4. :obapi:`Weighted Rotor Search `: This method uses an + iterative procedure to find a + global minimum. As with the Random Rotor Search, it randomly choses from + the allowed torsion angles but the choice is reweighted based on the energy + of the generated conformer. Over time, the generated conformer for each + step should become increasingly better. + +For each of these methods, the lowest energy conformation found is selected. In some cases, the entire set of conformations generated is also available. Many +of these methods include an option to optimize the geometry of conformations +during the search. This greatly slows down the procedure but may produce more +accurate results. + +The choice of which algorithm to use depends on the speed/accuracy tradeoff with +which you are happy, and also on the number of rotatable bonds in the molecule. +Are you looking for a reasonable structure for 3D display? Or are you looking +for a structure close to the global minimum? + +To use from **obabel**, see the help for the conformer operation (``obabel -L conformer``). This operation is used both for conformer searching and for the genetic algorithm conformer generation described below. + +Here is an example of use from Python: + +:: + + >>> ff = ob.OBForceField.FindForceField("mmff94") + >>> ff.Setup(obmol) + True + >>> print(ff.Energy()) + 15.179054202 + >>> ff.SystematicRotorSearch(100) + >>> print(ff.Energy()) + 10.8861155747 + +Gen3D +----- + +To illustrate how some of the above methods might be used in practice, consider the **gen3d** operation. This operation (invoked using ``--gen3d`` at the commandline) generates 3D structures for 0D or 2D structures using the following series of steps, all of which have been described above: + +1. Use the OBBuilder to create a 3D structure using rules and fragment templates + +2. Do 250 steps of a steepest descent geometry optimization with the MMFF94 + forcefield + +3. Do 200 iterations of a Weighted Rotor conformational search (optimizing each + conformer with 25 steps of a steepest descent) + +4. Do 250 steps of a conjugate gradient geometry optimization + +Taken together, all of these steps ensure that the generated structure is likely to be the global minimum energy conformer. However, for many applications where 100s if not 1000s of molecules need to be processed, gen3d is rather slow: + + 1. ``--fastest`` only generate coordinates, no force field or conformer search + + 2. ``--fast`` perform quick forcefield optimization + + 3. ``--medium`` **(default)** forcefield optimization + fast conformer search + + 4. ``--better`` more optimization + fast conformer search + + 5. ``--best`` more optimization + significant conformer search + +Details on some of the trade-offs involved are outlined in 'Fast, efficient fragment-based coordinate generation for Open Babel' `*J. Cheminf.* (2019) **11**, Art. 49.`. If you use the 3D coordinate generation, please cite this paper. diff --git a/_sources/docs/3DStructureGen/multipleconformers.rst.txt b/_sources/docs/3DStructureGen/multipleconformers.rst.txt new file mode 100644 index 00000000..b6eca4ec --- /dev/null +++ b/_sources/docs/3DStructureGen/multipleconformers.rst.txt @@ -0,0 +1,121 @@ +Generate multiple conformers +============================ + +In contrast to conformer searching, the goal of conformer generation is not simply to find a low energy conformation but to generate several different conformations. Such conformations may be required by another piece of software such as some protein-ligand docking and pharmacophore programs. They may also be useful if considering writing some sort of shape comparison method. + +Open Babel has two distinct conformer generating codes: + +1. Confab: A systematic conformer generator that generates all diverse + low-energy conformers. + +2. Genetic algorithm: This is a stochastic conformer generator that generates + diverse conformers either on an energy or RMSD basis + +Genetic algorithm +----------------- + +A genetic algorithm is a general computational method to find a globally optimum solution to some multiparameter problem. It involves a population of conformers which after a series of generations, iteratively arrive at an optimal solution in terms of either RMSD diversity or energy. + +Information about using this method is available at the command-line using: ``obabel -L conformer``. Although labelled as "Conformer Searching", if you choose the genetic algorithm method (which is the default) then you can save the conformers in the final generation using ``--writeconformers``. For example, the following line creates 30 conformers optimized for RMSD diversity:: + + obabel startingConformer.mol -O ga_conformers.sdf --conformer --nconf 30 + --score rmsd --writeconformers + +In this case ``--score rmsd`` was not strictly necessary as RMSD diversity was the default in any case. + +.. _Confab: + +Confab +------ + +Confab systematically generates all diverse low-energy conformers for molecules. To run Confab use the ``--confab`` operation, and to assess the results by calculating RMSDs to reference structures, use the **confabreport** output format. + +.. rubric:: confab operator + +* ``obabel -O --confab [confab options]`` for typical usage +* ``obabel -L confab`` for help text + +The *inputfile* should contain one or more 3D structures (note that 2D structures will generate erroneous results). Generated conformers are written to the *outputfile*. All of the conformers for a particular molecule will have the same title as the original molecule. + +--rcutoff + RMSD cutoff (default 0.5 Angstrom) +--ecutoff + Energy cutoff (default 50.0 kcal/mol) +--conf <#confs> + Max number of conformers to test (default is 1 million) +--original + Include the input conformation as the first conformer +--verbose + Verbose - display information on torsions found + +.. rubric:: confabreport format + +* ``obabel [-O ] -o confabreport -xf [-xr ]`` for typical usage +* ``obabel -L confabreport`` for help text + +Once a file containing conformers has been generated by Confab, the result can be compared to the original input structures or a set of reference structures using this output format. Conformers are matched with reference structures using the molecule title. For every conformer, there should be a reference structure (but not necessarily *vice versa*). + +-f + File containing reference structures +-r + RMSD cutoff (default 0.5 Angstrom) + + The number of structures with conformers within this RMSD cutoff + of the reference will be reported. + +.. rubric:: Example + +The example file, `bostrom.sdf`_, contains 36 molecules which have from 1 to 11 rotatable bonds (see *Bostrom, Greenwood, Gottfries, J Mol Graph Model, 2003, 21, 449*). + +We can generate and test up to 100K conformers using Confab as follows:: + + > obabel bostrom.sdf -O confs.sdf --confab --conf 100000 + + **Starting Confab 1.1.0 + **To support, cite Journal of Cheminformatics, 2011, 3, 8. + ..Input format = sdf + ..Output format = sdf + ..RMSD cutoff = 0.5 + ..Energy cutoff = 50 + ..Conformer cutoff = 1000000 + ..Write input conformation? False + ..Verbose? False + + **Molecule 1 + ..title = 1a28_STR_1_A_1__C__ + ..number of rotatable bonds = 1 + ..tot conformations = 12 + ..tot confs tested = 12 + ..below energy threshold = 10 + ..generated 3 conformers + + ... etc, etc + + 0 molecules converted + +To check how many of the generated conformers are within 1.0 A RMSD of the original structures, we can use the confabreport format as follows:: + + > obabel confs.sdf -oconfabreport -xf bostrom.sdf -xr 1.0 + + **Generating Confab Report + ..Reference file = bostrom.sdf + ..Conformer file = confs.sdf + + ..Molecule 1 + ..title = 1a28_STR_1_A_1__C__ + ..number of confs = 3 + ..minimum rmsd = 0.0644801 + ..confs less than cutoffs: 0.2 0.5 1 1.5 2 3 4 100 + ..1 1 3 3 3 3 3 3 + ..cutoff (1) passed = Yes + + ... etc, etc + + **Summary + ..number of molecules = 36 + ..less than cutoff(1) = 35 + 52271 molecules converted + +.. _bostrom.sdf: ../_static/bostrom.sdf + + diff --git a/_sources/docs/Aromaticity/Aromaticity.rst.txt b/_sources/docs/Aromaticity/Aromaticity.rst.txt new file mode 100644 index 00000000..439befde --- /dev/null +++ b/_sources/docs/Aromaticity/Aromaticity.rst.txt @@ -0,0 +1,73 @@ +.. include:: + +.. |kekule| replace:: Kekul\ |eacute| + +Handling of aromaticity +======================= + +The purpose of this section is to give an overview of how Open Babel handles aromaticity. Given that atoms can be aromatic, bonds can be aromatic, and that molecules have a flag for aromaticity perceived, it's important to understand how these all work together. + +How is aromaticity information stored? +-------------------------------------- + +Like many other toolkits, Open Babel stores aromaticity information separate from bond order information. This means that there isn't a special bond order to indicate aromatic bond. Instead, aromaticity is stored as a flag on an atom as well as a flag on a bond. You can access and set this information using the following API functions: + +* OBAtom::IsAromatic(), OBAtom::SetAromatic(), OBBond::UnsetAromatic() +* OBBond::IsAromatic(), OBBond::SetAromatic(), OBBond::UnsetAromatic() + +There is a catch though, or rather a key point to note. OBMols have a flag to indicate whether aromaticity has been perceived. This is set via the following API functions: + +* OBMol::SetAromaticPerceived(), OBMol::UnsetAromaticPerceived() + +The value of this flag determines the behaviour of the OBAtom and OBBond IsAromatic() functions. + +* If the flag is set, then IsAromatic() simply returns the corresponding value of the atom or bond flag. +* If unset, then IsAromatic() triggers aromaticity perception (from scratch), and then returns the value of the flag. + +Perception of aromaticity +------------------------- + +It's convenient to use the term "perception", but what we mean is to apply an aromaticity model. Currently Open Babel only has a single aromaticity model, which is close to the Daylight aromaticity model. An aromaticity model describes how many pi electrons are contributed by each atom; if this sums to 4n+2 within a cycle, then all atoms and bonds in that cycle will be marked as aromatic. + +Applying a model involves creating an instance of OBAromaticTyper(), and calling AssignAromaticFlags() passing an OBMol as a parameter. This wipes any existing flags, sets the atom and bond flags according to the model, and marks the aromaticity as perceived. + +If you wish (and know what you are doing), you can apply your own aromaticity model by setting various atoms and bonds as aromatic and then marking the molecule as having aromaticity perceived. Naturally, not all models will make sense chemically. Even more problematic is the situation where no |kekule| form exists that corresponds to the aromatic form. And finally, there is the philosophical question of the meaning of an aromatic atom without aromatic bonds, and vice versa. + +SMILES reading and writing +-------------------------- + +Putting the pieces together, let's look at the interaction between SMILES reading/writing and the handling of aromaticity. + +.. rubric:: Writing SMILES + +Unless |kekule| SMILES are requested (via the ``k`` output option), the SMILES writer will always write an aromatic SMILES string. IsAromatic() will be called on atoms and bonds to determine whether to use lowercase letters. As described earlier, this will trigger aromaticity perception according to the default model if the molecules is not marked as having its aromaticity perceived. + +.. rubric:: Reading SMILES + +The situation when reading SMILES is a bit more involved. If the SMILES string contains lowercase characters and aromatic bonds, this information is used to mark atoms and bonds as aromatic. The molecule is then kekulized to assign bond orders to aromatic bonds. Next, unless the ``a`` option is supplied, the molecule is marked as having its aromaticity unperceived. + +That last step might seem strange. Why, after going to the trouble of reading the aromaticity and using it to kekulize, do we then effectively ignore it? + +The reason is simply this: when writing an aromatic SMILES, we usually want to use our own aromaticity model and not that present in the input SMILES string. Otherwise, SMILES strings for the same molecule from different sources (that may use different aromaticity models) would not yield the same canonical SMILES string. + +Of course, if the SMILES string came from Open Babel in the first place, we are doing unnecessary work when we keep reapplying the same aromaticity model. In this case, you can speed things up by using the ``a`` option, so that the aromaticity information present in the input is retained. The following examples show this in action:: + + $ obabel -:cc -osmi + C=C + $ obabel -:cc -osmi -aa + cc + +Effect of modifying the structure +--------------------------------- + +Perhaps surprisingly, modifying the structure has no effect on the existing aromaticity flags; deleting an atom does not mark aromaticity as unperceived, nor indeed does any other change to the structure such as changing the atomic number of an atom or setting its charge; nor does the use of Begin/EndModify() affect the aromaticity flags. The only way to ensure that aromaticity is reperceived after modifying the structure is to explicitly mark it as unperceived. + +The rationale for this is that an efficient toolkit should avoid unnecessary work. The toolkit does not know if a particular modification invalidates any aromaticity already perceived, or even if it did know, it cannot know whether the user actually wishes to invalidate it. It's up to the user to tell the toolkit. This places more responsibility in the hands of the user, but also more power. + +To illustrate, let's consider what happens when the user reads benzene from the SMILES string ``c1ccccc1``, and then modifies the structure by deleting an aromatic atom. + +As this is an aromatic SMILES string, the SMILES reader will mark all atoms and bonds as aromatic. Next, the molecule itself is marked as not having aromaticity perceived (see previous section). After reading, we can trigger aromaticity perception by calling IsAromatic() on an atom; now, in addition to the atoms and bonds being marked as aromatic, the molecule itself will be marked as having aromaticity perceived. + +If at this point we delete a carbon and write out a SMILES string, what will the result be? You may expect something like ``[CH]=CC=C[CH]`` (or ``C=CC=CC`` if we also adjust the hydrogen count on the neighbor atoms) but instead it will be ``[cH]ccc[cH]`` (or ``ccccc`` if hydrogens were adjusted). + +This follows from the discussion above - structural modifications have no effect on aromaticity flags. If instead the user wishes the SMILES writer to reperceive aromaticity, all that is necessary is to mark the molecule as not having aromaticity perceived, in which case the |kekule| form will instead be obtained. diff --git a/_sources/docs/Charges/charges.rst.txt b/_sources/docs/Charges/charges.rst.txt new file mode 100644 index 00000000..a298552f --- /dev/null +++ b/_sources/docs/Charges/charges.rst.txt @@ -0,0 +1,33 @@ +Charge models +============= + +Insert text here. + +.. INSERT AUTOMATICALLY GENERATED CONTENT BELOW + +Cheminformatics charge models +----------------------------- + +.. rubric:: Assign Gasteiger-Marsili sigma partial charges (gasteiger) + + + +.. rubric:: Assign MMFF94 partial charges (mmff94) + + + +Special charge models +--------------------- + +.. rubric:: Assign Electronegativity Equilization Method (EEM) atomic partial charges (eem) + + + +.. rubric:: Assign QEq (charge equilibration) partial charges (Rappe and Goddard, 1991) (qeq) + + + +.. rubric:: Assign QTPIE (charge transfer, polarization and equilibration) partial charges (Chen and Martinez, 2007) (qtpie) + + + diff --git a/_sources/docs/Cheminf101/basics.rst.txt b/_sources/docs/Cheminf101/basics.rst.txt new file mode 100644 index 00000000..da203fcf --- /dev/null +++ b/_sources/docs/Cheminf101/basics.rst.txt @@ -0,0 +1,73 @@ +Cheminformatics Basics +====================== + +What is Cheminformatics? +^^^^^^^^^^^^^^^^^^^^^^^^ + +*Cheminformatics* is a cross between Computer Science and +Chemistry -- the process of storing and retrieving information about +chemical compounds. + +*Information Systems* are concerned with storing, retrieving, and +searching information, and with storing *relationships* between +bits of data. For example: + + ++--------------+-------------------------+----------------------------------+-------------------------------------------------------+------------------------------------------------------+ +| Operation | Classical Information | | Chemical Information System | | +| | System | | | | ++==============+=========================+==================================+=======================================================+======================================================+ +| Store | Name = 'Jimmy Carter' | Stores text, numbers, dates, ... | |image0| | Stores chemical compounds and information about them | ++--------------+-------------------------+----------------------------------+-------------------------------------------------------+------------------------------------------------------+ +| Retrieve | Find record #13282 | Retrieves 'Jimmy Carter' | Find CC(=O)C4CC3C2CC(C)C1=C(C)... | Retrieves: |image0| | +| | | | C(=O)CC(O)C1C2CCC3(C)C4 | | ++--------------+-------------------------+----------------------------------+-------------------------------------------------------+------------------------------------------------------+ +| Search | Find Presidents named | George Bush and George | Find molecules containing |image2| | Retrieves: |image3| | +| | 'Bush' | W. Bush | | | ++--------------+-------------------------+----------------------------------+-------------------------------------------------------+------------------------------------------------------+ +| Relationship | Year Carter was elected | Answer: Elected in 1976 | What's the logP(o/w) of |image2| | Answer: logP(o/W) = 2.62 | ++--------------+-------------------------+----------------------------------+-------------------------------------------------------+------------------------------------------------------+ + +How is Cheminformatics Different? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are four key problems a cheminformatics system solves: + +1. **Store a Molecule** + + Computer scientists usually use the *valence model* of chemistry to + represent compounds. The next section + :ref:`101 Representing Molecules`, + discusses this at length. + +2. **Find exact molecule** + + If you ask, "Is Abraham Lincoln in the database?" it's not hard to + find the answer. But, given a specific molecule, is it in the + database? What do we know about it? This may seem seem simple at + first glance, but it's not, as we'll see when we discuss tautomers, + stereochemistry, metals, and other "flaws" in the valence model of + chemistry. + +3. **Substructure search** + + If you ask, "Is anyone named Lincoln in the database?" you usually + expect to find the former President and a number of others - this + is called a *search* rather than a *lookup*. For a chemical + informatics system, we have a *substructure search*: Find all + molecules containing a partial molecule (the "substructure") drawn + by the user. The substructure is usually a functional group, + "scaffold", or core structure representing a class of molecules. + This too is a hard problem, *much* harder than most text searches, + for reasons that go to the very root of mathematics and the theory + of computability. + +4. **Similarity search** + + Some databases can find similar-sounding or misspelled words, such as "Find Lincon" or "find Cincinati", which respectively might find + Abraham Lincoln and Cincinnati. Many chemical information systems can find molecules similar to a given molecule, ranked by + similarity. There are several ways to measure molecular similarity, discussed further in the section on :ref:`101 Molecular Similarity`. + +.. |image0| image:: ../_static/steroid2.png +.. |image2| image:: ../_static/steroid1.png +.. |image3| image:: ../_static/steroid2_matched.png diff --git a/_sources/docs/Cheminf101/index.rst.txt b/_sources/docs/Cheminf101/index.rst.txt new file mode 100644 index 00000000..8b8dc00a --- /dev/null +++ b/_sources/docs/Cheminf101/index.rst.txt @@ -0,0 +1,20 @@ +.. include:: + +Cheminformatics 101 +=================== + +.. centered:: **An introduction to the computer science and chemistry of chemical information systems** + +.. centered:: Copyright |copy| 2009 by **Craig A. James**, *eMolecules, Inc.* + +The original version of this introduction to cheminformatics can be found on the `eMolecules website`_. It is included here with the permission of the author. + +.. _eMolecules website: http://www.emolecules.com/doc/cheminformatics-101.php + +.. toctree:: + + basics.rst + represent.rst + search.rst + similarity.rst + registration.rst diff --git a/_sources/docs/Cheminf101/registration.rst.txt b/_sources/docs/Cheminf101/registration.rst.txt new file mode 100644 index 00000000..8f9280d5 --- /dev/null +++ b/_sources/docs/Cheminf101/registration.rst.txt @@ -0,0 +1,73 @@ +Chemical Registration Systems +============================= + +Chemical Registration is the "big brother" of cheminformatics. + +A cheminformatics system is primarily devoted to recording chemical +structure. Chemical Registration systems are additionally concerned +with: + + +- Structural novelty - ensure that each compound is only + registered once +- Structural normalization - ensure that structures with + alternative representations (such as nitro groups, ferrocenes, and + tautomers) are entered in a uniform way. +- Structure drawing - ensure that compounds are drawn in a uniform + fashion, so that they can be quickly recognized "by eye". +- Maintaining relationships among related compounds. For example, + all salt forms of a compound should be recognized as being related + to one another, and compounds in different solvates are also + related. +- Registering mixtures, formulations and alternative structures. +- Registering compounds the structure of which is unknown. +- Roles, responsibilities, security, and company workflow. +- Updates, amendments and corrections, and controlling propagation + of changes (e.g. does changing a compound change a mixture + containing that compound?) + +The scope of Chemical Registration Systems is far beyond the goals +of this brief introduction to cheminformatics. However, to +illustrate just one of the points above, let's consider structural +novelty. In real life, chemical structure can be very ambiguous. +Imagine you have five bottles of a particular compound that has a +stereo center: + + +#. The contents of the first bottle were carefully analyzed, and + found to be a single stereoisomer. +#. The contents of the second bottle were carefully analyzed and + found to contain a racemic mixture of the stereoisomers. +#. The stereoisomers of the third bottle are unknown. It may be + pure, or have one predominant form, or be a racemic mixture. +#. The fourth bottle was obtained by running part of the contents + of bottle #2 through a chromatographic separation. It is + isotopically pure, but you don't know which stereoisomer. +#. The fifth bottle is the other fraction from the same separation + of #4. It is also isotopically pure, but you don't know which + stereoisomer, *but you know it's the opposite of #4*. + +Which of these five bottles contain the same compound, and which +are different? That is the essential task of a chemical registry +system, which would consider all five to be different. After all, +you probably have data about each bottle (that's why you have +them), and you must be able to record it and not confuse it with +the other bottles. + +In this example above, consider what is known and not known: + +====== ============================================================ ========= +Bottle Known Not Known +====== ============================================================ ========= +1 Everything Nothing +2 Everything Nothing +3 Compound is known Stereochemistry +4 Compound and purity known, stereochemistry is opposite of #5 Specific stereochemistry +5 Compound and purity known, stereochemistry is opposite of #4 Specific stereochemistry +====== ============================================================ ========= + +A cheminformatics system has no way to record the contents of the +five bottles; it is only concerned with structure. By contrast, a +chemical registration system can record both *what is known* as +well as *what is not known*. This is the critical difference +between the two. diff --git a/_sources/docs/Cheminf101/represent.rst.txt b/_sources/docs/Cheminf101/represent.rst.txt new file mode 100644 index 00000000..7deae7f6 --- /dev/null +++ b/_sources/docs/Cheminf101/represent.rst.txt @@ -0,0 +1,297 @@ +.. include:: + +.. _101 Representing Molecules: + +Representing Molecules +====================== + +.. _What is a molecule: + +What is a Molecule? +^^^^^^^^^^^^^^^^^^^ + +One of the greatest achievements in chemistry was the development +of the *valence model* of chemistry, where a molecule is +represented as *atoms* joined by semi-rigid *bonds* that can be +single, double, or triple. This simple mental model has little +resemblance to the underlying quantum-mechanical reality of +electrons, protons and neutrons, yet it has proved to be a +remarkably useful approximation of how atoms behave in close +proximity to one another, and has been the foundation of chemical +instruction for well over a century. + +The valence model is also the foundation of modern chemical +information systems. When a Computer Scientist approaches a +problem, the first task is to figure out a *datamodel* that +represents the problem to be solved as *information*. To the +Computer Scientist, the valence model naturally transforms into a +*graph*, where the *nodes* are atoms and the *edges* are bonds. +Computer Scientists know how to manipulate graphs - mathematical +graph theory and computer science have been closely allied since +the invention of the digital computer. + +.. epigraph:: + + *There are atoms and space. Everything else is opinion.* + + -- Democritus + +However, the valence model of chemistry has many shortcomings. The +most obvious is aromaticity, which quickly required adding the +concept of a non-integral "aromatic" distributed bond, to the +single/double/triple bonds of the simple valence model. And that +was just the start - tautomers, ferrocenes, charged molecules and a +host of other common molecules simply don't fit the valence model +well. + +This complicates life for the computer scientist. As we shall see, +they are the source of most of the complexity of modern +cheminformatics systems. + +Older systems: Connection Tables +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Most of the early (and some modern) representations of molecules +were in a *connection table*, literally, a table enumerating the +atoms, and a table enumerating the bonds and which atoms each bond +connected. Here is an example of connection-table (CTAB) portion of +an MDL "SD" file (the data portion is not shown here): + +:: + + + MOLCONV + + 3 2 0 0 1 0 1 V2000 + 5.9800 -0.0000 -0.0000 Br 0 0 0 0 0 0 + 4.4000 -0.6600 0.8300 C 0 0 0 0 0 0 + 3.5400 -1.3500 -0.1900 C 0 0 0 0 0 0 + 1 2 1 0 + 2 3 1 0 + +This simple example illustrates most of the key features. The +molecule has three atoms, two bonds, and is provided with +three-dimensional (x,y,z) coordinates. MDL provides +`extensive documentation `_ +for their various CTFile formats if you are interested in the +details. + +Connection tables can capture the valence model of chemistry fairly +well, but they suffer from three problems: + +1. They are very inefficient, taking on the order of a dozen or two of +bytes of data per atom and per bond. Newer line notations +(discussed below) represent a molecules with an average of 1.2 to +1.5 bytes per atom, or 6-8 bytes per atom if coordinates are added. + +2. Many suffered from lack of specificity. For example, since +hydrogens are often not specified, there can be ambiguity as to the +electronic state of some molecules, because the connection-table +format does not explicitly state the valence assumptions. + +3. Most mix the concept of *connectivity* (what the atoms are and how +they are connected) with other data such as 2D and 3D coordinates. +For example, if you had two different conformers of a molecule, +most connection tables would require you to specify the entire +molecule twice, even though the connection table is identical in +both. + +Line Notations: InChI, SMILES, WLN and others +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A *line notation* represents a molecule as a single-line string of +characters. + + **WLN - Wisswesser Line Notation** + WLN, invented by William J. Wisswesser in the early 1950's, was the + first comprehensive line notation, capable of representing + arbitrarily complex molecules correctly and compactly. + + :: + + 1H = CH4 Methane + 2H = CH3-CH3 Ethane + 3H = CH3-CH2-CH3 Propane + QVR BG CG DG EG FG = C7HCl5O2 Pentachlorbenzoate + + WLN was the first line notation to feature a *canonical form*, that + is, the rules for WLN meant there was only one "correct" WLN for + any particular molecule. Those versed in WLN were able to write + molecular structure in a line format, communicate molecular + structure to one another and to computer programs. Unfortunately, + WLN's complexity prevented widespread adoption. The rules for + correct specification of WLN filled a small book, encoding those + rules into a computer proved difficult, and the rules for the + `canonicalization <#canonicalization>`_ were computationally + intractable. + + **SMILES - Simplified Molecular Input Line Entry System** + The best-known line notation today is SMILES. It was by Arthur and + David Weininger in response to a need for a simpler, more "human + accessible" notation than WLN. While SMILES is not trivial to learn + and write, most chemists can create correct SMILES with just a few + minutes training, and the entire SMILES language can be learned in + an hour or two. You can + `read more details here `_. + Here are some examples: + + :: + + C methane + CC ethane + C=C ethene + Oc1ccccc1 phenol + + SMILES, like WLN, has a *canonical form*, but unlike WLN, Weininger + relied on the computer, rather than the chemist, to convert a + non-canonical SMILES to a canonical SMILES. This important + separation of duties was key to making SMILES easy to enter. (Read + more about canonicalization below.) + + **InChI** + InChI is the latest and most modern of the line notations. It + resolves many of the chemical ambiguities not addressed by SMILES, + particularly with respect to stereo centers, tautomers and other of + the "valence model problems" mentioned + :ref:`above `. + + You can read more about InChI at the + `Official Web Site `_, + or on the + `Unofficial InChI FAQ page `_. + + + +Canonicalization +^^^^^^^^^^^^^^^^ + +A critical feature of line notations is *canonicalization* - the +ability to choose one "blessed" representation from among the many. +Consider: + +:: + + OCC ethanol + CCO ethanol + +Both of these SMILES represent the same molecule. If we could all +agree that one of these was the "correct" or "canonical" SMILES for +ethanol, then we would *always store it the same way* in our +database. More importantly, if we want to ask, "Is ethanol in our +database" we know that it will only be there once, and that we can +generate the canonical SMILES for ethanol and look it up. + +(Note that in theory one can create a canonical connection table, +too, but it's not as useful since informatics systems usually have +trouble indexing BLOBs - large objects.) + +Line Notation versus Connection Tables: A practical matter +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Why are line notations preferred over connection-table formats? In +theory, either could express the same information. But there are +practical difference, mostly related to the complexity of "parsing" +a connection table. If you know that the whole molecule is on one +line of a file, it's easy to parse. + +Line notations are also very nice for database applications. +Relational databases have datatypes that, roughly speaking, are +divided into numbers, text, and "everything else", also known as +"BLOBs" (Binary Large OBjects). You can store line notations in the +"text" fields much more easily than connection tables. + +Line notations also have pragmatic advantages. Modern Unix-like +systems (such as UNIX, Linux and Cygwin) have a number of very +powerful "filter" text-processing programs that can be "piped" +together (connected end-to-end) to perform important tasks. For +example, to count the number of molecules containing aliphatic +nitrogen in a SMILES file, I can simply: + +:: + + grep N file.smi | wc + +(:command:`grep` looks for a particular expression, in this case ``N``, and +prints any line that contains it, and :command:`wc` ("word count") counts the +number of words and lines.) + +This is just a simple example of the power available via "script" +programs using "filters" on Unix-like systems. Unix filters are +much less useful for connection-table formats, because each +molecule is spread over many lines. + +Query Languages: SMARTS +^^^^^^^^^^^^^^^^^^^^^^^ + +In addition to a typographical way to represent molecules, we also +need a way to enter *queries* about molecules, such as, "Find all +molecules that contain a phenol." + +With text, we're familiar with the concept of typing a partial +word, such as "ford" to find "Henry Ford" as well as "John +Hartford". For chemistry, we can also specify partial structures, +and find anything that contains them. For example: + ++----------+----------+-----------------------------------------------+ +| Query | Database | Matches? | ++==========+==========+===============================================+ +| |image0| | |image1| | **YES** (matched portion highlighted in blue) | ++----------+----------+-----------------------------------------------+ +| |image0| | |image2| | **NO** (double bond indicated doesn't match) | ++----------+----------+-----------------------------------------------+ + +.. sidebar:: eMolecules, Inc. + + .. image:: ../_static/eMolecules.png + :align: center + + eMolecules_ is a one-stop shop for suppliers and information for over 8 million chemical compounds. Under the hood is a chemical registration technology based on Open Babel. + +.. _eMolecules: http://www.emolecules.com + +The simplest query language for chemistry is SMILES itself: Just +specify a structure, such as ``Oc1ccccc1``, and search. This is how +eMolecules' basic searching works (see Sidebar). It's simple and, because of the +high-performance indexes in eMolecules, is also very fast. + +However, for general-purpose cheminformatics, one needs more power. +What if the substructure you're looking for isn't a valid molecule? +For example ``ClccBr`` (1,2- substitution on an aromatic ring) isn't a +whole molecule, since the concept of aromaticity is only sensible +in the context of a whole ring system. + +Or what if the thing we're looking for isn't a simple atom such as +Br, but rather a concept like "Halogen"? Or, "A terminal methyl"? + +To address this, cheminformatics systems have special +*query languages*, such as SMARTS (SMiles ARbitrary Target +Specification). SMARTS is a close cousin to SMILES, but it has +*expressions* instead of simple atoms and bonds. For example, ``[C,N]`` +will find an atom that is either carbon or nitrogen. + +IUPAC Names, Trade Names, Common Names +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Chemistry also has three other important name systems: + +**IUPAC Names** + `IUPAC `_ + (the International + Union of Pure and Applied Chemistry) established a + `naming convention `_ that is + widely used throughout chemistry. Any chemical can be named, and + all IUPAC names are unambiguous. This textual representation is + aimed at humans, not computers: Chemists versed in IUPAC + nomenclature (which is widely taught) can read an IUPAC name and + visualize or draw the molecule. +**Trade Names** + Names such as Tylenol\ |trade| and Valium\ |trade| are given to compounds + and formulations by manufacturers for marketing and sales purposes, + and for regulatory purposes. +**Common names** + Names such as "aspirin" or "alcohol" for + substances that are in widespread use. + +.. |image0| image:: ../_static/steroid1.png +.. |image1| image:: ../_static/steroid2_matched.png +.. |image2| image:: ../_static/steroid3.png diff --git a/_sources/docs/Cheminf101/search.rst.txt b/_sources/docs/Cheminf101/search.rst.txt new file mode 100644 index 00000000..a680fbca --- /dev/null +++ b/_sources/docs/Cheminf101/search.rst.txt @@ -0,0 +1,115 @@ +Substructure Searching with Indexes +=================================== + +What is Indexing? +^^^^^^^^^^^^^^^^^ + +Indexing is pre-computing the answers to portions of expected +questions *before* they're asked, so that when the question comes, +it can be answered quickly. + +Take your favorite search engine (AOL, Yahoo!, Google, MSN, ...) +for example. Without indexing, they might wait until you ask for +"John Hartford Bluegrass", then start searching the web, and in a +year or two find all the web pages about the deceased banjo/fiddle +player and steamboat captain. That would probably not impress you. + +Instead, these search engines search the web *before* you ask your +question, and build an *index* of the words they find. When you +type in "Bluegrass John Hartford", they already know all of the +pages that have "John", all of the pages with "Hartford", and all +of the pages with "Bluegrass". Instead of searching, they examine +their index, and find pages that are on *all three* lists, and +quickly find your results. (NB: It's actually a lot more complex, +but this illustrates the main idea of indexing.) + +Indexes for Chemicals +^^^^^^^^^^^^^^^^^^^^^ + +Instead of indexing words, cheminformatics systems index +*substructures*. Although there are many schemes for doing this, +cheminformatics systems all use the same fundamental principle: +they *decompose the molecule* into smaller bits, and index those. + +.. figure:: ../_static/steroid_substruct_keys.png + +Roughly speaking, a cheminformatics system will index each of the +substructures (fragments) above, so that every molecule that +contains each fragment is known. + +When a query is entered, the cheminformatics system breaks apart +the query using the same technique, to find all of the fragments in +the query. It then checks its index for each fragment, and combines +the lists it finds to get only those molecules that have *all* of +those fragments. + +This doesn't mean that all molecules returned by the index actually +are matches. In the language of databases, we say the index will +return *false positives*, candidate molecules that don't actually +match the substructure search. + +Consider our example of searching for "John Hartford" - the index +might return many pages that have both "John" and "Hartford", yet +have nothing to do with bluegrass music or steamboats. For example, +it might return a page containing, "President John F. Kennedy +visited Hartford, Connecticut today...". To confirm that the search +system has found something relevant, it must check the pages return +from the index to ensure that the specific phrase "John Hartford" +is present. However, notice that this is *much* faster than +searching every page, since the overwhelming majority of web pages +were instantly rejected because they have neither "John" nor +"Hartford" on them. + +Similarly, a chemical fragment index serves to find only the most +*likely* molecules for our substructure match - anything that the +index didn't find is definitely not a match. But we still have to +examine each of the molecules returned by the indexing system and +verify that the complete substructure for which we are searching is +present. + +NP-Complete - A Little about Computability +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Searching through a page of text for the words "John Hartford" is +pretty easy for a modern computer. Although false positives +returned by the index are a nuisance and impair performance, they +are not a catastrophe. Not so for substructure matching. +Unfortunately, substructure matching falls into a category of +"hard" mathematical problems, which means false positives from the +index are a big problem. + +Substructure matching (finding a certain functional group within a +molecule) is an example of what mathematicians call +`graph isomorphism `_, +and is in a class of problems called +`NP Complete `_. +Roughly speaking, this means the time it takes to do a substructure +search is non-polynomial, i.e. exponential in the number of atoms +and bonds. To see why this is a computational disaster, compare two +tasks, one that takes polynomial time, +k\ :sub:`1`\ \*N\ :sup:`2`\ , versus one that takes exponential +time k\ :sub:`2`\ \*2\ :sup:`N`\ . Our polynomial task is bad +enough: If we double N, it takes *four times* as long to solve. But +the exponential task is worse: +*Every time we add an atom it doubles*. So going from one atom to +two doubles the time, and going from 100 atoms to 101 atoms doubles +the time. Even if we can get k\ :sub:`2`\ down to a millionth of +k\ :sub:`1`\ , we're still in trouble - a million is just +2\ :sup:`20`\ or twenty atoms away. + +It has been mathematically proven that substructure searching is in +the set of NP Complete problems, so there's no point wasting our +time searching for a polynomial algorithm. The good news is that +most molecules have "low connectivity", meaning most atoms have +fewer than four bonds, unlike the weird and twisted graphs that +mathematicians consider. In practice, most substructure matching +can be done in polynomial time around N\ :sup:`2`\ or +N\ :sup:`3`\ . But even with this improvement, substructure +matching is an "expensive" time-consuming task for a computer. + +The key point is that indexing is particularly important for +cheminformatics systems. The typical modern computer can only +examine a few thousand molecules per second, so examining millions +of molecules one-by-one is out of the question. The indexing done +by a modern cheminformatics system is the key to its performance. + diff --git a/_sources/docs/Cheminf101/similarity.rst.txt b/_sources/docs/Cheminf101/similarity.rst.txt new file mode 100644 index 00000000..2bb67b27 --- /dev/null +++ b/_sources/docs/Cheminf101/similarity.rst.txt @@ -0,0 +1,86 @@ +.. _101 Molecular Similarity: + +Molecular Similarity +==================== + +Substructure searching is a very powerful technique, but sometimes +it misses answers for seemingly trivial differences. We saw this +earlier with the following: + ++----------------+---------------------------------------+ +| Query | Target | ++================+=======================================+ +| |image0| | |image1| | ++----------------+---------------------------------------+ +| We're looking | But we don't find this one because of | +| for | the double bond | +| steroids... | | ++----------------+---------------------------------------+ + +It is somewhat like searching for "221b Baker Street" and finding +nothing because the database contains "221B Baker Street" and the +system doesn't consider "b" and "B" a match. + + +A good similarity search would find the target structure shown +above, because even though it is not a substructure match, it is +highly similar to our query. + +There are many ways to measure similarity. + +**2D topology** + The best-known and most widely used similarity metrics compare the + two-dimensional topology, that is, they only use the molecule's + atoms and bonds without considering its shape. + + Tanimoto similarity is perhaps the best known as it is easy to + implement and fast to compute. An excellent summary of 2D + similarity metrics can be found in section 5.3 of the + `Daylight Theory Manual `_. + +**3D configuration** + One of the most important uses of similarity is in the discovery of + new drugs, and a molecule's shape is critical to it's medicinal + value (see `QSAR `_). + + 3D similarity searches compare the configuration (also called the + "conformation") of a molecule to other molecules. The "electronic + surface" of the molecule is the important bit - the part that can + interact with other molecules. 3D searches compare the surfaces of + two molecules, and how polarized or polarizable each bit of the + surface is. + + 3D similarity searches are uncommon, for two reasons: It's + difficult and it's slow. The difficulty comes from the complexity + of molecular interactions - a molecule is not a fixed shape, but + rather a dynamic object that changes according to its environment. + And the slowness comes from the difficulty: To get better results, + scientists employ more and more complex programs. + +**Physical Properties** + The above 2D and 3D similarity are based on the molecule's + structure. Another technique compares the properties - either + computed or measured or both - and declares that molecules with + many properties in common are likely to have similar structure. It + is the idea of QSAR taken to the database. + +**Clustering** + "Clustering" is the process of differentiating a set of things into + groups where each group has common features. Molecules can be + clustered using a variety of techniques, such as common 2D and/or + 3D features. + + Note that clustering is not a similarity metric *per se* (the topic + of this section), but it may use various similarity metrics when + computing clusters. It is included here because it can be used as a + "cheap substitute". That is, when someone wants to find compounds + similar to a known compound, you can show them the group (the + cluster) to which the compound belongs. It allows you to + pre-compute the clusters, spending lots of computational time up + front, and then give answers very quickly. + +Many cheminformatics databases have one or more similarity searches +available. + +.. |image0| image:: ../_static/steroid1.png +.. |image1| image:: ../_static/steroid3.png diff --git a/_sources/docs/Command-line_tools/Rosetta.rst.txt b/_sources/docs/Command-line_tools/Rosetta.rst.txt new file mode 100644 index 00000000..7331b11d --- /dev/null +++ b/_sources/docs/Command-line_tools/Rosetta.rst.txt @@ -0,0 +1,288 @@ +obabel vs Chemistry Toolkit Rosetta +----------------------------------- + +The `Chemistry Toolkit Rosetta`_ is the brainchild of Andrew Dalke. It is a website that illustrates how to program various chemical toolkits to do a set of tasks. To make it easily understandable, these tasks are probably on the simpler side of those in the real world. The Rosetta already contains several examples of using the Open Babel Python bindings to carry out tasks. + +Here we focus on the use of the command line application :command:`obabel` to accomplish the tasks listed in the Rosetta. Inevitably we will struggle with more complicated tasks; however this section is intended to show how far you can go simply using :command:`obabel`, and to illustrate some of its less common features. Some of the tasks cannot be done exactly as specified, but they are are usually close enough to useful. + +.. _Chemistry Toolkit Rosetta: http://ctr.wikia.com/wiki/Chemistry_Toolkit_Rosetta_Wiki + +Note that except for the examples involving piping, the GUI could also be used. Also the copy output format at present works only for files with Unix line endings. + +Heavy atom counts from an SD file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *For each record from the benzodiazepine file, print the total number of heavy atoms in each record (that is, exclude hydrogens). The output is one output line per record, containing the count as an integer. If at all possible, show how to read directly from the gzip'ed input SD file.* + +:: + + obabel benzodiazepine.sdf.gz -otxt --title "" --append atoms -d -l5 + +The :ref:`txt format ` outputs only the title but we set that to nothing and then append the result. The *atoms* descriptor counts the number of atoms after the ``-d`` option has removed the hydrogens. The ``-l5`` limits the output to the first 5 molecules, in case you really didn't want to print out results for all 12386 molecules. + +Convert a SMILES string to canonical SMILES +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Parse two SMILES strings and convert them to canonical form. Check that the results give the same string.* + +:: + + obabel -:"CN2C(=O)N(C)C(=O)C1=C2N=CN1C" -:"CN1C=NC2=C1C(=O)N(C)C(=O)N2C" -ocan + +giving:: + + Cn1cnc2c1c(=O)n(C)c(=O)n2C + Cn1cnc2c1c(=O)n(C)c(=O)n2C + 2 molecules converted + + +Report how many SD file records are within a certain molecular weight range +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Read the benzodiazepine file and report the number of records which contain a molecular weight between 300 and 400.* + +:: + + obabel benzodiazepine.sdf.gz -onul --filter "MW>=300 MW<=400" + 3916 molecules converted + + +Convert SMILES file to SD file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Convert a SMILES file into an SD file. The conversion must do its best to use the MDL conventions for the SD file, including aromaticity perception. Note that the use of aromatic bond types in CTABs is only allowed for queries, so aromatic structures must be written in a Kekule form. Because the stereochemistry of molecules in SD files is defined solely by the arrangement of atoms, it is necessary to assign either 2D or 3D coordinates to the molecule before generating output. The coordinates do not have to be reasonable (i.e. it's ok if they would make a chemist scream in horror), so long as the resulting structure is chemically correct.* + +:: + + obabel infile.smi -O outfile.sdf --gen3D + + +Report the similarity between two structures +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Report the similarity between "CC(C)C=CCCCCC(=O)NCc1ccc(c(c1)OC)O" (PubChem CID 1548943) and "COC1=C(C=CC(=C1)C=O)O" (PubChem CID 1183).* + +Two types of fingerprint are used: the default FP2 path-based one, and FP4 which is structure key based:: + + obabel -:"CC(C)C=CCCCCC(=O)NCc1ccc(c(c1)OC)O" -:"COC1=C(C=CC(=C1)C=O)O" -ofpt + Tanimoto from first mol = 0.360465 + + obabel -:"CC(C)C=CCCCCC(=O)NCc1ccc(c(c1)OC)O" -:"COC1=C(C=CC(=C1)C=O)O" -ofpt + -xfFP4 + Tanimoto from first mol = 0.277778 + + +Find the 10 nearest neighbors in a data set +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *The data will come from the gzip'ed SD file of the benzodiazepine data set. Use the first structure as the query structure, and use the rest of the file as the targets to find the 10 most similar structures. The output is sorted by similarity, from most similar to least. Each target match is on its own line, and the line contains the similarity score in the first column in the range 0.00 to 1.00 (preferably to 2 decimal places), then a space, then the target ID, which is the title line from the SD file.* + +A fastsearch index, using the default FP2 fingerprint, is prepared first:: + + obabel benzodiazepine.sdf -ofs + +The query molecule (first in the file) is extracted:: + + obabel benzodiazepine.sdf -O first.sdf -l1 + +The similarity search of the index file for the 10 most similar molecules is done. The output is to :ref:`Title_format`, with the ``-aa`` option of :ref:`Fastsearch_format` adding the Tanimoto score:: + + obabel benzodiazepine.fs -otxt -s first.sdf -at 10 -aa + + 623918 1 + 450820 1 + 1688 1 + 20351792 0.993007 + 9862446 0.986111 + 398658 0.97931 + 398657 0.97931 + 6452650 0.978873 + 450830 0.978873 + 3016 0.978873 + 10 molecules converted + +The Tanimoto coefficient comes second, rather than first as requested and is not formatted to two decimal places, but the information is still there. + +Depict a compound as an image +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Depict the SMILES "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" as an image of size 200x250 pixels. The image should be in PNG format if possible, otherwise in GIF format. If possible, give it the title "Caffeine". It should display the structure on a white background.* + +Open Babel can output 2D structures as :ref:`PNG `. The ``-d`` makes hydrogen implicit. Width and height are set with the -xw and -xh options.:: + + obabel -:"CN1C=NC2=C1C(=O)N(C(=O)N2C)C Caffeine" -O out.png -xw 200 -xh 250 -d + +Open Babel also supports outputting :ref:`SVG `, which is resolution independent as a vector format.:: + + obabel -:"CN1C=NC2=C1C(=O)N(C(=O)N2C)C Caffeine" -O out.svg -d + +Highlight a substructure in the depiction +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Read record 3016 from the benzodiazepine SD file. Find all atoms which match the SMARTS "c1ccc2c(c1)C(=NCCN2)c3ccccc3" and highlight them in red. All other atoms must be drawn in black.* + + *The resulting image should be 200x250 pixels and on a white background. The resulting image file should be in PNG (preferred) or GIF format.* + +:: + + obabel benzodiazepine.sdf.gz -O out.png --filter "title=3016" + -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -xw 200 -xh 250 -d + +Open Babel can output 2D structures as :ref:`PNG `. The compressed data file can be used as input. The ``-d`` makes hydrogen implicit and the ``-xu`` removes the element-specific coloring. Width and height are set with the -xw and -xh options. + +This is slow (about a minute) because each molecule is fully interpreted, although in most cases only the title is required. The task can be done 10 times faster by using the uncompressed file, converting only the title (the ``-aT`` option) and copying the SD text to standard out when a match occurs. This is piped to a second command which outputs the structure.:: + + obabel benzodiazepine.sdf -ocopy --filter "title=3016" -aT | + obabel -isdf -O out.png -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -xw 200 -xh 250 -d + +Open Babel also supports outputting :ref:`SVG `, which is resolution independent as a vector format.:: + + obabel benzodiazepine.sdf.gz -O out.svg --filter "title=3016" + -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -d + + obabel benzodiazepine.sdf -ocopy --filter "title=3016" -aT | + obabel -isdf -O out.svg -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -d + + +Align the depiction using a fixed substructure +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *Use the first 16 structures of the benzodiazepine SD file to make a 4x4 grid of depictions as a single image. The first structure is in the upper-left corner, the second is to its right, and so on. Each depiction should include the title field of the corresponding record, which in this case is the PubChem identifier.* + + *Use "[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12" as the common SMARTS substructure. This is the fused ring of the benzodiazepine system but without bond type or atom aromaticity information. Use the first molecule as the reference depiction. All other depictions must have the depiction of their common substructure aligned to the reference.* + +Since Open Babel 2.3.1 this can be done in one line:: + + obabel benzodiazepine.sdf.gz -O out.png -l16 --align -d -xu -xw 400 -xh 400 + -s"[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12 green" + +The depiction has some cosmetic tweaks: the substructure is highlighted in green; ``-d`` removes hydrogen; ``-xu`` removes the element specific coloring. +Open Babel also supports outputting :ref:`SVG `, which is resolution independent as a vector format.:: + + obabel benzodiazepine.sdf.gz -O out.svg -l16 --align -d -xu + -s"[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12 green" + +In earlier versions the :command:`obfit` program can be used. First extract the first molecule for the reference and the first 16 to be displayed:: + + obabel benzodiazepine.sdf.gz -O firstbenzo.sdf -l1 + obabel benzodiazepine.sdf.gz -O sixteenbenzo.sdf -l16 + +Then use the program :command:`obfit`, which is distributed with Open Babel:: + + obfit "[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12" + firstbenzo.sdf sixteenbenzo.sdf > 16out.sdf + +Display the 16 molecules (with implicit hydrogens) as :ref:`SVG ` (earlier versions of Open Babel do not support :ref:`PNG `):: + + obabel 16out.sdf -O out.png -d -xw 400 -xh 400 + + +Perform a substructure search on an SDF file and report the number of false positives +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + *The sample database will be gzip'ed SD file of the benzodiazepine data set. The query structure will be defined as "C1C=C(NC=O)C=CC=1".* + +The default FP2 fingerprint is sensitive to whether a bond is aromatic or not. So this Kekule structure needs to be converted to its aromatic form. As this happens automatically on conversion, the easiest way is to store the SMILES string in a file, and use this file to specify the search pattern. + +Prepare an index (of the unzipped data file):: + + obabel benzodiazepine.sdf -ofs + +Do the substructure search. A very large number of molecules match the query, so the maximum number of hits has to be increased with the ``-al 9000`` option. By virtue of the ``~`` it is the false positives that are output (to nowhere) but their number is reported:: + + obabel benzodiazepine.fs -onul -s ~substruct.smi -al 9000 + 8531 candidates from fingerprint search phase + 12 molecules converted + + +Calculate TPSA +~~~~~~~~~~~~~~ + + *The goal of this task is get an idea of how to do a set of SMARTS matches when the data comes in from an external table.* + + *Write a function or method named "TPSA" which gets its data from the file "tpsa.tab". The function should take a molecule record as input, and return the TPSA value as a float. Use the function to calculate the TPSA of "CN2C(=O)N(C)C(=O)C1=C2N=CN1C". The answer should be 61.82, which agrees exactly with Ertl's online TPSA tool but not with PubChem's value of 58.4.* + +Open Babel's command line cannot parse tables with custom formats. But the TPSA descriptor, defined by a table in the file :file:`psa.txt`, is already present and can be used as follows:: + + obabel -:CN2C(=O)N(C)C(=O)C1=C2N=CN1C -osmi --append TPSA + +giving:: + + Cn1c(=O)n(C)c(=O)c2c1ncn2C 61.82 + 1 molecule converted + +The table in :file:`tpsa.tab` and Open Babel's :file:`psa.txt` have the same content but different formats. The first few rows of :file:`tpsa.tab` are:: + + psa SMARTS description + 23.79 [N0;H0;D1;v3] N# + 23.85 [N+0;H1;D1;v3] [NH]= + 26.02 [N+0;H2;D1;v3] [NH2]- + +and the equivalent lines from Open Babel's :file:`psa.txt`:: + + [N]#* 23.79 + [NH]=* 23.85 + [NH2]-* 26.02 + +It is possible to add new descriptors without having to recompile. If another property, *myProp*, could be calculated using a table in :file:`myprop.txt` with the same format as :file:`psa.txt`, then a descriptor could set up by adding the following item to :file:`plugindefines.txt`:: + + OBGroupContrib + myProp # name of descriptor + myprop.txt # data file + Coolness index # brief description + +The following would then output molecules in increasing order of *myProp* with the value added to the title:: + + obabel infile.smi -osmi --sort myProp+ + + +Working with SD tag data +~~~~~~~~~~~~~~~~~~~~~~~~ + + *The input file is SD file from the benzodiazepine data set. Every record contains the tags PUBCHEM_CACTVS_HBOND_DONOR, PUBCHEM_CACTVS_HBOND_ACCEPTOR and PUBCHEM_MOLECULAR_WEIGHT, and most of the records contain the tag PUBCHEM_XLOGP3.* + + *The program must create a new SD file which is the same as the input file but with a new tag data field named "RULE5". This must be "1" if the record passes Lipinski's rule, "0" if it does not, and "no logP" if the PUBCHEM_XLOGP3 field is missing.* + +This exercise is a bit of a stretch for the Open Babel command-line. However, the individual lines may be instructional, since they are more like the sort of task that would normally be attempted. +:: + + obabel benzodiazepine.sdf.gz -O out1.sdf --filter "PUBCHEM_CACTVS_HBOND_DONOR<=5 & + PUBCHEM_CACTVS_HBOND_ACCEPTOR<=10 & PUBCHEM_MOLECULAR_WEIGHT<=500 & + PUBCHEM_XLOGP3<=5" + --property "RULE5" "1" + + obabel benzodiazepine.sdf.gz -O out2.sdf --filter "!PUBCHEM_XLOGP3" + --property "RULE5" "no logP" + + obabel benzodiazepine.sdf.gz -O out3.sdf --filter "!PUBCHEM_XLOGP3 & + !(PUBCHEM_CACTVS_HBOND_DONOR<=5 & PUBCHEM_CACTVS_HBOND_ACCEPTOR<=10 & + PUBCHEM_MOLECULAR_WEIGHT<=500 & PUBCHEM_XLOGP3<=5)" + --property "RULE5" "0" + +The first command converts only molecules passing Lipinski's rule, putting them in :file:`out1.sdf`, and adding an additional property, *RULE5*, with a value of ``1``. + +The second command converts only molecules that do not have a property *PUBCHEM_XLOGP3*. + +The third command converts only molecules that do have a *PUBCHEM_XLOGP3* and which fail Lipinski's rule. + +Use :command:`cat` or :command:`type` at the command prompt to concatenate the three files :file:`out1.sdf`, :file:`out2.sdf`, :file:`out3.sdf`. + +These operations are slow because the chemistry of each molecule is fully converted. As illustrated below, the filtering alone could have been done more quickly using the uncompressed file and the ``-aP`` option, which restricts the reading of the SDF file to the title and properties only, and then copying the molecule's SDF text verbatim with ``-o copy``. But adding the additional property is not then possible:: + + obabel benzodiazepine.sdf -o copy -O out1.sdf -aP --filter + "PUBCHEM_CACTVS_HBOND_DONOR<=5 & PUBCHEM_CACTVS_HBOND_ACCEPTOR<=10 & + PUBCHEM_MOLECULAR_WEIGHT<=500 & PUBCHEM_XLOGP3<=5" + +Unattempted tasks +~~~~~~~~~~~~~~~~~ + +A number of the Chemical Toolkit Rosetta tasks cannot be attempted as the :command:`obabel` tool does not (currently!) have the necessary functionality. These include the following: + +* Detect and report SMILES and SDF parsing errors +* Ring counts in a SMILES file +* Unique SMARTS matches against a SMILES string +* Find the graph diameter +* Break rotatable bonds and report the fragments +* Change stereochemistry of certain atoms in SMILES file + +To handle these tasks, you need to use the Open Babel library directly. This is the subject of the next section. diff --git a/_sources/docs/Command-line_tools/babel.rst.txt b/_sources/docs/Command-line_tools/babel.rst.txt new file mode 100644 index 00000000..b9f8252a --- /dev/null +++ b/_sources/docs/Command-line_tools/babel.rst.txt @@ -0,0 +1,675 @@ +.. _obabel: + +obabel - Convert, Filter and Manipulate Chemical Data +===================================================== + +:command:`obabel` is a command-line program for interconverting between many file formats used in molecular modeling and computational chemistry and related areas. It can also be used for filtering molecules and for simple manipulation of chemical data. + +Synopsis +-------- + +.. hlist:: + + * ``obabel [-H ]`` + * ``obabel [-i ] infile [-o ] [-O outfile] [OPTIONS]`` + +.. _babel options: + +Options +------- + +.. rubric:: Information and help + +* ``obabel [-H ]`` + +-H + Output usage information +-H + Output formatting information and options for + the format specified +-Hall + Output formatting information and options for all + formats +-L + List plugin types (``charges``, ``descriptors``, ``fingerprints``, ``forcefields``, ``formats``, ``loaders`` and ``ops``) +-L + List plugins of this type. For example, ``obabel -L formats`` gives the list of file formats. +-L + Details of a particular plugin (of any plugin type). For example, ``obabel -L cml`` gives details on the CML file format. +-V + Output version number + +.. rubric:: Conversion options + +* ``obabel [-i ] infile [-o ] [-O outfile] [OPTIONS]`` +* ``obabel -:"" [-i ] [-o ] [-O outfile] [OPTIONS]`` + +.. note:: + + If only input and output files are given, Open Babel will guess the file type from the filename extension. For information on the file formats supported by Open Babel, please see :ref:`file formats`. If text is provided using the ``-:`` notation, SMILES are assumed by default if an input format is not specified. + +-a + Format-specific input options. Use ``-H `` to see options + allowed by a particular format, or see the appropriate section in + :ref:`file formats`. +--add + Add properties (for SDF, CML, etc.) from descriptors in list. Use + ``-L descriptors`` to see available descriptors. +--addfilename + Add the input filename to the title. +--addinindex + Append input index to title (that is, the index `before` any filtering) +--addoutindex + Append output index to title (that is, the index `after` any filtering) +--addpolarh + Like ``-h``, but only adds hydrogens to polar atoms. +--addtotitle + Append the text after each molecule title +--append + Append properties or descriptor values appropriate for a molecule to its title. For more + information, see :ref:`append option`. +-b + Convert dative bonds (e.g. ``[N+]([O-])=O`` to ``N(=O)=O``) +-c + Center atomic coordinates at (0,0,0) +-C + Combine molecules in first file with others having the same name +--canonical + Canonicalize the atom order. If generating canonical SMILES, do not use + this option. Instead use the :ref:`Canonical_SMILES_format`. +--conformer + Conformer searching to generate low-energy or diverse + conformers. For more information, see :ref:`conformers`. +-d + Delete hydrogens (make all hydrogen implicit) +--delete + Delete properties in list +-e + Continue to convert molecules after errors +--energy + Forcefield energy evaluation. See :ref:`minimize option`. +--errorlevel + Filter the level of errors and warnings displayed: + + - 1 = critical errors only + - 2 = include warnings too (**default**) + - 3 = include informational messages too + - 4 = include "audit log" messages of changes to data + - 5 = include debugging messages too + +-f <#> + For multiple entry input, start import with molecule # as the first + entry +--fillUC + For a crystal structure, add atoms to fill the entire unit cell based + on the unique positions, the unit cell and the spacegroup. The parameter + can either be ``strict`` (the default), which only keeps atoms inside the + unit cell, or ``keepconnect``, which fills the unit cell but keeps the + original connectivity. +--filter + Filter based on molecular properties. See + :ref:`filter options` for examples and a list of + criteria. +--gen2d + Generate 2D coordinates +--gen3d + Generate 3D coordinates. You can specify the speed of prediction. See :ref:`specify_speed`. +-h + Add hydrogens (make all hydrogen explicit) +--highlight + Highlight substructures in 2D depictions. Valid + colors are black, gray, white, red, green, blue, yellow, + cyan, purple, teal and olive. Additional colors may be + specified as hexadecimal RGB values preceded by ``#``. + Multiple substructures and corresponding colors may be + specified. +-i + Specifies input format. See :ref:`file formats`. +-j, --join + Join all input molecules into a single output molecule entry +-k + Translate computational chemistry modeling keywords. See + the computational chemistry formats (:ref:`Computational chemistry`), + for example :ref:`GAMESS_Input` and :ref:`Gaussian_Input`. +-l <#> + For multiple entry input, stop import with molecule # as the last + entry +--largest <#N descriptor> + Only convert the N molecules which have the largest values of the + specified descriptor. Preceding the descriptor by ``~`` inverts + this filter. +-m + Produce multiple output files, to allow: + + - Splitting one input file - put each molecule into consecutively + numbered output files + - Batch conversion - convert each of multiple input files into a + specified output format +--minimize + Forcefield energy minimization. See :ref:`minimize option`. +-o + Specifies output format. See :ref:`file formats`. +-p + Add hydrogens appropriate for pH (use transforms in :file:`phmodel.txt`) +--partialcharge + Calculate partial charges by the specified method. List available methods + using ``obabel -L charges``. +--property + Add or replace a property (for example, in an SD file) +-r + Remove all but the largest contiguous fragment (strip salts) +--readconformer + Combine adjacent conformers in multi-molecule input into a single molecule. + If a molecule has the same structure as the preceding molecule, as + determined from its SMILES, it is not output but its coordinates are + added to the preceding molecule as an additional conformer. There can + be multiple groups of conformers, but the molecules in each group must + be adjacent. +-s + Convert only molecules matching the SMARTS pattern specified +-s + Convert only molecules with the molecule in the file as a substructure +--separate + Separate disconnected fragments into individual molecular records +--smallest <#N descriptor> + Only convert the N molecules which have the smallest values of the + specified descriptor. Preceding the descriptor by ``~`` inverts this + filter. +--sort + Output molecules ordered by the value of a descriptor. See :ref:`sorting option`. +--title + Add or replace molecular title +--unique, --unique <param> + Do not convert duplicate molecules. See :ref:`removing duplicates`. +--writeconformers + Output multiple conformers as separate molecules +-x <options> + Format-specific output options. use ``-H <format-ID>`` to see options + allowed by a particular format, or see the appropriate section in + :ref:`file formats`. +-v <SMARTS> + Convert only molecules **NOT** matching the SMARTS pattern specified +-z + Compress the output with gzip (not on Windows) + + +Examples +-------- + +The examples below assume the files are in the current directory. Otherwise you may need to include the full path to the files e.g. :file:`/Users/username/Desktop/mymols.sdf` and you may need to put quotes around the filenames (especially on Windows, where they can contain spaces). + +Standard conversion:: + + obabel ethanol.xyz -O ethanol.pdb + babel ethanol.xyz ethanol.pdb + +Conversion if the files do not have an extension that describes their format:: + + obabel -ixyz ethanol.aa -opdb -O ethanol.bb + babel -ixyz ethanol.aa -opdb ethanol.bb + +Molecules from multiple input files (which can have different formats) are normally combined in the output file:: + + obabel ethanol.xyz acetal.sdf benzene.cml -O allmols.smi + +Conversion from a SMI file in STDIN to a Mol2 file written to STDOUT:: + + obabel -ismi -omol2 + +Split a multi-molecule file into :file:`new1.smi`, :file:`new2.smi`, etc.:: + + obabel infile.mol -O new.smi -m + +In Windows this can also be written:: + + obabel infile.mol -O new*.smi + +Multiple input files can be converted in batch format too. To convert all files ending in .xyz (``*.xyz``) to PDB files, you can type:: + + obabel *.xyz -opdb -m + +Open Babel will not generate coordinates unless asked, so while a conversion from SMILES to SDF will generate a valid SDF file, the resulting file will not contain coordinates. To generate coordinates, use either the ``--gen3d`` or the ``--gen2d`` option:: + + obabel infile.smi -O out.sdf --gen3d + +If you want to remove all hydrogens (i.e. make them all implicit) when doing the conversion the command would be:: + + obabel mymols.sdf -osmi -O outputfile.smi -d + +If you want to add hydrogens (i.e. make them all explicit) when doing the conversion the command would be:: + + obabel mymols.sdf -O outputfile.smi -h + +If you want to add hydrogens appropriate for pH7.4 when doing the conversion the command would be:: + + obabel mymols.sdf -O outputfile.smi -p + +The protonation is done on an atom-by-atom basis so molecules with multiple ionizable centers will have all centers ionized. + +Of course you don't actually need to change the file type to modify the hydrogens. If you want to add all hydrogens the command would be:: + + obabel mymols.sdf -O mymols_H.sdf -h + +Some functional groups e.g. nitro or sulphone can be represented either as ``[N+]([O-])=O`` or ``N(=O)=O``. To convert all to the dative bond form:: + + obabel mymols.sdf -O outputfile.smi -b + +If you only want to convert a subset of molecules you can define them using ``-f`` and ``-l``. To convert molecules 2-4 of the file :file:`mymols.sdf` type:: + + obabel mymols.sdf -f 2 -l 4 -osdf -O outputfile.sdf + +Alternatively you can select a subset matching a SMARTS pattern, so to select all molecules containing bromobenzene use:: + + obabel mymols.sdf -O selected.sdf -s "c1ccccc1Br" + +You can also select the subset that do *not* match a SMARTS pattern, so to select all molecules not containing bromobenzene use:: + + obabel mymols.sdf -O selected.sdf -v "c1ccccc1Br" + +You can of course combine options, so to join molecules and add hydrogens type:: + + obabel mymols.sdf -O myjoined.sdf -h -j + +Files compressed with gzip are read transparently, whether or not they have a .gz suffix:: + + obabel compressed.sdf.gz -O expanded.smi + +On platforms other than Windows, the output file can be compressed with gzip, but note if you don't specify the .gz suffix it will not be added automatically, which could cause problems when you try to open the file:: + + obabel mymols.sdf -O outputfile.sdf.gz -z + +This next example reads the first 50 molecules in a compressed dataset and prints out the SMILES of those containing a pyridine ring, together with the index in the file, the ID (taken from an SDF property) as well as the output index:: + + obabel chembl_02.sdf.gz -osmi -l 50 -s c1ccccn1 --append chebi_id + --addinindex --addoutindex + +For the test data (taken from ChEMBLdb), this gave:: + + N1(CCN(CC1)c1c(cc2c3c1OCC(n3cc(c2=O)C(=O)O)C)F)C 3 100146 1 + c1(c(=O)c2c(n(c1)OC)c(c(N1CC(CC1)CNCC)c(c2)F)F)C(=O)O 6 100195 2 + S(=O)(=O)(Nc1ncc(cc1)C)c1c2c(c(N(C)C)ccc2)ccc1 22 100589 3 + c1([nH]c2c(c1)cccc2)C(=O)N1CCN(c2c(N(CC)CC)cccn2)CC1 46 101536 4 + +Format Options +-------------- + +Individual file formats may have additional formatting options. These are listed in the documentation for the individual formats (see :ref:`file formats`) or can be shown using the ``-H <format-Id>`` option, e.g. ``-H cml``. + +To use these additional options, input format options are preceded by ``-a``, e.g. ``-as``. Output format options, which are much more common, are preceded by ``-x``, e.g. ``-xn``. So to read the 2D coordinates (rather than the 3D) from a :ref:`CML file <Chemical_Markup_Language>` and generate an :ref:`SVG file <SVG_2D_depiction>` displaying the molecule on a black background, the relevant options are used as follows:: + + obabel mymol.cml out.svg -a2 -xb + +.. _append option: + +Append property values to the title +----------------------------------- + +The command line option ``--append`` adds extra information to the title of the molecule. + +The information can be calculated from the structure of the molecule or can originate from a property attached to the molecule (in the case of CML and SDF input files). It is used as follows:: + + obabel infile.sdf -osmi --append "MW CAT_NO" + +``MW`` is the ID of a descriptor which calculates the molecular weight of the molecule, and ``CAT_NO`` is a property of the molecule from the SDF input file. The values of these are added to the title of the molecule. For input files with many molecules these additions are specific to each molecule. (Note that the related option ``--addtotitle`` simply adds the same text to every title.) + +The append option only takes one parameter, which means that it may be necessary to enclose all of the descriptor IDs or property names together in a single set of quotes. + +If the name of the property in the SDF file (internally the Attribute in OBPairData) contains spaces, these spaces should be replaced by underscore characters, '_'. So the example above would also work for a property named ``CAT NO``. + +By default, the extra items are added to the title separated by spaces. But if the first character in the parameter is a punctuation character other than '_', it is used as the separator instead. If the list starts with "\t", a tab character is used as a separator. + +.. _conformers: + +Generating conformers for structures +------------------------------------ + +The command line option ``--conformer`` allows performing conformer +searches using a range of different algorithms and options: + +* ``--log`` - output a log of the energies (default = no log) +* ``--nconf #`` - number of conformers to generate + +Forcefield-based methods for finding stable conformers: + +* ``--systematic`` - systematically (exhaustively) generate all conformers +* ``--random`` - randomly generate conformers +* ``--weighted`` - weighted rotor search for lowest energy conformer +* ``--ff <name>`` - select a forcefield (default = MMFF94) + +Genetic algorithm based methods (default): + +* ``--children #`` - number of children to generate for each parent (default = 5) +* ``--mutability #`` - mutation frequency (default = 5) +* ``--converge #`` - number of identical generations before convergence is reached +* ``--score #`` - scoring function [rmsd|energy] (default = rmsd) + +You can use them like this (to generate 50 conformers, scoring with +MMFF94 energies but default genetic algorithm options):: + + obabel EtOT5D.cml -O EtOT5D0.xyz --conformer --nconf 50 --score energy + +or if you also wish to generate 3D coordinates, followed by conformer +searching try something like this:: + + obabel ligand.babel.smi -O ligand.babel.sdf --gen3d --conformer --nconf 20 --weighted + +.. _filter options: + +Filtering molecules from a multimolecule file +--------------------------------------------- + +Six of the options above can be used to filter molecules: + +* ``-s`` - convert molecules that match a SMARTS string +* ``-v`` - convert molecules that don't match a SMARTS string +* ``-f`` and ``-l`` - convert molecules in a certain range +* ``--unique`` - only convert unique molecules (that is, remove duplicates) +* ``--filter`` - convert molecules that meet specified chemical (and other) criteria + +This section focuses on the ``--filter`` option, which is very versatile and can select a subset of molecules based either on properties imported with the molecule (as from a SDF file) or from calculations made by Open Babel on the molecule. + +The aim has been to make the option flexible and intuitive to use; don't be put off by the long description. + +You use it like this:: + + obabel filterset.sdf -osmi --filter "MW<130 ROTATABLE_BOND > 2" + +It takes one parameter which probably needs to be enclosed in double quotes to avoid confusing the shell or operating system. (You don't need the quotes with the Windows GUI.) The parameter contains one or more conditional tests. By default, these have all to be true for the molecule to be converted. As well as this implicit AND behaviour, you can write a full Boolean expression (see below). As you can see, there can be spaces or not in sensible places and the conditional tests could be separated by a comma or semicolon. + +You can filter on two types of property: + +* An SDF property, as the identifier ROTATABLE_BOND could be. There is no need for it to be previously known to Open Babel. +* A descriptor name (internally, an ID of an OBDescriptor object). This is a plug-in class so that new objects can easily be added. MW is the ID of a descriptor which calculates molecular weight. You can see a list of available descriptors using:: + + obabel -L descriptors + + or from a menu item in the GUI. + +.. sidebar:: Faster filtering + + Open Babel provides a number of utility file formats (see :ref:`file formats`). Of these, using the *copy format* as the output format is particularly useful when filtering (see :ref:`Copy_raw_text`). This copies the content of the molecular file directly from input to output. If you are not converting the molecules between different formats, this procedure is much faster and avoids any possibility of information loss. + + In addition, if you are converting SDF files and are filtering based on the title, you should consider using ``-aT`` (see :ref:`MDL_MOL_format`). Rather than perceiving the chemistry of the entire molecule, this option will only read in the title. + +The descriptor names are case-insensitive. With the property names currently, you need to get the case right. Both types of identifier can contain letters, numbers and underscores, '_'. Properties can contain spaces, but then when writing the name in the filter parameter, you need to replace them with underscores. So in the example above, the test would also be suitable for a property 'ROTATABLE BOND'. + +Open Babel uses a SDF-like property (internally this is stored in the class OBPairData) in preference to a descriptor if one exists in the molecule. So with the example file, which can be found here_:: + + obabel filterset.sdf -osmi --filter "logP>5" + +converts only a molecule with a property logP=10.900, since the others do not have this property and logP, being also a descriptor, is calculated and is always much less than 5. + +.. _here: https://raw.githubusercontent.com/openbabel/openbabel/master/test/files/filterset.sdf + +If a property does not have a conditional test, then it returns true only if it exists. So:: + + obabel filterset.sdf -osmi --filter "ROTATABLE_BOND MW<130" + +converts only those molecules with a ROTATABLE_BOND property and a molecular weight less than 130. If you wanted to also include all the molecules without ROTATABLE_BOND defined, use:: + + obabel filterset.sdf -osmi --filter "!ROTATABLE_BOND || (ROTATABLE_BOND & MW<130)" + +The ! means negate. AND can be & or &&, OR can be | or ||. The brackets are not strictly necessary here because & has precedent over | in the normal way. If the result of a test doesn't matter, it is parsed but not evaluated. In the example, the expression in the brackets is not evaluated for molecules without a ROTATABLE_BOND property. This doesn't matter here, but if evaluation of a descriptor involved a lot of computation, it would pay to include it late in the boolean expression so that there is a chance it is skipped for some molecules. + +Descriptors must have a conditional test and it is an error if they don't. The default test, as used by MW or logP, is a numerical one, but the parsing of the text, and what the test does is defined in each descriptor's code (a virtual function in the OBDescriptor class). Three examples of this are described in the following sections. + +String descriptors +~~~~~~~~~~~~~~~~~~ + +:: + + obabel filterset.sdf -osmi --filter "title='Ethanol'" + +The descriptor *title*, when followed by a string (here enclosed by single quotes), does a case-sensitive string comparison. ('ethanol' wouldn't match anything in the example file.) The comparison does not have to be just equality:: + + obabel filterset.sdf -osmi --filter "title>='D'" + +converts molecules with titles Dimethyl Ether and Ethanol in the example file. + +It is not always necessary to use the single quotes when the meaning is unambiguous: the two examples above work without them. But a numerical, rather than a string, comparison is made if both operands can be converted to numbers. This can be useful:: + + obabel filterset.sdf -osmi --filter "title<129" + +will convert the molecules with titles 56 123 and 126, which is probably what you wanted. + +:: + + obabel filterset.sdf -osmi --filter "title<'129'" + +converts only 123 and 126 because a string comparison is being made. + +String comparisons can use ``*`` as a wildcard if used as the first or last character of the string (anywhere else a ``*`` is a normal character). So ``--filter "title='*ol'"`` will match molecules with titles 'methanol', 'ethanol' etc. and ``--filter "title='eth*'`` will match 'ethanol', 'ethyl acetate', 'ethical solution' etc. Use a ``*`` at both the first and last characters to test for the occurrence of a string, so ``--filter "title='*ol*'"`` will match 'oleum', 'polonium' and 'ethanol'. + +SMARTS descriptor +~~~~~~~~~~~~~~~~~ + +This descriptor will do a SMARTS test (substructure and more) on the molecules. The smarts ID can be abbreviated to s and the = is optional. More than one SMARTS test can be done:: + + obabel filterset.sdf -osmi --filter "s='CN' s!='[N+]'" + +This provides a more flexible alternative to the existing ``-s`` and ``-v`` options, since the SMARTS descriptor test can be combined with other tests. + +InChI descriptor +~~~~~~~~~~~~~~~~ + +:: + + obabel filterset.sdf -osmi --filter "inchi='InChI=1/C2H6O/c1-2-3/h3H,2H2,1H3'" + +will convert only ethanol. It uses the default parameters for InChI comparison, so there may be some messages from the InChI code. There is quite a lot of flexibility on how the InChI is presented (you can miss out the non-essential bits):: + + obabel filterset.sdf -osmi --filter "inchi='1/C2H6O/c1-2-3/h3H,2H2,1H3'" + obabel filterset.sdf -osmi --filter "inchi='C2H6O/c1-2-3/h3H,2H2,1H3'" + obabel filterset.sdf -osmi --filter "inchi=C2H6O/c1-2-3/h3H,2H2,1H3" + obabel filterset.sdf -osmi --filter "InChI=1/C2H6O/c1-2-3/h3H,2H2,1H3" + +all have the same effect. + +The comparison of the InChI string is done only as far as the parameter's length. This means that we can take advantage of InChI's layered structure:: + + obabel filterset.sdf -osmi --filter "inchi=C2H6O" + +will convert both Ethanol and Dimethyl Ether. + +Substructure and similarity searching +------------------------------------- + +For information on using :command:`obabel` for substructure searching and similarity searching, see :ref:`fingerprints`. + +.. _sorting option: + +Sorting molecules +----------------- + +The ``--sort`` option is used to output molecules ordered by the value of a descriptor:: + + obabel infile.xxx outfile.xxx --sort desc + +If the descriptor desc provides a numerical value, the molecule with the smallest value is output first. For descriptors that provide a string output the order is alphabetical, but for the InChI descriptor a more chemically informed order is used (e.g. "CH4" is before than "C2H6", "CH4" is less than "ClH" hydrogen chloride). + +The order can be reversed by preceding the descriptor name with ``~``, e.g.:: + + obabel infile.xxx outfile.yyy --sort ~logP + +As a shortcut, the value of the descriptor can be appended to the molecule name by adding a ``+`` to the descriptor, e.g.:: + + obabel aromatics.smi -osmi --sort ~MW+ + c1ccccc1C=C styrene 104.149 + c1ccccc1C toluene 92.1384 + c1ccccc1 benzene 78.1118 + +.. _removing duplicates: + +Remove duplicate molecules +--------------------------- + +The ``--unique`` option is used to remove, i.e. not output, any chemically identical molecules during conversion:: + + obabel infile.xxx outfile.yyy --unique [param] + +The optional parameter *param* defines what is regarded as "chemically identical". It can be the name of any descriptor, although not many are likely to be useful. If *param* is omitted, the InChI descriptor is used. Other useful descriptors are 'cansmi' and 'cansmiNS' (canonical SMILES, with and without stereochemical information),'title' and truncated InChI (see below). + +A message is output for each duplicate found:: + + Removed methyl benzene - a duplicate of toluene (#1) + +Clearly, this is more useful if each molecule has a title. The ``(#1)`` is the number of duplicates found so far. + +If you wanted to identify duplicates but not output the unique molecules, you could use the :ref:`null format <Outputs_nothing>`:: + + obabel infile.xxx -onul --unique + +Truncated InChI +~~~~~~~~~~~~~~~ + +It is possible to relax the criterion by which molecules are regarded as "chemically identical" by using a truncated InChI specification as *param*. This takes advantage of the layered structure of InChI. So to remove duplicates, treating stereoisomers as the same molecule:: + + obabel infile.xxx outfile.yyy --unique /nostereo + +Truncated InChI specifications start with ``/`` and are case-sensitive. *param* can be a concatenation of these e.g. ``/nochg/noiso``:: + + /formula formula only + /connect formula and connectivity only + /nostereo ignore E/Z and sp3 stereochemistry + /nosp3 ignore sp3 stereochemistry + /noEZ ignore E/Z stereoochemistry + /nochg ignore charge and protonation + /noiso ignore isotopes + +Multiple files +~~~~~~~~~~~~~~ + +The input molecules do not have to be in a single file. So to collect all the unique molecules from a set of MOL files:: + + obabel *.mol uniquemols.sdf --unique + +If you want the unique molecules to remain in individual files:: + + obabel *.mol U.mol -m --unique + +On the GUI use the form:: + + obabel *.mol U*.mol --unique + +Either form is acceptable on the Windows command line. + +The unique molecules will be in files with the original name prefixed by 'U'. Duplicate molecules will be in similar files but with zero length, which you will have to delete yourself. + +Aliases for chemical groups +--------------------------------- + +There is a limited amount of support for representing common chemical groups by an alias, e.g. benzoic acid as ``Ph-COOH``, with two alias groups. Internally in Open Babel, the molecule usually has a 'real' structure with the alias names present as only an alternative representation. For MDL MOL and SD files alias names can be read from or written to an 'A' line. The more modern RGroup representations are not yet recognized. Reading is transparent; the alias group is expanded and the 'real' atoms given reasonable coordinates if the the molecule is 2D or 3D. Writing in alias form, rather than the 'real' structure, requires the use of the ``-xA`` option. SVGFormat will also display any aliases present in a molecule if the ``-xA`` option is set. + +The alias names that are recognized are in the file :file:`superatoms.txt` which can be edited. + +Normal molecules can have certain common groups given alternative alias representation using the ``--genalias`` option. The groups that are recognized and converted are a subset of those that are read. Displaying or writing them still requires the ``-xA`` option. For example, if :file:`aspirin.smi` contained ``O=C(O)c1ccccc1OC(=O)C``, it could be displayed with the aliases ``COOH`` and ``OAc`` by:: + + obabel aspirin.smi -O out.svg --genalias -xA + +.. _minimize option: + +Forcefield energy and minimization +---------------------------------- + +Open Babel supports a number of forcefields which can be used for energy evaluation as well as energy minimization. The available forcefields as listed as follows:: + + C:\>obabel -L forcefields + GAFF General Amber Force Field (GAFF). + Ghemical Ghemical force field. + MMFF94 MMFF94 force field. + MMFF94s MMFF94s force field. + UFF Universal Force Field. + +To evaluate a molecule's energy using a forcefield, use the ``--energy`` option. The energy is put in an OBPairData object "Energy" which is accessible via an SDF or CML property or ``--append`` (to title). Use ``--ff <forcefield_id>`` to select a forcefield (default is Ghemical) and ``--log`` for a log of the energy calculation. The simplest way to output the energy is as follows:: + + obabel infile.xxx -otxt --energy --append "Energy" + +To perform forcefield minimization, the ``--minimize`` option is used. The following shows typical usage:: + + obabel infile.xxx -O outfile.yyy --minimize --steps 1500 --sd + +The available options are as follows:: + +--log output a log of the minimization process (default= no log) +--crit <converge> set convergence criteria (default=1e-6) +--sd use steepest descent algorithm (default = conjugate gradient) +--newton use Newton2Num linesearch (default = Simple) +--ff <forcefield-id> select a forcefield (default = Ghemical) +--steps <number> specify the maximum number of steps (default = 2500) +--cut use cut-off (default = don't use cut-off) +--rvdw <cutoff> specify the VDW cut-off distance (default = 6.0) +--rele <cutoff> specify the Electrostatic cut-off distance (default = 10.0) +--freq <steps> specify the frequency to update the non-bonded pairs (default = 10) + +Note that for both ``--energy`` and ``--minimize``, hydrogens are made explicit before energy evaluation. + +Aligning molecules or substructures +----------------------------------- + +The ``--align`` option aligns molecules to the first molecule provided. +It is typically used with the ``-s`` option to specify an alignment +based on a substructure:: + + obabel pattern.www dataset.xxx -O outset.yyy -s SMARTS --align + +Here, only molecules matching the specified SMARTS pattern are converted +and are aligned by +having all their atom coordinates modified. The atoms that are +used in the alignment are those matched by SMARTS in the first +output molecule. The subsequent molecules are aligned so that +the coordinates of atoms equivalent to these are as nearly as +possible the same as those of the pattern atoms. +The atoms in the various molecules can be in any order. +Tha alignment ignores hydrogen atoms but includes symmetry. +Note that the standalone program :program:`obfit` has similar functionality. + +The first input molecule could also be part of the data set:: + + obabel dataset.xxx -O outset.yyy -s SMARTS --align + +This form is useful for ensuring that a particular substructure always +has the same orientation in a 2D display of a set of molecules. +0D molecules, for example from SMILES, are given 2D coordinates before +alignment. + +See documentation for the ``-s`` option for its other possible +parameters. For example, the matching atoms could be those +of a molecule in a specified file. + +If the ``-s`` option is not used, all of the atoms in the first molecule +are used as pattern atoms. The order of the atoms must be the same +in all the molecules. + +The output molecules have a property (represented internally as +OBPairData) called ``rmsd``, which is a measure of the quality +of the fit. To attach it to the title of each molecule use +``--append rmsd``. + +To output the two conformers closest to the first conformer in a dataset:: + + obabel dataset.xxx -O outset.yyy --align --smallest 2 rmsd + +.. _specify_speed: + +Specifying the speed of 3D coordinate generation +--------------------------------------------------- +When you use the ``--gen3d`` option, you can specify the speed and quality. The following shows typical usage:: + + obabel infile.smi -O out.sdf --gen3d fastest + +The available options are as follows: + +================= ====================== +option description +================= ====================== +``fastest`` No cleanup +``fast`` Force field cleanup (100 cycles) +``med`` (default) Force field cleanup (100 cycles) + Fast rotor search (only one permutation) +``slow`` Force field cleanup (250 cycles) + Fast rotor search (permute central rotors) +``slowest`` Force field cleanup (500 cycles) + Slow rotor search +``better`` Same as ``slow`` +``best`` Same as ``slowest`` +``dist``, ``dg`` Use distance geometry method (unstable) +================= ====================== + +You can also specify the speed by an integer from ``1`` (slowest) to ``5`` (fastest). diff --git a/_sources/docs/Contributing/Contributing.rst.txt b/_sources/docs/Contributing/Contributing.rst.txt new file mode 100644 index 00000000..22f7f6cc --- /dev/null +++ b/_sources/docs/Contributing/Contributing.rst.txt @@ -0,0 +1,14 @@ +Contributing to Open Babel +========================== + +.. toctree:: + + Overview.rst + DevBestPractices.rst + Documentation.rst + Testing.rst + SoftwareArchaeology.rst + + + + diff --git a/_sources/docs/Contributing/DevBestPractices.rst.txt b/_sources/docs/Contributing/DevBestPractices.rst.txt new file mode 100644 index 00000000..c3f4008d --- /dev/null +++ b/_sources/docs/Contributing/DevBestPractices.rst.txt @@ -0,0 +1,153 @@ +Developing Open Babel +===================== + +Due to its open nature of its development, Open Babel contains code contributed by a wide variety of developers (see :ref:`Thanks`). This section describes some general guidelines and "best practices" for code developers. + +.. _version control: + +Developer Resources +------------------- + +For new and existing developers here are some useful resources: + +- GitHub `project page <http://github.com/openbabel>`_ +- Development version `API documentation <http://openbabel.org/dev-api>`_ +- Development version `Sphinx documentation <https://open-babel.readthedocs.io/en/latest/>`_ + +Working with the Development Code +--------------------------------- + +To download and update the latest version of the Open Babel source code, you need Git. Git is the name of the project used to maintain the Open Babel version control repository. There are many clients for Git, including command-line and GUI applications. + +Keeping up to date with Git +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +(1) Check out the latest development version:: + + git clone https://github.com/openbabel/openbabel.git openbabel-dev + + This creates a directory called :file:`openbabel-dev`, which contains the latest source code from Open Babel. + +(2) Configure and compile this using CMake (see :ref:`Compiling Open Babel`). + +(3) After some time passes, and you want the latest bug fixes or new features, you may want to update your source code. To do this, go into the :file:`openbabel-dev` directory you created above, and type:: + + git pull -u + +(4) Do step (2) again. + +(5) If, after updating, the compilation fails please report it to the Open Babel mailing list. In the meanwhile, if you want to go back to a particular revision (that is, if you don't want to use the latest one), just use ``git log`` to find the checksum of the current revision, and update to an earlier revision using this:: + + $ git log + ... + commit 1c2916cc5e6ed31a23291524b08291c904506c3f + Author: Noel O'Boyle <baoilleach@gmail.com> + Date: Mon Apr 30 07:33:17 2018 +0100 + + $ git checkout 1c2916cc5 + +Modular design of code base +--------------------------- + +Since version 2.0, Open Babel has had a modular structure. Particularly for the use of Open Babel as a chemical file format converter, it aims to: + +* separate the chemistry, the conversion process and the user interfaces, reducing, as far as possible, the dependency of one on another. +* put all the code for each chemical format in one place (usually a single cpp file) and make the addition of new formats simple. +* allow the format conversion of not just molecules, but also any other chemical objects, such as reactions. + +.. figure:: ../_static/OBStructure.png + + The structure of the Open Babel codebase broken down into modules + +The separate parts of the OpenBabel program are: + + * The **Chemical** core, which contains OBMol etc. and has all the chemical structure description and manipulation. This bit is the heart of the application and its API can be used as a chemical toolbox. It has no input/output capabilities. + + * The **Formats**, which read and write to files of different types. These classes are derived from a common base class, OBFormat, which is in the Conversion Control module. They also make use of the chemical routines in the Chemical Core module. Each format file contains a global object of the format class. When the format is loaded the class constructor registers the presence of the class with OBConversion. This means the formats are plugins - new formats can be added without changing any framework code. + + * **Common Formats** include OBMoleculeFormats and XMLBaseFormat from which most other formats (like Format A and Format B in the diagram) are derived. Independent formats like Format C are also possible. + + * The **Conversion** control, which also keeps track of the available formats, the conversion options and the input and output streams. It can be compiled without reference to any other parts of the program. In particular, it knows nothing of the Chemical core: mol.h is not included. + + * The **User interface**, which may be a command line (in main.cpp), a Graphical User Interface(GUI), especially suited to Windows users and novices, or may be part of another program which uses OpenBabel's input and output facilities. This depends only on the Conversion control module (obconversion.h is included), but not on the Chemical core or on any of the Formats. + + * The **Fingerprint API**, as well as being usable in external programs, is employed by the fastsearch and fingerprint formats. + + * The **Fingerprints**, which are bit arrays which describe an object and which facilitate fast searching. They are also built as plugins, registering themselves with their base class OBFingerprint which is in the Fingerprint API. + + * The **Error handling** can be used throughout the program to log and display errors and warnings (see below). + +It is possible to build each box in the diagram as a separate DLL or shared library and the restricted dependencies can help to limit the amount of recompilation. For the formats or the fingerprints built in this way it may be possible to use only those whose DLL or so files are present when the program starts. Several formats or fingerprints may be present in a single dynamic library. + +Alternatively, and most commonly, the same source code can be built into a single executable. The restricted dependencies still provide easier program maintenance. + +This segregation means that a module can directly call code only in other modules connected to it by forward arrows. So some discipline is needed when adding new code, and sometimes non-obvious work-arounds are necessary. For instance, since the user interface doesn't know about the Chemical Core, if it were necessary to set any parameters in it, then this would have to be done through a pseudo format OBAPIInterface. + +Sometimes one format needs to use code from another format, for example, rxnformat needs to read mol files with code from mdlformat. The calling format should not use the code directly but should do it through a OBConversion object configured with the appropriate helper format. + +The objects passed between the modules in the diagram above are polymorphic :obapi:`OBBase` pointers. This means that the conversion framework can be used by any object derived from OBBase (which essentially means anything - chemical or not). Most commonly these refer to OBMol objects, less commonly to OBReaction objects, but could be extended to anything else without needing to change any existing code. + +.. _error handling: + +Error Handling and Warnings +--------------------------- + +The general philosophy of the Open Babel project is to attempt to gracefully recover from error conditions. Depending on the severity of the error, a message may or may not be sent to the user -- users can filter out developer debugging messages and minor errors, but should be notified of significant problems. + +Errors and warnings in Open Babel are handled internally by a flexible system motivated by a few factors: + +* End users often do not wish to be deluged by debugging or other messages during operation. +* Other developers may wish to redirect or filter error/warning output (e.g., in a GUI). +* The operation of Open Babel should be open to developers and users alike to monitor an "audit trail" of operations on files and molecules, and debug the program and library itself when the need arises. + +Multiple error/warning levels exist and should be used by code. These are defined in the :obapi:`obMessageLevel` enum as follows: + +* ``obError`` -- for critical errors (e.g., cannot read a file) +* ``obWarning`` -- for non-critical problems (e.g., molecule appears empty) +* ``obInfo`` -- for informative messages (e.g., file is a non-standard format) +* ``obAuditMsg`` -- for messages auditing methods which destroy or perceive molecular data (e.g., kekulization, atom typing, etc.) +* ``obDebug`` -- for messages only useful for debugging purposes + +The default filter level is set to ``obWarning``, which means that users are told of critical errors, but not non-standard formatting of input files. + +A global error handler :obapi:`obErrorLog` (an instance of :obapi:`OBMessageHandler`) is defined and should be used as shown in the API documentation for the :obapi:`OBMessageHandler` class. + +.. _lazy evaluation: + +Lazy Evaluation +--------------- + +The :obapi:`OBMol::BeginModify() <OpenBabel::OBMol::BeginModify>` and :obapi:`OBMol::EndModify() <OpenBabel::OBMol::EndModify>` calls are part of Open Babel's lazy evaluation mechanism. + +In some cases, code may desire to make a large number of changes to an OBMol object at once. Ideally, this should all happen without triggering unintended perception routines. Therefore, the ``BeginModify()`` call marks the beginning of such code, and ``EndModify()`` triggers any needed updates of lazy evaluation methods. + +.. highlight:: c++ + +For example:: + + mol.BeginModify(); + double x,y,z; + OBAtom *atom; + vector<string> vs; + + for (i = 1; i <= natoms; i ++) + { + if (!ifs.getline(buffer,BUFF_SIZE)) + return(false); + tokenize(vs,buffer); + if (vs.size() != 4) + return(false); + + atom = mol.NewAtom(); + x = atof((char*)vs[1].c_str()); + y = atof((char*)vs[2].c_str()); + z = atof((char*)vs[3].c_str()); + + atom->SetVector(x,y,z); //set coordinates + atom->SetAtomicNum(atoi(vs[0].c_str())); // set atomic number + } + mol.ConnectTheDots(); + mol.PerceiveBondOrders(); + mol.EndModify(); + +This code reads in a list of atoms with XYZ coordinates and the atomic number in the first column (``vs[0]``). Since hundreds or thousands of atoms could be added to a molecule, followed by creating bonds, the code is enclosed in a ``BeginModify()``/``EndModify()`` pair. diff --git a/_sources/docs/Contributing/Documentation.rst.txt b/_sources/docs/Contributing/Documentation.rst.txt new file mode 100644 index 00000000..35044273 --- /dev/null +++ b/_sources/docs/Contributing/Documentation.rst.txt @@ -0,0 +1,50 @@ +.. _documentation: + +Documentation +============= + +Documenting Open Babel is an important and ongoing task. As an open source project, code must be documented, both for other developers to use the API and for others to follow your code. This includes clear documentation on the interfaces of particular classes and methods (that is, the API_ documentation) but also tutorials and examples of using the Open Babel library to accomplish clear tasks. + +.. _API: http://openbabel.org/api + +Beyond the documentation described above, as an open-source project involving many, many contributors, the internal code should be clearly commented and easy to read (in English, preferably, since this is the common language of developers on the project). + +Adding New Code +--------------- + +The golden rule is **write the documentation, then code to the specs**. + +You should never, ever start writing code unless you've specified, clearly and exactly, what your code will do. This makes life easier for you (i.e., you know exactly what the code should do), and for others reading your code. + +This mantra also facilitates writing tests (see :ref:`testing`). + +Modifying Old Code +------------------ + +When modifying old code, please take a little time to improve the documentation of the function. + +Even an "obvious" function must be documented, if for no other reason than to say, "This function does what you think, and has no side effects." + +Take :obapi:`OBAtom::SetAtomicNum() <OpenBabel::OBAtom::SetAtomicNum>` - should be "obvious", right? Wrong. + + * Does it affect the charge? + * The spin multiplicity? + * The implicit valence? + * The hybridization? + * What happens if I do SetHybridization(3) and then SetAtomicNum(1)? + * Does the molecule have to be in the modify state? + * If the molecule is not in the modify state, is it put into the modify state by SetAtomicNum()? + * Does SetAtomicNum() cause a recomputation of aromaticity? + +User documentation and tutorials +-------------------------------- + +There's no point spending time adding new features to Open Babel unless you describe how to use them and give examples. The best place to do this is in the user documentation...which you're reading right now. + +This documentation is automatically generated from text files in a simple markup language (*reStructuredText*) using the Sphinx_ documentation system. This allows us to generate web pages, PDF files, and even ePub eBooks all from the same source (which is currently maintained at BitBucket_). + +If you notice any errors or feel like adding a section, please let us know at openbabel-devel_. + +.. _Sphinx: http://sphinx.pocoo.org/ +.. _openbabel-devel: https://lists.sourceforge.net/lists/listinfo/openbabel-devel +.. _BitBucket: http://bitbucket.org/baoilleach/openbabel-user-docs diff --git a/_sources/docs/Contributing/Overview.rst.txt b/_sources/docs/Contributing/Overview.rst.txt new file mode 100644 index 00000000..8464fcaa --- /dev/null +++ b/_sources/docs/Contributing/Overview.rst.txt @@ -0,0 +1,43 @@ +Overview +======== + +Open Babel is developed using open, community-oriented development made possible by an active community -- developers, testers, writers, implementers and most of all users. No matter which 'er' you happen to be, or how much time you can provide, you can make valuable contributions. + +Not sure where to start? This section aims to give you some ideas. + +.. rubric:: Provide input + +You can help us by: + +* helping to answer questions on our `mailing list`_ +* suggesting new features_ or file formats +* reporting bugs_ + +.. rubric:: Spread the word + +If you find Open Babel useful, there's a chance that others will also. You can help us by: + +* promoting and citing Open Babel in talks and publications +* writing blog posts about Open Babel +* helping with documentation and our website +* building your own software on Open Babel + +.. _feature: +.. _features: https://github.com/openbabel/openbabel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Afeature +.. _mailing list: https://lists.sourceforge.net/lists/listinfo/openbabel-discuss +.. _bugs: https://github.com/openbabel/openbabel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+ + +To get started, just send an email to our `mailing list`_. + +.. rubric:: Code a storm + +As an open source project, Open Babel has a very open development process. This means that many contributors have helped with the project with a variety of help -- some for long periods of time, and some with small, single changes. All types of assistance has been valuable to the growth of the project over the years. + +New developers are always very welcome to OpenBabel so if you're interested, just send an email to the developer list (`join here <http://lists.sourceforge.net/lists/listinfo/openbabel-devel>`_) about what you would like to work on, or else we can come up with some ideas for areas where you could contribute. Here are some possibilities: + +* Implement the latest algorithms described in the literature +* Add a new file format (see :ref:`add-file-format`) +* Perform 'software archaeology' (see :ref:`software-archaeology`) +* Fix some bugs_ +* Add a requested feature_ +* Implement a feature from our roadmap diff --git a/_sources/docs/Contributing/SoftwareArchaeology.rst.txt b/_sources/docs/Contributing/SoftwareArchaeology.rst.txt new file mode 100644 index 00000000..f5df7de9 --- /dev/null +++ b/_sources/docs/Contributing/SoftwareArchaeology.rst.txt @@ -0,0 +1,40 @@ +.. _software-archaeology: + +Software Archaeology +==================== + +In any large software project, some parts of the code are revised and kept up-to-date more than others. + +Conversely, some parts of the code begin to fall behind -- the code may be poorly tested, poorly documented, and not always up to best practices. + +With that in mind, the following sections describe the important task of software archeology -- diving in to older parts of code and bringing them up to date. Whenever editing a file, please keep these in mind. + +Documentation and Code Readability +---------------------------------- + +* Add clear documentation for every public function (see :ref:`documentation`). +* Add clear comments on the internal operation of functions so that anyone can read through the code quickly. + + * If you're not sure what a function does, e-mail the openbabel-devel_ list and it can be worked out. +* Mark functions which should be publicly visible and functions which are only useful internally. Many methods are not particularly useful except inside the library itself. +* Improve code indentation + + * It seems like a minor point, but the format of your code is important. As open source software, your code is read by many, many people. + * Different contributions have often had different indentation styles. Simply making the code indentation consistent across an entire file makes the code easier to read. + * The current accepted scheme for Open Babel is a default indent of two spaces, and use of spaces instead of tabs. + * For tips on changing your editor to use this indentation style, please e-mail the openbabel-devel_ list. +* Delete code which is commented out. The SVN version control system maintains history, so if we need it later, we can go back and get that code. Dead code like this simply makes it harder to read the important code! +* Marking areas of code which use :obapi:`OBAtom::GetIdx() <OpenBabel::OBAtom::GetIdx>` or other accesses to atom indexes, which may break when atom indexing changes. + +Code Maintenance +---------------- + +* Minimize ``#if``/``#endif`` conditional compilation. Some is required for portability, but these should be minimized where possible. If there seems to be some magic #define which accesses parts of the file, it's probably dead code. As above, dead code makes it harder to maintain and read everything else. +* Removing calls to cout, cerr, STDOUT, perror etc. These should use the global error reporting code. +* Minimize warnings from compilers (e.g., GCC flags ``-Wextra -Wall``). Sometimes these are innocuous, but it's usually better to fix the problems before they become bugs. +* Use static code analysis tools to find potential bugs in the code and remove them. +* Insure proper use of atom and bond iterators, e.g., ``FOR_ATOMS_OF_MOL`` rather than atom or bond index access, which will break if indexing changes. + +Patches and contributions towards any of these tasks will be greatly appreciated. + +.. _openbabel-devel: https://lists.sourceforge.net/lists/listinfo/openbabel-devel diff --git a/_sources/docs/Contributing/Testing.rst.txt b/_sources/docs/Contributing/Testing.rst.txt new file mode 100644 index 00000000..17094ed6 --- /dev/null +++ b/_sources/docs/Contributing/Testing.rst.txt @@ -0,0 +1,184 @@ +.. _testing: + +Adding a new test +================= + +Tests allow us to maintain code quality, ensure that code is working, prevent regressions, and facilitate refactoring. Personally, I find that there is no better motivation for writing tests than knowing that that bug I fixed will stay fixed, and that feature I implemented will not be broken by others. As an open source developer, I never have enough time; tests ensure that what time I have is not wasted. + +We can divide the existing tests into three classes, based on how they test the Open Babel codebase: + +1. Tests written in C++ that test the public API +2. Tests written in Python that use the SWIG bindings to test the public API +3. Tests written in Python that use the command-line executables for testing + +Which type of test should you write? It doesn't really matter - it's more important that you write *some* type of test. Personally, I can more quickly test more if I write the test in Python, so generally I write and check-in tests of type (2) above; when I need to run a testcase in a debugger, I write a short test of type (1) so that I can step through and see what's happening. + +Running tests +------------- + +To begin with, we need to configure CMake to enable tests: ``-DENABLE_TESTS=ON``. This adds the ``make test`` target and builds the C++ tests. For tests of type 3 (above), you will also need to enable the Python bindings: ``-DPYTHON_BINDINGS=ON -DRUN_SWIG=ON``. Some tests are dependent on optional dependencies; if you don't build with support for these, then the corresponding tests will not be run. + +To actually run the tests, you can run the entire test suite in one go or run individual tests. To run the entire suite, use ``make test`` or ``ctest`` (note that you can use the ``-j`` option to speed up ctest). The ctest command also allows a single test or a list of tests to be specified, and in combination with ``-VV`` (verbose) may be useful to run an individual test. However, I find it more useful to run individual tests directly. Here is an example of how to run an individual test for each of the three types discussed earlier: + +1. ``test_runner regressionstest 1`` + + This will run test number 1 in :file:`regressionstest.cpp`. Nothing will happen...unless the test fails. (test_runner is a testing harness generated by CMake.) + +2. ``python test\testbindings.py TestSuite.testAsterisk`` + + This will run the testAsterisk test in :file:`testbindings.py`. This will write out a single dot, and some summary information. + +3. ``python test\testbabel.py testOBabel.testSMItoInChI`` + + This will run the testSMItoInChI test in :file:`testbabel.py`. + +The next few sections describe adding a new test of types 1 to 3. The same test will be added, a test to ensure that the molecular weight of ethanol is reported as 46.07. + +Test using C++ +-------------- + +The easiest place to add new tests is into :file:`test/regressionstest.cpp`. Look at the switch statement at the end of the file and pick a number for the test. Let's say 260. Add the following:: + + case 260: + test_Ethanol_MolWt(); + break; + +Now add the value of 260 to :file:`test/CMakeLists.txt` so that it will be run as part of the testsuite.:: + + set (regressions_parts 1 221 222 223 224 225 226 227 260) + +Now let's add the actual test somewhere near the top of the file:: + + void test_Ethanol_MolWt() + { + OBMol mol; + OBConversion conv; + OB_REQUIRE(conv.SetInFormat("smi")); + conv.ReadString(&mol, "CCO"); + double molwt = mol.GetMolWt(); + OB_ASSERT(molwt - 46.07 < 0.01); + } + +The various assert methods are listed in :file:`obtest.h` and are as follows: + +* **OB_REQUIRE(exp)** - This must evaluate to ``true`` or else the test will be marked as failing and will terminate. This is useful for conditions that *must* be true or else the remaining tests cannot be run (e.g. was the necessary OBFormat found?). +* **OB_ASSERT(exp)** - This must evaluate to ``true`` or else the test will be marked as failing. In contrast to OB_REQUIRE, the test does not terminate in this case, but continues to run. This feature can be useful because it lets you know (based on the output) how many and which OB_ASSERT statements failed. +* **OB_COMPARE(expA, expB)** - Expressions A and B must be equal or else the test fails (but does not terminate). + +It is often useful to write a test that uses a checked-in testfile. Let's do this for our example testcase. If you place a file :file:`ethanol.smi` into :file:`test/files`, then the following will read it using a convenience function provided by :file:`obtest.h`.:: + + void test_Ethanol_MolWt() + { + OBMolPtr mol = OBTestUtil::ReadFile("ethanol.smi") + double molwt = mol.GetMolWt(); + OB_ASSERT(molwt - 46.07 < 0.01); + } + +As well as ``ReadFile`` (which is convenient for single molecules), the ``OBTestUtil`` struct provides ``GetFilename`` which will return the full path to the testfile, if you wish to open it yourself. + +Test using a command-line executable +------------------------------------ + +At the command-line we can calculate the molecular weight of ethanol as shown below. We are going to do something similar using the Python test framework:: + + > obabel -:CCO --append MW -otxt + 46.0684 + +Open :file:`test/testbabel.py` in an editor. I have grouped tests related to the :file:`obabel` executable into a class testOBabel, so let's add a new test there. Somewhere in that class (for example, at the end), add a function such as the following (note: it must begin with the word "test"):: + + def testMolWtEthanol(self): + """Check the molecular weight of ethanol""" + self.canFindExecutable("obabel") + answers = [ + ("CCO", 46.07), + ("[H]", 1.01), + ("[2H]", 2.01), + ] + for smi, molwt in answers: + output, error = run_exec('obabel -:%s --append mw -otxt' % smi) + my_molwt = round(float(output), 2) + self.assertEqual(my_molwt, molwt) + +We provide a few convenience functions to help write these tests. The most important of these is ``run_exec(command)`` which runs the commandline executable returns a tuple of stdout and stderr. Behind the scenes, it adds the full path to the named executable. In the example above, ``run_exec(stdin, command)`` took a single argument; the next example will show its use with two arguments - the additional argument is a string which is treated as stdin, and piped through the executable. + +In the previous example, each SMILES string was passed in one-at-a-time. However, it is more efficient to do them all in one go as in the following example:: + + def testMolWtEthanol(self): + """Check the molecular weight of ethanol""" + self.canFindExecutable("obabel") + smifile = """CCO + [H] + [2H] + """ + answers = [46.07, 1.01, 2.01] + output, error = run_exec(smifile, 'obabel -ismi --append mw -otxt') + for ans, my_ans in zip(answers, output.split("\n")): + self.assertEqual(ans, round(float(my_ans), 2)) + +To use a testfile placed in :file:`test/files`, the ``getTestFile()`` member function is provided:: + + def testMolWtEthanol(self): + """Check the molecular weight of ethanol""" + self.canFindExecutable("obabel") + answers = [46.07, 1.01, 2.01] + smifile = self.getTestFile("ethanol.smi") + output, error = run_exec('obabel %s --append mw -otxt' % smifile) + for ans, my_ans in zip(answers, output.split("\n")): + self.assertEqual(ans, round(float(my_ans), 2)) + +The full list of provided convenience functions is: + +* **run_exec(command)**, **run_exec(stdin, command)** - see above +* **BaseTest.getTestFile(filename)** - returns the full path to a testfile +* **BaseTest.canFindExecutable(executable)** - checks whether the executable exists in the expected location +* **BaseTest.assertConverted(stderr, N)** - An assert statement that takes the stderr from run_exec and will check whether the number of molecules reported as converted matches N + +Test the API using Python +------------------------- + +The easiest place to add new tests is into :file:`test/testbindings.py`. Classes are used to organise the tests, but for a single 'miscellaneous' test a good place is the TestSuite class. Somewhere in that class add the following function:: + + + def testMolWtEthanol(self): + """Check the molecular weight of ethanol""" + answers = [ + ("CCO", 46.07), + ("[H]", 1.01), + ("[2H]", 2.01), + ] + for smi, molwt in answers: + my_molwt = round(pybel.readstring("smi", smi).molwt, 2) + self.assertEqual(my_molwt, molwt) + +The variable ``here`` is defined in :file:`testbindings.py` and may be used find the path to testfiles. For example, given the :file:`test/ethanol.smi`, the following may be used to read it:: + + def testMolWtEthanol(self): + """Check the molecular weight of ethanol""" + answers = [46.07, 1.01, 2.01] + testfile = os.path.join(here, "test", "ethanol.smi") + for mol, answer in zip(pybel.readfile("smi", testfile), answers): + my_molwt = round(mol.molwt, 2) + self.assertEqual(my_molwt, molwt) + +The tests use the standard unittest framework. One thing to note, which is not obvious, is how to test for exceptions. A typical case is checking that a dodgy SMILES is rejected on reading; in this instance, ``Pybel.readstring()`` will raise an IOError. To assert that this is the case, rather than use try/except, the following syntax is required:: + + self.assertRaises(IOError, pybel.readstring, "smi", "~*&*($") + +If you have multiple tests to add on a single 'topic', you will probably want to add your own class either into :file:`testbindings.py` or a new Python file. Note that if you create a new Python file, it should start with the word ``test`` and you will need to add the rest of the name to the ``pybindtest`` list in :file:`test/CMakeLists.txt`. + +Some final comments +------------------- + +Some thoughts on the topic of the perfect test: + +* When adding a regression test for a bug fix, the test should fail without the fix, but pass afterwards. +* When adding a test for a new feature, the test should provide complete coverage for all code paths. +* Test not just perfect input, but all sorts of dodgy input like molecules with no atoms, empty strings, and so forth. +* Don't be afraid to add tests for things which you already (think you) know will pass; such tests may surprise you, and even if they don't they will prevent regressions. + +Potential problems/gotchas: + +* Why isn't your Python test being run? Test functions name must begin with the word ``test``. +* If your new test passes first time, check that it is actually running correctly, by changing your asserts so that they should fail. +* The C++ tests will be marked as failing if the test writes any of the following to stdout: ``ERROR``, ``FAIL``, ``Test failed``. This is actually how the assert methods work. +* It's best to avoid writing to disk, and instead write to a variable or stdout and capture it (as in the examples above). diff --git a/_sources/docs/Depiction/depiction.rst.txt b/_sources/docs/Depiction/depiction.rst.txt new file mode 100644 index 00000000..b0449d0e --- /dev/null +++ b/_sources/docs/Depiction/depiction.rst.txt @@ -0,0 +1,49 @@ +2D Depiction +============ + +As the old Chinese proverb has it, a molecular depiction is worth a +thousand words. This chapter covers everything relevant to using Open +Babel to generate or read/write a 2D depiction, expected by most +chemists for print or website purposes. + +When we talk about a depiction in cheminformatics, there are really two different concepts covered by this term: + +1. Graphical display of a molecule's structure as a 2D image (such as the PNG and SVG formats). Here is an example:: + + obabel -:C(=O)Cl -O acidchloride.png + +.. image:: ../_static/acidchloride.png + +2. Storage of the 2D coordinates (and associated stereo symbols) associated with Concept 1 (using formats such as Mol and Mol2). Here is the connection table from the corresponding Mol file for the above depiction:: + + 3 2 0 0 0 0 0 0 0 0999 V2000 + 0.8660 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 1.7321 -0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 + 0.0000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 2 0 0 0 0 + 1 3 1 0 0 0 0 + +.. note:: + + The focus in this chapter is on 2D depiction and not 3D. It is of course possible to generate and store 3D coordinates in many of the file formats supported by Open Babel, but the only support for depiction is the Povray format, used to create ray-traced ball-and-stick diagrams of molecules. + Other Open Source chemistry projects such as `Avogadro <http://avogadro.sf.net>`_, `PyMOL <http://pymol.org>`_, and `Jmol <http://jmol.org>`_ cover this area very well. + +Molecular graphics +------------------ + +As of Open Babel 2.3.2, there are three output formats for displaying a 2D image: + +1. PNG format: This is a bitmap format used to create images of a certain + pixel width. These images can be inserted into Word documents or displayed + on web pages. + +2. SVG format: This is a vector format, which can be scaled to generate images + of any size without loss of quality. In particular, Open Babel's SVG images + can be interactively zoomed and panned using a modern web browser. + +3. ASCII format: This is a depiction of a molecule using ASCII text. This can + be useful if you are logged into a remote server, or are working at the + command-line, and just need a basic check of the identity of a molecule. + +All of these formats support multimolecule files. The PNG and SVG formats +arrange the molecules into rows and columns (you can specify the number of rows or columns if you wish), while the ASCII format just uses a single column. The remainder of this chapter will concentrate on the PNG and SVG formats; for more information on the ASCII format, see the format description [ref]. diff --git a/_sources/docs/Descriptors/descriptors.rst.txt b/_sources/docs/Descriptors/descriptors.rst.txt new file mode 100644 index 00000000..5dcb1d79 --- /dev/null +++ b/_sources/docs/Descriptors/descriptors.rst.txt @@ -0,0 +1,125 @@ +Descriptors +=========== + +.. INSERT AUTOMATICALLY GENERATED CONTENT BELOW + +Numerical descriptors +--------------------- + +.. rubric:: Number of atoms (atoms) + +Add or remove hydrogens to count total or heavy atoms +SMARTS: \* + +.. rubric:: Number of bonds (bonds) + +Add or remove hydrogens to count total or bonds between heavy atoms +SMARTS: \*~\* + +.. rubric:: Number of Hydrogen Bond Donors (JoelLib) (HBD) + +SMARTS: [!#6;!H0] + +.. rubric:: Number of Hydrogen Bond Acceptors 1 (JoelLib) (HBA1) + +Identification of Biological Activity Profiles Using Substructural +Analysis and Genetic Algorithms -- Gillet, Willett and Bradshaw, +U. of Sheffield and Glaxo Wellcome. +Presented at Random & Rational: Drug Discovery via Rational Design +and Combinitorial Chemistry, Strategic Research Institute, Princeton +NJ, Sept. 1995 +SMARTS: [$([!#6;+0]);!$([F,Cl,Br,I]);!$([o,s,nX3]);!$([Nv5,Pv5,Sv4,Sv6])] + +.. rubric:: Number of Hydrogen Bond Acceptors 2 (JoelLib) (HBA2) + +SMARTS: [$([$([#8,#16]);!$(\*=N~O);!$(\*~N=O);X1,X2]),$([#7;v3;!$([nH]);!$(\*(-a)-a)])] + +.. rubric:: Number of Fluorine Atoms (nF) + +SMARTS: F + +.. rubric:: octanol/water partition coefficient (logP) + +Datafile: logp.txt + +.. rubric:: Molecular Weight filter (MW) + + + +.. rubric:: Number of triple bonds (tbonds) + +SMARTS: \*#\* + +.. rubric:: molar refractivity (MR) + +Datafile: mr.txt + +.. rubric:: Number of aromatic bonds (abonds) + +SMARTS: \*:\* + +.. rubric:: Number of single bonds (sbonds) + +SMARTS: \*-\* + +.. rubric:: Number of double bonds (dbonds) + +SMARTS: \*=\* + +.. rubric:: topological polar surface area (TPSA) + +Datafile: psa.txt + +.. rubric:: Rotatable bonds filter (rotors) + + + +.. rubric:: Melting point (MP) + +This is a melting point descriptor developed +by Andy Lang. For details see: +http://onschallenge.wikispaces.com/MeltingPointModel011 +Datafile: mpC.txt + +Textual descriptors +------------------- + +.. rubric:: Canonical SMILES (cansmi) + + + +.. rubric:: Canonical SMILES without isotopes or stereo (cansmiNS) + + + +.. rubric:: IUPAC InChI identifier (InChI) + + + +.. rubric:: InChIKey (InChIKey) + + + +.. rubric:: Chemical formula (formula) + + + +.. rubric:: For comparing a molecule's title (title) + + + +Descriptors for filtering +------------------------- + +.. rubric:: Lipinski Rule of Five (L5) + +HBD<5 HBA1<10 MW<500 logP<5 + +.. rubric:: SMARTS filter (smarts) + + + +.. rubric:: SMARTS filter (s) + + + diff --git a/_sources/docs/Features/Radicals.rst.txt b/_sources/docs/Features/Radicals.rst.txt new file mode 100644 index 00000000..05b6d949 --- /dev/null +++ b/_sources/docs/Features/Radicals.rst.txt @@ -0,0 +1,177 @@ +Radicals and SMILES extensions +============================== + +The need for radicals and implicit hydrogen to coexist +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Hydrogen deficient molecules, radicals, carbenes, etc., are not +well catered for by chemical software aimed at pharmaceuticals. But +radicals are important reaction intermediates in living systems as +well as many other fields, such as polymers, paints, oils, +combustion and atmospheric chemistry. The examples given here are +small molecules, relevant to the last two applications. + +Chemistry software to handle radicals is complicated by the common +use of implicit hydrogen when describing molecules. How is the +program to know when you type "O" whether you mean an oxygen atom +or water? This ambiguity leads some to say that hydrogens should +always be explicit in any chemical description. But this is not the +way that most chemists work. A straight paraffinic chain from which +a hydrogen had been abstracted might commonly be represented by +something like: |3-pentyl radical| + +This uses implicit hydrogens and an explicit radical centre. But +sometimes the hydrogens are explicit and the radical centre +implicit, as when CH\ :sub:`3`\ is used to represent the methyl radical. + +How Open Babel does it +~~~~~~~~~~~~~~~~~~~~~~ + +Open Babel accepts molecules with explicit or implicit hydrogens and +can convert between the two. It will also handle radicals (and +other hydrogen-deficient species) with implicit hydrogen by using +internally a property of an atom, `\_spinmultiplicity`, modelled on +the RAD property in MDL MOL files and also used in CML. This can be +regarded in the present context as a measure of the hydrogen +deficiency of an atom. Its value is: + +* 0 for normal atoms, +* 2 for radical (missing one hydrogen) and +* 1 or 3 for carbenes and nitrenes (missing two hydrogens). + +It happens that for some doubly deficient species, like carbene +CH\ :sub:`2` and oxygen atoms, the singlet and triplet species are fairly close +in energy and both may be significant in certain applications such +as combustion, atmospheric or preparative organic chemistry, so it +is convenient that they can be described separately. There are of +course an infinity of other electronic configurations of molecules +but Open Babel has no special descriptors for them. However, even +more hydrogen-deficient atoms are indicated by the highest possible +value of spinmultiplicity (C atom has spin multiplicity of 5). +(This extends MDL's RAD property which has a maximum value of 3.) + +If the spin multiplicity of an atom is not input explicitly, it is +set (in :obapi:`OBMol::AssignSpinMultiplicity() <OpenBabel::OBMol::AssignSpinMultiplicity>`) when the input format is +MOL, SMI, CML or Therm. This routine is called after all the atoms +and bonds of the molecule are known. It detects hydrogen deficiency +in an atom and assigns spin multiplicity appropriately. But because +hydrogen may be implicit it only does this for atoms which have at +least one explicit hydrogen or on atoms which have had +:obapi:`ForceNoH() <OpenBabel::OBAtom::ForceNoH>` called for them - which is effectively zero explicit +hydrogens. The latter is used, for instance, when SMILES inputs ``[O]`` +to ensure that it is seen as an oxygen atom (spin multiplicity=3) +rather than water. Otherwise, atoms with no explicit hydrogen are +assumed to have a spin multiplicity of 0, i.e with full complement +of implicit hydrogens. + +In deciding which atoms should be have spin multiplicity assigned, +hydrogen atoms which have an isotope specification (D,T or even 1H) +do not count. So SMILES ``N[2H]`` is NH\ :sub:`2`\ D (spin multiplicity +left at 0, so with a full content of implicit hydrogens), whereas +``N[H]`` is NH (spin multiplicity=3). A deuterated radical like NHD is +represented by ``[NH][2H]``. + +In radicals either the hydrogen or the spin multiplicity can be implicit +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Once the spin multiplicity has been set on an atom, the hydrogens +can be implicit even if it is a radical. For instance, the +following mol file, with explicit hydrogens, is one way of +representing the ethyl radical: + +:: + + ethyl radical + OpenBabel04010617172D + Has explicit hydrogen and implicit spin multiplicity + 7 6 0 0 0 0 0 0 0 0999 V2000 + 0.0000 0.0000 0.0000 C 0 0 0 0 0 + 0.0000 0.0000 0.0000 C 0 0 0 0 0 + 0.0000 0.0000 0.0000 H 0 0 0 0 0 + 0.0000 0.0000 0.0000 H 0 0 0 0 0 + 0.0000 0.0000 0.0000 H 0 0 0 0 0 + 0.0000 0.0000 0.0000 H 0 0 0 0 0 + 0.0000 0.0000 0.0000 H 0 0 0 0 0 + 1 2 1 0 0 0 + 1 3 1 0 0 0 + 1 4 1 0 0 0 + 1 5 1 0 0 0 + 2 6 1 0 0 0 + 2 7 1 0 0 0 + M END + +When read by Open Babel the spinmultiplicity is set to 2 on the C +atom 2. If the hydrogens are made implicit, perhaps by the ``-d`` +option, and the molecule output again, an alternative +representation is produced: + +:: + + ethyl radical + OpenBabel04010617192D + Has explicit spin multiplicity and implicit hydrogen + 2 1 0 0 0 0 0 0 0 0999 V2000 + 0.0000 0.0000 0.0000 C 0 0 0 0 0 + 0.0000 0.0000 0.0000 C 0 0 0 0 0 + 1 2 1 0 0 0 + M RAD 1 2 2 + M END + +SMILES extensions for radicals +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Although radical structures can be represented in SMILES by +specifying the hydrogens explicitly, e.g. ``[CH3]`` is the methyl +radical, some chemists have apparently felt the need to devise +non-standard extensions that represent the radical centre +explicitly. Open Babel will recognize ``C[O.]`` as well as ``C[O]`` as the +methoxy radical CH\ :sub:`3`\ O during input, but the non-standard +form is not supported in output. + +By default, radical centres are output in explict hydrogen form, +e.g. ``C[CH2]`` for the ethyl radical. All the atoms will be in explict +H form, i.e. ``[CH3][CH2]``, if :obapi:`AddHydrogens() <OpenBabel::OBMol::AddHydrogens>` or the ``-h`` option has +been specified. The output is always standard SMILES, although +other programs may not interpret radicals correctly. + +Open Babel supports another SMILES extension for both input and +output: the use of lower case atomic symbols to represent radical +centres. (This is supported on the ACCORD Chemistry Control and +maybe elsewhere.) So the ethyl radical is ``Cc`` and the methoxy radical +is ``Co``. This form is input transparently and can be output by using +the ``-xr`` option "radicals lower case". It is a useful shorthand in +writing radicals, and in many cases is easier to read since the +emphasis is on the radical centre rather than the number of +hydrogens which is less chemically significant. + +In addition, this extension interprets multiple lower case ``c`` +without ring closure as a conjugated carbon chain, so that ``cccc`` is +input as 1,3-butadiene. Lycopene (the red in tomatoes) is +``Cc(C)cCCc(C)cccc(C)cccc(C)ccccc(C)cccc(C)cccc(C)CCcc(C)C`` (without +the stereochemical specifications). This conjugated chain form is +not used on output - except in the standard SMILES aromatic form, +``c1ccccc1`` benzene. + +It is interesting to note that the lower case extension actually improves +the chemical representation in a few cases. The allyl radical C\ :sub:`3`\ H\ :sub:`5` +would be conventionally ``[CH2]=[CH][CH2]`` (in its explict H form), +but could be represented as ``ccc`` with the extended syntax. The +latter more accurately represents the symmetry of the molecule +caused by delocalisation. + +This extension is not as robust or as carefully considered as standard +SMILES and should be used with restraint. A structure that uses ``c`` +as a radical centre close to aromatic carbons can be confusing to +read, and Open Babel's SMILES parser can also be confused. For example, it +recognizes ``c1ccccc1c`` as the benzyl radical, but it doesn't like +``c1cc(c)ccc1``. Radical centres should not be involved in ring +closure: for cyclohexyl radical ``C1cCCCC1`` is ok, but ``c1CCCCC1`` is not. + +Other Supported Extensions +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Open Babel supports quadruple bonds ``$``, e.g. ``[Rh-](Cl)(Cl)(Cl)(Cl)$[Rh-](Cl)(Cl)(Cl)Cl`` +and aromatic ``[te]``, e.g. ``Cc1[te]ccc1``. In addition, ring closures +up to 5 digits ``%(N)`` are supported, e.g. ``C%(100)CC%(100)``. + +.. |3-pentyl radical| image:: ../_static/Zigzag.png diff --git a/_sources/docs/FileFormats/2D_drawing_Formats.rst.txt b/_sources/docs/FileFormats/2D_drawing_Formats.rst.txt new file mode 100644 index 00000000..78fcdfd6 --- /dev/null +++ b/_sources/docs/FileFormats/2D_drawing_Formats.rst.txt @@ -0,0 +1,12 @@ +.. _2D drawing: + +2D drawing formats +~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + ChemDraw_CDXML_format.rst + ChemDraw_Connection_Table_format.rst + ChemDraw_binary_format.rst + Chemical_Resource_Kit_diagram(2D).rst + Chemtool_format.rst diff --git a/_sources/docs/FileFormats/3D_viewer_Formats.rst.txt b/_sources/docs/FileFormats/3D_viewer_Formats.rst.txt new file mode 100644 index 00000000..1e04ac94 --- /dev/null +++ b/_sources/docs/FileFormats/3D_viewer_Formats.rst.txt @@ -0,0 +1,19 @@ +.. _3D viewer: + +3D viewer formats +~~~~~~~~~~~~~~~~~ + +.. toctree:: + + Ball_and_Stick_format.rst + Chem3D_Cartesian_1_format.rst + Chem3D_Cartesian_2_format.rst + Chemical_Resource_Kit_3D_format.rst + Ghemical_format.rst + Maestro_format.rst + Molden_format.rst + PCModel_Format.rst + UniChem_XYZ_format.rst + ViewMol_format.rst + XCrySDen_Structure_Format.rst + YASARA.org_YOB_format.rst diff --git a/_sources/docs/FileFormats/ABINIT_Output_Format.rst.txt b/_sources/docs/FileFormats/ABINIT_Output_Format.rst.txt new file mode 100644 index 00000000..89afb90f --- /dev/null +++ b/_sources/docs/FileFormats/ABINIT_Output_Format.rst.txt @@ -0,0 +1,13 @@ +.. _ABINIT_Output_Format: + +ABINIT Output Format (abinit) +============================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/ACES_input_format.rst.txt b/_sources/docs/FileFormats/ACES_input_format.rst.txt new file mode 100644 index 00000000..53db5d1c --- /dev/null +++ b/_sources/docs/FileFormats/ACES_input_format.rst.txt @@ -0,0 +1,9 @@ +.. _ACES_input_format: + +ACES input format (acesin) +========================== + +**ACES is a set of programs that performs ab initio quantum chemistry calculations.** + +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/ACES_output_format.rst.txt b/_sources/docs/FileFormats/ACES_output_format.rst.txt new file mode 100644 index 00000000..82a7142f --- /dev/null +++ b/_sources/docs/FileFormats/ACES_output_format.rst.txt @@ -0,0 +1,16 @@ +.. _ACES_output_format: + +ACES output format (acesout) +============================ + +**ACES is a set of programs that performs ab initio quantum chemistry calculations.** + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/ACR_format.rst.txt b/_sources/docs/FileFormats/ACR_format.rst.txt new file mode 100644 index 00000000..afbf7b84 --- /dev/null +++ b/_sources/docs/FileFormats/ACR_format.rst.txt @@ -0,0 +1,13 @@ +.. _ACR_format: + +ACR format (acr) +================ + +**CaRIne ASCII Crystal format (ACR)** + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Consider single bonds only* diff --git a/_sources/docs/FileFormats/ADF_Band_output_format.rst.txt b/_sources/docs/FileFormats/ADF_Band_output_format.rst.txt new file mode 100644 index 00000000..a85ca331 --- /dev/null +++ b/_sources/docs/FileFormats/ADF_Band_output_format.rst.txt @@ -0,0 +1,6 @@ +.. _ADF_Band_output_format: + +ADF Band output format (adfband) +================================ +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/ADF_DFTB_output_format.rst.txt b/_sources/docs/FileFormats/ADF_DFTB_output_format.rst.txt new file mode 100644 index 00000000..6615188e --- /dev/null +++ b/_sources/docs/FileFormats/ADF_DFTB_output_format.rst.txt @@ -0,0 +1,6 @@ +.. _ADF_DFTB_output_format: + +ADF DFTB output format (adfdftb) +================================ +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/ADF_TAPE41_format.rst.txt b/_sources/docs/FileFormats/ADF_TAPE41_format.rst.txt new file mode 100644 index 00000000..f778c522 --- /dev/null +++ b/_sources/docs/FileFormats/ADF_TAPE41_format.rst.txt @@ -0,0 +1,19 @@ +.. _ADF_TAPE41_format: + +ADF TAPE41 format (t41) +======================= +Currently the ADF Tape41 support reads grids from +TAPE41 text files. To generate an ASCII version from +the default binary, use the dmpkf program. + + + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/ADF_cartesian_input_format.rst.txt b/_sources/docs/FileFormats/ADF_cartesian_input_format.rst.txt new file mode 100644 index 00000000..2c49fbfc --- /dev/null +++ b/_sources/docs/FileFormats/ADF_cartesian_input_format.rst.txt @@ -0,0 +1,13 @@ +.. _ADF_cartesian_input_format: + +ADF cartesian input format (adf) +================================ +.. note:: This is a write-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/ADF_output_format.rst.txt b/_sources/docs/FileFormats/ADF_output_format.rst.txt new file mode 100644 index 00000000..00319db6 --- /dev/null +++ b/_sources/docs/FileFormats/ADF_output_format.rst.txt @@ -0,0 +1,13 @@ +.. _ADF_output_format: + +ADF output format (adfout) +========================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/ASCII_format.rst.txt b/_sources/docs/FileFormats/ASCII_format.rst.txt new file mode 100644 index 00000000..fed044cf --- /dev/null +++ b/_sources/docs/FileFormats/ASCII_format.rst.txt @@ -0,0 +1,51 @@ +.. _ASCII_format: + +ASCII format (ascii) +==================== + +**2D depiction of a single molecule as ASCII text** + + +This format generates a 2D depiction of a molecule using only ASCII text +suitable for a command-line console, or a text file. For example:: + + obabel -:c1ccccc1C(=O)Cl -oascii -xh 20 + + __ + __/__\_ + _/__/ \__ + _/_/ \__ + | | + | | | + | | | + | | | + | | | + |___ _ Cl + \_\__ _/ \_ __ + \_\_ __/ \__ __/ + \__/ \__/ + | | + | | + | | + | | + + O + +If the image appears elongated or squat, the aspect ratio should be changed +from its default value of 1.5 using the ``-xa <ratio>`` option. To help +determine the correct value, use the ``-xs`` option to display a square. + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-w <characters> *Image width in characters, default 79* +-h <characters> *Image height in characters, default is width/aspect* +-a <ratio> *Aspect ratio of character height:width, default is 1.5* +-s *Display a square - this is useful for correcting the aspect ratio* +-t *Write the output molecule index and the title* +-m *Include a margin around the depiction* + + diff --git a/_sources/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.rst.txt b/_sources/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.rst.txt new file mode 100644 index 00000000..d6b53869 --- /dev/null +++ b/_sources/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.rst.txt @@ -0,0 +1,13 @@ +.. _Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format: + +Accelrys/MSI Biosym/Insight II CAR format (arc, car) +==================================================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.rst.txt b/_sources/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.rst.txt new file mode 100644 index 00000000..d2c0a3df --- /dev/null +++ b/_sources/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.rst.txt @@ -0,0 +1,6 @@ +.. _Accelrys_or_MSI_Cerius_II_MSI_format: + +Accelrys/MSI Cerius II MSI format (msi) +======================================= +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.rst.txt b/_sources/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.rst.txt new file mode 100644 index 00000000..61b8bc1c --- /dev/null +++ b/_sources/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.rst.txt @@ -0,0 +1,6 @@ +.. _Accelrys_or_MSI_Quanta_CSR_format: + +Accelrys/MSI Quanta CSR format (csr) +==================================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Alchemy_format.rst.txt b/_sources/docs/FileFormats/Alchemy_format.rst.txt new file mode 100644 index 00000000..cc318a56 --- /dev/null +++ b/_sources/docs/FileFormats/Alchemy_format.rst.txt @@ -0,0 +1,4 @@ +.. _Alchemy_format: + +Alchemy format (alc) +==================== diff --git a/_sources/docs/FileFormats/Amber_Prep_format.rst.txt b/_sources/docs/FileFormats/Amber_Prep_format.rst.txt new file mode 100644 index 00000000..269e5d32 --- /dev/null +++ b/_sources/docs/FileFormats/Amber_Prep_format.rst.txt @@ -0,0 +1,13 @@ +.. _Amber_Prep_format: + +Amber Prep format (prep) +======================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/AutoDock_PDBQT_format.rst.txt b/_sources/docs/FileFormats/AutoDock_PDBQT_format.rst.txt new file mode 100644 index 00000000..f10a8e5c --- /dev/null +++ b/_sources/docs/FileFormats/AutoDock_PDBQT_format.rst.txt @@ -0,0 +1,31 @@ +.. _AutoDock_PDBQT_format: + +AutoDock PDBQT format (pdbqt) +============================= + +**Reads and writes AutoDock PDBQT (Protein Data Bank, Partial Charge (Q), & Atom Type (T)) format** + +Note that the torsion tree is by default. Use the ``r`` write option +to prevent this. + + + +Read Options +~~~~~~~~~~~~ + +-b *Disable automatic bonding* +-d *Input file is in dlg (AutoDock docking log) format* + + +Write Options +~~~~~~~~~~~~~ + +-b *Enable automatic bonding* +-r *Output as a rigid molecule (i.e. no branches or torsion tree)* +-c *Combine separate molecular pieces of input into a single rigid molecule (requires "r" option or will have no effect)* +-s *Output as a flexible residue* +-p *Preserve atom indices from input file (default is to renumber atoms sequentially)* +-h *Preserve hydrogens* +-n *Preserve atom names* + + diff --git a/_sources/docs/FileFormats/Ball_and_Stick_format.rst.txt b/_sources/docs/FileFormats/Ball_and_Stick_format.rst.txt new file mode 100644 index 00000000..e8211f0d --- /dev/null +++ b/_sources/docs/FileFormats/Ball_and_Stick_format.rst.txt @@ -0,0 +1,4 @@ +.. _Ball_and_Stick_format: + +Ball and Stick format (bs) +========================== diff --git a/_sources/docs/FileFormats/Biological_data_Formats.rst.txt b/_sources/docs/FileFormats/Biological_data_Formats.rst.txt new file mode 100644 index 00000000..e3b6e8a3 --- /dev/null +++ b/_sources/docs/FileFormats/Biological_data_Formats.rst.txt @@ -0,0 +1,9 @@ +.. _Biological data: + +Biological data formats +~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + FASTA_format.rst + PQR_format.rst diff --git a/_sources/docs/FileFormats/CAChe_MolStruct_format.rst.txt b/_sources/docs/FileFormats/CAChe_MolStruct_format.rst.txt new file mode 100644 index 00000000..3d6ceebf --- /dev/null +++ b/_sources/docs/FileFormats/CAChe_MolStruct_format.rst.txt @@ -0,0 +1,6 @@ +.. _CAChe_MolStruct_format: + +CAChe MolStruct format (cac, cache) +=================================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/CASTEP_format.rst.txt b/_sources/docs/FileFormats/CASTEP_format.rst.txt new file mode 100644 index 00000000..7afdc628 --- /dev/null +++ b/_sources/docs/FileFormats/CASTEP_format.rst.txt @@ -0,0 +1,12 @@ +.. _CASTEP_format: + +CASTEP format (castep) +====================== + +**The format used by CASTEP.** + + + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/CCC_format.rst.txt b/_sources/docs/FileFormats/CCC_format.rst.txt new file mode 100644 index 00000000..d7fd21cd --- /dev/null +++ b/_sources/docs/FileFormats/CCC_format.rst.txt @@ -0,0 +1,6 @@ +.. _CCC_format: + +CCC format (ccc) +================ +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/CML_Reaction_format.rst.txt b/_sources/docs/FileFormats/CML_Reaction_format.rst.txt new file mode 100644 index 00000000..f7f1506a --- /dev/null +++ b/_sources/docs/FileFormats/CML_Reaction_format.rst.txt @@ -0,0 +1,40 @@ +.. _CML_Reaction_format: + +CML Reaction format (cmlr) +========================== + +**A minimal implementation of the CML Reaction format** + +This implementation uses libxml2. + + +Write Options +~~~~~~~~~~~~~ + +-1 *output CML1 (rather than CML2)* +-a *output array format for atoms and bonds* +-l *molecules NOT in MoleculeList* +-h *use hydrogenCount for all hydrogens* +-x *omit XML declaration* +-r *omit rate constant data* +-N <prefix> *add namespace prefix to elements* +-M *add obr prefix on non-CMLReact elements* +-p *add properties to molecules* + + +Comments +~~~~~~~~ +The implementation of this format which reads and writes to and from +OBReaction objects is fairly minimal at present. (Currently the only +other reaction format in OpenBabel is RXN.) During reading, only the +elements <reaction>, <reactant>, <product> and <molecule> are acted +upon (the last through CML). The molecules can be collected together +in a list at the start of the file and referenced in the reactant and +product via e.g. <molecule ref="mol1">. + +On writing, the list format can be specified with the ``-xl`` option. The +list containers are <moleculeList> and <reactionList> and the overall +wrapper is <mechanism>. These are non-standard CMLReact element names +and would have to be changed (in the code) to <list>,<list> and <cml> +if this was unacceptable. + diff --git a/_sources/docs/FileFormats/CSD_CSSR_format.rst.txt b/_sources/docs/FileFormats/CSD_CSSR_format.rst.txt new file mode 100644 index 00000000..e2518e50 --- /dev/null +++ b/_sources/docs/FileFormats/CSD_CSSR_format.rst.txt @@ -0,0 +1,6 @@ +.. _CSD_CSSR_format: + +CSD CSSR format (cssr) +====================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Cacao_Cartesian_format.rst.txt b/_sources/docs/FileFormats/Cacao_Cartesian_format.rst.txt new file mode 100644 index 00000000..16a6514f --- /dev/null +++ b/_sources/docs/FileFormats/Cacao_Cartesian_format.rst.txt @@ -0,0 +1,11 @@ +.. _Cacao_Cartesian_format: + +Cacao Cartesian format (caccrt) +=============================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Cacao_Internal_format.rst.txt b/_sources/docs/FileFormats/Cacao_Internal_format.rst.txt new file mode 100644 index 00000000..c205e1e6 --- /dev/null +++ b/_sources/docs/FileFormats/Cacao_Internal_format.rst.txt @@ -0,0 +1,6 @@ +.. _Cacao_Internal_format: + +Cacao Internal format (cacint) +============================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Canonical_SMILES_format.rst.txt b/_sources/docs/FileFormats/Canonical_SMILES_format.rst.txt new file mode 100644 index 00000000..22dcf6ea --- /dev/null +++ b/_sources/docs/FileFormats/Canonical_SMILES_format.rst.txt @@ -0,0 +1,39 @@ +.. _Canonical_SMILES_format: + +Canonical SMILES format (can) +============================= + +**A canonical form of the SMILES linear text format** + +The SMILES format is a linear text format which can describe the +connectivity and chirality of a molecule. Canonical SMILES gives a single +'canonical' form for any particular molecule. + +.. seealso:: + + The "regular" :ref:`SMILES_format` gives faster + output, since no canonical numbering is performed. + + + +Write Options +~~~~~~~~~~~~~ + +-a *Output atomclass like [C:2], if available* +-h *Output explicit hydrogens as such* +-i *Do not include isotopic or chiral markings* +-n *No molecule name* +-r *Radicals lower case eg ethyl is Cc* +-t *Molecule name only* +-F <atom numbers> *Generate Canonical SMILES for a fragment* + + The atom numbers should be specified like "1 2 4 7". +-f <atomno> *Specify the first atom* + + This atom will be used to begin the SMILES string. +-l <atomno> *Specify the last atom* + + The output will be rearranged so that any additional + SMILES added to the end will be attached to this atom. + See the :ref:`SMILES_format` for more information. + diff --git a/_sources/docs/FileFormats/Chem3D_Cartesian_1_format.rst.txt b/_sources/docs/FileFormats/Chem3D_Cartesian_1_format.rst.txt new file mode 100644 index 00000000..ca6c184d --- /dev/null +++ b/_sources/docs/FileFormats/Chem3D_Cartesian_1_format.rst.txt @@ -0,0 +1,4 @@ +.. _Chem3D_Cartesian_1_format: + +Chem3D Cartesian 1 format (c3d1) +================================ diff --git a/_sources/docs/FileFormats/Chem3D_Cartesian_2_format.rst.txt b/_sources/docs/FileFormats/Chem3D_Cartesian_2_format.rst.txt new file mode 100644 index 00000000..1d31ab5e --- /dev/null +++ b/_sources/docs/FileFormats/Chem3D_Cartesian_2_format.rst.txt @@ -0,0 +1,4 @@ +.. _Chem3D_Cartesian_2_format: + +Chem3D Cartesian 2 format (c3d2) +================================ diff --git a/_sources/docs/FileFormats/ChemDoodle_JSON.rst.txt b/_sources/docs/FileFormats/ChemDoodle_JSON.rst.txt new file mode 100644 index 00000000..c395dfa6 --- /dev/null +++ b/_sources/docs/FileFormats/ChemDoodle_JSON.rst.txt @@ -0,0 +1,25 @@ +.. _ChemDoodle_JSON: + +ChemDoodle JSON (cdjson) +======================== + +**The native way to present data to the ChemDoodle Web Components** + + + + +Read Options +~~~~~~~~~~~~ + +-c <num> *coordinate multiplier (default: 20)* + + +Write Options +~~~~~~~~~~~~~ + +-c <num> *coordinate multiplier (default: 20)* +-m *minified output formatting, with no line breaks or indents* +-v *verbose output (include default values)* +-w *use wedge/hash bonds from input instead of perceived stereochemistry* + + diff --git a/_sources/docs/FileFormats/ChemDraw_CDXML_format.rst.txt b/_sources/docs/FileFormats/ChemDraw_CDXML_format.rst.txt new file mode 100644 index 00000000..d85fa355 --- /dev/null +++ b/_sources/docs/FileFormats/ChemDraw_CDXML_format.rst.txt @@ -0,0 +1,10 @@ +.. _ChemDraw_CDXML_format: + +ChemDraw CDXML format (cdxml) +============================= + +**Minimal support of chemical structure information only.** + + + + diff --git a/_sources/docs/FileFormats/ChemDraw_Connection_Table_format.rst.txt b/_sources/docs/FileFormats/ChemDraw_Connection_Table_format.rst.txt new file mode 100644 index 00000000..267d7522 --- /dev/null +++ b/_sources/docs/FileFormats/ChemDraw_Connection_Table_format.rst.txt @@ -0,0 +1,4 @@ +.. _ChemDraw_Connection_Table_format: + +ChemDraw Connection Table format (ct) +===================================== diff --git a/_sources/docs/FileFormats/ChemDraw_binary_format.rst.txt b/_sources/docs/FileFormats/ChemDraw_binary_format.rst.txt new file mode 100644 index 00000000..42fe42bd --- /dev/null +++ b/_sources/docs/FileFormats/ChemDraw_binary_format.rst.txt @@ -0,0 +1,28 @@ +.. _ChemDraw_binary_format: + +ChemDraw binary format (cdx) +============================ + +**Read only** + +The whole file is read in one call. +Note that a file may contain a mixture of reactions and +molecules. +With the -ad option, a human-readable representation of the CDX tree +structure is output as an OBText object. Use textformat to view it:: + + obabel input.cdx -otext -ad + +Many reactions in CDX files are not fully specified with reaction data +structures, and may not be completely interpreted by this parser. + + + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-m *read molecules only; no reactions* +-d *output CDX tree to OBText object* +-o *display only objects in tree output* diff --git a/_sources/docs/FileFormats/ChemKin_format.rst.txt b/_sources/docs/FileFormats/ChemKin_format.rst.txt new file mode 100644 index 00000000..bf018b4a --- /dev/null +++ b/_sources/docs/FileFormats/ChemKin_format.rst.txt @@ -0,0 +1,20 @@ +.. _ChemKin_format: + +ChemKin format (ck) +=================== +Read Options +~~~~~~~~~~~~ + +-f <file> *File with standard thermo data: default therm.dat* +-z *Use standard thermo only* +-L *Reactions have labels (Usually optional)* + + +Write Options +~~~~~~~~~~~~~ + +-s *Simple output: reactions only* +-t *Do not include species thermo data* +-0 *Omit reactions with zero rates* + + diff --git a/_sources/docs/FileFormats/Chemical_Markup_Language.rst.txt b/_sources/docs/FileFormats/Chemical_Markup_Language.rst.txt new file mode 100644 index 00000000..934163dd --- /dev/null +++ b/_sources/docs/FileFormats/Chemical_Markup_Language.rst.txt @@ -0,0 +1,85 @@ +.. _Chemical_Markup_Language: + +Chemical Markup Language (cml, mrv) +=================================== + +**An XML format for interchange of chemical information.** + + +This format writes and reads CML XML files. To write CML1 format rather than +the default CML2, use the ``-x1`` option. To write the array form use ``-xa`` +and to specify all hydrogens using the hydrogenCount attribute on atoms use +``-xh``. + +Crystal structures are written using the <crystal>, <xfract> (,...etc.) +elements if the OBMol has a OBGenericDataType::UnitCell data. + +All these forms are handled transparently during reading. Only a subset of +CML elements and attributes are recognised, but these include most of those +which define chemical structure, see below. + +The following are read: + +- Elements: + + - molecule, atomArray, atom, bondArray, bond, atomParity, bondStereo + - name, formula, crystal, scalar (contains crystal data) + - string, stringArray, integer, integerArray, float floatArray, builtin + +- Attributes: + + - On <molecule>: id, title, ref(in CMLReact) + - On <atom>: id, atomId, atomID, elementType, x2, y2, x3, y3, z3, xy2, xyz3, + xFract, yFract, zFract, xyzFract, hydrogenCount, formalCharge, isotope, + isotopeNumber, spinMultiplicity, radical(from Marvin), + atomRefs4 (for atomParity) + - On <bond>: atomRefs2, order, CML1: atomRef, atomRef1, atomRef2 + +Atom classes are also read and written. This is done using a specially +formed atom id. When reading, if the atom id is of the form aN_M (where +N and M are positive integers), then M is interpreted as the atom class. +Such atom ids are automatically generated when writing an atom with an +atom class. + + + +Read Options +~~~~~~~~~~~~ + +-2 *read 2D rather than 3D coordinates if both provided* + + +Write Options +~~~~~~~~~~~~~ + +-1 *write CML1 (rather than CML2)* +-a *write array format for atoms and bonds* +-A *write aromatic bonds as such, not Kekule form* +-m *write metadata* +-x *omit XML and namespace declarations* +-c *continuous output: no formatting* +-p *write properties* +-N <prefix> *add namespace prefix to elements* + + +Comments +~~~~~~~~ +In the absence of hydrogenCount and any explicit hydrogen on +an atom, implicit hydrogen is assumed to be present appropriate +to the radical or spinMultiplicity attributes on the atom or +its normal valency if they are not present. + +The XML formats require the XML text to be well formed but +generally interpret it fairly tolerantly. Unrecognised elements +and attributes are ignored and there are rather few error messages +when any required structures are not found. This laxity allows, for +instance, the reactant and product molecules to be picked out of a CML +React file using CML. Each format has an element which is regarded as +defining the object that OpenBabel will convert. For CML this is +<molecule>. Files can have multiple objects and these can be treated +the same as with other multiple object formats like SMILES and MDL +Molfile. So conversion can start at the nth object using the ``-fn`` option +and finish before the end using the ``-ln`` option. Multiple object XML files +also can be indexed and searched using FastSearch, although this has +not yet been extensively tested. + diff --git a/_sources/docs/FileFormats/Chemical_Resource_Kit_3D_format.rst.txt b/_sources/docs/FileFormats/Chemical_Resource_Kit_3D_format.rst.txt new file mode 100644 index 00000000..5ef73a4f --- /dev/null +++ b/_sources/docs/FileFormats/Chemical_Resource_Kit_3D_format.rst.txt @@ -0,0 +1,4 @@ +.. _Chemical_Resource_Kit_3D_format: + +Chemical Resource Kit 3D format (crk3d) +======================================= diff --git a/_sources/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).rst.txt b/_sources/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).rst.txt new file mode 100644 index 00000000..6ed327ac --- /dev/null +++ b/_sources/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).rst.txt @@ -0,0 +1,4 @@ +.. _Chemical_Resource_Kit_diagram(2D): + +Chemical Resource Kit diagram(2D) (crk2d) +========================================= diff --git a/_sources/docs/FileFormats/Chemtool_format.rst.txt b/_sources/docs/FileFormats/Chemtool_format.rst.txt new file mode 100644 index 00000000..2cb6a638 --- /dev/null +++ b/_sources/docs/FileFormats/Chemtool_format.rst.txt @@ -0,0 +1,6 @@ +.. _Chemtool_format: + +Chemtool format (cht) +===================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Common_cheminformatics_Formats.rst.txt b/_sources/docs/FileFormats/Common_cheminformatics_Formats.rst.txt new file mode 100644 index 00000000..b0418716 --- /dev/null +++ b/_sources/docs/FileFormats/Common_cheminformatics_Formats.rst.txt @@ -0,0 +1,16 @@ +.. _Common cheminformatics: + +Common cheminformatics formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + Canonical_SMILES_format.rst + Chemical_Markup_Language.rst + InChI_format.rst + InChIKey.rst + MDL_MOL_format.rst + Protein_Data_Bank_format.rst + SMILES_format.rst + SMILES_format_using_Smiley_parser.rst + Sybyl_Mol2_format.rst diff --git a/_sources/docs/FileFormats/Compare_molecules_using_InChI.rst.txt b/_sources/docs/FileFormats/Compare_molecules_using_InChI.rst.txt new file mode 100644 index 00000000..75c01cf4 --- /dev/null +++ b/_sources/docs/FileFormats/Compare_molecules_using_InChI.rst.txt @@ -0,0 +1,17 @@ +.. _Compare_molecules_using_InChI: + +Compare molecules using InChI (k) +================================= + +**A utility format that allows you to compare molecules using their InChIs** + +The first molecule is compared with the rest, e.g.:: + + babel first.smi second.mol third.cml -ok + +This is the same as using ``-oinchi -xet`` and can take the same options as InChI format +(see :ref:`InChI_format`). + + +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Computational_chemistry_Formats.rst.txt b/_sources/docs/FileFormats/Computational_chemistry_Formats.rst.txt new file mode 100644 index 00000000..251a5070 --- /dev/null +++ b/_sources/docs/FileFormats/Computational_chemistry_Formats.rst.txt @@ -0,0 +1,57 @@ +.. _Computational chemistry: + +Computational chemistry formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + ABINIT_Output_Format.rst + ACES_input_format.rst + ACES_output_format.rst + ADF_Band_output_format.rst + ADF_DFTB_output_format.rst + ADF_cartesian_input_format.rst + ADF_output_format.rst + CAChe_MolStruct_format.rst + CASTEP_format.rst + Cacao_Cartesian_format.rst + Cacao_Internal_format.rst + Crystal_09_output_format.rst + Culgi_object_file_format.rst + DALTON_input_format.rst + DALTON_output_format.rst + DMol3_coordinates_format.rst + Extended_XYZ_cartesian_coordinates_format.rst + FHIaims_XYZ_format.rst + Fenske-Hall_Z-Matrix_format.rst + GAMESS_Input.rst + GAMESS_Output.rst + GAMESS-UK_Input.rst + GAMESS-UK_Output.rst + GULP_format.rst + Gaussian_Input.rst + Gaussian_Output.rst + Gaussian_Z-Matrix_Input.rst + Gaussian_formatted_checkpoint_file_format.rst + HyperChem_HIN_format.rst + Jaguar_input_format.rst + Jaguar_output_format.rst + MOPAC_Cartesian_format.rst + MOPAC_Internal.rst + MOPAC_Output_format.rst + MPQC_output_format.rst + MPQC_simplified_input_format.rst + Molpro_input_format.rst + Molpro_output_format.rst + NWChem_input_format.rst + NWChem_output_format.rst + ORCA_input_format.rst + ORCA_output_format.rst + PWscf_format.rst + Parallel_Quantum_Solutions_format.rst + Q-Chem_input_format.rst + Q-Chem_output_format.rst + TurboMole_Coordinate_format.rst + Turbomole_AOFORCE_output_format.rst + VASP_format.rst + ZINDO_input_format.rst diff --git a/_sources/docs/FileFormats/Confab_report_format.rst.txt b/_sources/docs/FileFormats/Confab_report_format.rst.txt new file mode 100644 index 00000000..8b1b3c2a --- /dev/null +++ b/_sources/docs/FileFormats/Confab_report_format.rst.txt @@ -0,0 +1,30 @@ +.. _Confab_report_format: + +Confab report format (confabreport) +=================================== + +**Assess performance of a conformer generator relative to a set of reference structures** + + +Once a file containing conformers has been generated by :ref:`Confab`, +the result can be compared to the original input structures or a set +of reference structures using this output format. + +Conformers are matched with reference structures using the molecule +title. For every conformer, there should be a reference structure +(but not necessarily vice versa). + +Further information is available in the section describing :ref:`Confab`. + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-f <filename> *File containing reference structures* +-r <rmsd> *RMSD cutoff (default 0.5 Angstrom)* + + The number of structures with conformers within this RMSD cutoff + of the reference will be reported. diff --git a/_sources/docs/FileFormats/Copy_raw_text.rst.txt b/_sources/docs/FileFormats/Copy_raw_text.rst.txt new file mode 100644 index 00000000..e0f514d3 --- /dev/null +++ b/_sources/docs/FileFormats/Copy_raw_text.rst.txt @@ -0,0 +1,31 @@ +.. _Copy_raw_text: + +Copy raw text (copy) +==================== + +**A utility format for exactly copying the text of a chemical file format** + +This format allows you to filter molecules from multimolecule files +without the risk of losing any additional information they contain, +since no format conversion is carried out. + +.. warning:: + + Currently not working correctly for files with Windows line endings. + +Example: + + Extract only structures that include at least one aromatic carbon + (by matching the SMARTS pattern ``[c]``):: + + babel -s '[c]' database.sdf -ocopy new.sd + +.. note:: + + XML files may be missing non-object elements + at the start or end and so may no longer be well formed. + + + +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Crystal_09_output_format.rst.txt b/_sources/docs/FileFormats/Crystal_09_output_format.rst.txt new file mode 100644 index 00000000..293b217a --- /dev/null +++ b/_sources/docs/FileFormats/Crystal_09_output_format.rst.txt @@ -0,0 +1,11 @@ +.. _Crystal_09_output_format: + +Crystal 09 output format (c09out) +================================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Consider single bonds only* +-b *Disable bonding entirely* diff --git a/_sources/docs/FileFormats/Crystallographic_Information_File.rst.txt b/_sources/docs/FileFormats/Crystallographic_Information_File.rst.txt new file mode 100644 index 00000000..c30d0cf1 --- /dev/null +++ b/_sources/docs/FileFormats/Crystallographic_Information_File.rst.txt @@ -0,0 +1,33 @@ +.. _Crystallographic_Information_File: + +Crystallographic Information File (cif) +======================================= + +**The CIF file format is the standard interchange format for small-molecule crystal structures** + + +Fractional coordinates are converted to cartesian ones using the following convention: + +- The x axis is parallel to a +- The y axis is in the (a,b) plane +- The z axis is along c* + +Ref: Int. Tables for Crystallography (2006), vol. B, sec 3.3.1.1.1 + (the matrix used is the 2nd form listed) + + + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* +-B *Use bonds listed in CIF file from _geom_bond_etc records (overrides option b)* + + +Write Options +~~~~~~~~~~~~~ + +-g *Write bonds using _geom_bond_etc fields* + + diff --git a/_sources/docs/FileFormats/Crystallography_Formats.rst.txt b/_sources/docs/FileFormats/Crystallography_Formats.rst.txt new file mode 100644 index 00000000..24108c76 --- /dev/null +++ b/_sources/docs/FileFormats/Crystallography_Formats.rst.txt @@ -0,0 +1,14 @@ +.. _Crystallography: + +Crystallography formats +~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + ACR_format.rst + CSD_CSSR_format.rst + Crystallographic_Information_File.rst + Free_Form_Fractional_format.rst + Macromolecular_Crystallographic_Info.rst + POS_cartesian_coordinates_format.rst + ShelX_format.rst diff --git a/_sources/docs/FileFormats/Culgi_object_file_format.rst.txt b/_sources/docs/FileFormats/Culgi_object_file_format.rst.txt new file mode 100644 index 00000000..9dddef3f --- /dev/null +++ b/_sources/docs/FileFormats/Culgi_object_file_format.rst.txt @@ -0,0 +1,10 @@ +.. _Culgi_object_file_format: + +Culgi object file format (cof) +============================== + +**Culgi format** + +No options currently + + diff --git a/_sources/docs/FileFormats/DALTON_input_format.rst.txt b/_sources/docs/FileFormats/DALTON_input_format.rst.txt new file mode 100644 index 00000000..0ffef942 --- /dev/null +++ b/_sources/docs/FileFormats/DALTON_input_format.rst.txt @@ -0,0 +1,20 @@ +.. _DALTON_input_format: + +DALTON input format (dalmol) +============================ +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + +Write Options +~~~~~~~~~~~~~ + +-a *write input in atomic units instead of Angstrom* +-b *write input using the ATOMBASIS format* +-k <basis> *specify basis set to use* + + e.g. ``-xk STO-3G`` + diff --git a/_sources/docs/FileFormats/DALTON_output_format.rst.txt b/_sources/docs/FileFormats/DALTON_output_format.rst.txt new file mode 100644 index 00000000..d4cdacbb --- /dev/null +++ b/_sources/docs/FileFormats/DALTON_output_format.rst.txt @@ -0,0 +1,11 @@ +.. _DALTON_output_format: + +DALTON output format (dallog) +============================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* diff --git a/_sources/docs/FileFormats/DL-POLY_CONFIG.rst.txt b/_sources/docs/FileFormats/DL-POLY_CONFIG.rst.txt new file mode 100644 index 00000000..c05f4eb2 --- /dev/null +++ b/_sources/docs/FileFormats/DL-POLY_CONFIG.rst.txt @@ -0,0 +1,4 @@ +.. _DL-POLY_CONFIG: + +DL-POLY CONFIG (CONFIG) +======================= diff --git a/_sources/docs/FileFormats/DL-POLY_HISTORY.rst.txt b/_sources/docs/FileFormats/DL-POLY_HISTORY.rst.txt new file mode 100644 index 00000000..d7868de2 --- /dev/null +++ b/_sources/docs/FileFormats/DL-POLY_HISTORY.rst.txt @@ -0,0 +1,6 @@ +.. _DL-POLY_HISTORY: + +DL-POLY HISTORY (HISTORY) +========================= +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/DMol3_coordinates_format.rst.txt b/_sources/docs/FileFormats/DMol3_coordinates_format.rst.txt new file mode 100644 index 00000000..5664ea7f --- /dev/null +++ b/_sources/docs/FileFormats/DMol3_coordinates_format.rst.txt @@ -0,0 +1,11 @@ +.. _DMol3_coordinates_format: + +DMol3 coordinates format (dmol, outmol) +======================================= +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Dock_3.5_Box_format.rst.txt b/_sources/docs/FileFormats/Dock_3.5_Box_format.rst.txt new file mode 100644 index 00000000..e8f070b2 --- /dev/null +++ b/_sources/docs/FileFormats/Dock_3.5_Box_format.rst.txt @@ -0,0 +1,4 @@ +.. _Dock_3.5_Box_format: + +Dock 3.5 Box format (box) +========================= diff --git a/_sources/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.rst.txt b/_sources/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.rst.txt new file mode 100644 index 00000000..1a354502 --- /dev/null +++ b/_sources/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.rst.txt @@ -0,0 +1,55 @@ +.. _Extended_XYZ_cartesian_coordinates_format: + +Extended XYZ cartesian coordinates format (exyz) +================================================ + +**A format used by ORCA-AICCM** + +The "EXYZ" chemical file format is an extended version of the standard +"XYZ" chemical file format with additional keywords and informations about +the unit cell and virtual atoms. + +* Line one of the file contains the number of atoms in the file. +* Line two of the file contains a title, comment, filename and/or the + following keywords: ``%PBC`` or ``%VIRTUAL`` + +Any remaining lines are parsed for atom information until a blank line. These +lines start with the element symbol, followed by X, Y, and Z coordinates in +angstroms separated by whitespace and - if ``%VIRTUAL`` is specified - the +optional word ``VIRTUAL`` to mark virtual atoms. If ``%PBC`` is specified +a second block will be present containing the 3 vectors for the unit cell +in angstrom and the offset as shown in the example below:: + + 4 + %PBC + C 0.00000 1.40272 0.00000 + H 0.00000 2.49029 0.00000 + C -1.21479 0.70136 0.00000 + H -2.15666 1.24515 0.00000 + + Vector1 2.445200 0.000000 0.000000 + Vector2 0.000000 1.000000 0.000000 + Vector3 0.000000 0.000000 1.000000 + Offset 0.000000 0.000000 0.000000 + +On **output**, the first line written is the number of atoms in the molecule. +Line two is the title of the molecule or the filename if no title is defined. +Remaining lines define the atoms in the file. The first column is the atomic +symbol (right-aligned on the third character), followed by the XYZ coordinates +in "15.5" format separated by an addition whitespace, in angstroms. This means +that all coordinates are printed with five decimal places. + +The next block starts with a blank line to separate the coordinates from the +unit cell vectors followed by the vectors of the unit cell marked with the +keywords Vector1/2/3. The vectors themselves are written in the same format +as the atom coordinates. The last line contains the keyword Offset and the +offset of the unit cell. The unit is always angstrom. + + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/FASTA_format.rst.txt b/_sources/docs/FileFormats/FASTA_format.rst.txt new file mode 100644 index 00000000..baa991ab --- /dev/null +++ b/_sources/docs/FileFormats/FASTA_format.rst.txt @@ -0,0 +1,23 @@ +.. _FASTA_format: + +FASTA format (fa, fasta, fsa) +============================= + +**A file format used to exchange information between genetic sequence databases** + + + + +Read Options +~~~~~~~~~~~~ + +-1 *Output single-stranded DNA* +-t <turns> *Use the specified number of base pairs per turn (e.g., 10)* +-s *Output single bonds only* +-b *Disable bonding entirely* + + +Write Options +~~~~~~~~~~~~~ + +-n *Omit title and comments* diff --git a/_sources/docs/FileFormats/FHIaims_XYZ_format.rst.txt b/_sources/docs/FileFormats/FHIaims_XYZ_format.rst.txt new file mode 100644 index 00000000..9ba70073 --- /dev/null +++ b/_sources/docs/FileFormats/FHIaims_XYZ_format.rst.txt @@ -0,0 +1,11 @@ +.. _FHIaims_XYZ_format: + +FHIaims XYZ format (fhiaims) +============================ +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).rst.txt b/_sources/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).rst.txt new file mode 100644 index 00000000..6c0c0874 --- /dev/null +++ b/_sources/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).rst.txt @@ -0,0 +1,29 @@ +.. _FPS_text_fingerprint_format_(Dalke): + +FPS text fingerprint format (Dalke) (fps) +========================================= +The FPS file format for fingerprints was developed by Andrew Dalke to +define and promote common file formats for storing and exchanging +cheminformatics fingerprint data sets, and to develop tools which +work with that format. For more information, see +http://chem-fingerprints.googlecode.com + +Any molecule without a title is given its index in the file as title. + +A list of available fingerprint types can be obtained by:: + + obabel -L fingerprints + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-f <id> *Fingerprint type* +-N <num> *Fold to specified number of bits, 32, 64, 128, etc.* +-p *Use full input path as source, not just filename* +-t <text> *Use <text> as source in header* + + diff --git a/_sources/docs/FileFormats/Fastsearch_format.rst.txt b/_sources/docs/FileFormats/Fastsearch_format.rst.txt new file mode 100644 index 00000000..0e28127b --- /dev/null +++ b/_sources/docs/FileFormats/Fastsearch_format.rst.txt @@ -0,0 +1,76 @@ +.. _Fastsearch_format: + +Fastsearch format (fs) +====================== + +**Fingerprint-aided substructure and similarity searching** + + +Writing to the fs format makes an index of a multi-molecule datafile:: + + obabel dataset.sdf -ofs + +This prepares an index :file:`dataset.fs` with default parameters, and is slow +(~30 minutes for a 250,000 molecule file). + +However, when reading from the fs format searches are much faster, a few seconds, +and so can be done interactively. + +The search target is the parameter of the ``-s`` option and can be +slightly extended SMILES (with ``[#n]`` atoms and ``~`` bonds) or +the name of a file containing a molecule. + +Several types of searches are possible: + +- Identical molecule:: + + obabel index.fs -O outfile.yyy -s SMILES exact + +- Substructure:: + + obabel index.fs -O outfile.yyy -s SMILES or + obabel index.fs -O outfile.yyy -s filename.xxx + + where ``xxx`` is a format id known to OpenBabel, e.g. sdf +- Molecular similarity based on Tanimoto coefficient:: + + obabel index.fs -O outfile.yyy -at15 -sSMILES # best 15 molecules + obabel index.fs -O outfile.yyy -at0.7 -sSMILES # Tanimoto >0.7 + obabel index.fs -O outfile.yyy -at0.7,0.9 -sSMILES + # Tanimoto >0.7 && Tanimoto < 0.9 + +The datafile plus the ``-ifs`` option can be used instead of the index file. + +NOTE on 32-bit systems the datafile MUST NOT be larger than 4GB. + +Dative bonds like -[N+][O-](=O) are indexed as -N(=O)(=O), and when searching +the target molecule should be in the second form. + +.. seealso:: + + :ref:`fingerprints` + + + +Read Options +~~~~~~~~~~~~ + +-t <num> *Do similarity search:<num>mols or <num> as min Tanimoto* +-a *Add Tanimoto coeff to title in similarity search* +-l <num> *Maximum number of candidates. Default<4000>* +-e *Exact match* + + Alternative to using exact in ``-s`` parameter, see above +-n *No further SMARTS filtering after fingerprint phase* + + +Write Options +~~~~~~~~~~~~~ + +-f <num> *Fingerprint type* + + If not specified, the default fingerprint (currently FP2) is used +-N <num> *Fold fingerprint to <num> bits* +-u *Update an existing index* + + diff --git a/_sources/docs/FileFormats/Feature_format.rst.txt b/_sources/docs/FileFormats/Feature_format.rst.txt new file mode 100644 index 00000000..49558fdb --- /dev/null +++ b/_sources/docs/FileFormats/Feature_format.rst.txt @@ -0,0 +1,11 @@ +.. _Feature_format: + +Feature format (feat) +===================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Fenske-Hall_Z-Matrix_format.rst.txt b/_sources/docs/FileFormats/Fenske-Hall_Z-Matrix_format.rst.txt new file mode 100644 index 00000000..f1cfedd0 --- /dev/null +++ b/_sources/docs/FileFormats/Fenske-Hall_Z-Matrix_format.rst.txt @@ -0,0 +1,6 @@ +.. _Fenske-Hall_Z-Matrix_format: + +Fenske-Hall Z-Matrix format (fh) +================================ +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Fingerprint_format.rst.txt b/_sources/docs/FileFormats/Fingerprint_format.rst.txt new file mode 100644 index 00000000..d315776e --- /dev/null +++ b/_sources/docs/FileFormats/Fingerprint_format.rst.txt @@ -0,0 +1,78 @@ +.. _Fingerprint_format: + +Fingerprint format (fpt) +======================== + +**Generate or display molecular fingerprints.** + +This format constructs and displays fingerprints and (for multiple input +objects) the Tanimoto coefficient and whether a superstructure of the first +object. + +A list of available fingerprint types can be obtained by:: + + babel -L fingerprints + +The current default type FP2 is is of the Daylight type, indexing a molecule +based on the occurrence of linear fragment up to 7 atoms in length. To use a +fingerprint type other than the default, use the ``-xf`` option, for example:: + + babel infile.xxx -ofpt -xfFP3 + +For a single molecule the fingerprint is output in hexadecimal form +(intended mainly for debugging). + +With multiple molecules the hexadecimal form is output only if the ``-xh`` +option is specified. But in addition the Tanimoto coefficient between the +first molecule and each of the subsequent ones is displayed. If the first +molecule is a substructure of the target molecule a note saying this is +also displayed. + +The Tanimoto coefficient is defined as:: + + Number of bits set in (patternFP & targetFP) / Number of bits in (patternFP | targetFP) + +where the boolean operations between the fingerprints are bitwise. + +The Tanimoto coefficient has no absolute meaning and depends on the design of the fingerprint. + +Use the ``-xs`` option to describe the bits that are set in the fingerprint. +The output depends on the fingerprint type. For Fingerprint FP4, each bit +corresponds to a particular chemical feature, which are specified as SMARTS +patterns in :file:`SMARTS_InteLigand.txt`, and the output is a tab-separated +list of the features of a molecule. For instance, a well-known molecule +gives:: + + Primary_carbon: Carboxylic_acid: Carboxylic_ester: Carboxylic_acid_derivative: + Vinylogous_carbonyl_or_carboxyl_derivative: Vinylogous_ester: Aromatic: + Conjugated_double_bond: C_ONS_bond: 1,3-Tautomerizable: Rotatable_bond: CH-acidic: + +For the path-based fingerprint FP2, the output from the ``-xs`` option is +instead a list of the chemical fragments used to set bits, e.g.:: + + $ obabel -:"CCC(=O)Cl" -ofpt -xs -xf FP2 + > + 0 6 1 6 <670> + 0 6 1 6 1 6 <260> + 0 8 2 6 <623> + ...etc + +where the first digit is 0 for linear fragments but is a bond order +for cyclic fragments. The remaining digits indicate the atomic number +and bond order alternatively. Note that a bond order of 5 is used for +aromatic bonds. For example, bit 623 above is the linear fragment O=C +(8 for oxygen, 2 for double bond and 6 for carbon). + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-f <id> *fingerprint type* +-N <num> *fold to specified number of bits, 32, 64, 128, etc.* +-h *hex output when multiple molecules* +-o *hex output only* +-s *describe each set bit* +-u *describe each unset bit* diff --git a/_sources/docs/FileFormats/Free_Form_Fractional_format.rst.txt b/_sources/docs/FileFormats/Free_Form_Fractional_format.rst.txt new file mode 100644 index 00000000..81ad5713 --- /dev/null +++ b/_sources/docs/FileFormats/Free_Form_Fractional_format.rst.txt @@ -0,0 +1,60 @@ +.. _Free_Form_Fractional_format: + +Free Form Fractional format (fract) +=================================== + +**General purpose crystallographic format** + +The "free-form" fractional format attempts to allow for input from a +range of fractional / crystallography file formats. As such, it has only +a few restrictions on input: + +- Line one of the file contains a title or comment. +- Line two of the file contains the unit cell parameters separated by + whitespace and/or commas (i.e. "a b c alpha beta gamma"). +- Any remaining lines are parsed for atom information. Lines start with + the element symbol, followed by fractional X, Y, and Z coordinates + (in angstroms) separated by whitespace. + +Any numeric input (i.e., unit cell parameters, XYZ coordinates) can include +designations of errors, although this is currently ignored. For example:: + + C 1.00067(3) 2.75(2) 3.0678(12) + +will be parsed as:: + + C 1.00067 2.75 3.0678 + +When used as an **output** format, The first line written is the title of the +molecule or the filename if no title is defined. If a molecule has a defined +unit cell, then the second line will be formatted as:: + + a b c alpha beta gamma + +where a, b, c are the unit cell vector lengths, and alpha, beta, and gamma are +the angles between them. These numbers are formatted as "10.5", which means that +5 decimal places will be output for all numbers. In the case where no unit cell +is defined for the molecule, the vector lengths will be defined as 1.0, and the +angles to 90.0 degrees. + +Remaining lines define the atoms in the file. The first column is the atomic +symbol, followed by the XYZ coordinates in 10.5 format (in angstroms). + +Here is an example file:: + + ZnO test file + 3.14 3.24 5.18 90.0 90.0 120.0 + O 0.66667 0.33333 0.3750 + O 0.33333 0.66667 0.8750 + Zn 0.66667 0.33333 0.0000 + Zn 0.33333 0.66667 0.5000 + + + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/GAMESS-UK_Input.rst.txt b/_sources/docs/FileFormats/GAMESS-UK_Input.rst.txt new file mode 100644 index 00000000..48ba8da4 --- /dev/null +++ b/_sources/docs/FileFormats/GAMESS-UK_Input.rst.txt @@ -0,0 +1,4 @@ +.. _GAMESS-UK_Input: + +GAMESS-UK Input (gukin) +======================= diff --git a/_sources/docs/FileFormats/GAMESS-UK_Output.rst.txt b/_sources/docs/FileFormats/GAMESS-UK_Output.rst.txt new file mode 100644 index 00000000..d6fc2662 --- /dev/null +++ b/_sources/docs/FileFormats/GAMESS-UK_Output.rst.txt @@ -0,0 +1,4 @@ +.. _GAMESS-UK_Output: + +GAMESS-UK Output (gukout) +========================= diff --git a/_sources/docs/FileFormats/GAMESS_Input.rst.txt b/_sources/docs/FileFormats/GAMESS_Input.rst.txt new file mode 100644 index 00000000..bd6a6565 --- /dev/null +++ b/_sources/docs/FileFormats/GAMESS_Input.rst.txt @@ -0,0 +1,11 @@ +.. _GAMESS_Input: + +GAMESS Input (gamin, inp) +========================= +Write Options +~~~~~~~~~~~~~ + +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* + + diff --git a/_sources/docs/FileFormats/GAMESS_Output.rst.txt b/_sources/docs/FileFormats/GAMESS_Output.rst.txt new file mode 100644 index 00000000..f01c2bdd --- /dev/null +++ b/_sources/docs/FileFormats/GAMESS_Output.rst.txt @@ -0,0 +1,14 @@ +.. _GAMESS_Output: + +GAMESS Output (gam, gamess, gamout) +=================================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* +-c *Read multiple conformers* + + diff --git a/_sources/docs/FileFormats/GROMOS96_format.rst.txt b/_sources/docs/FileFormats/GROMOS96_format.rst.txt new file mode 100644 index 00000000..e856b1c7 --- /dev/null +++ b/_sources/docs/FileFormats/GROMOS96_format.rst.txt @@ -0,0 +1,10 @@ +.. _GROMOS96_format: + +GROMOS96 format (gr96) +====================== +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-n *output nm (not Angstroms)* diff --git a/_sources/docs/FileFormats/GRO_format.rst.txt b/_sources/docs/FileFormats/GRO_format.rst.txt new file mode 100644 index 00000000..7773b791 --- /dev/null +++ b/_sources/docs/FileFormats/GRO_format.rst.txt @@ -0,0 +1,17 @@ +.. _GRO_format: + +GRO format (gro) +================ + +**This is GRO file format as used in Gromacs.** + +Right now there is only limited support for element perception. It works for +elements with one letter symbols if the atomtype starts with the same letter. + + + +Read Options +~~~~~~~~~~~~ + +-s *Consider single bonds only* +-b *Disable bonding entierly* diff --git a/_sources/docs/FileFormats/GULP_format.rst.txt b/_sources/docs/FileFormats/GULP_format.rst.txt new file mode 100644 index 00000000..617c01df --- /dev/null +++ b/_sources/docs/FileFormats/GULP_format.rst.txt @@ -0,0 +1,12 @@ +.. _GULP_format: + +GULP format (got) +================= + +**The format used by GULP (General Utility Lattice Program).** + + + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/Gaussian_Input.rst.txt b/_sources/docs/FileFormats/Gaussian_Input.rst.txt new file mode 100644 index 00000000..2384c5c2 --- /dev/null +++ b/_sources/docs/FileFormats/Gaussian_Input.rst.txt @@ -0,0 +1,15 @@ +.. _Gaussian_Input: + +Gaussian Input (com, gau, gjc, gjf) +=================================== +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-b *Output includes bonds* +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* +-u *Write the crystallographic unit cell, if present.* + + diff --git a/_sources/docs/FileFormats/Gaussian_Output.rst.txt b/_sources/docs/FileFormats/Gaussian_Output.rst.txt new file mode 100644 index 00000000..2597e4ae --- /dev/null +++ b/_sources/docs/FileFormats/Gaussian_Output.rst.txt @@ -0,0 +1,13 @@ +.. _Gaussian_Output: + +Gaussian Output (g03, g09, g16, g92, g94, g98, gal) +=================================================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Gaussian_Z-Matrix_Input.rst.txt b/_sources/docs/FileFormats/Gaussian_Z-Matrix_Input.rst.txt new file mode 100644 index 00000000..91335429 --- /dev/null +++ b/_sources/docs/FileFormats/Gaussian_Z-Matrix_Input.rst.txt @@ -0,0 +1,18 @@ +.. _Gaussian_Z-Matrix_Input: + +Gaussian Z-Matrix Input (gzmat) +=============================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + +Write Options +~~~~~~~~~~~~~ + +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* + + diff --git a/_sources/docs/FileFormats/Gaussian_cube_format.rst.txt b/_sources/docs/FileFormats/Gaussian_cube_format.rst.txt new file mode 100644 index 00000000..73b57739 --- /dev/null +++ b/_sources/docs/FileFormats/Gaussian_cube_format.rst.txt @@ -0,0 +1,19 @@ +.. _Gaussian_cube_format: + +Gaussian cube format (cub, cube) +================================ + +**A grid format for volume data used by Gaussian** + +Open Babel supports reading and writing Gaussian cubes, including multiple +grids in one file. + + + +Read Options +~~~~~~~~~~~~ + +-b *no bonds* +-s *no multiple bonds* + + diff --git a/_sources/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.rst.txt b/_sources/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.rst.txt new file mode 100644 index 00000000..05ae7f07 --- /dev/null +++ b/_sources/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.rst.txt @@ -0,0 +1,20 @@ +.. _Gaussian_formatted_checkpoint_file_format: + +Gaussian formatted checkpoint file format (fch, fchk, fck) +========================================================== + +**A formatted text file containing the results of a Gaussian calculation** + +Currently supports reading molecular geometries from fchk files. More to come. + + + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Single bonds only* +-b *No bond perception* + + diff --git a/_sources/docs/FileFormats/General_XML_format.rst.txt b/_sources/docs/FileFormats/General_XML_format.rst.txt new file mode 100644 index 00000000..1b8a2051 --- /dev/null +++ b/_sources/docs/FileFormats/General_XML_format.rst.txt @@ -0,0 +1,32 @@ +.. _General_XML_format: + +General XML format (xml) +======================== + +**Calls a particular XML format depending on the XML namespace.** + + +This is a general XML "format" which reads a generic XML file and infers +its format from the namespace as given in a xmlns attribute on an element. +If a namespace is recognised as associated with one of the XML formats in +Open Babel, and the type of the object (e.g. a molecule) is appropriate to +the output format then this is used to input a single object. If no namespace +declaration is found the default format (currently CML) is used. + +The process is repeated for any subsequent input so that it is possible to +input objects written in several different schemas from the same document. +The file :file:`CMLandPubChem.xml` illustrates this and contains molecules in +both CML and PubChem formats. + +This implementation uses libxml2. + + + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-n *Read objects of first namespace only* + + diff --git a/_sources/docs/FileFormats/Generic_Output_file_format.rst.txt b/_sources/docs/FileFormats/Generic_Output_file_format.rst.txt new file mode 100644 index 00000000..4b735769 --- /dev/null +++ b/_sources/docs/FileFormats/Generic_Output_file_format.rst.txt @@ -0,0 +1,22 @@ +.. _Generic_Output_file_format: + +Generic Output file format (dat, log, out, output) +================================================== + +**Automatically detect and read computational chemistry output files** + + +This format can be used to read ADF, Gaussian, GAMESS, PWSCF, Q-Chem, +MOPAC, ORCA etc. output files by automatically detecting the file type. + + + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Ghemical_format.rst.txt b/_sources/docs/FileFormats/Ghemical_format.rst.txt new file mode 100644 index 00000000..babebaaa --- /dev/null +++ b/_sources/docs/FileFormats/Ghemical_format.rst.txt @@ -0,0 +1,7 @@ +.. _Ghemical_format: + +Ghemical format (gpr) +===================== + +**Open source molecular modelling** + diff --git a/_sources/docs/FileFormats/HyperChem_HIN_format.rst.txt b/_sources/docs/FileFormats/HyperChem_HIN_format.rst.txt new file mode 100644 index 00000000..a9554cee --- /dev/null +++ b/_sources/docs/FileFormats/HyperChem_HIN_format.rst.txt @@ -0,0 +1,4 @@ +.. _HyperChem_HIN_format: + +HyperChem HIN format (hin) +========================== diff --git a/_sources/docs/FileFormats/Image_Formats.rst.txt b/_sources/docs/FileFormats/Image_Formats.rst.txt new file mode 100644 index 00000000..b55fb1c6 --- /dev/null +++ b/_sources/docs/FileFormats/Image_Formats.rst.txt @@ -0,0 +1,12 @@ +.. _Image: + +Image formats +~~~~~~~~~~~~~ + +.. toctree:: + + ASCII_format.rst + PNG_2D_depiction.rst + POV-Ray_input_format.rst + Painter_format.rst + SVG_2D_depiction.rst diff --git a/_sources/docs/FileFormats/InChIKey.rst.txt b/_sources/docs/FileFormats/InChIKey.rst.txt new file mode 100644 index 00000000..18975de5 --- /dev/null +++ b/_sources/docs/FileFormats/InChIKey.rst.txt @@ -0,0 +1,37 @@ +.. _InChIKey: + +InChIKey (inchikey) +=================== + +**A hashed representation of the InChI.** + + +The InChIKey is a fixed-length (27-character) condensed digital +representation of an InChI, developed to make it easy to perform +web searches for chemical structures. + +An InChIKey consists of 14 characters (derived from the connectivity +layer in the InChI), a hyphen, 9 characters (derived from the +remaining layers), a character indicating the InChI version, a hyphen +and a final checksum character. Contrast the InChI and InChIKey of the +molecule represented by the SMILES string `CC(=O)Cl`:: + + obabel -:CC(=O)Cl -oinchi + InChI=1S/C2H3ClO/c1-2(3)4/h1H3 + + obabel -:CC(=O)Cl -oinchikey + WETWJCDKMRHUPV-UHFFFAOYSA-N + +This is the same as using ``-oinchi -xK`` and can take the same options +as the InChI format (see :ref:`InChI_format`):: + + obabel -:CC(=O)Cl -oinchi -xK + WETWJCDKMRHUPV-UHFFFAOYSA-N + +Note that while a molecule with a particular InChI will always give the +same InChIKey, the reverse is not true; there may exist more than one +molecule which have different InChIs but yield the same InChIKey. + + +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/InChI_format.rst.txt b/_sources/docs/FileFormats/InChI_format.rst.txt new file mode 100644 index 00000000..1994bbf3 --- /dev/null +++ b/_sources/docs/FileFormats/InChI_format.rst.txt @@ -0,0 +1,81 @@ +.. _InChI_format: + +InChI format (inchi) +==================== + +**IUPAC/NIST molecular identifier** + + + + +Read Options +~~~~~~~~~~~~ + +-X <Option string> *List of InChI options* +-n *molecule name follows InChI on same line* +-a *add InChI string to molecule name* + + +Write Options +~~~~~~~~~~~~~ + + + Standard InChI is written unless certain InChI options are used + +-K *output InChIKey only* +-t *add molecule name after InChI* +-w *ignore less important warnings* + + These are: + 'Omitted undefined stereo' + 'Charges were rearranged' + 'Proton(s) added/removed' + 'Metal was disconnected' +-a *output auxiliary information* +-l *display InChI log* +-r *recalculate InChI; normally an input InChI is reused* +-s *recalculate wedge and hash bonds(2D structures only)* + + + **Uniqueness options** (see also ``--unique`` and ``--sort`` which are more versatile) +-u *output only unique molecules* +-U *output only unique molecules and sort them* +-e *compare first molecule to others* + + This can also be done with :ref:`InChICompare format <Compare_molecules_using_InChI>`:: + + babel first.smi second.mol third.cml -ok + +-T <param> *truncate InChI according to various parameters* + + See below for possible truncation parameters. +-X <Option string> *Additional InChI options* + + See InChI documentation. + These options should be space delimited in a single quoted string. + + - Structure perception (compatible with stdInChI): ``NEWPSOFF``, ``DoNotAddH``, ``SNon`` + - Stereo interpretation (produces non-standard InChI): ``SRel``, ``SRac``, + ``SUCF``, ``ChiralFlagON``, ``ChiralFlagOFF`` + - InChI creation options (produces non-standard InChI): ``SUU``, ``SLUUD``, + ``FixedH``, ``RecMet``, ``KET``, ``15T`` + + The following options are for convenience, e.g. ``-xF`` + but produce non-standard InChI. +-F *include fixed hydrogen layer* +-M *include bonds to metal* + + +Comments +~~~~~~~~ +Truncation parameters used with ``-xT``: + +/formula formula only +/connect formula and connectivity only +/nostereo ignore E/Z and sp3 stereochemistry +/nosp3 ignore sp3 stereochemistry +/noEZ ignore E/Z steroeochemistry +/nochg ignore charge and protonation +/noiso ignore isotopes + +Note that these can also be combined, e.g. ``/nochg/noiso`` diff --git a/_sources/docs/FileFormats/JSON_Formats.rst.txt b/_sources/docs/FileFormats/JSON_Formats.rst.txt new file mode 100644 index 00000000..d68abbb4 --- /dev/null +++ b/_sources/docs/FileFormats/JSON_Formats.rst.txt @@ -0,0 +1,9 @@ +.. _JSON: + +JSON formats +~~~~~~~~~~~~ + +.. toctree:: + + ChemDoodle_JSON.rst + PubChem_JSON.rst diff --git a/_sources/docs/FileFormats/Jaguar_input_format.rst.txt b/_sources/docs/FileFormats/Jaguar_input_format.rst.txt new file mode 100644 index 00000000..75ee788a --- /dev/null +++ b/_sources/docs/FileFormats/Jaguar_input_format.rst.txt @@ -0,0 +1,11 @@ +.. _Jaguar_input_format: + +Jaguar input format (jin) +========================= +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Jaguar_output_format.rst.txt b/_sources/docs/FileFormats/Jaguar_output_format.rst.txt new file mode 100644 index 00000000..48dfe217 --- /dev/null +++ b/_sources/docs/FileFormats/Jaguar_output_format.rst.txt @@ -0,0 +1,13 @@ +.. _Jaguar_output_format: + +Jaguar output format (jout) +=========================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.rst.txt b/_sources/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.rst.txt new file mode 100644 index 00000000..b7fba56f --- /dev/null +++ b/_sources/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.rst.txt @@ -0,0 +1,9 @@ +.. _Kinetics and Thermodynamics: + +Kinetics and Thermodynamics formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + ChemKin_format.rst + Thermo_format.rst diff --git a/_sources/docs/FileFormats/LPMD_format.rst.txt b/_sources/docs/FileFormats/LPMD_format.rst.txt new file mode 100644 index 00000000..6f6f1a78 --- /dev/null +++ b/_sources/docs/FileFormats/LPMD_format.rst.txt @@ -0,0 +1,30 @@ +.. _LPMD_format: + +LPMD format (lpmd) +================== + +**Read and write LPMD's atomic configuration file** + + + + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + +Write Options +~~~~~~~~~~~~~ + +-f <num> *Indicate the level of the output file: 0 (default), 1 or 2.* +-m <num> *Indicate the mode for level 2 output files* + + 0 (default) is for accelerations and 1 for forces +-c <vectorcells> *Set the cell vectors if not present* + + Example: ``-xc 10.0,0,0,0.0,10.0,0.0,0.0,0.0,20.0`` +-e *Add the charge to the output file* + + diff --git a/_sources/docs/FileFormats/M.F._Sanner's_MSMS_input_format.rst.txt b/_sources/docs/FileFormats/M.F._Sanner's_MSMS_input_format.rst.txt new file mode 100644 index 00000000..56468fd3 --- /dev/null +++ b/_sources/docs/FileFormats/M.F._Sanner's_MSMS_input_format.rst.txt @@ -0,0 +1,16 @@ +.. _M.F._Sanner's_MSMS_input_format: + +M.F. Sanner's MSMS input format (msms) +====================================== + +**Generates input to the MSMS (Michael Sanner Molecular Surface) program to compute solvent surfaces.** + + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-a *output atom names* diff --git a/_sources/docs/FileFormats/MCDL_format.rst.txt b/_sources/docs/FileFormats/MCDL_format.rst.txt new file mode 100644 index 00000000..5a714c8e --- /dev/null +++ b/_sources/docs/FileFormats/MCDL_format.rst.txt @@ -0,0 +1,22 @@ +.. _MCDL_format: + +MCDL format (mcdl) +================== + +**Modular Chemical Descriptor Language** + + +As described in [gb2001]_. + +.. [gb2001] A.A. Gakh and M.N. Burnett. **Modular Chemical Descriptor + Language (MCDL): Composition, Connectivity and + Supplementary Modules.** + *J. Chem. Inf. Comput. Sci.*, **2004**, *41*, 1491-1499. + [`Link <https://doi.org/10.1021/ci000108y>`_] + +Here's an example conversion from SMILES to MCDL:: + + obabel -:"CC(=O)Cl" -omcdl + CHHH;COCl[2] + + diff --git a/_sources/docs/FileFormats/MDFF_format.rst.txt b/_sources/docs/FileFormats/MDFF_format.rst.txt new file mode 100644 index 00000000..fc666a46 --- /dev/null +++ b/_sources/docs/FileFormats/MDFF_format.rst.txt @@ -0,0 +1,19 @@ +.. _MDFF_format: + +MDFF format (CONTFF, MDFF, POSFF) +================================= + +**The format used in the POSFF and CONTFF files used by MDFF** + + +POSFF and CONTFF are read to obtain information from MDFF calculations. +The program will try to read the IONS.POT file if the name of the +input file is POSFF or CONTFF. + + +Write Options +~~~~~~~~~~~~~ + +-w *Sort atoms by atomic number* +-u <elementlist> *Sort atoms by list of element symbols provided in comma-separated string w/o spaces* +-i *Write IONS.POT file* diff --git a/_sources/docs/FileFormats/MDL_MOL_format.rst.txt b/_sources/docs/FileFormats/MDL_MOL_format.rst.txt new file mode 100644 index 00000000..e0f9392b --- /dev/null +++ b/_sources/docs/FileFormats/MDL_MOL_format.rst.txt @@ -0,0 +1,65 @@ +.. _MDL_MOL_format: + +MDL MOL format (mdl, mol, sd, sdf) +================================== + +**Reads and writes V2000 and V3000 versions** + + +Open Babel supports an extension to the MOL file standard +that allows cis/trans and tetrahedral stereochemistry to be +stored in 0D MOL files. The tetrahedral stereochemistry is +stored as the atom parity, while the cis/trans stereochemistry +is stored using Up and Down bonds similar to how it is +represented in a SMILES string. Use the ``S`` option +when reading or writing if you want to avoid storing +or interpreting stereochemistry in 0D MOL files. + + + +Read Options +~~~~~~~~~~~~ + +-s *determine chirality from atom parity flags* + + The default setting for 2D and 3D is to ignore atom parity and + work out the chirality based on the bond + stereochemistry (2D) or coordinates (3D). + For 0D the default is already to determine the chirality + from the atom parity. +-S *do not read stereochemistry from 0D MOL files* + + Open Babel supports reading and writing cis/trans + and tetrahedral stereochemistry to 0D MOL files. + This is an extension to the standard which you can + turn off using this option. +-T *read title only* +-P *read title and properties only* + + When filtering an sdf file on title or properties + only, avoid lengthy chemical interpretation by + using the ``T`` or ``P`` option together with the + :ref:`copy format <Copy_raw_text>`. + +Write Options +~~~~~~~~~~~~~ + +-3 *output V3000 not V2000 (used for >999 atoms/bonds)* +-a *write atomclass if available* +-m *write no properties* +-w *use wedge and hash bonds from input (2D only)* +-v *always specify the valence in the valence field* + + The default behavior is to only specify the valence if it + is not consistent with the MDL valence model. + So, for CH4 we don't specify it, but we do for CH3. + This option may be useful to preserve the correct number of + implicit hydrogens if a downstream tool does not correctly + implement the MDL valence model (but does honor the valence + field). +-S *do not store cis/trans stereochemistry in 0D MOL files* +-A *output in Alias form, e.g. Ph, if present* +-E *add an ASCII depiction of the molecule as a property* +-H *use HYD extension (always on if mol contains zero-order bonds)* + + diff --git a/_sources/docs/FileFormats/MDL_RXN_format.rst.txt b/_sources/docs/FileFormats/MDL_RXN_format.rst.txt new file mode 100644 index 00000000..0f0292e0 --- /dev/null +++ b/_sources/docs/FileFormats/MDL_RXN_format.rst.txt @@ -0,0 +1,23 @@ +.. _MDL_RXN_format: + +MDL RXN format (rxn) +==================== + +**The MDL reaction format is used to store information on chemical reactions.** + + +Output Options, e.g. -xA + A output in Alias form, e.g. Ph, if present + G <option> how to handle any agents present + + One of the following options should be specifed: + + - agent - Treat as an agent (default). Note that some programs + may not read agents in RXN files. + - reactant - Treat any agent as a reactant + - product - Treat any agent as a product + - ignore - Ignore any agent + - both - Treat as both a reactant and a product + + + diff --git a/_sources/docs/FileFormats/MOPAC_Cartesian_format.rst.txt b/_sources/docs/FileFormats/MOPAC_Cartesian_format.rst.txt new file mode 100644 index 00000000..bd54ae13 --- /dev/null +++ b/_sources/docs/FileFormats/MOPAC_Cartesian_format.rst.txt @@ -0,0 +1,19 @@ +.. _MOPAC_Cartesian_format: + +MOPAC Cartesian format (mop, mopcrt, mpc) +========================================= +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + +Write Options +~~~~~~~~~~~~~ + +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* +-u *Write the crystallographic unit cell, if present.* + + diff --git a/_sources/docs/FileFormats/MOPAC_Internal.rst.txt b/_sources/docs/FileFormats/MOPAC_Internal.rst.txt new file mode 100644 index 00000000..5168f838 --- /dev/null +++ b/_sources/docs/FileFormats/MOPAC_Internal.rst.txt @@ -0,0 +1,11 @@ +.. _MOPAC_Internal: + +MOPAC Internal (mopin) +====================== +Write Options +~~~~~~~~~~~~~ + +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* + + diff --git a/_sources/docs/FileFormats/MOPAC_Output_format.rst.txt b/_sources/docs/FileFormats/MOPAC_Output_format.rst.txt new file mode 100644 index 00000000..c93a21c7 --- /dev/null +++ b/_sources/docs/FileFormats/MOPAC_Output_format.rst.txt @@ -0,0 +1,13 @@ +.. _MOPAC_Output_format: + +MOPAC Output format (moo, mopout) +================================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/MPQC_output_format.rst.txt b/_sources/docs/FileFormats/MPQC_output_format.rst.txt new file mode 100644 index 00000000..78e30fff --- /dev/null +++ b/_sources/docs/FileFormats/MPQC_output_format.rst.txt @@ -0,0 +1,13 @@ +.. _MPQC_output_format: + +MPQC output format (mpqc) +========================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/MPQC_simplified_input_format.rst.txt b/_sources/docs/FileFormats/MPQC_simplified_input_format.rst.txt new file mode 100644 index 00000000..fe1884d2 --- /dev/null +++ b/_sources/docs/FileFormats/MPQC_simplified_input_format.rst.txt @@ -0,0 +1,6 @@ +.. _MPQC_simplified_input_format: + +MPQC simplified input format (mpqcin) +===================================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/MSI_BGF_format.rst.txt b/_sources/docs/FileFormats/MSI_BGF_format.rst.txt new file mode 100644 index 00000000..c16b3588 --- /dev/null +++ b/_sources/docs/FileFormats/MSI_BGF_format.rst.txt @@ -0,0 +1,4 @@ +.. _MSI_BGF_format: + +MSI BGF format (bgf) +==================== diff --git a/_sources/docs/FileFormats/MacroModel_format.rst.txt b/_sources/docs/FileFormats/MacroModel_format.rst.txt new file mode 100644 index 00000000..78fc5578 --- /dev/null +++ b/_sources/docs/FileFormats/MacroModel_format.rst.txt @@ -0,0 +1,4 @@ +.. _MacroModel_format: + +MacroModel format (mmd, mmod) +============================= diff --git a/_sources/docs/FileFormats/Macromolecular_Crystallographic_Info.rst.txt b/_sources/docs/FileFormats/Macromolecular_Crystallographic_Info.rst.txt new file mode 100644 index 00000000..e33af558 --- /dev/null +++ b/_sources/docs/FileFormats/Macromolecular_Crystallographic_Info.rst.txt @@ -0,0 +1,13 @@ +.. _Macromolecular_Crystallographic_Info: + +Macromolecular Crystallographic Info (mcif, mmcif) +================================================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-p *Apply periodic boundary conditions for bonds* +-b *Disable bonding entirely* +-w *Wrap atomic coordinates into unit cell box* + + diff --git a/_sources/docs/FileFormats/Maestro_format.rst.txt b/_sources/docs/FileFormats/Maestro_format.rst.txt new file mode 100644 index 00000000..9a36ee80 --- /dev/null +++ b/_sources/docs/FileFormats/Maestro_format.rst.txt @@ -0,0 +1,7 @@ +.. _Maestro_format: + +Maestro format (mae, maegz) +=========================== + +**File format of Schrödinger Software** + diff --git a/_sources/docs/FileFormats/Miscellaneous_Formats.rst.txt b/_sources/docs/FileFormats/Miscellaneous_Formats.rst.txt new file mode 100644 index 00000000..35fc9f4e --- /dev/null +++ b/_sources/docs/FileFormats/Miscellaneous_Formats.rst.txt @@ -0,0 +1,8 @@ +.. _Miscellaneous: + +Miscellaneous formats +~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + M.F._Sanner's_MSMS_input_format.rst diff --git a/_sources/docs/FileFormats/MolPrint2D_format.rst.txt b/_sources/docs/FileFormats/MolPrint2D_format.rst.txt new file mode 100644 index 00000000..c82cc275 --- /dev/null +++ b/_sources/docs/FileFormats/MolPrint2D_format.rst.txt @@ -0,0 +1,37 @@ +.. _MolPrint2D_format: + +MolPrint2D format (mpd) +======================= + +**An implementation of the circular fingerprint MolPrint2D** + +MolPrint2D is an atom-environment fingerprint developed by Bender et al [bmg2004]_ +which has been used in QSAR studies and for measuring molecular similarity. + +The format of the output is as follows:: + + [Molec_name]\t[atomtype];[layer]-[frequency]-[neighbour_type]; + +Example for the SMILES string ``CC(=O)Cl``:: + + acid chloride 1;1-1-2;2-1-9;2-1-15; 2;1-1-1;1-1-9;1-1-15; + 9;1-1-2;2-1-1;2-1-15; 15;1-1-2;2-1-1;2-1-9; + +.. [bmg2004] Andreas Bender, Hamse Y. Mussa, and Robert C. Glen. **Molecular + Similarity Searching Using Atom Environments, Information-Based + Feature Selection, and a Naive Bayesian Classifier.** + *J. Chem. Inf. Comput. Sci.* **2004**, *44*, 170-178. + [`Link <https://doi.org/10.1021/ci034207y>`_] + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-n *prefix molecule names with name of file* +-c *use XML style separators instead* +-i *use IDX atom types of babel internal* + + diff --git a/_sources/docs/FileFormats/Molden_format.rst.txt b/_sources/docs/FileFormats/Molden_format.rst.txt new file mode 100644 index 00000000..2f0a4084 --- /dev/null +++ b/_sources/docs/FileFormats/Molden_format.rst.txt @@ -0,0 +1,11 @@ +.. _Molden_format: + +Molden format (mold, molden, molf) +================================== +Read Options +~~~~~~~~~~~~ + +-b *no bonds* +-s *no multiple bonds* + + diff --git a/_sources/docs/FileFormats/Molecular_dynamics_and_docking_Formats.rst.txt b/_sources/docs/FileFormats/Molecular_dynamics_and_docking_Formats.rst.txt new file mode 100644 index 00000000..cb93a106 --- /dev/null +++ b/_sources/docs/FileFormats/Molecular_dynamics_and_docking_Formats.rst.txt @@ -0,0 +1,21 @@ +.. _Molecular dynamics and docking: + +Molecular dynamics and docking formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + Amber_Prep_format.rst + AutoDock_PDBQT_format.rst + DL-POLY_CONFIG.rst + DL-POLY_HISTORY.rst + Dock_3.5_Box_format.rst + GRO_format.rst + GROMOS96_format.rst + LPMD_format.rst + MDFF_format.rst + MacroModel_format.rst + SIESTA_format.rst + The_LAMMPS_data_format.rst + Tinker_XYZ_format.rst + XTC_format.rst diff --git a/_sources/docs/FileFormats/Molecular_fingerprint_Formats.rst.txt b/_sources/docs/FileFormats/Molecular_fingerprint_Formats.rst.txt new file mode 100644 index 00000000..38c79159 --- /dev/null +++ b/_sources/docs/FileFormats/Molecular_fingerprint_Formats.rst.txt @@ -0,0 +1,10 @@ +.. _Molecular fingerprint: + +Molecular fingerprint formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + FPS_text_fingerprint_format_(Dalke).rst + Fastsearch_format.rst + Fingerprint_format.rst diff --git a/_sources/docs/FileFormats/Molpro_input_format.rst.txt b/_sources/docs/FileFormats/Molpro_input_format.rst.txt new file mode 100644 index 00000000..febac05e --- /dev/null +++ b/_sources/docs/FileFormats/Molpro_input_format.rst.txt @@ -0,0 +1,6 @@ +.. _Molpro_input_format: + +Molpro input format (mp) +======================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Molpro_output_format.rst.txt b/_sources/docs/FileFormats/Molpro_output_format.rst.txt new file mode 100644 index 00000000..e79cc91c --- /dev/null +++ b/_sources/docs/FileFormats/Molpro_output_format.rst.txt @@ -0,0 +1,13 @@ +.. _Molpro_output_format: + +Molpro output format (mpo) +========================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).rst.txt b/_sources/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).rst.txt new file mode 100644 index 00000000..05ee4204 --- /dev/null +++ b/_sources/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).rst.txt @@ -0,0 +1,90 @@ +.. _Multilevel_Neighborhoods_of_Atoms_(MNA): + +Multilevel Neighborhoods of Atoms (MNA) (mna) +============================================= + +**Iteratively generated 2D descriptors suitable for QSAR** + +Multilevel Neighborhoods of Atoms (MNA) descriptors are +2D molecular fragments suitable for use in QSAR modelling [fpbg99]_. +The format outputs a complete descriptor fingerprint per +molecule. Thus, a 27-atom (including hydrogen) molecule would +result in 27 descriptors, one per line. + +MNA descriptors are generated recursively. Starting at the origin, +each atom is appended to the descriptor immediately followed by a +parenthesized list of its neighbours. This process iterates until the +specified distance from the origin, also known as the depth of the +descriptor. + +Elements are simplified into 32 groups. Each group has a representative +symbol used to stand for any element in that group: + +==== ======== +Type Elements +==== ======== +H H +C C +N N +O O +F F +Si Si +P P +S S +Cl Cl +Ca Ca +As As +Se Se +Br Br +Li Li, Na +B B, Re +Mg Mg, Mn +Sn Sn, Pb +Te Te, Po +I I, At +Os Os, Ir +Sc Sc, Ti, Zr +Fe Fe, Hf, Ta +Co Co, Sb, W +Sr Sr, Ba, Ra +Pd Pd, Pt, Au +Be Be, Zn, Cd, Hg +K K, Rb, Cs, Fr +V V, Cr, Nb, Mo, Tc +Ni Ni, Cu, Ge, Ru, Rh, Ag, Bi +In In, La, Ce, Pr, Nd, Pm, Sm, Eu +Al Al, Ga, Y, Gd, Tb, Dy, Ho, Er, Tm, Yb, Lu, Tl +R R, He, Ne, Ar, Kr, Xe, Rn, Ac, Th, Pa, U, Np, Pu, Am, Cm, Bk, Cf, Es, Fm, Md, No, Lr, Db, Jl +==== ======== + +Acyclic atoms are preceded by a hyphen "-" mark. + +Here's the multi-level neighborhood for the molecule +represented by the SMILES string CC(=O)Cl:: + + # The contents of this file were derived from + # Title = acid chloride + -C(-H(-C)-H(-C)-H(-C)-C(-C-O-Cl)) + -C(-C(-H-H-H-C)-O(-C)-Cl(-C)) + -O(-C(-C-O-Cl)) + -Cl(-C(-C-O-Cl)) + -H(-C(-H-H-H-C)) + -H(-C(-H-H-H-C)) + -H(-C(-H-H-H-C)) + +.. [fpbg99] Dmitrii Filimonov, Vladimir Poroikov, Yulia Borodina, and + Tatyana Gloriozova. **Chemical Similarity Assessment through + Multilevel Neighborhoods of Atoms: Definition and Comparison with + the Other Descriptors.** *J. Chem. Inf. Comput. Sci.* **1999**, *39*, 666-670. + [`Link <https://doi.org/10.1021/ci980335o>`_] + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-L <num> *Levels (default = 2)* + + diff --git a/_sources/docs/FileFormats/NWChem_input_format.rst.txt b/_sources/docs/FileFormats/NWChem_input_format.rst.txt new file mode 100644 index 00000000..2b558b6d --- /dev/null +++ b/_sources/docs/FileFormats/NWChem_input_format.rst.txt @@ -0,0 +1,6 @@ +.. _NWChem_input_format: + +NWChem input format (nw) +======================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/NWChem_output_format.rst.txt b/_sources/docs/FileFormats/NWChem_output_format.rst.txt new file mode 100644 index 00000000..aa511b49 --- /dev/null +++ b/_sources/docs/FileFormats/NWChem_output_format.rst.txt @@ -0,0 +1,18 @@ +.. _NWChem_output_format: + +NWChem output format (nwo) +========================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-f *Overwrite molecule if more than one* + + calculation with different molecules + is present in the output file + (last calculation will be prefered) +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/ORCA_input_format.rst.txt b/_sources/docs/FileFormats/ORCA_input_format.rst.txt new file mode 100644 index 00000000..b138af55 --- /dev/null +++ b/_sources/docs/FileFormats/ORCA_input_format.rst.txt @@ -0,0 +1,13 @@ +.. _ORCA_input_format: + +ORCA input format (orcainp) +=========================== +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* + + diff --git a/_sources/docs/FileFormats/ORCA_output_format.rst.txt b/_sources/docs/FileFormats/ORCA_output_format.rst.txt new file mode 100644 index 00000000..97fc76b4 --- /dev/null +++ b/_sources/docs/FileFormats/ORCA_output_format.rst.txt @@ -0,0 +1,13 @@ +.. _ORCA_output_format: + +ORCA output format (orca) +========================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Obscure_Formats.rst.txt b/_sources/docs/FileFormats/Obscure_Formats.rst.txt new file mode 100644 index 00000000..ebacf733 --- /dev/null +++ b/_sources/docs/FileFormats/Obscure_Formats.rst.txt @@ -0,0 +1,12 @@ +.. _Obscure: + +Obscure formats +~~~~~~~~~~~~~~~ + +.. toctree:: + + Alchemy_format.rst + CCC_format.rst + Feature_format.rst + SMILES_FIX_format.rst + XED_format.rst diff --git a/_sources/docs/FileFormats/OpenDX_cube_format_for_APBS.rst.txt b/_sources/docs/FileFormats/OpenDX_cube_format_for_APBS.rst.txt new file mode 100644 index 00000000..44eeae60 --- /dev/null +++ b/_sources/docs/FileFormats/OpenDX_cube_format_for_APBS.rst.txt @@ -0,0 +1,12 @@ +.. _OpenDX_cube_format_for_APBS: + +OpenDX cube format for APBS (dx) +================================ + +**A volume data format for IBM's Open Source visualization software** + +The OpenDX support is currently designed to read the OpenDX cube +files from APBS. + + + diff --git a/_sources/docs/FileFormats/Open_Babel_molecule_report.rst.txt b/_sources/docs/FileFormats/Open_Babel_molecule_report.rst.txt new file mode 100644 index 00000000..2e59d634 --- /dev/null +++ b/_sources/docs/FileFormats/Open_Babel_molecule_report.rst.txt @@ -0,0 +1,38 @@ +.. _Open_Babel_molecule_report: + +Open Babel molecule report (molreport) +====================================== + +**Generates a summary of the atoms and bonds in a molecule** + +Example output:: + + TITLE: Ethanol.mopout + FORMULA: C2H6O + MASS: 46.0684 + ATOM: 1 C TYPE: C3 HYB: 3 CHARGE: -0.2151 + ATOM: 2 C TYPE: C3 HYB: 3 CHARGE: -0.0192 + ATOM: 3 O TYPE: O3 HYB: 3 CHARGE: -0.3295 + ATOM: 4 H TYPE: HC HYB: 0 CHARGE: 0.0771 + ATOM: 5 H TYPE: HC HYB: 0 CHARGE: 0.0873 + ATOM: 6 H TYPE: HC HYB: 0 CHARGE: 0.0874 + ATOM: 7 H TYPE: HC HYB: 0 CHARGE: 0.0577 + ATOM: 8 H TYPE: HC HYB: 0 CHARGE: 0.0577 + ATOM: 9 H TYPE: HC HYB: 0 CHARGE: 0.1966 + BOND: 0 START: 8 END: 2 ORDER: 1 + BOND: 1 START: 6 END: 1 ORDER: 1 + BOND: 2 START: 1 END: 2 ORDER: 1 + BOND: 3 START: 1 END: 4 ORDER: 1 + BOND: 4 START: 1 END: 5 ORDER: 1 + BOND: 5 START: 2 END: 3 ORDER: 1 + BOND: 6 START: 2 END: 7 ORDER: 1 + BOND: 7 START: 3 END: 9 ORDER: 1 + +.. seealso:: + + :ref:`Open_Babel_report_format` + + + +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Open_Babel_report_format.rst.txt b/_sources/docs/FileFormats/Open_Babel_report_format.rst.txt new file mode 100644 index 00000000..f9539034 --- /dev/null +++ b/_sources/docs/FileFormats/Open_Babel_report_format.rst.txt @@ -0,0 +1,129 @@ +.. _Open_Babel_report_format: + +Open Babel report format (report) +================================= + +**A detailed report on the geometry of a molecule** + +The report format presents a report of various molecular information, +including: + +* Filename / molecule title +* Molecular formula +* Mass +* Exact mass (i.e., for high-resolution mass spectrometry, the mass of the most abundant elements) +* Total charge (if not electrically neutral) +* Total spin (if not singlet) +* Interatomic distances +* Atomic charges +* Bond angles +* Dihedral angles +* Chirality information (including which atoms are chiral) +* Additional comments in the input file + +Example for benzene:: + + FILENAME: benzene.report + FORMULA: C6H6 + MASS: 78.1118 + EXACT MASS: 78.0469502 + INTERATOMIC DISTANCES + + C 1 C 2 C 3 C 4 C 5 C 6 + ------------------------------------------------------------------ + C 1 0.0000 + C 2 1.3958 0.0000 + C 3 2.4176 1.3958 0.0000 + C 4 2.7916 2.4176 1.3958 0.0000 + C 5 2.4176 2.7916 2.4176 1.3958 0.0000 + C 6 1.3958 2.4176 2.7916 2.4176 1.3958 0.0000 + H 7 1.0846 2.1537 3.4003 3.8761 3.4003 2.1537 + H 8 2.1537 1.0846 2.1537 3.4003 3.8761 3.4003 + H 9 3.4003 2.1537 1.0846 2.1537 3.4003 3.8761 + H 10 3.8761 3.4003 2.1537 1.0846 2.1537 3.4003 + H 11 3.4003 3.8761 3.4003 2.1537 1.0846 2.1537 + H 12 2.1537 3.4003 3.8761 3.4003 2.1537 1.0846 + + H 7 H 8 H 9 H 10 H 11 H 12 + ------------------------------------------------------------------ + H 7 0.0000 + H 8 2.4803 0.0000 + H 9 4.2961 2.4804 0.0000 + H 10 4.9607 4.2961 2.4803 0.0000 + H 11 4.2961 4.9607 4.2961 2.4803 0.0000 + H 12 2.4803 4.2961 4.9607 4.2961 2.4804 0.0000 + + ATOMIC CHARGES + C 1 -0.1000000000 + C 2 -0.1000000000 + C 3 -0.1000000000 + C 4 -0.1000000000 + C 5 -0.1000000000 + C 6 -0.1000000000 + H 7 0.1000000000 + H 8 0.1000000000 + H 9 0.1000000000 + H 10 0.1000000000 + H 11 0.1000000000 + H 12 0.1000000000 + + BOND ANGLES + 7 1 2 HC Car Car 120.000 + 1 2 3 Car Car Car 120.000 + 1 2 8 Car Car HC 120.000 + 8 2 3 HC Car Car 120.000 + 2 3 4 Car Car Car 120.000 + 2 3 9 Car Car HC 120.000 + 9 3 4 HC Car Car 120.000 + 3 4 5 Car Car Car 120.000 + 3 4 10 Car Car HC 120.000 + 10 4 5 HC Car Car 120.000 + 4 5 6 Car Car Car 120.000 + 4 5 11 Car Car HC 120.000 + 11 5 6 HC Car Car 120.000 + 5 6 1 Car Car Car 120.000 + 5 6 12 Car Car HC 120.000 + 12 6 1 HC Car Car 120.000 + 6 1 2 Car Car Car 120.000 + 6 1 7 Car Car HC 120.000 + 2 1 7 Car Car HC 120.000 + 3 2 8 Car Car HC 120.000 + 4 3 9 Car Car HC 120.000 + 5 4 10 Car Car HC 120.000 + 6 5 11 Car Car HC 120.000 + 1 6 12 Car Car HC 120.000 + + TORSION ANGLES + 6 1 2 3 0.026 + 6 1 2 8 -179.974 + 7 1 2 3 179.974 + 7 1 2 8 -0.026 + 1 2 3 4 -0.026 + 1 2 3 9 -179.974 + 8 2 3 4 179.974 + 8 2 3 9 0.026 + 2 3 4 5 0.026 + 2 3 4 10 179.974 + 9 3 4 5 179.974 + 9 3 4 10 -0.026 + 3 4 5 6 -0.026 + 3 4 5 11 179.974 + 10 4 5 6 -179.974 + 10 4 5 11 0.026 + 4 5 6 1 0.026 + 4 5 6 12 179.974 + 11 5 6 1 -179.974 + 11 5 6 12 -0.026 + 5 6 1 2 -0.026 + 5 6 1 7 -179.974 + 12 6 1 2 179.974 + 12 6 1 7 0.026 + +.. seealso:: + + :ref:`Open_Babel_molecule_report` + + + +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Other_cheminformatics_Formats.rst.txt b/_sources/docs/FileFormats/Other_cheminformatics_Formats.rst.txt new file mode 100644 index 00000000..15119f27 --- /dev/null +++ b/_sources/docs/FileFormats/Other_cheminformatics_Formats.rst.txt @@ -0,0 +1,14 @@ +.. _Other cheminformatics: + +Other cheminformatics formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.rst + Accelrys_or_MSI_Cerius_II_MSI_format.rst + Accelrys_or_MSI_Quanta_CSR_format.rst + MCDL_format.rst + MSI_BGF_format.rst + PubChem_format.rst + Wiswesser_Line_Notation.rst diff --git a/_sources/docs/FileFormats/Outputs_nothing.rst.txt b/_sources/docs/FileFormats/Outputs_nothing.rst.txt new file mode 100644 index 00000000..b684d8a3 --- /dev/null +++ b/_sources/docs/FileFormats/Outputs_nothing.rst.txt @@ -0,0 +1,6 @@ +.. _Outputs_nothing: + +Outputs nothing (nul) +===================== +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/Overview.rst.txt b/_sources/docs/FileFormats/Overview.rst.txt new file mode 100644 index 00000000..c739b63c --- /dev/null +++ b/_sources/docs/FileFormats/Overview.rst.txt @@ -0,0 +1,66 @@ +.. The contents of this file will be copied to the start of + Overview.rst when you run UpdateFileFormats.py. Don't + edit Overview.rst directly - instead, edit this file. + +.. _file formats: + +Supported File Formats and Options +================================== + +Chemists are a very imaginative group. They keep thinking of new file formats. + +Indeed, these are not just simple differences in how chemical +data is stored, but often completely different views on molecular +representations. For example, some file formats ignore hydrogen atoms +as "implicit," while others do not store bonding information. This is, +in fact, a key reason for Open Babel's existence. + +OpenBabel has support for 146 formats in total. It can read 108 formats and can write 107 formats. These formats are identified by a name (for example, ``ShelX format``) and one or more short codes (in this case, ``ins`` or ``res``). The titles of each section provide this information (for example, :ref:`ShelX_format`). + +The short code is used when using :command:`obabel` or :command:`babel` to convert files from one format to another:: + + obabel -iins myfile.ins -ocml + +converts from ShelX format to Chemical Markup Language (in this case, no output file is specified and the output will be written to screen [stdout]). In fact, if the filename extension is the same as the file format code, then there is no need to specify the code. In other words, the following command will behave identically:: + + babel myfile.ins -ocml + +As well as the general conversion options described elsewhere (see :ref:`babel options`), each format may have its own options for either reading or writing. For example, the ShelX format has two options that affect reading of files, ``s`` and ``b``. To set a file format option: + +* For **Read Options**, precede the option with ``-a`` at the command line +* For **Write Options**, precede the option with ``-x`` + +.. sidebar:: Mnemonic + + To remember the correct switch for read or write options, think of "raw eggs": **r**\ ead is **a**, **w**\ rite is **x** ("eggs"). + +For example, if we wanted to set all bonds to single bonds when reading a ShelX format file, we could specify the ``s`` option:: + + babel -iins myfile.ins -ocml -as + +More than one read (or write) option can be specified (e.g. ``-ax -ay -az``). :command:`babel` (but not :command:`obabel`) also allows you to specify several options together (e.g. as ``-axyz``). + +**Developer Note** + To set the file formats for an ``OBConversion`` object, use ``SetInAndOutFormat(InCode, OutCode)``. To set a Read Option ``s``, use ``SetOptions("s", OBConversion::INOPTIONS)``. + + +.. toctree:: + :maxdepth: 2 + + Common_cheminformatics_Formats.rst + Utility_Formats.rst + Other_cheminformatics_Formats.rst + Computational_chemistry_Formats.rst + Molecular_fingerprint_Formats.rst + Crystallography_Formats.rst + Reaction_Formats.rst + Image_Formats.rst + 2D_drawing_Formats.rst + 3D_viewer_Formats.rst + Kinetics_and_Thermodynamics_Formats.rst + Molecular_dynamics_and_docking_Formats.rst + Volume_data_Formats.rst + JSON_Formats.rst + Miscellaneous_Formats.rst + Biological_data_Formats.rst + Obscure_Formats.rst diff --git a/_sources/docs/FileFormats/PCModel_Format.rst.txt b/_sources/docs/FileFormats/PCModel_Format.rst.txt new file mode 100644 index 00000000..0c664feb --- /dev/null +++ b/_sources/docs/FileFormats/PCModel_Format.rst.txt @@ -0,0 +1,4 @@ +.. _PCModel_Format: + +PCModel Format (pcm) +==================== diff --git a/_sources/docs/FileFormats/PNG_2D_depiction.rst.txt b/_sources/docs/FileFormats/PNG_2D_depiction.rst.txt new file mode 100644 index 00000000..b8d49321 --- /dev/null +++ b/_sources/docs/FileFormats/PNG_2D_depiction.rst.txt @@ -0,0 +1,109 @@ +.. _PNG_2D_depiction: + +PNG 2D depiction (png) +====================== + +**or add/extract chemical structures from a .png file** + + +The PNG format has several uses. The most common is to generate a +:file:`.png` file for one or more molecules. +2D coordinates are generated if not present:: + + obabel mymol.smi -O image.png + +Chemical structure data can be embedded in the :file:`.png` file +(in a ``tEXt`` chunk):: + + obabel mymol.mol -O image.png -xO molfile + +The parameter of the ``-xO`` option specifies the format ("file"can be added). +Note that if you intend to embed a 2D or 3D format, you may have to call +``--gen2d`` or ``--gen3d`` to generate the required coordinates if they are +not present in the input. + +Molecules can also be embedded in an existing PNG file:: + + obabel existing.png mymol1.smi mymol2.mol -O augmented.png -xO mol + +Reading from a PNG file will extract any embedded chemical structure data:: + + obabel augmented.png -O contents.sdf + + + +Read Options +~~~~~~~~~~~~ + +-y <additional chunk ID> *Look also in chunks with specified ID* + + +Write Options +~~~~~~~~~~~~~ + +-p <pixels> *image size, default 300* +-w <pixels> *image width (or from image size)* +-h <pixels> *image height (or from image size)* +-c <num> *number of columns in table* +-r <num> *number of rows in table* +-N <num> *max number objects to be output* +-u *no element-specific atom coloring* + + Use this option to produce a black and white diagram +-U *do not use internally-specified color* + + e.g. atom color read from cml or generated by internal code +-b <color> *background color, default white* + + e.g ``-xb yellow`` or ``-xb #88ff00`` ``-xb none`` is transparent. + Just ``-xb`` is black with white bonds. + The atom symbol colors work with black and white backgrounds, + but may not with other colors. +-B <color> *bond color, default black* + + e.g ``-xB`` yellow or ``-xB #88ff00`` +-C *do not draw terminal C (and attached H) explicitly* + + The default is to draw all hetero atoms and terminal C explicitly, + together with their attched hydrogens. +-a *draw all carbon atoms* + + So propane would display as H3C-CH2-CH3 +-d *do not display molecule name* +-m *do not add margins to the image* + + This only applies if there is a single molecule to depict. + Implies -xd. +-s *use asymmetric double bonds* +-t *use thicker lines* +-A *display aliases, if present* + + This applies to structures which have an alternative, usually + shorter, representation already present. This might have been input + from an A or S superatom entry in an sd or mol file, or can be + generated using the --genalias option. For example:: + + obabel -:"c1cc(C=O)ccc1C(=O)O" -O out.png + --genalias -xA + + would add a aliases COOH and CHO to represent the carboxyl and + aldehyde groups and would display them as such in the svg diagram. + The aliases which are recognized are in data/superatom.txt, which + can be edited. +-O <format ID> *Format of embedded text* + + For example, ``molfile`` or ``smi``. + If there is no parameter, input format is used. +-y <additional chunk ID> *Write to a chunk with specified ID* + + +Comments +~~~~~~~~ +If Cairo was not found when Open Babel was compiled, then +the 2D depiction will be unavailable. However, it will still be +possible to extract and embed chemical data in :file:`.png` files. + +.. seealso:: + + :ref:`PNG_2D_depiction` + diff --git a/_sources/docs/FileFormats/POS_cartesian_coordinates_format.rst.txt b/_sources/docs/FileFormats/POS_cartesian_coordinates_format.rst.txt new file mode 100644 index 00000000..b862252a --- /dev/null +++ b/_sources/docs/FileFormats/POS_cartesian_coordinates_format.rst.txt @@ -0,0 +1,25 @@ +.. _POS_cartesian_coordinates_format: + +POS cartesian coordinates format (pos) +====================================== + +**A generic coordinate format** + +The "POS" file format is a modified version of the "XYZ" general format + +* Line one of the file contains the number of atoms in the file. +* Line two of the file contains a title, comment, or filename. + +Example:: + + + +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/POV-Ray_input_format.rst.txt b/_sources/docs/FileFormats/POV-Ray_input_format.rst.txt new file mode 100644 index 00000000..620caf3a --- /dev/null +++ b/_sources/docs/FileFormats/POV-Ray_input_format.rst.txt @@ -0,0 +1,46 @@ +.. _POV-Ray_input_format: + +POV-Ray input format (pov) +========================== + +**Generate an input file for the open source POV-Ray ray tracer.** + + +The POV-Ray file generated by Open Babel should be considered a starting +point for the user to create a rendered image of a molecule. Although care +is taken to center the camera on the molecule, the user will probably want +to adjust the viewpoint, change the lighting, textures, etc. + +The file :file:`babel_povray3.inc` is required to render the povray file +generated by Open Babel. This file is included in the Open Babel +distribution, and it should be copied into the same directory as the +:file:`.pov` file before rendering. By editing the settings in +:file:`babel_povray3.inc` it is possible to tune the appearance +of the molecule. + +For example, the image below was generated by rendering the output from the +following command after setting the reflection of non-metal atoms to 0 +(line 121 in :file:`babel_povray3.inc`):: + + obabel -:"CC(=O)Cl acid chloride" --gen3d -O chloride.pov -xc -xf -xs -m SPF + +.. image:: ../_static/povray.png + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-c *Add a black and white checkerboard* +-f *Add a mirror sphere* +-m <model-type> *BAS (ball-and-stick), SPF (space-fill) or CST (capped sticks)* + + The default option is ball-and-stick. To choose space-fill, you would use + the following command line:: + + obabel aspirin.mol -O aspirin.pov -xm SPF + +-s *Add a sky (with clouds)* +-t *Use transparent textures* diff --git a/_sources/docs/FileFormats/PQR_format.rst.txt b/_sources/docs/FileFormats/PQR_format.rst.txt new file mode 100644 index 00000000..897c2bb5 --- /dev/null +++ b/_sources/docs/FileFormats/PQR_format.rst.txt @@ -0,0 +1,11 @@ +.. _PQR_format: + +PQR format (pqr) +================ +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/PWscf_format.rst.txt b/_sources/docs/FileFormats/PWscf_format.rst.txt new file mode 100644 index 00000000..e4ab385a --- /dev/null +++ b/_sources/docs/FileFormats/PWscf_format.rst.txt @@ -0,0 +1,12 @@ +.. _PWscf_format: + +PWscf format (pwscf) +==================== + +**The format used by PWscf, part of Quantum Espresso.** + + + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/Painter_format.rst.txt b/_sources/docs/FileFormats/Painter_format.rst.txt new file mode 100644 index 00000000..62b30e56 --- /dev/null +++ b/_sources/docs/FileFormats/Painter_format.rst.txt @@ -0,0 +1,56 @@ +.. _Painter_format: + +Painter format (paint) +====================== + +**Commands used to generate a 2D depiction of a molecule** + + +This is a utility format that is useful if you want to +generate a depiction of a molecule yourself, for example +by drawing on a Graphics2D canvas in Java. The format +writes out a list of drawing commands as shown +in the following example:: + + obabel -:CC(=O)Cl -opaint + + NewCanvas 149.3 140.0 + SetPenColor 0.0 0.0 0.0 1.0 (rgba) + DrawLine 109.3 100.0 to 74.6 80.0 + SetPenColor 0.0 0.0 0.0 1.0 (rgba) + DrawLine 71.6 80.0 to 71.6 53.0 + DrawLine 77.6 80.0 to 77.6 53.0 + SetPenColor 0.0 0.0 0.0 1.0 (rgba) + DrawLine 74.6 80.0 to 51.3 93.5 + SetPenColor 0.4 0.4 0.4 1.0 (rgba) + SetPenColor 0.4 0.4 0.4 1.0 (rgba) + SetPenColor 1.0 0.1 0.1 1.0 (rgba) + SetFontSize 16 + SetFontSize 16 + SetFontSize 16 + DrawText 74.6 40.0 "O" + SetPenColor 0.1 0.9 0.1 1.0 (rgba) + SetFontSize 16 + SetFontSize 16 + SetFontSize 16 + SetFontSize 16 + DrawText 40.0 100.0 "Cl" + +Note that the origin is considered to be in the top left corner. + +The following image was drawn using the information +in this format as described at +http://baoilleach.blogspot.co.uk/2012/04/painting-molecules-your-way-introducing.html: + +.. image:: ../_static/bananamol.png + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-M *Do not include a margin around the depiction* + + diff --git a/_sources/docs/FileFormats/Parallel_Quantum_Solutions_format.rst.txt b/_sources/docs/FileFormats/Parallel_Quantum_Solutions_format.rst.txt new file mode 100644 index 00000000..e9db8cdb --- /dev/null +++ b/_sources/docs/FileFormats/Parallel_Quantum_Solutions_format.rst.txt @@ -0,0 +1,4 @@ +.. _Parallel_Quantum_Solutions_format: + +Parallel Quantum Solutions format (pqs) +======================================= diff --git a/_sources/docs/FileFormats/Point_cloud_on_VDW_surface.rst.txt b/_sources/docs/FileFormats/Point_cloud_on_VDW_surface.rst.txt new file mode 100644 index 00000000..18791f94 --- /dev/null +++ b/_sources/docs/FileFormats/Point_cloud_on_VDW_surface.rst.txt @@ -0,0 +1,31 @@ +.. _Point_cloud_on_VDW_surface: + +Point cloud on VDW surface (pointcloud) +======================================= + +**Generates a point cloud on the VDW surface around the molecule** + + +The surface location is calculated by adding the probe atom radius +(if specified) to the Van der Waal radius of the particular atom multipled +by the specified multiple (1.0 if unspecified).Output is a list of {x,y,z} tuples in Angstrom. Alternatively, if the ``x`` +option is specified, the :ref:`XYZ_cartesian_coordinates_format` is used +instead. + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-r <radii> *create a surface for each VDS radius (default 1.0)* + + A comma-separated list of VDW radius multiples +-d <densities> *for each surface, specify the point density (default 1.0 Angstrom^2)* + + A comma-separated list of densities +-p <radius> *radius of the probe atom in Angstrom (default 0.0)* +-x *output in xyz format* + + diff --git a/_sources/docs/FileFormats/Protein_Data_Bank_format.rst.txt b/_sources/docs/FileFormats/Protein_Data_Bank_format.rst.txt new file mode 100644 index 00000000..d7b565f6 --- /dev/null +++ b/_sources/docs/FileFormats/Protein_Data_Bank_format.rst.txt @@ -0,0 +1,19 @@ +.. _Protein_Data_Bank_format: + +Protein Data Bank format (ent, pdb) +=================================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* +-c *Ignore CONECT records* + + +Write Options +~~~~~~~~~~~~~ + +-n *Do not write duplicate CONECT records to indicate bond order* +-o *Write origin in space group label (CRYST1 section)* + + diff --git a/_sources/docs/FileFormats/PubChem_JSON.rst.txt b/_sources/docs/FileFormats/PubChem_JSON.rst.txt new file mode 100644 index 00000000..d536322b --- /dev/null +++ b/_sources/docs/FileFormats/PubChem_JSON.rst.txt @@ -0,0 +1,25 @@ +.. _PubChem_JSON: + +PubChem JSON (pcjson) +===================== + +**The JSON format returned by the PubChem PUG REST service** + + +The data contained in this format closely resembles PubChem's internal data structure. + + + +Read Options +~~~~~~~~~~~~ + +-s *disable stereo perception and just read stereo information from input* + + +Write Options +~~~~~~~~~~~~~ + +-m *minified output, with no line breaks or indents* +-w *use bond styles from input instead of perceived stereochemistry* + + diff --git a/_sources/docs/FileFormats/PubChem_format.rst.txt b/_sources/docs/FileFormats/PubChem_format.rst.txt new file mode 100644 index 00000000..93877f65 --- /dev/null +++ b/_sources/docs/FileFormats/PubChem_format.rst.txt @@ -0,0 +1,19 @@ +.. _PubChem_format: + +PubChem format (pc) +=================== + +**An XML format containing information on PubChem entries.** + +`PubChem <http://pubchem.ncbi.nlm.nih.gov/>`_ is a freely-available +database of chemical compounds and their properties. + +OpenBabel only extracts the chemical structure information, and the +potentially large amount of other information is currently ignored. +The format seems to handle multiple conformers, but only one is read +(this needs testing). + + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/Q-Chem_input_format.rst.txt b/_sources/docs/FileFormats/Q-Chem_input_format.rst.txt new file mode 100644 index 00000000..ef87e51f --- /dev/null +++ b/_sources/docs/FileFormats/Q-Chem_input_format.rst.txt @@ -0,0 +1,13 @@ +.. _Q-Chem_input_format: + +Q-Chem input format (qcin) +========================== +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-k <keywords> *Use the specified keywords for input* +-f <file> *Read the file specified for input keywords* + + diff --git a/_sources/docs/FileFormats/Q-Chem_output_format.rst.txt b/_sources/docs/FileFormats/Q-Chem_output_format.rst.txt new file mode 100644 index 00000000..2444bd9a --- /dev/null +++ b/_sources/docs/FileFormats/Q-Chem_output_format.rst.txt @@ -0,0 +1,13 @@ +.. _Q-Chem_output_format: + +Q-Chem output format (qcout) +============================ +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/RInChI.rst.txt b/_sources/docs/FileFormats/RInChI.rst.txt new file mode 100644 index 00000000..2285c373 --- /dev/null +++ b/_sources/docs/FileFormats/RInChI.rst.txt @@ -0,0 +1,29 @@ +.. _RInChI: + +RInChI (rinchi) +=============== + +**The Reaction InChI** + +The Reaction InChI (or RInChI) is intended to be a unique +string that describes a reaction. This may be useful for +indexing and searching reaction databases. As with the InChI +it is recommended that you always keep the original reaction +information and use the RInChI in addition. + +The RInChI format is a hierarchical, layered description of a +reaction with different levels based on the Standard InChI +representation of each structural component participating in +the reaction. + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-e *Treat this reaction as an equilibrium reaction* + + Layer 5 of the generated RInChI will have /d= + diff --git a/_sources/docs/FileFormats/Reaction_Formats.rst.txt b/_sources/docs/FileFormats/Reaction_Formats.rst.txt new file mode 100644 index 00000000..a17c3c6c --- /dev/null +++ b/_sources/docs/FileFormats/Reaction_Formats.rst.txt @@ -0,0 +1,11 @@ +.. _Reaction: + +Reaction formats +~~~~~~~~~~~~~~~~ + +.. toctree:: + + CML_Reaction_format.rst + MDL_RXN_format.rst + RInChI.rst + Reaction_SMILES_format.rst diff --git a/_sources/docs/FileFormats/Reaction_SMILES_format.rst.txt b/_sources/docs/FileFormats/Reaction_SMILES_format.rst.txt new file mode 100644 index 00000000..0af2b04f --- /dev/null +++ b/_sources/docs/FileFormats/Reaction_SMILES_format.rst.txt @@ -0,0 +1,10 @@ +.. _Reaction_SMILES_format: + +Reaction SMILES format (rsmi) +============================= +Write Options +~~~~~~~~~~~~~ + +-r *radicals lower case eg ethyl is Cc* + + diff --git a/_sources/docs/FileFormats/Read_and_write_raw_text.rst.txt b/_sources/docs/FileFormats/Read_and_write_raw_text.rst.txt new file mode 100644 index 00000000..11fcfd88 --- /dev/null +++ b/_sources/docs/FileFormats/Read_and_write_raw_text.rst.txt @@ -0,0 +1,7 @@ +.. _Read_and_write_raw_text: + +Read and write raw text (text) +============================== + +**Facilitates the input of boilerplate text with babel commandline** + diff --git a/_sources/docs/FileFormats/SIESTA_format.rst.txt b/_sources/docs/FileFormats/SIESTA_format.rst.txt new file mode 100644 index 00000000..9dc5703b --- /dev/null +++ b/_sources/docs/FileFormats/SIESTA_format.rst.txt @@ -0,0 +1,12 @@ +.. _SIESTA_format: + +SIESTA format (siesta) +====================== + +**The format used by SIESTA (Spanish Initiative for Electronic Simulations with Thousands of Atoms).** + + + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/SMILES_FIX_format.rst.txt b/_sources/docs/FileFormats/SMILES_FIX_format.rst.txt new file mode 100644 index 00000000..a81c2ee1 --- /dev/null +++ b/_sources/docs/FileFormats/SMILES_FIX_format.rst.txt @@ -0,0 +1,6 @@ +.. _SMILES_FIX_format: + +SMILES FIX format (fix) +======================= +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/SMILES_format.rst.txt b/_sources/docs/FileFormats/SMILES_format.rst.txt new file mode 100644 index 00000000..51f83221 --- /dev/null +++ b/_sources/docs/FileFormats/SMILES_format.rst.txt @@ -0,0 +1,84 @@ +.. _SMILES_format: + +SMILES format (smi, smiles) +=========================== + +**A linear text format which can describe the connectivity and chirality of a molecule** + +Open Babel implements the `OpenSMILES specification <http://opensmiles.org>`_. + +It also implements an extension to this specification for radicals. + +Note that the ``l <atomno>`` option, used to specify a "last" atom, is +intended for the generation of SMILES strings to which additional atoms +will be concatenated. If the atom specified has an explicit H within a bracket +(e.g. ``[nH]`` or ``[C@@H]``) the output will have the H removed along with any +associated stereo symbols. + +.. seealso:: + + The :ref:`Canonical_SMILES_format` produces a canonical representation + of the molecule in SMILES format. This is the same as the ``c`` option + below but may be more convenient to use. + + + +Read Options +~~~~~~~~~~~~ + +-a *Preserve aromaticity present in the SMILES* + + This option should only be used if reading aromatic SMILES + generated by the same version of Open Babel. Any other + use will lead to undefined behavior. The advantage of this + option is that it avoids aromaticity perception, thus speeding + up reading SMILES. +-S *Clean stereochemistry* + + By default, stereochemistry is accepted as given. If you wish + to clean up stereochemistry (e.g. by removing tetrahedral + stereochemistry where two of the substituents are identical) + then specifying this option will reperceive stereocenters. + + +Write Options +~~~~~~~~~~~~~ + +-a *Output atomclass like [C:2], if available* +-c *Output in canonical form* +-U *Universal SMILES* +-I *Inchified SMILES* +-h *Output explicit hydrogens as such* +-i *Do not include isotopic or chiral markings* +-k *Create Kekule SMILES instead of aromatic* +-n *No molecule name* +-r *Radicals lower case eg ethyl is Cc* +-t *Molecule name only* +-x *append X/Y coordinates in canonical-SMILES order* +-C *'anti-canonical' random order (mostly for testing)* +-o <ordering> *Output in user-specified order* + + Ordering should be specified like 4-2-1-3 for a 4-atom molecule. + This gives canonical labels 1,2,3,4 to atoms 4,2,1,3 respectively, + so that atom 4 will be visited first and the remaining atoms + visited in a depth-first manner following the lowest canonical labels. +-O *Store the SMILES atom order as a space-separated string* + + The string is stored as an OBPairData wth the name + 'SMILES Atom Order'. +-F <atom numbers> *Generate SMILES for a fragment* + + The atom numbers should be specified like "1 2 4 7". +-R *Do not reuse bond closure symbols* +-f <atomno> *Specify the first atom* + + This atom will be used to begin the SMILES string. +-l <atomno> *Specify the last atom* + + The output will be rearranged so that any additional + SMILES added to the end will be attached to this atom. +-T <max seconds> *Specify the canonicalization timeout* + + Canonicalization can take a while for symmetric molecules and a + timeout is used. The default is 5 seconds. + diff --git a/_sources/docs/FileFormats/SMILES_format_using_Smiley_parser.rst.txt b/_sources/docs/FileFormats/SMILES_format_using_Smiley_parser.rst.txt new file mode 100644 index 00000000..3770959c --- /dev/null +++ b/_sources/docs/FileFormats/SMILES_format_using_Smiley_parser.rst.txt @@ -0,0 +1,106 @@ +.. _SMILES_format_using_Smiley_parser: + +SMILES format using Smiley parser (smy) +======================================= +The Smiley parser presents an alternative to the standard SMILES parser +(:ref:`SMILES_format`). It was written to be strictly compatible with the +OpenSMILES standard (http://opensmiles.org). In comparison, the standard +parser is more forgiving to erroneous input, and also supports some extensions +such as for radicals. + +In addition, the Smiley parser returns detailed error messages when problems +arise parsing or validating the SMILES, whereas the standard parser seldom +describes the specific problem. For a detailed description of the OpenSMILES +semantics, the specification should be consulted. In addition to syntactical +and grammatical correctness, the Smiley parser also verifies some basic +semantics. + +Here are some examples of the errors reported:: + + SyntaxError: Bracket atom expression contains invalid trailing characters. + F.FB(F)F.[NH2+251][C@@H](CP(c1ccccc1)c1ccccc1)C(C)(C)C 31586112 + ^^ + SyntaxError: Unmatched branch opening. + CC(CC + ^^^ + SyntaxError: Unmatched branch closing. + CC)CC + ^^^ + SemanticsError: Unmatched ring bond. + C1CCC + ^ + SemanticsError: Conflicing ring bonds. + C-1CCCCC=1 + +Hydrogen with Hydrogen Count +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Hydrogen atoms can not have a hydrogen count. Hydrogen bound to a hydrogen +atom should be specified by two bracket atom expressions. + +Examples:: + + [HH] invalid + [HH1] invalid (same as [HH] + [HH3] invalid + [HH0] valid (same as [H]) + [H][H] valid + +Unmatched Ring Bond +~~~~~~~~~~~~~~~~~~~ +Report unmatched ring bonds. + +Example:: + + C1CCC + +Conflicting Ring Bonds +~~~~~~~~~~~~~~~~~~~~~~ +When the bond type for ring bonds are explicitly specified at both ends, +these should be the same. + +Example:: + + C-1CCCCCC=1 + +Invalid Ring Bonds +~~~~~~~~~~~~~~~~~~ +There are two types of invalid ring bonds. The first is when two atoms both +have the same two ring bonds. This would mean adding a parallel edge in the +graph which is not allowed. The second type is similar but results in a +self-loop by having a ring bond number twice. + +Examples:: + + C12CCCC12 parallel bond + C11 self-loop bond + +Invalid Chiral Valence +~~~~~~~~~~~~~~~~~~~~~~ +When an atom is specified as being chiral, it should have the correct +number of neighboring atoms (possibly including an implicit H inside the +bracket. + +The valid valences are:: + + Tetrahedral (TH) : 4 + Allene (AL) : 4 (*) + Square Planar (SP) : 4 + Trigonal Bypiramidal (TB) : 5 + Octahedral(OH) : 6 + + (*) The chiral atom has only 2 bonds but the neighbor's neighbors are + counted: NC(Br)=[C@AL1]=C(F)I + +Invalid Chiral Hydrogen Count +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Chiral atoms can only have one hydrogen in their bracket since multiple +hydrogens would make them not chiral. + +Example:: + + C[C@H2]F + + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/STL_3D-printing_format.rst.txt b/_sources/docs/FileFormats/STL_3D-printing_format.rst.txt new file mode 100644 index 00000000..5be49468 --- /dev/null +++ b/_sources/docs/FileFormats/STL_3D-printing_format.rst.txt @@ -0,0 +1,20 @@ +.. _STL_3D-printing_format: + +STL 3D-printing format (stl) +============================ + +**The STereoLithography format developed by 3D Systems** + + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-p <radius> *radius for probe particle (default 0.0 A)* +-s <scale> *scale-factor for VDW radius (default 1.0 A)* +-c *add CPK colours* + + diff --git a/_sources/docs/FileFormats/SVG_2D_depiction.rst.txt b/_sources/docs/FileFormats/SVG_2D_depiction.rst.txt new file mode 100644 index 00000000..191c09e4 --- /dev/null +++ b/_sources/docs/FileFormats/SVG_2D_depiction.rst.txt @@ -0,0 +1,135 @@ +.. _SVG_2D_depiction: + +SVG 2D depiction (svg) +====================== + +**Scalable Vector Graphics 2D rendering of molecular structure.** + + +When called from commandline or GUI or otherwise via Convert(), +single molecules are displayed at a fixed scale, as in normal diagrams, +but multiple molecules are displayed in a table which expands to fill +the containing element, such as a browser window. +When WriteMolecule() is called directly, without going through +WriteChemObject, e.g. via OBConversion::Write(), a fixed size image by +default 200 x 200px containing a single molecule is written. The size +can be specified by the P output option. + +Multiple molecules are displayed in a grid of dimensions specified by +the ``-xr`` and ``-xc`` options (number of rows and columns respectively +and ``--rows``, ``--cols`` with babel). +When displayed in most modern browsers, like Firefox, there is +javascript support for zooming (with the mouse wheel) +and panning (by dragging with the left mouse button). + +If both ``-xr`` and ``-xc`` are specified, they define the maximum number of +molecules that are displayed. +If only one of them is displayed, then the other is calculated so that +ALL the molecules are displayed. +If neither are specified, all the molecules are output in an +approximately square table. + +By default, 2D atom coordinates are generated (using gen2D) unless they +are already present. This can be slow with a large number of molecules. +(3D coordinates are ignored.) Include ``--gen2D`` explicitly if you wish +any existing 2D coordinates to be recalculated. + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-u *no element-specific atom coloring* + + Use this option to produce a black and white diagram +-U *do not use internally-specified color* + + e.g. atom color read from cml or generated by internal code +-b <color> *background color, default white* + + e.g ``-xb yellow`` or ``-xb #88ff00`` ``-xb none`` is transparent. + Just ``-xb`` is black with white bonds. + The atom symbol colors work with black and white backgrounds, + but may not with other colors. +-B <color> *bond color, default black* + + e.g ``-xB`` yellow or ``-xB #88ff00`` +-C *do not draw terminal C (and attached H) explicitly* + + The default is to draw all hetero atoms and terminal C explicitly, + together with their attched hydrogens. +-a *draw all carbon atoms* + + So propane would display as H3C-CH2-CH3 +-d *do not display molecule name* +-s *use asymmetric double bonds* +-t *use thicker lines* +-e *embed molecule as CML* + + OpenBabel can read the resulting svg file as a cml file. +-p <num> *px Scale to bond length(single mol only)* +-P <num> *px Single mol in defined size image* + + The General option --px # is an alternative to the above. +-c <num> *number of columns in table* +-c *ols<num> number of columns in table(not displayed in GUI)* +-r <num> *number of rows in table* +-r *ows<num> number of rows in table(not displayed in GUI)* +-N <num> *max number objects to be output* +-l *draw grid lines* +-h <condition> *highlight mol if condition is met* + + The condition can use descriptors and properties, + See documentation on ``--filter`` option for details. + To highlight in a particular color, follow the condition + by a color. +-i *add index to each atom* + + These indices are those in sd or mol files and correspond to the + order of atoms in a SMILES string. +-j *do not embed javascript* + + Javascript is not usually embedded if there is only one molecule, + but it is if the rows and columns have been specified as 1: ``-xr1 -xc1`` +-x *omit XML declaration (not displayed in GUI)* + + Useful if the output is to be embedded in another xml file. +-X *All atoms are explicitly declared* + + Useful if we don't want any extra hydrogens drawn to fill the valence. +-A *display aliases, if present* + + This applies to structures which have an alternative, usually + shorter, representation already present. This might have been input + from an A or S superatom entry in an sd or mol file, or can be + generated using the --genalias option. For example:: + + obabel -:"c1cc(C=O)ccc1C(=O)O" -O out.svg + --genalias -xA + + would add a aliases COOH and CHO to represent the carboxyl and + aldehyde groups and would display them as such in the svg diagram. + The aliases which are recognized are in data/superatom.txt, which + can be edited. +-S *Ball and stick depiction of molecules* + + Depicts the molecules as balls and sticks instead of the + normal line style. + +Comments +~~~~~~~~ +If the input molecule(s) contain explicit hydrogen, you could consider +improving the appearance of the diagram by adding an option ``-d`` to make +it implicit. Hydrogen on hetero atoms and on explicitly drawn C is +always shown. +For example, if input.smi had 10 molecules:: + + obabel input.smi -O out.svg -xb -xC -xe + +would produce a svg file with a black background, with no explicit +terminal carbon, and with an embedded cml representation of each +molecule. The structures would be in two rows of four and one row +of two. + diff --git a/_sources/docs/FileFormats/ShelX_format.rst.txt b/_sources/docs/FileFormats/ShelX_format.rst.txt new file mode 100644 index 00000000..a9c3656b --- /dev/null +++ b/_sources/docs/FileFormats/ShelX_format.rst.txt @@ -0,0 +1,13 @@ +.. _ShelX_format: + +ShelX format (ins, res) +======================= +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Sybyl_Mol2_format.rst.txt b/_sources/docs/FileFormats/Sybyl_Mol2_format.rst.txt new file mode 100644 index 00000000..5e8307e8 --- /dev/null +++ b/_sources/docs/FileFormats/Sybyl_Mol2_format.rst.txt @@ -0,0 +1,18 @@ +.. _Sybyl_Mol2_format: + +Sybyl Mol2 format (ml2, mol2, sy2) +================================== +Read Options +~~~~~~~~~~~~ + +-c *Read UCSF Dock scores saved in comments preceding molecules* + + +Write Options +~~~~~~~~~~~~~ + +-l *Output ignores residue information (only ligands)* +-c *Write UCSF Dock scores saved in comments preceding molecules* +-u *Do not write formal charge information in UNITY records* + + diff --git a/_sources/docs/FileFormats/The_LAMMPS_data_format.rst.txt b/_sources/docs/FileFormats/The_LAMMPS_data_format.rst.txt new file mode 100644 index 00000000..b5bfef36 --- /dev/null +++ b/_sources/docs/FileFormats/The_LAMMPS_data_format.rst.txt @@ -0,0 +1,22 @@ +.. _The_LAMMPS_data_format: + +The LAMMPS data format (lmpdat) +=============================== +LAMMPS is a classical molecular dynamics code, and an acronym for +Large-scale Atomic/Molecular Massively Parallel Simulator. + + + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-q <water-model> *Set atomic charges for water.* + + There are two options: SPC (default) or SPCE +-d <length> *Set the length of the boundary box around the molecule.* + + The default is to make a cube around the molecule + adding 50% to the most positive and negative + cartesian coordinate. diff --git a/_sources/docs/FileFormats/Thermo_format.rst.txt b/_sources/docs/FileFormats/Thermo_format.rst.txt new file mode 100644 index 00000000..58d8ac5e --- /dev/null +++ b/_sources/docs/FileFormats/Thermo_format.rst.txt @@ -0,0 +1,13 @@ +.. _Thermo_format: + +Thermo format (tdd, therm) +========================== + +**Reads and writes old-style NASA polynomials in original fixed format** + +Read Options +~~~~~~~~~~~~ + +-e *Terminate on "END"* + + diff --git a/_sources/docs/FileFormats/Tinker_XYZ_format.rst.txt b/_sources/docs/FileFormats/Tinker_XYZ_format.rst.txt new file mode 100644 index 00000000..56cffbf6 --- /dev/null +++ b/_sources/docs/FileFormats/Tinker_XYZ_format.rst.txt @@ -0,0 +1,27 @@ +.. _Tinker_XYZ_format: + +Tinker XYZ format (txyz) +======================== + +**The cartesian XYZ file format used by the molecular mechanics package TINKER.** + +By default, the MM2 atom types are used for writing files but MM3 atom types +are provided as an option. Another option provides the ability to take the +atom type from the atom class (e.g. as used in SMILES, or set via the API). + + + +Read Options +~~~~~~~~~~~~ + +-s *Generate single bonds only* + + +Write Options +~~~~~~~~~~~~~ + +-m *Write an input file for the CNDO/INDO program.* +-c *Write atom types using custom atom classes, if available* +-3 *Write atom types for the MM3 forcefield.* + + diff --git a/_sources/docs/FileFormats/Title_format.rst.txt b/_sources/docs/FileFormats/Title_format.rst.txt new file mode 100644 index 00000000..2a360a6d --- /dev/null +++ b/_sources/docs/FileFormats/Title_format.rst.txt @@ -0,0 +1,7 @@ +.. _Title_format: + +Title format (txt) +================== + +**Displays and reads molecule titles** + diff --git a/_sources/docs/FileFormats/TurboMole_Coordinate_format.rst.txt b/_sources/docs/FileFormats/TurboMole_Coordinate_format.rst.txt new file mode 100644 index 00000000..3b14456d --- /dev/null +++ b/_sources/docs/FileFormats/TurboMole_Coordinate_format.rst.txt @@ -0,0 +1,18 @@ +.. _TurboMole_Coordinate_format: + +TurboMole Coordinate format (tmol) +================================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* +-a *Input in Angstroms* + + +Write Options +~~~~~~~~~~~~~ + +-a *Output Angstroms* + + diff --git a/_sources/docs/FileFormats/Turbomole_AOFORCE_output_format.rst.txt b/_sources/docs/FileFormats/Turbomole_AOFORCE_output_format.rst.txt new file mode 100644 index 00000000..9a2f57c2 --- /dev/null +++ b/_sources/docs/FileFormats/Turbomole_AOFORCE_output_format.rst.txt @@ -0,0 +1,9 @@ +.. _Turbomole_AOFORCE_output_format: + +Turbomole AOFORCE output format (aoforce) +========================================= + +**Read vibrational frequencies and intensities** + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/UniChem_XYZ_format.rst.txt b/_sources/docs/FileFormats/UniChem_XYZ_format.rst.txt new file mode 100644 index 00000000..89345b53 --- /dev/null +++ b/_sources/docs/FileFormats/UniChem_XYZ_format.rst.txt @@ -0,0 +1,11 @@ +.. _UniChem_XYZ_format: + +UniChem XYZ format (unixyz) +=========================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Utility_Formats.rst.txt b/_sources/docs/FileFormats/Utility_Formats.rst.txt new file mode 100644 index 00000000..c9d81bdf --- /dev/null +++ b/_sources/docs/FileFormats/Utility_Formats.rst.txt @@ -0,0 +1,20 @@ +.. _Utility: + +Utility formats +~~~~~~~~~~~~~~~ + +.. toctree:: + + Compare_molecules_using_InChI.rst + Confab_report_format.rst + Copy_raw_text.rst + General_XML_format.rst + Generic_Output_file_format.rst + MolPrint2D_format.rst + Multilevel_Neighborhoods_of_Atoms_(MNA).rst + Open_Babel_molecule_report.rst + Open_Babel_report_format.rst + Outputs_nothing.rst + Read_and_write_raw_text.rst + Title_format.rst + XYZ_cartesian_coordinates_format.rst diff --git a/_sources/docs/FileFormats/VASP_format.rst.txt b/_sources/docs/FileFormats/VASP_format.rst.txt new file mode 100644 index 00000000..a1c94929 --- /dev/null +++ b/_sources/docs/FileFormats/VASP_format.rst.txt @@ -0,0 +1,43 @@ +.. _VASP_format: + +VASP format (CONTCAR, POSCAR, VASP) +=================================== + +**Reads in data from POSCAR and CONTCAR to obtain information from VASP calculations.** + + +Due to limitations in Open Babel's file handling, reading in VASP +files can be a bit tricky; the client that is using Open Babel must +use OBConversion::ReadFile() to begin the conversion. This change is +usually trivial. Also, the complete path to the CONTCAR/POSCAR file +must be provided, otherwise the other files needed will not be +found. + +Both VASP 4.x and 5.x POSCAR formats are supported. + +By default, atoms are written out in the order they are present in the input +molecule. To sort by atomic number specify ``-xw``. To specify the sort +order, use the ``-xz`` option. + + + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + +Write Options +~~~~~~~~~~~~~ + +-w *Sort atoms by atomic number* +-z <list of atoms> *Specify the order to write out atoms* + + 'atom1 atom2 ...': atom1 first, atom2 second, etc. The remaining + atoms are written in the default order or (if ``-xw`` is specified) + in order of atomic number. +-4 *Write a POSCAR using the VASP 4.x specification.* + + The default is to use the VASP 5.x specification. + diff --git a/_sources/docs/FileFormats/ViewMol_format.rst.txt b/_sources/docs/FileFormats/ViewMol_format.rst.txt new file mode 100644 index 00000000..f9e4728c --- /dev/null +++ b/_sources/docs/FileFormats/ViewMol_format.rst.txt @@ -0,0 +1,11 @@ +.. _ViewMol_format: + +ViewMol format (vmol) +===================== +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/Volume_data_Formats.rst.txt b/_sources/docs/FileFormats/Volume_data_Formats.rst.txt new file mode 100644 index 00000000..55846221 --- /dev/null +++ b/_sources/docs/FileFormats/Volume_data_Formats.rst.txt @@ -0,0 +1,12 @@ +.. _Volume data: + +Volume data formats +~~~~~~~~~~~~~~~~~~~ + +.. toctree:: + + ADF_TAPE41_format.rst + Gaussian_cube_format.rst + OpenDX_cube_format_for_APBS.rst + Point_cloud_on_VDW_surface.rst + STL_3D-printing_format.rst diff --git a/_sources/docs/FileFormats/Wiswesser_Line_Notation.rst.txt b/_sources/docs/FileFormats/Wiswesser_Line_Notation.rst.txt new file mode 100644 index 00000000..2fcb1cfe --- /dev/null +++ b/_sources/docs/FileFormats/Wiswesser_Line_Notation.rst.txt @@ -0,0 +1,79 @@ +.. _Wiswesser_Line_Notation: + +Wiswesser Line Notation (wln) +============================= + +**A chemical line notation developed by Wiswesser** + + +WLN was invented in 1949, by William J. Wiswesser, as one of the first attempts +to codify chemical structure as a line notation, enabling collation on punched +cards using automatic tabulating machines and early electronic computers. WLN +was a forerunner to the SMILES notation used in modern cheminformatics systems, +which attempted to simplify the complex rules used in WLN encoding (at the +expense of brevity) to come up with an algorithmic system more suitable for +implementation on computers, where historically WLN was typically encoded +by hand by trained registrars. + +WLN encoding makes use of uppercase letters, digits, spaces and punctuation: + +- E Bromine atom +- F Fluorine atom +- G Chlorine atom +- H Hydrogen atom +- I Iodine atom +- Q Hydroxyl group, -OH +- R Benzene ring +- S Sulfur atom +- U Double bond +- UU Triple bond +- V Carbonyl, -C(=O)- +- C Unbranched carbon multiply bonded to non-carbon atom +- K Nitrogen atom bonded to more than three other atoms +- L First symbol of a carbocyclic ring notation +- M Imino or imido -NH-group +- N Nitrogen atom, hydrogen free, bonded to fewer than 4 atoms +- O Oxygen atom, hydrogen-free +- T First symbol of a heterocyclic ring notation +- W Non-linear dioxo group, as in -NO2 or -SO2- +- X Carbon attached to four atoms other than hydrogen +- Y Carbon attached to three atoms other then hydrogen +- Z Amino and amido NH2 group +- <digit> Digits '1' to '9' denote unbranched alkyl chains +- & Sidechain terminator or, after a space, a component separator + +For a more complete description of the grammar see Smith's book [1], which more +accurately reflects the WLN commonly encountered than Wiswesser's book [2]. +Additional WLN dialects include inorganic salts, and methyl contractions. + +Here are some examples of WLN strings along with a corresponding SMILES string: + +- WN3 [O-][N+](=O)CCC +- G1UU1G ClC#CCl +- VH3 O=CCCC +- NCCN N#CC#N +- ZYZUM NC(=N)N +- QY CC(C)O +- OV1 &-NA- CC(=O)[O-].[Na+] +- RM1R c1ccccc1NCc2ccccc2 +- T56 BMJ B D - DT6N CNJ BMR BO1 DN1 & 2N1 & 1 EMV1U1 (osimertinib) + Cn1cc(c2c1cccc2)c3ccnc(n3)Nc4cc(c(cc4OC)N(C)CCN(C)C)NC(=O)C=C + +This reader was contributed by Roger Sayle (NextMove Software). The text of +this description was taken from his Bio-IT World poster [3]. Note that not +all of WLN is currently supported; however, about 76% of the WLN strings +found in PubChem can be interpreted. + +1. Elbert G. Smith, "The Wiswesser Line-Formula Chemical Notation", + McGraw-Hill Book Company publishers, 1968. +2. William J. Wiswesser, "A Line-Formula Chemical Notation", Thomas Crowell + Company publishers, 1954. +3. Roger Sayle, Noel O'Boyle, Greg Landrum, Roman Affentranger. "Open + sourcing a Wiswesser Line Notation (WLN) parser to facilitate electronic + lab notebook (ELN) record transfer using the Pistoia Alliance's UDM + (Unified Data Model) standard." BioIT World. Apr 2019. + https://www.nextmovesoftware.com/posters/Sayle_WisswesserLineNotation_BioIT_201904.pdf + + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/XCrySDen_Structure_Format.rst.txt b/_sources/docs/FileFormats/XCrySDen_Structure_Format.rst.txt new file mode 100644 index 00000000..072a605c --- /dev/null +++ b/_sources/docs/FileFormats/XCrySDen_Structure_Format.rst.txt @@ -0,0 +1,13 @@ +.. _XCrySDen_Structure_Format: + +XCrySDen Structure Format (axsf, xsf) +===================================== +.. note:: This is a read-only format. + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/XED_format.rst.txt b/_sources/docs/FileFormats/XED_format.rst.txt new file mode 100644 index 00000000..cdeae50e --- /dev/null +++ b/_sources/docs/FileFormats/XED_format.rst.txt @@ -0,0 +1,6 @@ +.. _XED_format: + +XED format (xed) +================ +.. note:: This is a write-only format. + diff --git a/_sources/docs/FileFormats/XTC_format.rst.txt b/_sources/docs/FileFormats/XTC_format.rst.txt new file mode 100644 index 00000000..893eeb88 --- /dev/null +++ b/_sources/docs/FileFormats/XTC_format.rst.txt @@ -0,0 +1,9 @@ +.. _XTC_format: + +XTC format (xtc) +================ + +**A portable format for trajectories (gromacs)** + +.. note:: This is a read-only format. + diff --git a/_sources/docs/FileFormats/XYZ_cartesian_coordinates_format.rst.txt b/_sources/docs/FileFormats/XYZ_cartesian_coordinates_format.rst.txt new file mode 100644 index 00000000..6e59aec4 --- /dev/null +++ b/_sources/docs/FileFormats/XYZ_cartesian_coordinates_format.rst.txt @@ -0,0 +1,55 @@ +.. _XYZ_cartesian_coordinates_format: + +XYZ cartesian coordinates format (xyz) +====================================== + +**A generic coordinate format** + +The "XYZ" chemical file format is widely supported by many programs, although no +formal specification has been published. Consequently, Open Babel attempts to be +extremely flexible in parsing XYZ format files. Similar formats include Tinker XYZ +and UniChem XYZ which differ slightly in the format of the files. (Notably, UniChem XYZ +uses the atomic number rather than element symbol for the first column.) + +* Line one of the file contains the number of atoms in the file. +* Line two of the file contains a title, comment, or filename. + +Any remaining lines are parsed for atom information. Lines start with the element +symbol, followed by X, Y, and Z coordinates in angstroms separated by whitespace. + +Multiple molecules / frames can be contained within one file. + +On **output**, the first line written is the number of atoms in the molecule +(warning - the number of digits is limited to three for some programs, +e.g. Maestro). Line two is the title of the molecule or the filename if +no title is defined. Remaining lines define the atoms in the file. The +first column is the atomic symbol (right-aligned on the third character), +followed by the XYZ coordinates in "10.5" format, in angstroms. This means +that all coordinates are printed with five decimal places. + +Example:: + + 12 + benzene example + C 0.00000 1.40272 0.00000 + H 0.00000 2.49029 0.00000 + C -1.21479 0.70136 0.00000 + H -2.15666 1.24515 0.00000 + C -1.21479 -0.70136 0.00000 + H -2.15666 -1.24515 0.00000 + C 0.00000 -1.40272 0.00000 + H 0.00000 -2.49029 0.00000 + C 1.21479 -0.70136 0.00000 + H 2.15666 -1.24515 0.00000 + C 1.21479 0.70136 0.00000 + H 2.15666 1.24515 0.00000 + + + +Read Options +~~~~~~~~~~~~ + +-s *Output single bonds only* +-b *Disable bonding entirely* + + diff --git a/_sources/docs/FileFormats/YASARA.org_YOB_format.rst.txt b/_sources/docs/FileFormats/YASARA.org_YOB_format.rst.txt new file mode 100644 index 00000000..6b9e5174 --- /dev/null +++ b/_sources/docs/FileFormats/YASARA.org_YOB_format.rst.txt @@ -0,0 +1,7 @@ +.. _YASARA.org_YOB_format: + +YASARA.org YOB format (yob) +=========================== + +**The native YASARA format.** + diff --git a/_sources/docs/FileFormats/ZINDO_input_format.rst.txt b/_sources/docs/FileFormats/ZINDO_input_format.rst.txt new file mode 100644 index 00000000..fb96d774 --- /dev/null +++ b/_sources/docs/FileFormats/ZINDO_input_format.rst.txt @@ -0,0 +1,15 @@ +.. _ZINDO_input_format: + +ZINDO input format (zin) +======================== + +**The input format for the semiempirical quantum-mechanics program ZINDO.** + +.. note:: This is a write-only format. + +Write Options +~~~~~~~~~~~~~ + +-c *Write an input file for the CNDO/INDO program.* + + diff --git a/_sources/docs/Fingerprints/fingerprints.rst.txt b/_sources/docs/Fingerprints/fingerprints.rst.txt new file mode 100644 index 00000000..1e2ce608 --- /dev/null +++ b/_sources/docs/Fingerprints/fingerprints.rst.txt @@ -0,0 +1,214 @@ +.. _fingerprint_format_details: + +Fingerprint format +================== + +The :ref:`Fingerprint_format` is a utility file format that provides access to a number of substructure-based fingerprints, and that enables the user to carry out similarity and substructure searching. You can see the available fingerprints using the following command:: + + $ babel -L fingerprints + FP2 Indexes linear fragments up to 7 atoms. + FP3 SMARTS patterns specified in the file patterns.txt + FP4 SMARTS patterns specified in the file SMARTS_InteLigand.txt + MACCS SMARTS patterns specified in the file MACCS.txt + +At present there are four types of fingerprints: + +* **FP2**, a path-based fingerprint which indexes small molecule fragments based on linear segments of up to 7 atoms (somewhat similar to the Daylight fingerprints): + + A molecule structure is analysed to identify linear fragments of length from 1-7 atoms. Single atom fragments of C, N, and O are ignored. A fragment is terminated when the atoms form a ring. + + For each of these fragments the atoms, bonding and whether they constitute a complete ring is recorded and saved in a set so that there is only one of each fragment type. Chemically identical versions, (i.e. ones with the atoms listed in reverse order and rings listed starting at different atoms) are identified and only a single canonical fragment is retained. + + Each remaining fragment is assigned a hash number from 0 to 1020 which is used to set a bit in a 1024 bit vector + +* **FP3** uses a series of SMARTS queries stored in :file:`patterns.txt` +* **FP4** uses a series of SMARTS queries stored in :file:`SMARTS_InteLigand.txt` +* **MACCS** uses the SMARTS patterns in :file:`MACCS.txt` + +.. note:: + + Note that you can tailor the latter three fingerprints to your own needs by adding your own SMARTS queries to these files. On UNIX and Mac systems, these files are frequently found in :file:`/usr/local/share/openbabel` under a directory for each version of Open Babel. + +.. seealso:: + + The sections on the :ref:`fingerprint <Fingerprint_format>` and :ref:`fastsearch <Fastsearch_format>` formats contain additional detail. + +Similarity searching +-------------------- + +Small datasets +~~~~~~~~~~~~~~ + +For relatively small datasets (<10,000's) it is possible to do similarity searches without the need to build a similarity index, however larger datasets (up to a few million) can be searched rapidly once a fastsearch index has been built. + +On small datasets these fingerprints can be used in a variety of ways. The following command gives you the Tanimoto coefficient between a SMILES string in :file:`mysmiles.smi` and all the molecules in :file:`mymols.sdf`:: + + babel mysmiles.smi mymols.sdf -ofpt + + MOL_00000067 Tanimoto from first mol = 0.0888889 + MOL_00000083 Tanimoto from first mol = 0.0869565 + MOL_00000105 Tanimoto from first mol = 0.0888889 + MOL_00000296 Tanimoto from first mol = 0.0714286 + MOL_00000320 Tanimoto from first mol = 0.0888889 + MOL_00000328 Tanimoto from first mol = 0.0851064 + MOL_00000338 Tanimoto from first mol = 0.0869565 + MOL_00000354 Tanimoto from first mol = 0.0888889 + MOL_00000378 Tanimoto from first mol = 0.0816327 + MOL_00000391 Tanimoto from first mol = 0.0816327 + 11 molecules converted + +The default fingerprint used is the FP2 fingerprint. You change the fingerprint using the ``f`` output option as follows:: + + babel mymols.sdf -ofpt -xfFP3 + +The ``-s`` option of :command:`babel` is used to filter by SMARTS string. If you wanted to know the similarity only to the substituted bromobenzenes in :file:`mymols.sdf` then you might combine commands like this (note: if the query molecule does not match the SMARTS string this will not work as expected, as the first molecule in the database that matches the SMARTS string will instead be used as the query):: + + babel mysmiles.smi mymols.sdf -ofpt -s c1ccccc1Br + + MOL_00000067 Tanimoto from first mol = 0.0888889 + MOL_00000083 Tanimoto from first mol = 0.0869565 + MOL_00000105 Tanimoto from first mol = 0.0888889 + +If you don't specify a query file, :command:`babel` will just use the first molecule in the database as the query:: + + babel mymols.sdf -ofpt + + MOL_00000067 + MOL_00000083 Tanimoto from MOL_00000067 = 0.810811 + MOL_00000105 Tanimoto from MOL_00000067 = 0.833333 + MOL_00000296 Tanimoto from MOL_00000067 = 0.425926 + MOL_00000320 Tanimoto from MOL_00000067 = 0.534884 + MOL_00000328 Tanimoto from MOL_00000067 = 0.511111 + MOL_00000338 Tanimoto from MOL_00000067 = 0.522727 + MOL_00000354 Tanimoto from MOL_00000067 = 0.534884 + MOL_00000378 Tanimoto from MOL_00000067 = 0.489362 + MOL_00000391 Tanimoto from MOL_00000067 = 0.489362 + 10 molecules converted + +Large datasets +~~~~~~~~~~~~~~ + +On larger datasets it is necessary to first build a fastsearch index. This is a new file that stores a database of fingerprints for the files indexed. You will still need to keep both the new .fs fastsearch index and the original files. However, the new index will allow significantly faster searching and similarity comparisons. The index is created with the following command:: + + babel mymols.sdf -ofs + +This builds :file:`mymols.fs` with the default fingerprint (unfolded). The following command uses the index to find the 5 most similar molecules to the molecule in :file:`query.mol`:: + + babel mymols.fs results.sdf -squery.mol -at5 + +or to get the matches with Tanimoto>0.6 to 1,2-dicyanobenzene:: + + babel mymols.fs results.sdf -sN#Cc1ccccc1C#N -at0.6 + +Substructure searching +---------------------- + +Small datasets +~~~~~~~~~~~~~~ + +This command will find all molecules containing 1,2-dicyanobenzene and return the results as SMILES strings:: + + babel mymols.sdf -sN#Cc1ccccc1C#N results.smi + +If all you want output are the molecule names then adding ``-xt`` will return just the molecule names:: + + babel mymols.sdf -sN#Cc1ccccc1C#N results.smi -xt + +The parameter of the ``-s`` option in these examples is actually SMARTS, which allows a richer matching specification, if required. It does mean that the aromaticity of atoms and bonds is significant; use ``[#6]`` rather than ``C`` to match both aliphatic and aromatic carbon. + +The ``-s`` option's parameter can also be a file name with an extension. The file must contain a molecule, which means only substructure matching is possible (rather than full SMARTS). The matching is also slightly more relaxed with respect to aromaticity. + +Large datasets +~~~~~~~~~~~~~~ + +First of all, you need to create a fastsearch index (see above). The index is created with the following command:: + + babel mymols.sdf -ofs + +Substructure searching is as for small datasets, except that the fastsearch index is used instead of the original file. This command will find all molecules containing 1,2-dicyanobenzene and return the results as SMILES strings:: + + babel mymols.fs -ifs -sN#Cc1ccccc1C#N results.smi + +If all you want output are the molecule names then adding ``-xt`` will return just the molecule names:: + + babel mymols.fs -ifs -sN#Cc1ccccc1C#N results.smi -xt + +Case study: Search ChEMBLdb +--------------------------- + +This case study uses a combination of the techniques described above for similarity searching using large databases and using small databases. Note that we are using the default fingerprint for all of these analyses. The default fingerprint is FP2, a path-based fingerprint (somewhat similar to the Daylight fingerprints). + +(1) Download Version 2 of ChEMBLdb from ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/. + +(2) After unzipping it, make a fastsearch index (this took 18 minutes on my machine for the 500K+ molecules):: + + babel chembl_02.sdf -ofs + +(3) Let's use the first molecule in the sdf file as a query. Using Notepad (or on Linux, ``head -79 chembl_02.sdf``) extract the first molecule and save it as :file:`first.sdf`. Note that the molecules in the ChEMBL sdf do not have titles; instead, their IDs are stored in the "chebi_id" property field. + +(4) This first molecule is 100183. Check its `ChEMBL page`_. It's pretty weird, but is there anything similar in ChEMBLdb? Let's find the 5 most similar molecules:: + + babel chembl_02.fs mostsim.sdf -s first.sdf -at5 + +.. _ChEMBL page: http://www.ebi.ac.uk/chembldb/index.php/compound/inspect/100183 + +(5) The results are stored in :file:`mostsim.sdf`, but how similar are these molecules to the query?:: + + babel first.sdf mostsim.sdf -ofpt + > + > Tanimoto from first mol = 1 + Possible superstructure of first mol + > Tanimoto from first mol = 0.986301 + > Tanimoto from first mol = 0.924051 + Possible superstructure of first mol + > Tanimoto from first mol = 0.869048 + Possible superstructure of first mol + > Tanimoto from first mol = 0.857143 + 6 molecules converted + 76 audit log messages + +(6) That's all very well, but it would be nice to show the ChEBI IDs. Let's set the title field of :file:`mostsim.sdf` to the content of the "chebi_id" property field, and repeat step 5:: + + babel mostsim.sdf mostsim_withtitle.sdf --append "chebi_id" + babel first.sdf mostsim_withtitle.sdf -ofpt + > + >100183 Tanimoto from first mol = 1 + Possible superstructure of first mol + >124893 Tanimoto from first mol = 0.986301 + >206983 Tanimoto from first mol = 0.924051 + Possible superstructure of first mol + >207022 Tanimoto from first mol = 0.869048 + Possible superstructure of first mol + >607087 Tanimoto from first mol = 0.857143 + 6 molecules converted + 76 audit log messages + +(7) Here are the ChEMBL pages for these molecules: 100183_, 124893_, 206983_, 207022_, 607087_. I think it is fair to say that they are pretty similar. In particular, the output states that 206983 and 207022 are possible superstructures of the query molecule, and that is indeed true. + +.. _100183: http://www.ebi.ac.uk/chembldb/index.php/compound/inspect/100183 +.. _124893: http://www.ebi.ac.uk/chembldb/index.php/compound/inspect/124893 +.. _206983: http://www.ebi.ac.uk/chembldb/index.php/compound/inspect/206983 +.. _207022: http://www.ebi.ac.uk/chembldb/index.php/compound/inspect/207022 +.. _607087: http://www.ebi.ac.uk/chembldb/index.php/compound/inspect/607087 + +(8) How many of the molecules in the dataset are superstructures of the molecule in :file:`first.sdf`? To do this and to visualize the large numbers of molecules produced, we can output to SVG format (see :ref:`SVG_2D_depiction`):: + + obabel chembl_02.fs -O out.svg -s first.sdf + + Note that :program:`obabel` has been used here because of its more flexible option handling. + + This command does a substructure search and puts the 47 matching structures in the file :file:`out.svg`. This can be viewed in a browser like Firefox, Opera or Chrome (but not Internet Explorer). The display will give an overall impression of the set of molecules but details can be seen by zooming in with the mousewheel and panning by dragging with a mouse button depressed. + +(9) The substructure that is being matched can be highlighted in the output molecules by adding another parameter to the ``-s`` option. Just for variety, the display is also changed to a black background, 'uncolored' (no element-specific coloring), and terminal carbon not shown explicitly. (Just refresh your browser to see the modified display.) :: + + obabel chembl_02.fs -O out.svg -s first.sdf green -xb -xu -xC + + This highlighting option also works when the ``-s`` option is used without fastsearch on small datasets. + +(10) The substructure search here has two stages. The indexed fingerprint search quickly produces 62 matches from the 500K+ molecules in the dataset. Each of these is then checked by a slow detailed isomorphism check. There are 15 false positives from the fingerprint stage. These are of no significance, but you can see them using:: + + obabel chembl_02.fs -O out.svg -s ~first.sdf + + The fingerprint search is unaffected but the selection in the second stage is inverted. + + diff --git a/_sources/docs/Fingerprints/intro.rst.txt b/_sources/docs/Fingerprints/intro.rst.txt new file mode 100644 index 00000000..4a3043b1 --- /dev/null +++ b/_sources/docs/Fingerprints/intro.rst.txt @@ -0,0 +1,21 @@ +.. _fingerprints: + +Molecular fingerprints and similarity searching +=============================================== + +Molecular fingerprints are a way of encoding the structure of a molecule. The most common type of fingerprint is a series of binary digits (bits) that represent the presence or absence of particular substructures in the molecule. Comparing fingerprints allows you to determine the similarity between two molecules, to find matches to a query substructure, etc. + +Open Babel provides several fingerprints of different types: + +* :ref:`fingerprint_format_details`: the path-based fingerprint FP2; substructure based fingerprints FP3, FP4 and MACCS; user-defined substructures +* :ref:`Multilevel_Neighborhoods_of_Atoms_(MNA)`: a circular fingerprint +* :ref:`MolPrint2D_format`: a circular fingerprint +* :ref:`spectrophores`: a fingerprint that encodes the 3D structure of a molecule + +The next two sections describe the *Fingerprint format* and *Spectrophores* in depth. For the others, see the relevant sections listed above. + +.. toctree:: + + fingerprints.rst + spectrophore.rst + diff --git a/_sources/docs/Fingerprints/spectrophore.rst.txt b/_sources/docs/Fingerprints/spectrophore.rst.txt new file mode 100644 index 00000000..12180fab --- /dev/null +++ b/_sources/docs/Fingerprints/spectrophore.rst.txt @@ -0,0 +1,338 @@ +.. include:: <xhtml1-symbol.txt> +.. include:: <isolat1.txt> + +.. _spectrophores: + +Spectrophores\ |trade| +====================== + +.. |specs_tm| replace:: Spectrophores\ |trade| +.. |specs| replace:: Spectrophores +.. |spec_tm| replace:: Spectrophore\ |trade| +.. |spec| replace:: Spectrophore + +Introduction +------------ + +|specs|\ [#trademark]_ are one-dimensional descriptors generated from the property +fields surrounding the molecules. This technology allows the accurate description +of molecules in terms of their surface properties or fields. Comparison of +molecules' property fields provides a robust structure-independent method of +aligning actives from different chemical classes. When applied to molecules such +as ligands and drugs, |specs| can be used as powerful molecular +descriptors in the fields of chemoinformatics, virtual screening, and QSAR +modeling. + + +.. sidebar:: Commercial Support for Spectrophores + + .. image:: ../_static/silicos.png + :align: center + :scale: 50 + + Commercial support for Spectrophores is available from Silicos NV, the + developers of the Spectrophore technology. + + Silicos is a fee-for-service company empowering open source chemo-informatics virtual screening technologies for the discovery of novel lead compounds and database characterization. Silicos fully endorses the concept of open innovation and open source software development, and provides its clients with a wide variety of computational chemistry-based lead discovery services, including Open Babel support, training and code development. Please visit Silicos_ for more details. + +.. _Silicos: http://www.silicos.com + +The computation of |specs| is independent of the position and +orientation of the molecule and this enables easy and fast comparison of +|specs| between different molecules. Molecules having similar +three-dimensional properties and shapes always yield similar |specs|. +A |spec| is calculated by surrounding the three-dimensional +conformation of the molecule by a three-dimensional arrangement of points, +followed by calculating the interaction between each of the atom properties and +the surrounding the points. The three-dimensional arrangement of the points +surrounding the molecule can be regarded as an 'artificial' cage or receptor, +and the interaction calculated between the molecule and the cage can be regarded +as an artificial representation of an affinity value between molecule and cage. +Because the calculated interaction is dependent on the relative orientation of +the molecule within the cage, the molecule is rotated in discrete angles and the +most favorable interaction value is kept as final result. The angular stepsize +at which the molecule is rotated along its three axis can be specified by the +user and influences the accuracy of the method. + + + +The Spectrophore code was developed by Silicos NV, and donated to the OpenBabel project in July 2010 (see sidebar for information on commercial support). Spectrophores can be generated either using the command-line application :command:`obspectrophore` (see next section) or through the API (``OBSpectrophore``, as described in the :obapi:`API documentation <OBSpectrophore>`). + +obspectrophore +-------------- + +.. rubric:: Usage + +``obspectrophore -i <input file> [options]`` + +.. rubric:: Parameter details + +-i <input file> *Specify the input file* + + Spectrophores will be calculated for each molecule in the input file. + The filetype is automatically detected from the file extension. + +-n <type> *The type of normalization that should be performed* + + Valid values are (without quotes): + + - No (default) + - ZeroMean + - UnitStd + - ZeroMeanAndUnitStd + +-a <accuracy> *The required accuracy expressed as the angular stepsize* + + Only the following discrete values are allowed: 1, 2, 5, 10, 15, 20 (default), 30, 36, 45, 60 + +-s <type> *The kind of cages that should be used* + + The cage type is specified in terms of + the underlying pointgroup: P1 or P-1. Valid values are (without quotes): + + - No (default) + - Unique + - Mirror + - All + +-r <resolution> *The required resolution expressed as a real positive number* + + The default value is 3.0 Angstrom. Negative values or a value of + 0 generates an error message. + +-h *Displays help* + + +Implementation +-------------- + +Atomic properties +~~~~~~~~~~~~~~~~~ + +The calculation of a |spec_tm| starts by calculating the atomic +contributions of each property from which one wants to calculate a +|spec|. In the current implementation, four atomic properties are +converted into a |spec|; these four properties include the atomic +partial charges, the atomic lipophilicities, the atomic shape deviations and the +atomic electrophilicities. The atomic partial charges and atomic electrophilicity +properties are calculated using the electronegativity equalisation method (EEM) +as described by Bultinck and coworkers [bll2002]_ [blc2003]_. +Atomic lipophilic potential +parameters are calculated using a rule-based method. Finally, the atomic shape +deviation is generated by calculating, for each atom, the atom's deviation from +the average molecular radius. This is done in a four step process: + +- The molecular center of geometry (COG) is calculated +- The distances between each atom and the molecular COG are calculated +- The average molecular radius is calculated by averaging all the atomic + distances +- The distances between each atom and the COG are then divided by the average + molecular radius and centered on zero + + + + +Interaction between the atoms and cage points +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Following the calculation of all required atomic properties, the next step in +the calculation of a |spec| consists of determining the total +interaction value V(c,p) between each of the atomic contributions of +property p with a set of interaction points on an artificial cage c +surrounding the molecular conformation. + +.. figure:: ../_static/spectrophore_cage.png + :align: center + + **Schematic representation of a molecule surrounded by the artifical cage** + +For this purpose, each of these +interaction points i on cage c is assigned a value P(c,i) +which is either +1 or -1, with the constraint that the sum of all interaction +points on a particular cage should be zero. In a typical |spec| +calculation, a cage is represented as a rectangular box encompassing the +molecular conformation in all three dimensions, with the centers of the box +edges being the interaction points. Such a configuration gives twelve +interaction points per cage, and, in the case of a non-stereospecific +distribution of the interaction points, leads to 12 different cages. Although +there are no particular requirements as to the dimensions of the rectangular +cage, the distance between the interaction points and the geometrical extremes +of the molecule should be such that a meaningful interaction value between each +cage point and the molecular entity can be calculated. In this respect, the +default dimensions of the cage are constantly adjusted to enclose the molecule +at a minimum distance of 3 A along all dimensions. This cage size can be +modified by the user and influences the resolution of the |spec|. + +The total interaction value V(c,p) between the atomic contribution values +A(j,p) of property p for a given molecular conformation and the +cage interaction values P(c,i) for a given cage c is calculated +according a standard interaction energy equation. It takes into account the +Euclidean distance between each atom and each cage point. This total interaction +V(c,p) for a given property p and cage c for a given +molecular conformation is minimized by sampling the molecular orientation along +the three axis in angular steps and the calculation of the interaction value for +each orientation within the cage. + +The final total interaction V(c,p) for +a given cage c and property p corresponds to the lowest +interaction value obtained this way, and corresponds to the c'th value in +the one-dimensional |spec| vector calculated for molecular property +p. As a result, a |spec| is organized as a vector of minimized +interaction values V, each of these organized in order of cages and +property values. Since for a typical |spec| implementation twelve +different cages are used, the total length of a |spec| vector equals +to 12 times the number of properties. Since four different properties are used +in the current implementation (electrostatic, lipophilic, electrophilic +potentials, and an additional shape index as described before), this leads to a +total |spec| length of 48 real values per molecular conformation. + +Since |spec| descriptors are dependent on the actual +three-dimensional conformation of the molecule, a typical analysis includes the +calculation of |specs| from a reasonable set of different +conformations. It is then up to the user to decide on the most optimal strategy +for processing the different |spec| vectors. In a typical virtual +screening application, calculating the average |spec| vector from all +conformations of a single molecule may be a good strategy; other applications +have benefit from calculating a weighted average or the minimal values. +For each molecule in the input file, a |spec| is calculated and +printed to standard output as a vector of 48 numbers (in the case of a +non-stereospecific |spec|. The 48 doubles are organised into 4 sets +of 12 doubles each: + +- numbers 01-11: |spec| values calculated from the atomic partial charges; +- numbers 13-24: |spec| values calculated from the atomic lipophilicity properties; +- numbers 25-36: |spec| values calculated from the atomic shape deviations; +- numbers 37-48: |spec| values calculated from the atomic electrophilicity properties; + +Choice of Parameters +-------------------- + +Accuracy +~~~~~~~~ + +As already mentioned, the total interaction between cage and molecule for a +given property is minimized by sampling the molecular orientation in angular +steps of a certain magnitude. As a typical angular step size, 20 degrees was found to +be the best compromise between accuracy and computer speed. Larger steps sizes +are faster to calculate but have the risk of missing the global interaction +energy minimum, while smaller angular steps sizes do sample the rotational space +more thoroughly but at a significant computational cost. The accuracy can be +specified by the user using the ``-a`` option. + +Resolution +~~~~~~~~~~ + +|specs| capture information about the property fields surrounding the +molecule, and the amount of detail that needs to be captured can be regulated by +the user. This is done by altering the minimal distance between the molecule and +the surrounding cage. The resolution can be specified by the user with the +``-r`` option. The default distance along all dimensions is 3.0 Angstrom. +The larger the distance, the lower the resolution. + +With a higher resolution, +more details of the property fields surrounding the molecule are contained by +the |spec|. On the other hand, low resolution settings may lead to a more +general representation of the property fields, with little or no emphasis on +small local variations within the fields. Using a low resolution can be the +method of choice during the initial virtual screening experiments in order to get +an initial, but not so discriminative, first selection. This initial selection +can then further be refined during subsequent virtual screening steps using a +higher resolution. In this setting, small local differences in the fields between +pairs of molecules will be picked up much more easily. + +The absolute values of the individual |spec| data points are dependent +on the used resolution. Low resolution values lead to small values of the +calculated individual |spec| data points, while high resolutions will +lead to larger data values. It is therefore only meaningful to compare only +|specs| that have been generated using the same resolution settings or +after some kind of normalization is performed. +Computation time is not influenced by the specified resolution and hence +is identical for all different resolution settings. + +Stereospecificity +~~~~~~~~~~~~~~~~~ + +Some of the cages that are used to calculated |specs| have a +stereospecific distribution of the interaction points. The resulting +interaction values resulting from these cages are therefore sensitive to the +enantiomeric configuration of the molecule within the cage. The fact that both +stereoselective as well as stereo non-selective cages can be used makes it +possible to include or exclude stereospecificity in the virtual screening +search. Depending on the desired output, the stereospecificity of +|specs| can be specified by the user using the ``-s`` option: + +- No stereospecificity (default): + |specs| are generated using cages + that are not stereospecific. For most applications, these |specs| + will suffice. + +- Unique stereospecificity: + |specs| are generated using unique + stereospecific cages. + +- Mirror stereospecificity: + Mirror stereospecific |specs| are + |specs| resulting from the mirror enantiomeric form of the input + molecules. + +The differences between the corresponding data points of unique and mirror +stereospecific |specs| are very small and require very long +calculation times to obtain a sufficiently high quality level. This increased +quality level is triggered by the accuracy setting and will result in +calculation times being increased by at least a factor of 100. As a consequence, it +is recommended to apply this increased accuracy only in combination with a +limited number of molecules, and when the small differences between the +stereospecific |specs| are really critical. However, for the vast +majority of virtual screening applications, this increased accuracy is not +required as long as it is not the intention to draw conclusions about +differences in the underlying molecular stereoselectivity. Non-stereospecific +|specs| will therefore suffice for most applications. + +Normalisation +~~~~~~~~~~~~~ + +It may sometimes be desired to focus on the relative differences between the +|spec| data points rather than focussing on the absolute differences. +In these cases, normalization of |specs| may be required. The current +implementation offers with the ``-n`` option the possibility to normalize in four +different ways: + +- No normalization (default) +- Normalization towards zero mean +- Normalization towards standard deviation +- Normalization towards zero mean and unit standard deviation + +In all these cases, normalization is performed on a 'per-property' basis, which +means that the data points belonging to the same property set are treated as a +single set and that normalization is only performed on the data points within +each of these sets and not across all data points. + +Normalization may be important when comparing the |specs| of charged +molecules with those of neutral molecules. For molecules carrying a global +positive charge, the resulting |spec| data points of the charge and +electrophilicity properties will both be shifted in absolute value compared to +the corresponding data points of the respective neutral species. Normalization +of the |specs| removes the original magnitude differences for the data +points corresponding to the charge and electrophilicity properties of charged +and neutral species. Therefore, if the emphasis of the virtual screening +consists of the identification of molecules with similar property fields without +taking into account differences in absolute charge, then |specs| +should be normalized towards zero mean. However, if absolute charge differences +should be taken into account to differentiate between molecules, unnormalized +|specs| are recommended. + +.. [bll2002] P. Bultinck, W. Langenaeker, P. Lahorte, F. De Proft, P. + Geerlings, C. Van Alsenoy, and J. P. Tollenaere. + **The Electronegativity Equalization Method II: Applicability of Different Atomic Charge Schemes.** + *J. Phys. Chem. A* **2002**, *106*, 7895-7901. + [`Link <https://doi.org/10.1021/jp020547v>`__] + +.. [blc2003] Patrick Bultinck, Wilfried Langenaeker, Ramon Carb\ |oacute|\ -Dorca, and Jan P. Tollenaere. + **Fast Calculation of Quantum Chemical Molecular Descriptors from the Electronegativity Equalization Method.** + *J. Chem. Inf. Comput. Sci.* **2003**, *43*, 422-428. + [`Link <https://doi.org/10.1021/ci0255883>`__] + +.. rubric:: Footnotes + +.. [#trademark] Spectrophore is a registered trademark of Silicos NV. + diff --git a/_sources/docs/Forcefields/Overview.rst.txt b/_sources/docs/Forcefields/Overview.rst.txt new file mode 100644 index 00000000..2dab8adc --- /dev/null +++ b/_sources/docs/Forcefields/Overview.rst.txt @@ -0,0 +1,34 @@ +Molecular Mechanics and Force Fields +======================= + +Used by a number of features, such as 3D coordinate generation, +conformer searching, etc., Open Babel provides support for a variety +of all-atom molecular mechanics force fields. The key idea is to use +classical mechanics to rapidly simulate molecular systems. + +Each force field method is parameterized for a set of possible +molecules (e.g., proteins, organic molecules, etc.), building in +assumptions about how various aspects of the molecules contribute to +the overall potential energy. + +The total potential energy of the system is usually given as a sum of +multiple components, including some or all of (but not limited to): + * Bond stretching + * Angle bending + * Dihedral torsions + * Out-of-plane bending + * Van der Waals repulsion + * Atomic partial charges (electrostatic) + +Open Babel supports several force field methods. In general, we +recommend use of either the :ref:`Generalized_Amber_Force_Field` or +:ref:`MMFF94_Force_Field` for organic molecules, and the +:ref:`Universal_Force_Field` for other types of molecules. + + +.. toctree:: + + gaff.rst + ghemical.rst + mmff94.rst + uff.rst diff --git a/_sources/docs/Forcefields/gaff.rst.txt b/_sources/docs/Forcefields/gaff.rst.txt new file mode 100644 index 00000000..328d0df3 --- /dev/null +++ b/_sources/docs/Forcefields/gaff.rst.txt @@ -0,0 +1,30 @@ +.. _Generalized_Amber_Force_Field: + +Generalized Amber Force Field (gaff) +============================= + +The `AMBER force field <http://en.wikipedia.org/wiki/AMBER>`_ (or more +accurately, family of force fields used with the `AMBER software +<http://ambermd.org/>`_ are designed mainly for biomolecules (i.e., +proteins, DNA, RNA, carbohydrates, etc.). + +A general set of parameters for small organic molecules to allow +simulations of drugs and small molecule ligands in conjugtion with +biomolecules is provided by `GAFF +<http://ambermd.org/antechamber/gaff.html>`_. Parameters exist for +almost all molecules made of C, N, O, H, S, P, F, Cl, Br, and I, and +are compatible with the AMBER functional forms. + +Typically, GAFF expects partial charges assigned using quantum +chemistry (i.e., HF/6-31G* RESP charges or AM1-BCC). The Open Babel +implementation can use other partial charges as available, although +with lower resulting accuracy. + +In general, GAFF is expected to provide accuracy (in terms of geometry +and energies) on par or better than the :ref:`MMFF94_Force_Field`. + +.. note:: If you use GAFF, you should cite the appropriate paper: + Wang, J., Wolf, R. M.; Caldwell, J. W.;Kollman, P. A.; + Case, D. A. "Development and testing of a general AMBER + force field". *Journal of Computational Chemistry,* **2004** + v. 25, 1157-1174. diff --git a/_sources/docs/Forcefields/ghemical.rst.txt b/_sources/docs/Forcefields/ghemical.rst.txt new file mode 100644 index 00000000..ed126cb8 --- /dev/null +++ b/_sources/docs/Forcefields/ghemical.rst.txt @@ -0,0 +1,14 @@ +.. _Ghemical_Force_Field: + +Ghemical Force Field (ghemical) +============================= + +The Ghemical force field matches an existing open source package, +which provided a force field for geometry optimization and molecular +dynamics similar to the Tripos-5.2 force field method (which is +proprietary). It performs acceptably on providing geometries of +organic-like molecules. + +We recommend use of either the :ref:`Generalized_Amber_Force_Field` or +:ref:`MMFF94_Force_Field` for organic molecules, and the +:ref:`Universal_Force_Field` for other types of molecules. diff --git a/_sources/docs/Forcefields/mmff94.rst.txt b/_sources/docs/Forcefields/mmff94.rst.txt new file mode 100644 index 00000000..f2729cb5 --- /dev/null +++ b/_sources/docs/Forcefields/mmff94.rst.txt @@ -0,0 +1,54 @@ +.. _MMFF94_Force_Field: + +MMFF94 Force Field (mmff94) +============================= + +The MMFF94 force field (and the related MMFF94s) were developed by +Merck and are sometimes called the Merck Molecular Force Field, +although MMFF94 is no longer considered an acronym. + +The method provides good accuracy across a range of organic and +*drug-like* molecules. The core parameterization was provided by +high-quality quantum calculations, rather than experimental data, +across ~500 test molecular systems. + +The method includes parameters for a wide range of atom types +including the following common organic elements: C, H, N, O, F, Si, P, +S, Cl, Br, and I. It also supports the following common ions: Fe\ +:sup:`+2`\ , Fe\ :sup:`+3`\ , F\ :sup:`-`\ , Cl\ :sup:`-`\ , Br\ +:sup:`-`\ , Li\ :sup:`+`\ , Na\ :sup:`+`\ , K\ :sup:`+`\ , Zn\ +:sup:`+2`\ , Ca\ :sup:`+2`\ , Cu\ :sup:`+1`\ , Cu\ :sup:`+2`\ , +and Mg\ :sup:`+2`\ . The Open Babel implementation should +automatically perform atom typing and recognize these elements. + +MMFF94 performs well at optimizing geometries, bond lengths, angles, +etc. and includes electrostatic and hydrogen-bonding effects. + +.. note:: If you use MMFF94 you should cite the appropriate papers: + + 1. Thomas A. Halgren, *J. Comput. Chem.,* 17, 490-519 **(1996).** + 2. Thomas A. Halgren, *J. Comput. Chem.,* 17, 520-552 **(1996).** + 3. Thomas A. Halgren, *J. Comput. Chem.,* 17, 553-586 **(1996).** + 4. Thomas A. Halgren and Robert B. Nachbar, *J. Comput. Chem.,* 17, 587-615 **(1996).** + 5. Thomas A. Halgren, *J. Comput. Chem.,* 17, 616-641 **(1996).** + +Some experiments and most theoretical calculations show significant +pyramidal "puckering" at nitrogens in isolated structures. The MMFF94s +(static) variant has slightly different out-of-plane bending and +dihedral torsion parameters to planarize certain types of delocalized +trigonal N atoms, such as aromatic aniline. This provides a better +match to the time-average molecular geometry in solution or crystal +structures. + +If you are comparing force-field optimized molecules to crystal +structure geometries, we recommend using the MMFF94s variant for this +reason. All other parameters are identical. + +However, if you are perfoming "docking" simulations, consideration of +active solution conformations, or other types of computational +studies, we recommend using the MMFF94 variant, since one form or +another of the N geometry will predominate. + +.. note:: If you use MMFF94s, you should also cite the following paper that details that method: + + 6. Thomas A. Halgren, *J. Comput. Chem.*, 20, 720-729 **(1999).** diff --git a/_sources/docs/Forcefields/uff.rst.txt b/_sources/docs/Forcefields/uff.rst.txt new file mode 100644 index 00000000..dea02a41 --- /dev/null +++ b/_sources/docs/Forcefields/uff.rst.txt @@ -0,0 +1,23 @@ +.. _Universal_Force_Field: + +Universal Force Field (uff) +============================= + +One problem with traditional force fields is a limited set of elements +and atom types. The Universal Force Field (UFF) was developed to +provide a set of rules and procedures for producing appropriate +parameters across the entire periodic table. + +While some implementations of UFF use the QEq partial charge model, +the original manuscript and authors of UFF determined the +parameterization without an electrostatic model. Consequently, by +default the Open Babel implementation does not use electrostatic +interactions. + +.. note:: If you use UFF, you should cite the appropriate paper: + + Rappe, A. K.; Casewit, C. J.; Colwell, K. S.; + Goddard, W. A. III; Skiff, W. M.; "UFF, a full periodic + table force field for molecular mechanics and molecular + dynamics simulations." *J Am Chem Soc*, **1992** v. 114, + 10024-10039. diff --git a/_sources/docs/GUI/GUI.rst.txt b/_sources/docs/GUI/GUI.rst.txt new file mode 100644 index 00000000..6a79cbf8 --- /dev/null +++ b/_sources/docs/GUI/GUI.rst.txt @@ -0,0 +1,163 @@ +.. _GUI: + +The Open Babel GUI +------------------ + +The :command:`obabel` command line program converts chemical objects (currently molecules or reactions) from one file format to another. The Open Babel graphical user interface (GUI) is an +alternative to using the command line and has the same capabilities. Since Open Babel 2.3, the GUI is available cross-platform on Windows, Linux and MacOSX. On Windows, you can find it in the Start Menu in the Open Babel folder; on Linux and MacOSX, the GUI can be started with the :command:`obgui` command. + +Since the functionality of the GUI mirrors that of :command:`obabel`, you should consult the :ref:`previous chapter <obabel>` to learn about available features and how to use them. This chapter describes the general use of the GUI and then focuses on features that are specific to the GUI. + + +Basic operation +~~~~~~~~~~~~~~~ +Although the GUI presents many options, the basic operation is straightforward: + +- Select the type of the type of the input file from the dropdown list. + +- Click the ":guilabel:`...`" button and select the file. Its contents are displayed in the textbox below. + +- Choose the output format and file in a similar way. You can merely display the output without saving it by not selecting an output file or by checking ":guilabel:`Output below only..`". + +- Click the ":guilabel:`Convert`" button. + +The message window below the button gives the number of molecules +converted, and the contents of the output file are displayed. + +By default, all the molecules in an input file are converted if the +output format allows multiple molecules. + +.. figure:: ../_static/ScreenshotOfGui-BioLinux6.0-Ubuntu10.04deriv.png + :align: center + + **Screenshot of GUI running on BioLinux 6.0, an Ubuntu derivative** + +Options +~~~~~~~ + +The options in the middle are those appropriate for the type of +chemical object being converted (molecule or reaction) and the +input and output formats. They are derived from the description +text that is displayed with the ``-Hxxx`` option in the command line +interface and with the ":guilabel:`Format info`" buttons here. You can switch +off the display of any of the various types of option using the +:guilabel:`View` menu if the screen is getting too cluttered. + +Multiple input files +~~~~~~~~~~~~~~~~~~~~ + +You can select multiple input files in the input file dialog in the +normal way (for example, using the Control key in Windows). In the input +filename box, each filename is displayed relative to the path shown +just above the box, which is the path of the first file. You can +display any of the files by moving the highlight with Tab/Shift +Tab, Page Up/Down, the mouse wheel, or by double clicking. + +Selecting one or more new file names normally removes those already +present, but they can instead be appended by holding the Control +key down when leaving the file selection dialog. + +Files can be also be dragged and dropped (e.g. from Windows +Explorer), adding the file when the Control key is pressed, +replacing the existing files when it is not. + +Normally each file is converted according to its extension and the +input files do not have to be all the same, but if you want to use +non-standard file names set the checkbox ":guilabel:`Use this format for all +input files...`" + +If you want to combine multiple molecules (from one or more files) +into a single molecule with disconnected parts, use option ":guilabel:`Join +all input molecules...`" + +Wildcards in filenames +~~~~~~~~~~~~~~~~~~~~~~ + +When input filenames are typed in directly, any of them can +contain the wildcard characters ``*`` and ``?``. Typing Enter will replace +these by a list of the matching files. The wildcarded names can be +restored by typing Enter while holding down the Shift key. The +original or the expanded versions will behave the same when the +":guilabel:`Convert`" button is pressed. + +By including the wildcard ``*`` in both the input and output +filenames you can carry out batch conversion. Suppose there were +files :file:`first.smi`, :file:`second.smi`, :file:`third.smi`. Using ``*.smi`` as the input +filename and ``*.mol`` as the output filename would produce three +files :file:`first.mol`, :file:`second.mol` and :file:`third.mol`. If the output filename +was ``NEW_*.mol``, then the output files would be :file:`NEW_first.mol`, etc. + +Local input +~~~~~~~~~~~ + +By checking the ":guilabel:`Input below...`" checkbox you can type the input +text directly. The text box changes colour to remind you that it is +this text and not the contents of any files that will be +converted. + +Output file +~~~~~~~~~~~ + +The output file name can be fully specified with a path, but if it +is not, then it is considered to be relative to the input file +path. + +Graphical display +~~~~~~~~~~~~~~~~~ + +The chemical structures being converted can be displayed (as SVG) +in an external program. By default this is Firefox but it can be +changed from an item on the :guilabel:`View` menu (for instance, Opera and +Chrome work fine). When ":guilabel:`Display in firefox`" (under the output file +name) is checked, the structures will be shown in a new Firefox +tab. With multiple molecules the display can be zoomed (mousewheel) +and panned (dragging with mouse button depressed). Up to 100 +molecules are easily handled but with more the system may be slow +to manipulate. It may also be slow to generate, especially if 2D +atom coordinates have to be calculated (e.g.from SMILES). A new +Firefox tab is opened each time :guilabel:`Convert` is pressed. + +Using a restricted set of formats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It is likely that you will only be interested in a subset of the large range of formats handled by Open Babel. +You can restrict +the choice offered in the dropdown boxes, which makes routine +selection easier. Clicking ":guilabel:`Select set of formats`" on the :guilabel:`View` menu +allows the formats to be displayed to be selected. Subsequently, +clicking ":guilabel:`Use restricted set of formats`" on the :guilabel:`View` menu toggles +this facility on and off. + +Using a restricted set overcomes an irritating bug in the Windows +version. In the file :guilabel:`Open` and :guilabel:`Save` dialogs the files displayed can +be filtered by the *current format*, *All Chemical Formats*, or *All +Files*. The *All Chemical Formats* filter will only display the first +30 possible formats (alphabetically). The *All Files* will indeed +display all files and the conversion processes are unaffected. + +Other features +~~~~~~~~~~~~~~ + +Most of the interface parameters, such as the selected format and +the window size and position, are remembered between sessions. + +Using the :guilabel:`View` menu, the input and output text boxes can be set not +to wrap the text. At present you have to restart the program for +this to take effect. + +The message box at the top of the output text window receives +program output on error and audit logging, and some progress +reports. It can be expanded by dragging down the divider between +the windows. + +Example files +~~~~~~~~~~~~~ + +In the Windows distribution, there are three chemical files included to try out: + +* **serotonin.mol** which has 3D atom coordinates +* **oxamide.cml** which is 2D and has a large number of properties that will be seen when converting to SDF +* **FourSmallMols.cml** which (unsurprisingly) contains four molecules with no atom coordinates and can be used to illustrate the handling of multiple molecules: + + Setting the output format to SMI (which is easy to see), you can convert only the second and third molecules by entering ``2`` and ``3`` in the appropriate option boxes. Or convert only molecules with C-O single bonds by entering ``CO`` in the SMARTS option box. + diff --git a/_sources/docs/GUITutorial/Conversion.rst.txt b/_sources/docs/GUITutorial/Conversion.rst.txt new file mode 100644 index 00000000..56bf892b --- /dev/null +++ b/_sources/docs/GUITutorial/Conversion.rst.txt @@ -0,0 +1,63 @@ +Converting chemical file formats +================================ + +The most common use of Open Babel is to convert chemical file formats. The following examples show how this is done. + +File conversion +--------------- + +Let's convert a PDB file to MOL format: + +* Create a folder on the Desktop called :file:`Work` +* Download the PDB file for insulin (``4ins``) from the `Protein Data Bank <http://www.rcsb.org/pdb/download/downloadFile.do?fileFormat=pdb&compression=NO&structureId=4INS>`_ and save it in the :file:`Work` folder +* Set the input file format to PDB and the input filename to the downloaded PDB file + +.. figure:: ../_static/inputfile.png + +* Set the output file format to MOL and the output filename to file:`4ins.mol` in the :file:`Work` folder + +.. figure:: ../_static/outputfile.png + +* Now click :guilabel:`CONVERT` + +Converting without files +------------------------ + +Rather than use input and output files, it is possible to paste the contents of a chemical file format into the input box, and see the results of the conversion in the output box. + +Here we will try this with the SMILES format, and illustrate how stereochemistry is handled by SMILES: + +.. sidebar:: Screenshot + + .. figure:: ../_static/inputfile_b.png + +* Choose the SMILES format as the input format +* Tick the box :guilabel:`Input below (ignore input file)` +* Copy and paste the following SMILES strings (and molecule titles) into the input box:: + + I/C=C/F I and F are trans + I/C=C\F I and F are cis + I[C@](Br)(Cl)F Anticlockwise from Iodine + I[C@@](Br)(Cl)F Clockwise from Iodine + +* Choose the SMILES format as the output format +* Tick the box for :guilabel:`Output below only` and :guilabel:`Display in Firefox` + +.. figure:: ../_static/outputfile_b.png + +* Click :guilabel:`CONVERT`. + +.. sidebar:: Which stereobond does Open Babel set? + + There are four bonds from each stereocentre. Open Babel carefully chooses + which bond to set as the stereobond by considering whether the bond connects + two stereocentres, whether the bond is part of a ring, and the angular + distance between bonds. + +In the resulting depiction, note that Open Babel only sets a single stereobond for a chiral centre. This is not ambiguous - it means that the stereobond is either above or below the plane, with the remaining three bonds the opposite site of the plane. + +Q. Can you figure out whether the depiction of the tetrahedral centre is consistent with the SMILES string? + +.. note:: Open Babel 2.3.2 introduces a twisted double bond to indicate unknown cis/trans stereochemistry (e.g. IC=CF). See here_ for more info. + +.. _here: http://baoilleach.blogspot.ie/2012/04/getting-your-double-bonds-in-twist-how.html diff --git a/_sources/docs/GUITutorial/Filtering.rst.txt b/_sources/docs/GUITutorial/Filtering.rst.txt new file mode 100644 index 00000000..90cbdf80 --- /dev/null +++ b/_sources/docs/GUITutorial/Filtering.rst.txt @@ -0,0 +1,103 @@ +Filtering structures +==================== + +.. rubric:: Setup + +We are going to use a dataset of 16 benzodiazepines. These all share the following substructure (image from Wikipedia_): + +.. figure:: ../_static/Benzodiazepine.png + +.. _Wikipedia: http://en.wikipedia.org/wiki/Benzodiazepine + +* Create a folder on the Desktop called :file:`Work` and save benzodiazepines.sdf_ there +* Set up a conversion from SDF to SMI and set :file:`benzodiazepines.sdf` as the input file +* Tick :guilabel:`Display in Firefox` +* Click :guilabel:`CONVERT` + +.. _benzodiazepines.sdf: ../_static/benzodiazepines.sdf + +.. rubric:: Remove duplicates + +If you look carefully at the depictions of the first and last molecules (top left and bottom right) you will notice that they depict the same molecule. + +Q. Look at the SMILES strings for the first and last molecules. If the two molecules are actually the same, why are the two SMILES strings different? (Hint: try using ``CAN - canonical SMILES`` instead of ``SMI``.) + +We can remove duplicates based on the InChI (for example): + +* Tick the box beside :guilabel:`remove duplicates by descriptor` and enter ``inchi`` as the descriptor + +.. figure:: ../_static/removedups.png + +* Click :guilabel:`CONVERT` + +Duplicates can be removed based on any of the available descriptors. The full list can be found in the menu under :guilabel:`Plugins`, :guilabel:`descriptors`. + +Q. Are any of the other descriptors useful for removing duplicates? + + +.. rubric:: Filtering by substructure + +Q. How many of the molecules contain the following substructure? + +.. figure:: ../_static/benzoF.png + +The SMILES string for this molecule is ``c1ccccc1F``. This is also a valid SMARTS string. + +Q. Use the SMARTSviewer_ at the ZBH Center for Bioinformatics, University of Hamburg, to verify the meaning of the SMARTS string ``c1ccccc1F``. + +.. _SMARTSviewer: http://smartsview.zbh.uni-hamburg.de/ + +.. sidebar:: Removing potentially toxic molecules + + Filtering a dataset of molecules by substructure is particularly useful + if you need to remove molecules with problematic functional groups. For + example, particular functional groups are associated with toxicological + problems. + +Let's filter the molecules using this substructure: + +* In the Options section, enter ``c1ccccc1F`` into the box labeled :guilabel:`Convert only if match SMARTS or mols in file` +* Click :guilabel:`CONVERT`. + +Q. How many structures are matched? + +* Now find all those that are not matched by preceding the SMARTS filter with a tilde ``~``, i.e. ``~c1ccccc1F``. +* Click :guilabel:`CONVERT`. + +Q. How many structures are not matched? + +.. rubric:: Filter by descriptor + +.. sidebar:: Screenshot + + .. figure:: ../_static/SortByMW.png + +As discussed above, Open Babel provides several descriptors. Here we will focus on the molecular weight, ``MW``. + +To begin with, let's show the molecular weights in the depiction: + +* Clear the existing title by entering a single space into the box :guilabel:`Add or replace molecule title` +* Set the title to the molecular weight by entering ``MW`` into the box :guilabel:`Append properties or descriptors in list to title` +* Click :guilabel:`CONVERT` + +You should see the molecular weight below each molecule in the depiction. Notice also that the SMILES output has the molecular weight beside each molecule. This could be useful for preparing a spreadsheet with the SMILES string and various calculated properties. + +Now let's sort by molecular weight: + +* Enter ``MW`` into the box :guilabel:`Sort by descriptor` and click :guilabel:`CONVERT` + +Finally, here's how to filter based on molecular weight. Note that none of the preceding steps are necessary for the filter to work. We will convert all those molecules with molecular weights between 300 and 320 (in the following expression ``&`` signifies Boolean AND): + +* Enter ``MW>300 & MW<320`` into the box :guilabel:`Filter convert only when tests are true` and click :guilabel:`CONVERT` + +.. figure:: ../_static/FilterByMW.png + +.. sidebar:: Filter by property + + The SDF format, in common with some other file formats, allows + property fields for each molecule. Open Babel allows the user to filter + using these, add the value to the title, remove or replace values. + +Q. If ``|`` (the pipe symbol, beside Z on the UK keyboard) signifies Boolean OR, how would you instead convert all those molecules that do not have molecular weights between 300 and 320? + +.. note:: Open Babel 2.3.2 allows specific substructures to be highlighted in a depiction. It also allows depictions to be aligned based on a substructure. diff --git a/_sources/docs/GUITutorial/GUITutorial.rst.txt b/_sources/docs/GUITutorial/GUITutorial.rst.txt new file mode 100644 index 00000000..e04c28cb --- /dev/null +++ b/_sources/docs/GUITutorial/GUITutorial.rst.txt @@ -0,0 +1,13 @@ +Tutorial on using the GUI +========================= + +This chapter gives step-by-step descriptions on how to use Open Babel's graphical user interface (GUI) to carry out some common tasks. It may also be used as the basis of a practical on cheminformatics, and to this end several questions are interspersed with the tutorial text. + +For more information on the GUI itself, see the :ref:`previous chapter <GUI>`. + +.. toctree:: + :maxdepth: 2 + + Conversion.rst + Filtering.rst + Searching.rst diff --git a/_sources/docs/GUITutorial/Searching.rst.txt b/_sources/docs/GUITutorial/Searching.rst.txt new file mode 100644 index 00000000..396dadbb --- /dev/null +++ b/_sources/docs/GUITutorial/Searching.rst.txt @@ -0,0 +1,51 @@ +Substructure and similarity searching a large dataset +===================================================== + +Open Babel provides a format called the ``fs -- fastsearch index`` which should be used when searching large datasets (like ChEMBL) for molecules similar to a particular query. There are faster ways of searching (like using a chemical database) but FastSearch is convenient, and should give reasonable performance for most people. + +To demonstrate similarity searching, we will use the first 1000 molecules in the latest release of ChEMBL: + +* Download the 2D SDF version of ChEMBL, :file:`chembl_nn.sdf.gz`, from the `ChEMBLdb download site`_ and save in your `Work` folder. (Note: this is a gzipped file, but Open Babel will handle this without problems.) +* Set up an SDF to SDF conversion, set :file:`chembl_nn.sdf.gz` as the input file and :file:`1000_chembl.sdf` as the output file. +* Only convert the first 1000 molecules by entering ``1000`` in the box :guilabel:`End import at molecule # specified`. + +.. figure:: ../_static/first1000.png + +* Click :guilabel:`CONVERT` + +.. _ChEMBLdb download site: ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/latest/ + +We can going to use the following structure for substructure and similarity searching. It can be represented by the SMILES string ``Nc1ccc(N)cc1``. + +.. figure:: ../_static/1,4-diamino-phenyl.png + +.. sidebar:: How the search works + + Behind the scenes, the FastSearch index simply stores a path-based + binary fingerprint for each molecule. When used to search, similarity + is measured based on the Tanimoto coefficient. For exact search, hits + are verified by Open Babel's graph isomorphism matcher. + +Next, we will create a FastSearch index for this dataset of 1000 molecules: + +* Convert :file:`1000_chembl.sdf` from SDF to FS format, with an output filename of :file:`1000_chembl.fs` + +By using this FastSearch index, the speed of substructure and similarity searching is much improved. First of all, let's do a substructure search: + +* Set up a conversion from FS to SMILES with :file:`1000_chembl.fs` as the input file. Tick the box for :guilabel:`Output below only` and :guilabel:`Display in Firefox` +* Enter ``Nc1ccc(N)cc1`` into the box :guilabel:`Convert only if match SMARTS or mol in file` +* Click :guilabel:`CONVERT` + +Q. How does the speed of the substructure search compare to if you used :file:`1000_chembl.sdf` as the input file instead? + +Next, let's find the 5 most similar molecules to the same query. The Tanimoto coefficient of a path-based fingerprint is used as the measurement of similarity. This has a value from 0.0 to 1.0 (maximum similarity) and we will display the value below each molecule: + +* Set up the FS to SMILES conversion as before, and again enter ``Nc1ccc(N)cc1`` into the box :guilabel:`Convert only if match SMARTS or mol in file` +* Enter ``5`` into the box :guilabel:`Do similarity search: #mols or # as min Tanimoto` +* Tick the box :guilabel:`Add Tanimoto coefficient to title in similarity search` +* Click :guilabel:`CONVERT` + +.. figure:: ../_static/similarity.png + +Q. Look at the 5 most similar molecules. Can you tell why they were regarded as similar to the query? + diff --git a/_sources/docs/Installation/install.rst.txt b/_sources/docs/Installation/install.rst.txt new file mode 100644 index 00000000..d1ac370b --- /dev/null +++ b/_sources/docs/Installation/install.rst.txt @@ -0,0 +1,278 @@ +Install Open Babel +================== + +Open Babel runs on Windows, Linux and MacOSX. You can either :ref:`install a binary package <Install binaries>` (the easiest option) or :ref:`compile Open Babel yourself <Compiling Open Babel>` (also easy, but much more geek cred). + +.. _Install binaries: + +Install a binary package +------------------------ + +Windows +~~~~~~~ + +Open Babel is available as a binary installer for Windows, both 64-bit (preferred) or 32-bit (indicated by ``x86`` in the filename). It includes several command-line tools as well as a graphical user interface (GUI). The latest version can be download from GitHub_. + +Advanced users may be interested in compiling Open Babel themselves (see :ref:`Compiling Open Babel`). + +.. _GitHub: https://github.com/openbabel/openbabel/releases + +Linux +~~~~~ + +Open Babel binary packages are available from many Linux distributions including Ubuntu, OpenSUSE and Fedora. + +In general, we recommend using the latest release of Open Babel (currently |release|). If this is not available for your Linux distribution, you should :ref:`compile Open Babel yourself <Compiling Open Babel>`. + +.. _Compiling Open Babel: + +Compiling Open Babel +-------------------- + +Open Babel is written in C++. Compiling is the process of turning this C++ into instructions that the computer's processor can understand, machine code. + +Although pre-compiled (or "binary") packages are available for several platforms, there are several reasons you might want to compile Open Babel yourself: + +- The current release (|release|) of Open Babel is not available for your platform. We recommend always using the latest release. +- You want more control over the features available. For example, perhaps you want the Python bindings but these were not included in your distribution. +- You want to use the latest development code. +- You want to add a new feature. It is easy to add new formats or operations to Open Babel as it has a plugin architecture (see :ref:`Add plugins`). +- You just want to compile stuff yourself. We understand. + +Open Babel can be compiled on Linux, MacOSX, BSDs and other Unixes, and also on Windows (with Cygwin, MinGW or MSVC). + +.. _requirements: + +Requirements +~~~~~~~~~~~~ + +To build Open Babel, you **need** the following: + +* The `source code <http://sourceforge.net/projects/openbabel/files/openbabel/2.4.0/openbabel-openbabel-2-4-0.tar.gz/download>`__ for the latest release of Open Babel +* A C++ compiler + + Open Babel is written in standards-compliant C++. The best-supported compilers are GCC 4 and MSVC++ 2008, but it also compiles with Clang and Intel Compiler 11. + +* CMake 2.8 or newer + + Open Babel uses CMake as its build system. CMake is an open source cross-platform build system from KitWare. + + You need to install CMake 2.8 or newer. This is available as a binary package from the KitWare website; alternatively, it may be available through your package manager (on Linux). If necessary, you can also compile it yourself from the source code. + +If you want to build the GUI (Graphical User Interface), you **need** the following in addition: + +* wxWidgets 2.8 (or newer) + + Binary packages may be available through your package manager (*wx-common*, *wx2.8-headers* and *libwxbase2.8-dev* on Ubuntu) or from http://www.wxwidgets.org/downloads/. Otherwise, you could try compiling it yourself from the source code. + +The following are **optional** when compiling Open Babel, but if not available some features will be missing: + +* :program:`libxml2` development headers are required to read/write CML files and other XML formats (the *libxml2-dev* package in Ubuntu) +* :program:`zlib` development libraries are required to support reading gzipped files (the *zlib1g-dev* package in Ubuntu) +* :program:`Eigen` version 2 or newer is **required** if using the language bindings in the release. In addition, if it not present, some API classes (OBAlign, OBConformerSearch) and plugins (the QEq and QTPIE charge models, the ``--conformer`` and ``--align`` operations) will not be available. + + Eigen may be available through your package manager (the *libeigen2-dev* package in Ubuntu). Alternatively, Eigen is available from http://eigen.tuxfamily.org. It doesn't need to be compiled or installed. Just unzip it and specify its location when configuring :program:`cmake` (see below) using ``-DEIGEN2_INCLUDE_DIR=whereever`` or ``-DEIGEN3_INCLUDE_DIR=wherever``. + +* :program:`Cairo` development libraries are required to support PNG depiction (the *libcairo2-dev* package in Ubuntu) +* If using GCC 3.x to compile (and not GCC 4.x), then the Boost headers are required for certain formats (CML, Chemkin, Chemdraw CDX, MDL RXN and RSMI) + +If you want to use Open Babel using one of the supported **language bindings**, then the following notes may apply: + +* You need the the Python development libraries to compile the Python bindings (package *python-dev* in Ubuntu) +* You need the the Perl development libraries to compile the Perl bindings (package *libperl-dev* in Ubuntu) + + +Basic build procedure +~~~~~~~~~~~~~~~~~~~~~ + +The basic build procedure is the same for all platforms and will be described first. After this, we will look at variations for particular platforms. + +.. highlight:: console + +1. The recommended way to build Open Babel is to use a separate source and build directory; for example, :file:`openbabel-2.3.2` and :file:`build`. The first step is to create these directories:: + + $ tar zxf openbabel-2.3.2.tar.gz # (this creates openbabel-2.3.2) + $ mkdir build + +2. Now you need to run :program:`cmake` to configure the build. The following will configure the build to use all of the default options:: + + $ cd build + $ cmake ../openbabel-2.3.2 + +3. If you need to specify an option, use the ``-D`` switch to :program:`cmake`. For example, the following line sets the value of ``CMAKE_INSTALL_PREFIX`` and ``CMAKE_BUILD_TYPE``:: + + $ cmake ../openbabel-2.3.2 -DCMAKE_INSTALL_PREFIX=~/Tools -DCMAKE_BUILD_TYPE=DEBUG + + We will discuss various possible options later. + +4. At this point, it would be a good idea to compile Open Babel:: + + $ make + + Have a coffee while the magic happens. If you have a multi-processor machine and would prefer an expresso, try a parallel build instead:: + + $ make -j4 # parallel build across 4 processors + +5. And finally, as root (or using ``sudo``) you should install it:: + + # make install + +Local build +~~~~~~~~~~~ + +.. sidebar:: Look Ma, no install! + + With the right sort of environment variable magic (see :ref:`below <environment variables>`), you can actually use Open Babel straight from the build folder. But life is a bit easier if you install it somewhere, either system-wide or locally. + +By default, Open Babel is installed in :file:`/usr/local/` on a Unix-like system. This requires root access (or ``sudo``). Even if you do have root access, you may not want to overwrite an existing installation or you may want to avoid conflicts with a version of Open Babel installed by your package manager. + +The solution to all of these problems is to do a local install into a directory somewhere in your home folder. +An additional advantage of a local install is that if you ever want to uninstall it, all you need to do is delete the installation directory; removing the files from a global install is more work. + +1. To configure :program:`cmake` to install into :file:`~/Tools/openbabel-install`, for example, you would do the following:: + + $ cmake ../openbabel-2.3.2 -DCMAKE_INSTALL_PREFIX=~/Tools/openbabel-install + +2. Then you can run :command:`make` and :command:`make install` without needing root access:: + + $ make && make install + +Compile the GUI +~~~~~~~~~~~~~~~ + +The GUI is built using the wxWidgets toolkit. Assuming that you have already installed this (see :ref:`requirements` above), you just need to configure :program:`cmake` as follows:: + + $ cmake ../openbabel-2.3.2 -DBUILD_GUI=ON + +When you run ``make`` and ``make install``, the GUI will be automatically built and installed alongside the main Open Babel library and tools. + +.. _Compile bindings: + +Compile language bindings +~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. sidebar:: Eigen required + + If you wish to compile the language bindings supplied in the release, Eigen version 2 or newer is required (see :ref:`requirements` above). + +1. When configuring CMake, include options such as ``-DPYTHON_BINDINGS=ON -DRUBY_BINDINGS=ON`` for whichever bindings you wish to build (valid names are ``PYTHON``, ``CSHARP``, ``PERL``, ``JAVA`` or ``RUBY``) or ``-DALL_BINDINGS=ON`` to build them all. The bindings will then be built and installed along with the rest of Open Babel. You should note any warning messages in the CMake output. + +2. If CMake cannot find Java, you should set the value of the environment variable ``JAVA_HOME`` to the directory containing the Java :file:`bin` and :file:`lib` directories. For example, if you download the JDK from Sun and run the self-extracting .bin file, it creates a directory :file:`jdk1.6.0_21` (or similar); you should set ``JAVA_HOME`` to the full path to this directory. + +3. If CMake cannot find the Perl libraries (which happens on Ubuntu 10.10, surprisingly), you need to configure CMake with something like ``-DPERL_LIBRARY=/usr/lib/libperl.so.5.10 -DPERL_INCLUDE_PATH=/usr/lib/perl/5.10.1/CORE``. + +4. If you are compiling the CSharp bindings, you should specify the CSharp compiler to use with something like ``-DCSHARP_EXECUTABLE=C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe``. + +5. When you run ``make install``, all of the bindings will be installed to the same location as the Open Babel libraries (typically ``/usr/local/lib``). + +6. To prepare to use the bindings, add the install directory to the front of the appropriate environment variable: PYTHONPATH for Python, PERL5LIB for Perl, RUBYLIB for Ruby, CLASSPATH for Java, and MONO_PATH for Mono. + +For example, for Python:: + + $ cmake ../openbabel-2.3.2 -DPYTHON_BINDINGS=ON + $ make + # make install + $ export PYTHONPATH=/usr/local/lib:$PYTHONPATH + +Cygwin +~~~~~~ +The basic build instructions up above work just fine so long as you use the CMake provided by Cygwin rather than a native Windows installation. + +If you get an error about ``undefined reference to '_xmlFreeTextReader'``, you need to specify the location of the XML libraries with the ``-DLIBXML2_LIBRARIES`` option:: + + $ cmake ../openbabel-2.3.2 -DLIBXML2_LIBRARIES=/usr/lib/libxml2.dll.a + +The language bindings don't seem to work under Cygwin. If you can get them to work, let us know. Also remember that anything that uses Cygwin runs slower than a native build using MinGW or MSVC++, so if speed is an issue you might prefer to compile with MinGW or MSVC++. + +MinGW +~~~~~ +Open Babel builds out of the box with MinGW. It's an awkward system to set up though, so here are some step-by-step instructions...TODO + +.. todo:: MinGW + + +Windows (MSVC) +~~~~~~~~~~~~~~ +The main Windows build used by Open Babel uses the Microsoft Visual C++ compiler (MSVC). + +1. Set up the following environment variables: + + a. Add the CMake :file:`bin` directory to the PATH. + + b. (Optional, see :ref:`requirements` above) Set EIGEN2_INCLUDE_DIR to the location of the top level Eigen directory (if installed). + + c. (Optional, required for GUI) Set WXWIN to the top level directory of wxWidgets (if installed). + + +2. Install the Microsoft Visual C++ 2010 (or newer) compiler. + + We use the Visual C++ 2010 (10.0) `Express Edition`_ (available for free). + +.. _Express Edition: http://www.microsoft.com/Express/VC/ + +3. Open a command prompt, and change directory to the :file:`windows-vc2008` subdirectory. To configure :program:`cmake`, and generate the VC++ project files, run :file:`default_build.bat`. + +4. Double-click on :file:`windows-vc2008/build/openbabel.sln` to start MSVC++. At the top of the window just below the menu bar, choose `Release` in the drop-down box. + +5. On the left-hand side, right-click on the ``ALL_BUILD`` target, and choose :guilabel:`Build`. + +.. todo:: How to build the GUI + +Troubleshooting build problems +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. rubric:: CMake caches some variables from run-to-run. How can I wipe the cache to start from scratch? + +Delete :file:`CMakeCache.txt` in the build directory. This is also a very useful file to look into if you have any problems. + +.. rubric:: How do I specify the location of the XML libraries? + +CMake should find these automatically if they are installed system-wide. If you need to specify them, try using the ``-DLIBXML2_LIBRARIES=wherever`` option with CMake to specify the location of the DLL or SO file, and ``-DLIBXML2_INCLUDE_DIR=wherever`` to specify the location of the header files. + +.. rubric:: How do I specify the location of the ZLIB libraries? + +CMake should find these automatically if they are installed system-wide. If you need to specify them, try using the ``-DZLIB_LIBRARY=wherever`` option with CMake to specify the location of the DLL or SO file, and ``-DZLIB_INCLUDE_DIR=wherever`` to specify the location of the header files. + +.. _environment variables: + +.. rubric:: What environment variables affect how Open Babel finds formats, plugins and libraries? + +**LD_LIBRARY_PATH** - Used to find the location of the :file:`libopenbabel.so` file. + You should set this if you get error messages about not being able to find :file:`libopenbabel.so`. +**BABEL_LIBDIR** - Used to find plugins such as the file formats + If ``obabel -L formats`` does not list any file formats, then you need to set this environment variable to the directory where the file formats were installed, typically :file:`/usr/local/lib/openbabel/`. +**BABEL_DATADIR** - Used to find the location of the data files used for fingerprints, forcefields, etc. + If you get errors about not being able to find some .txt files, then you should set this to the name of the folder containing files such as :file:`patterns.txt` and :file:`MACCS.txt`. These are typically installed to :file:`/usr/local/share/openbabel`. + +Advanced build options +~~~~~~~~~~~~~~~~~~~~~~ +.. rubric:: How do I control whether the tests are built? + +The CMake option ``-DENABLE_TESTS=ON`` or ``OFF`` will look after this. To actually run the tests, use ``make tests``. + +.. rubric:: How do I do a debug build? + +``-DCMAKE_BUILD_TYPE=Debug`` does a debug build (``gcc -g``). To revert to a regular build use ``-DCMAKE_BUILD_TYPE=Release``. + +.. rubric:: How do I see what commands cmake is using to build? + +Run Make as follows:: + + $ VERBOSE=1 make + +.. rubric:: How do I build one specific target? + +Just specify the target when running Make. The following just builds the Python bindings:: + + $ make _openbabel + +To speed things up, you can ask Make to ignore dependencies:: + + $ make _openbabel/fast + +.. rubric:: How do I create the SWIG bindings? + +Use the ``-DRUN_SWIG=ON`` option with CMake. This requires SWIG 2.0 or newer. If the SWIG executable is not on the PATH, you will need to specify its location with ``-DSWIG_EXECUTABLE=wherever``. + +.. rubric:: How do I build the Doxygen documentation? + +Use the ``-DBUILD_DOCS=ON`` option with CMake. If the Doxygen executable is not on the PATH, you will need to specify its location with ``-DDOXYGEN_EXECUTABLE=wherever``. diff --git a/_sources/docs/Introduction/faq.rst.txt b/_sources/docs/Introduction/faq.rst.txt new file mode 100644 index 00000000..36dfc720 --- /dev/null +++ b/_sources/docs/Introduction/faq.rst.txt @@ -0,0 +1,136 @@ +Frequently Asked Questions +========================== + +General +------- + +.. rubric:: What is Open Babel? + +Put simply, Open Babel is a free, open-source version of the Babel chemistry file translation program. Open Babel is a project designed to pick up where Babel left off, as a cross-platform program and library designed to interconvert between many file formats used in molecular modeling, computational chemistry, and many related areas. + +Open Babel includes two components, a command-line utility and a C++ library. The command-line utility is intended to be used as a replacement for the original babel program, to translate between various chemical file formats. The C++ library includes all of the file-translation code as well as a wide variety of utilities to foster development of other open source scientific software. + +.. rubric:: How does this relate to BabelChat, BabelFish, Babel IM, etc. ...? + +It doesn't. Not surprisingly, "babel" is used frequently in a lot of software names. + +.. rubric:: Is it Open Babel or OpenBabel? + +Your choice. It's probably easier to call it Open Babel since that's what it is--an open version of Babel. But if you like one-word, mixed-case project names, then go for OpenBabel. In that case, the space is just too small to be printed. + +.. rubric:: How does this relate to the original Babel and OELib, the "next" Babel? + +The original Babel was written by Pat Walters and Matt Stahl, based on the "convert" program by Ajay Shah, and is still a remarkable application. Both Pat and Matt have moved on to other work. The original Babel is hosted by Smog.com on a `Babel homepage`_, by the `Computational Chemistry List`_ (CCL) and of course by Open Babel at `SourceForge.net`_. + + +Along the way, the two original authors started a rewrite of Babel into C++ they called OBabel, which was never really publicly released. But Matt used some of these ideas in OELib, which was generously released under the GNU GPL by his employer, OpenEye Software, and the last known version of this OELib is still available from our `file repository`_. + +.. _Babel homepage: http://smog.com/chem/babel/ +.. _Computational Chemistry List: http://ccl.net/cca/software/UNIX/babel/ +.. _file repository: +.. _SourceForge.net: http://sourceforge.net/project/showfiles.php?group_id=40728&package_id=100796 + +OpenEye decided that for their purposes OELib needed a rewrite (now called OEChem_), but this would be closed-source to include some advanced algorithms. So the GPL'ed version of OELib would not be maintained. Instead, the free version of OELib was renamed and has become "Open Babel" with the blessing of Matt and other contributors. + +.. _OEChem: http://www.eyesopen.com/products/toolkits/oechem.html + +Open Babel has evolved quite a lot since its birth in 2001. + +.. rubric:: What's the latest version? + +As of this writing, the latest version is Open Babel |release|. This is a stable version suitable for widespread use and development. + +.. rubric:: Can I use Open Babel code in a personal project? + +One common misconception about the GNU GPL license for Open Babel is that it requires users to release any code that uses the Open Babel library. This is completely untrue. There are no restrictions on use of Open Babel code for personal projects, regardless of where you work (academia, industry, ... wherever). + +However, if you intend on releasing a software package that uses Open Babel code, the GPL requires that your package be released under the GNU GPL license. The distinction is between use and distribution. See :ref:`Why contribute` below for more on the licensing issues. + +.. rubric:: How do I cite Open Babel in a paper? + +To support development of Open Babel, please cite: + +* Hutchison et al. [obj2011]_ + +.. [obj2011] Noel M. O'Boyle, Michael Banck, Craig A. James, Chris Morley, Tim Vandermeersch, Geoffrey R. Hutchison + **Open Babel: An open chemical toolbox.** + *J. Cheminf.* **2011**, *3*, 33. + [`Link <https://doi.org/10.1186/1758-2946-3-33>`_] + +* Open Babel, version 2.3.2, http://openbabel.org (accessed Oct 2012) + +The first is a paper describing Open Babel; and the second is one way to cite a software package at a particular URL. Obviously, you should include the version number of Open Babel you used, and the date you downloaded the software or installed Open Babel. + +.. _Blue Obelisk: http://blueobelisk.org + +Features, Formats, Roadmap +-------------------------- + +.. _why no support: + +.. rubric:: Why don't you support file format X? + +The file formats currently supported are some of the more common file formats and, admittedly, those we use in our work. If you'd like to see other file formats added, we need one of: + + * documentation on the file format + * working code to read the file format or translate it + * example files in the new file format and in some other format + +The latter obviously is the easiest with text file formats. Binary files take some time to reverse engineer without documentation or working code. Also consider pointing developers to this FAQ and the "What's in it for me?" section. + +.. rubric:: When I convert from SMILES to MOL2/PDB/etc., why are all of the coordinates zero? + +The SMILES format contains 2D information on the molecule. That is, it says which atoms are connected to which other atoms, and what type of bonds are present. MOL2, PDB and several other formats contain 3D coordinate information not present in the SMILES format. Since Open Babel does not attempt to generate 3D structure by default, all of the coordinates are set to zero. However, it is possible to generate 3D structure with the release of Open Babel 2.2.0 using the ``--gen3d`` option. + +.. rubric:: What sorts of features will be added in the future? + +It's an open project, so if features are suggested or donated, they'll be considered as much as anything else on the drawing board. Some things are pretty clear from the roadmap. + +.. _Why contribute: + +What's in it for me to contribute? +---------------------------------- + +.. rubric:: What's in it for my chemistry software company? + +If your product is closed-source or otherwise incompatible with the GPL, you unfortunately cannot link directly to the code library. You can, however, distribute Open Babel in unmodified form with your products to use the command-line interface. This is fairly easy because the Open Babel babel program allow reading from the standard input and writing to the standard output (functioning as a POSIX pipe). + +If you decide to distribute binaries, you should either offer users the source if they want, or point them to the Open Babel website. Note that if you modify the source, you obviously can't point back to the Open Babel website -- the GPL requires that you distribute the changed source. (Or you can convince us to incorporate the changes and point back to us.) + +What's not to like with this deal? You can have Open Babel translate foreign file formats for you and can point users at the website for distribution. You don't need to write tons of code for all these formats and bug reports can be passed back to us. + +Of course, there's one catch. You'll most likely need to add feature-rich support for your file formats. So if you contribute a small amount of code under the GPL to read/write your files, everything else is handled by Open Babel. + +It's a win-win for everyone. The community benefits by having feature-rich translation code and open file formats. Your company and its programs benefit by the ability to read just about every format imaginable. Users benefit by using the programs they need for the tasks they need. + +.. rubric:: What's in it for me as an academic? + +If you're an academic developer, you certainly should read the previous answer too. It takes little work on your part to interface with Open Babel and you get a lot in return. + +But even if you're just an academic user, there's a lot of reasons to contribute. Most of us deal with a variety of file formats in our work. So it's useful to translate these cleanly. If a format isn't currently supported by Open Babel, see :ref:`above <why no support>`. If you find bugs please report them. Since it's open source, you can patch the code yourself, recompile and have the problem fixed very quickly. + +If you're inclined to write code, the GPL is an excellent option for the academic. You're the original copyright holder, so you can do whatever you want with the code, in addition to selling it. But if you've also licensed it under the GPL, no one can distribute it as proprietary (i.e., closed-source) software without your agreement. Fellow academics can use it directly, learn from it, improve it and contribute back to you. Isn't that why many of us went into science? + +Once licensed under the GPL, the code must remain free to interested parties. If someone modifies it, that code must still remain under the GPL, free for all. + +.. rubric:: What's in it for an open-source software project? + +Certainly the answers for closed-source software and academics also apply for you. Beyond that, if your code is compatible with the GPL, you can directly use Open Babel and all of the API. This is already happening with the Avogadro molecular editor, available under the GPL, and many others (see `related projects`_). There's a lot of code in Open Babel beyond file translation and more to come. Why reinvent the wheel? + +.. _related projects: http://openbabel.org/wiki/Related + +.. rubric:: Why is this covered under the GPL instead of license X? + +The short answer is that `OpenEye Scientific Software`_ employs Matt Stahl, one of the authors of the original Babel. They released a library called OELib under the GPL that did many things that Babel did. Later they decided to release the next version of OELib as a closed-source project--their choice for their code. We took the version of OELib still under GPL and went from there. + +.. _OpenEye Scientific Software: http://www.eyesopen.com + +If you'd like to see Open Babel licensed differently, we'd suggest asking OpenEye if they'd consider releasing the old code under a new license, e.g. the LGPL. At that point, we'd consider whether Open Babel should be relicensed or not. Obviously all copyright holders must agree to the new license. + +It's worth noting that since OpenEye is developing a closed-source library called OEChem_ and implies one reason for purchase is in closed-source development products. So we think it's highly unlikely that OpenEye would allow Open Babel to become a competitor by relicensing under the LGPL. + +.. rubric:: Where can I read more about the GNU GPL? + +The Free Software Foundation maintains a FAQ_ list about the GNU GPL. The FAQ attempts to address common questions in an easy-to-read (i.e., not in legal language) form. + +.. _FAQ: http://www.fsf.org/licenses/gpl-faq.html diff --git a/_sources/docs/Introduction/goals.rst.txt b/_sources/docs/Introduction/goals.rst.txt new file mode 100644 index 00000000..8168744d --- /dev/null +++ b/_sources/docs/Introduction/goals.rst.txt @@ -0,0 +1,28 @@ +Goals of the Open Babel project +=============================== + +Open Babel is a project to facilitate the interconversion of chemical data from one format to another -- including file formats of various types. This is important for the following reasons: + +* Multiple programs are often required in realistic workflows. These may include databases, modeling or computational programs, visualization programs, etc. +* Many programs have individual data formats, and/or support only a small subset of other file types. +* Chemical representations often vary considerably: + + * Some programs are 2D. Some are 3D. Some use fractional k-space coordinates. + * Some programs use bonds and atoms of discrete types. Others use only atoms and electrons. + * Some programs use symmetric representations. Others do not. + * Some programs specify all atoms. Others use "residues" or omit hydrogen atoms. + +* Individual implementations of even standardized file formats are often buggy, incomplete or do not completely match published standards. + +As a free, and open source project, Open Babel improves by way of helping others. It gains by way of its users, contributors, developers, related projects, and the general chemical community. We must continually strive to support these constituencies. + +We gratefully accept contributions in many forms -- from bug reports, complaints, and critiques, which help us improve what we do poorly, to feature suggestions, code contributions, and other efforts, which direct our future development. + +* For end users, we seek to provide a range of utility, from simple (or complex) file interconversion, to indexing, databasing, and transforming chemical and molecular data. +* For developers, we seek to provide an easy-to-use free and open source chemical library. This assists a variety of chemical software, from molecular viewers and visualization tools and editors to databases, property prediction tools, and in-house development. + +To this end, we hope that our tools reflect several key points: + +* As much chemical information and files should be read and understood by Open Babel. This means that we should always strive to support as many concepts as possible in a given file format, and support for additional file formats is beneficial to the community as a whole. +* Releases should be made to be "as good as we can make it" each and every time. +* Improving our code and our community to bring in additional contributions in many forms helps both developers and end-users alike. Making development easy for new contributors will result in better tools for users as well. diff --git a/_sources/docs/Introduction/intro.rst.txt b/_sources/docs/Introduction/intro.rst.txt new file mode 100644 index 00000000..ca974746 --- /dev/null +++ b/_sources/docs/Introduction/intro.rst.txt @@ -0,0 +1,10 @@ +Introduction +============ + +Open Babel is a chemical toolbox designed to speak the many languages of chemical data. It's an open, collaborative project allowing anyone to search, convert, analyze, or store data from molecular modeling, chemistry, solid-state materials, biochemistry, or related areas. + +.. toctree:: + + goals.rst + faq.rst + thanks.rst diff --git a/_sources/docs/Introduction/thanks.rst.txt b/_sources/docs/Introduction/thanks.rst.txt new file mode 100644 index 00000000..e464f9e0 --- /dev/null +++ b/_sources/docs/Introduction/thanks.rst.txt @@ -0,0 +1,94 @@ +.. include:: <isolat1.txt> + +.. _Thanks: + +Thanks +====== + +Open Babel would not be what it is without the help of a cast of many. We are fundamentally a community project and aim to offer open development, responsive to users and contributors alike. + +In addition to contributors of all sorts, a variety of related projects keep us on our toes. We would also like to thank everyone who has cited Open Babel in academic and technical literature, posters, and presentations. + +.. rubric:: Credits (in alphabetical order) + +.. hlist:: + :columns: 3 + + - Rich Apodaca + - Joshua Ballanco + - Michael Banck + - Ross Braithwaite + - Daniil Bratashov + - Francesco Bresciani + - Jean Brefort + - Alex Clark + - Joe Corkery + - Steve Constable + - Donald Curtis + - Andrew Dalke + - Daen de Leon + - Menno Deij + - Christian Ehrlicher + - Nick England + - Vincent Favre-Nicolin + - Maxim Fedorovsky + - Fabien Fontaine + - Malcolm Gillies + - Richard Gillilan + - Brian Goldman + - Rajarshi Guha + - Richard Hall + - Bob Hanson + - Marcus Hanwell + - Tommi Hassinen + - Bryan Herger + - David Hoekman + - Geoffrey Hutchison + - Beno\ |icirc|\ t Jacob + - Craig James + - Mikael Johansson + - Stefan Kebekus + - Elmar Krieger + - Erik Kruus + - Daniel Leidert + - Christian Laggner + - Greg Landrum + - Eugene Leitl + - Teng Lin + - Zhiguo Liu + - Daniel Mansfield + - David Mathog + - Gerde Menche + - Dominik Mierzejewski + - Chris Morley + - Paul Mortenson + - Peter Murray-Rust + - Carsten Niehaus + - Anthony Nicholls + - Noel O'Boyle + - Sergei Patchkovskii + - Frank Peters + - Steffen Reith + - Louis Richard + - Roger Sayle + - Ernst-Georg Schmid + - Ajay Shah + - Kevin Shepherd + - Sangwoo Shim + - Andrew Smellie + - Matt Sprague + - Matt Stahl + - Chris Swain + - S Joshua Swamidass + - Bob Tolbert + - Sergey Trepalin + - Tim Vandermeersch + - Ugo Varetto + - Martin Vogt + - Izhar Wallach + - Fredrik Wallner + - Pat Walters + - Pawel Wolinski + - Joerg Kurt Wegner + +There are probably many more who have contributed to Babel, OBabel, OELib or directly to Open Babel who are not listed here. Please help us keep this list updated. THANKS! diff --git a/_sources/docs/README.rst.txt b/_sources/docs/README.rst.txt new file mode 100644 index 00000000..586ba5ff --- /dev/null +++ b/_sources/docs/README.rst.txt @@ -0,0 +1,39 @@ +Open Babel user documentation +============================= + +The Open Babel user documentation is generated from the text files in this project. + +The source files have extension ``.rst``, indicating reStructuredText, a simple markup language widely used in the Python community and becoming more generally popular due to Sphinx, the documentation system that we are using here. + +Editing the docs +---------------- + +Before editing the docs, you need to create a Github account and send me (baoilleach) the account name. Then I will add you to the list of 'collaborators'. + +Github provides previews of reST documentation, which makes it easy to edit the docs directly on the github website. Alternatively, you can check out the repository and edit it locally. Note that Windows users should set ``autocrlf=true`` as described in the Github tutorials. + +Building the docs +----------------- + +To build the docs yourself, you should install a recent version of Sphinx (works for me with 1.8.5): + +(1) Sphinx has several dependencies so it is most easily installed using Python's package managers. I recommend that you create a virtualenv and install Sphinx within that:: + + $ virtualenv myenv + $ source myenv/bin/activate + (myenv) $ pip install Sphinx + +(2) You also need to install the doxylink extension:: + + (myenv) $ pip install sphinxcontrib-doxylink + +(3) To build the documentation, type ``make html`` or ``make latex``. + +(4) To correct errors in the generated HTML and LaTeX, type ``python FixHTML.py``. + +Automatic generation +-------------------- + +Within a few seconds, updated docs will be available at https://open-babel.readthedocs.io/en/latest/. Note that these docs are missing the links to the C++ documentation and to Pybel. + +The complete docs are automatically generated once an hour (on the hour) from the latest source, and are available at http://openbabel.org/docs/dev. diff --git a/_sources/docs/ReleaseNotes/index.rst.txt b/_sources/docs/ReleaseNotes/index.rst.txt new file mode 100644 index 00000000..38cde78e --- /dev/null +++ b/_sources/docs/ReleaseNotes/index.rst.txt @@ -0,0 +1,26 @@ +.. _release notes: + +Release Notes +============= + +.. toctree:: + :maxdepth: 2 + + ob301.rst + ob300.rst + ob240.rst + ob231.rst + ob230.rst + ob223.rst + ob222.rst + ob221.rst + ob220.rst + ob211.rst + ob210.rst + ob202.rst + ob201.rst + ob200.rst + ob1.100.2.rst + ob1.100.1.rst + ob1.100.0.rst + ob1.99.rst diff --git a/_sources/docs/ReleaseNotes/ob1.100.0.rst.txt b/_sources/docs/ReleaseNotes/ob1.100.0.rst.txt new file mode 100644 index 00000000..7e135c52 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob1.100.0.rst.txt @@ -0,0 +1,30 @@ +Open Babel 1.100.0 +================== + +Released on 2002-12-12. + +What's new from 1.99 +~~~~~~~~~~~~~~~~~~~~ + + - Bond order typing is performed when importing from formats with no notion of + bonds (quantum chemistry programs, XYZ, etc.). -Now better conforms to the ISO + C++ standard, should compile on most modern C++ compilers. + - Improved test suite, including "roundtrip" testing, ensuring more accurate translations. + - Support for the Chemical Markup Language (CML) and other file formats. (see below) + - Improved PDB support -- should read PDB files more accurately and hew closer to the current PDB standard for export. + - Improved Gaussian input generation. + - Added support for the Chemical MIME standards, including command-line switches. + - Added support for using the babel program as a pipe for a "translation filter" for other programs. + - Can add hydrogen atoms based on pH. + - Fixed a variety of memory leaks, sometimes causing other bugs. + - Fixed a wide variety of bugs in various file formats. + - Faster SMARTS matching and some overall speedups across the program. + - API documentation using the Doxygen system. + - Of course there are *many* other bug-fixes and improvements. + +New File Formats +~~~~~~~~~~~~~~~~ + + -Import: NWChem Output + -Export: POV-Ray, NWChem Input + -Both: CML, ViewMol, Chem3D diff --git a/_sources/docs/ReleaseNotes/ob1.100.1.rst.txt b/_sources/docs/ReleaseNotes/ob1.100.1.rst.txt new file mode 100644 index 00000000..2da3e432 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob1.100.1.rst.txt @@ -0,0 +1,37 @@ +Open Babel 1.100.1 +================== + +Released on 2003-6-24. + +What's new from 1.100.0 +~~~~~~~~~~~~~~~~~~~~~~~ + + - Much better bond typing overall for files converted from formats + without bond information (e.g. XYZ, QM codes). Fixed some bugs in + 1.100.1 and added additional improvments. + - Support for the command-line "babel" program to convert some or + all structures in a file with multiple molecules. By default this + version will convert all molecules in a file. To change this, use + the -f and -l command-line options as documented in the man page. + - Isotope support, including exact masses in the "report" file + format and SMILES data. + - Updated API documentation. + - Support for the Borland C++ compiler. + - Fixed a variety of bugs in the PDB file format support, including + better bond typing. + - Support for output of residue information in the Sybyl Mol2 file + format. + - Some support for conversion of unit cell information, both in the + library and in some file formats (i.e. DMol3, Cacao). + - Coordinates now use double-precision floating point libraries for + greater accuracy in conversions. + - Fixed a variety of bugs uncovered in roundtrip testing. + - Fixed a bug when attempting to perceive bond information on 2D + structures. + - Fixed several rare bugs that could cause segmentation faults. + +New File Formats +~~~~~~~~~~~~~~~~ + + -Import: ShelX + -Export: ZINDO input diff --git a/_sources/docs/ReleaseNotes/ob1.100.2.rst.txt b/_sources/docs/ReleaseNotes/ob1.100.2.rst.txt new file mode 100644 index 00000000..346000c6 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob1.100.2.rst.txt @@ -0,0 +1,38 @@ +Open Babel 1.100.2 +================== + +Released on 2004-02-22. + +What's new from 1.100.1 +~~~~~~~~~~~~~~~~~~~~~~~ + + - Shared library (version 0:0:0) built by default on POSIX systems + (e.g. Linux, BSD, Mac OS X...) + - Fixed installation of header files. The headers in the math/ + subdirectory were not installed alongside the other headers. + - Added tools/ directory with small examples of using libopenbabel: + * obgrep: Use SMARTS patterns to grep through multi-molecule files. + * obfit: Use SMARTS patterns to align molecules on substructures. + * obrotate: Rotate a torsional bond matching a SMARTS pattern. + - Improved PDB support: uses HETATM records more appropriately, attempts to + determine chain/residue information if not available. + - Fixed a variety of bugs in ShelX support. + - Added support for handling atom and molecule spin multiplicity. + - Updated documentation -- not yet complete, but significantly improved. + - Fixed major omissions in CML readers and writers. All versions of CML are now + supported (CML1/2 and array/nonArray). Also added \*.bat + file for roundtripping between these formats for both 2- and 3-D data. + Fixed bugs in test/cmltest/cs2a.mol.cml. + - Building and running the test-suite in a build-directory other than the + source-directory is now fully supported. + - Support for the Intel C++ Compiler on GNU/Linux. + - Miscellaneous fixes to make it easier to compile on non-POSIX machines. + +New File Formats +~~~~~~~~~~~~~~~~ + + -Export: Chemtool + Chemical Resource Kit (CRK) 2D and 3D + Parallel Quantum Solutions (PQS) + -Import: CRK 2D and 3D + PQS diff --git a/_sources/docs/ReleaseNotes/ob1.99.rst.txt b/_sources/docs/ReleaseNotes/ob1.99.rst.txt new file mode 100644 index 00000000..52b4bdbb --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob1.99.rst.txt @@ -0,0 +1,10 @@ +Open Babel 1.99 +=============== + +Released on 2002-1-29. + +The Open Babel team is pleased to announce the release of Open Babel 1.99, a first beta release for the 2.0 version of the free, open-source replacement for the Babel chemistry file translation program. + +At the moment, the beta release is not a drop-in replacement for babel as some file formats are not implemented and bond orders are not calculated for QM file formats. + +Open Babel includes two components, a command-line utility and a C++ library. The command-line utility is intended to be used as a replacement for the original babel program, to translate between various chemical file formats. The C++ library includes all of the file-translation code as well as a wide variety of utilities to foster development of other open source chemistry software. diff --git a/_sources/docs/ReleaseNotes/ob200.rst.txt b/_sources/docs/ReleaseNotes/ob200.rst.txt new file mode 100644 index 00000000..2120f44e --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob200.rst.txt @@ -0,0 +1,79 @@ +Open Babel 2.0 +============== + +Released on 2005-11-26. + +What's new from 1.100.2 +~~~~~~~~~~~~~~~~~~~~~~~ + +This release represents Open Babel's fourth "birthday" and a milestone for +a stable, flexible interface for developers and users alike. + +- New conversion framework. The new framework allows dynamic + loading/unloading of file translator modules (i.e., shared + libraries, DLLs, DSO, etc.). More importantly, it facilitates adding + new formats, since each format is self-contained and no editing of + other files is required. +- Improved support for XML chemistry formats, including CML, PubChem XML, +- Support for fingerprinting and calculation of Tanimoto coefficients for + similarity consideration. + (A flexible fingerprint framework is available for developers.) +- New support for Perl and Python "wrappers" of the Open Babel library. +- Many enhancements to the Open Babel API: See the Developers API Notes for + more information. Some code will require updating, see the + Developer's Migration Guide for details. +- Support for automatically reading .gz compressed files. + (e.g., 1abc.pdb.gz is uncompressed and treated as a PDB file) + Use of the -z flag creates gzip-compressed output files. +- Support for the new IUPAC InChI identifiers. +- Improved bond order typing, including flexible SMARTS matching in + bondtyp.txt. +- New Kekulization routine -- improves aromaticity detection in aromatic amines + like pyrroles, porphyrins, etc. +- Improved support for radicals and spin multiplicity, including + assignment of hydrogens to radicals. +- Improved support for 2D vs. 3D file formats. +- New error logging framework keeps an "audit log" of changes to files + (hydrogen addition, bond order assignment) and different levels of + error reporting / debugging. + Use the "---errorlevel 4" flag to access this information. +- Improved atom typing and hydrogen addition rules. +- Improved obfit utility will output RMSD and find matches with the + best RMSD. +- Updated isotope data from 2003 IUPAC standard. +- Updated elemental data from the Blue Obelisk Data Repository. + (project started, in part, to validate the old Open Babel data) +- Improved z-matrix code (CartesianToInternal / InternalToCartesian). +- Countless bug fixes. + +New File Formats +~~~~~~~~~~~~~~~~ + +- Import & Export: + ChemDraw CT (Connection Table) + CML Reaction files + MDL Molfile V3000 + MDL Rxn files + Open Babel free-form fractional (crystallographic coordinates) + Open Babel fastsearch database format + Open Babel fingerprint formats + PCModel format + YASARA.org YOB format + Turbomole + Improved CML support + Improved Gaussian 98/03 support + Improved SMILES import / export +- Import-Only: + PubChem XML +- Export-Only: + MPQC input + Open Babel "copy" format (i.e., copy the raw input file) + Sybyl MPD descriptor format + IUPAC InChI descriptor +- Changed formats: + - MMADS - eliminated + - bin - OpenEye binary v 1, eliminated + - GROMOS96 - changed from separate g96a & g96nm types to a + unified g96 type. Defaults to output Angstroms, Use -xn + to output nm. + - Titles - eliminated -- can be produced with SMILES -xt diff --git a/_sources/docs/ReleaseNotes/ob201.rst.txt b/_sources/docs/ReleaseNotes/ob201.rst.txt new file mode 100644 index 00000000..4d4eaf25 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob201.rst.txt @@ -0,0 +1,27 @@ +Open Babel 2.0.1 +================ + +Released on 2006-04-17. + +What's new from 2.0.0 +~~~~~~~~~~~~~~~~~~~~~ + +- Support for dynamic building on the Cygwin environment. This fixes a + long-standing problem that made Open Babel useless to Cygwin users. +- Fixed a variety of memory leaks and improved overall memory use. + More work to reduce memory consumption is underway for the 2.1 release. +- Improved Perl and Python scripting wrappers, including many + bug-fixes. +- Fixes to the "make check" test suite, which should prevent problems + running before babel is installed. +- Fixes compilation problems with AIX, Fedora Core 4, and the + newly-released GCC-4.1. +- Fixed several reported compilation problems with Windows builds + using VisualC++. +- Fixed several reported crashes. +- Fixed problems with the Turbomole format, thanks to Mikael + Johansson. +- Fixed a bug with PDB files with coordinates < -1000 Ang. +- Improved support for the Sybyl mol2 format, thanks to Kevin Parkes. +- Fixed a variety of typos in the API documentation. +- Countless bug fixes. diff --git a/_sources/docs/ReleaseNotes/ob202.rst.txt b/_sources/docs/ReleaseNotes/ob202.rst.txt new file mode 100644 index 00000000..8103e3a0 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob202.rst.txt @@ -0,0 +1,18 @@ +Open Babel 2.0.2 +================ + +Released on 2006-07-24. + +What's new from 2.0.1 +~~~~~~~~~~~~~~~~~~~~~ + +- Substantial fixes to the SMILES and SMARTS parsing support, thanks + to a variety of bug reports. +- A variety of fixes to aromaticity perception and Kekule form + assignment. +- Fixed gzip support, broken in version 2.0.1 inadvertantly. +- Output a warning when a multi-molecule files is converted to a + single-molecule format. +- Better support for command-line tools such as obgrep on Cygwin. +- Fixed a variety of crashes. +- Countless other bug fixes. diff --git a/_sources/docs/ReleaseNotes/ob210.rst.txt b/_sources/docs/ReleaseNotes/ob210.rst.txt new file mode 100644 index 00000000..5e3cd0a8 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob210.rst.txt @@ -0,0 +1,61 @@ +Open Babel 2.1.0 +================ + +Released on 2007-04-07. + +What's new from 2.0.2 +~~~~~~~~~~~~~~~~~~~~~ + +- Now handles molecules with >65536 atoms or bonds. Some PDB entries, + in particular have such large molecular systems. +- New features for molecular mechanics force fields, including energy + evaluation and geometry optimization. Ultimately, this will enable + coordinate generation and refinement for SMILES and other formats. + (A flexible force field framework is available for developers.) +- Implementation of the open source Ghemical all atom force field. +- Framework for canonical atom numbering, including a new canonical + SMILES format. +- New support for Ruby and Java interfaces to the Open Babel library. +- Improved scripting interfaces through Perl and Python, including the new "pybel" + module with a more Python-like syntax. +- Automatically handles reading from text files with DOS or Mac OS 9 + line endings. +- Many enhancements to the Open Babel API: See the Developers API Notes for + more information. +- New obenergy tool - evaluate the energy of a molecule using + molecular mechanics. +- New obminimize tool - optimize the geometry of structures using + molecular mechanics. +- Improved obprop tool - outputs a variety of molecular properties including + Topological Polar Surface Area (TPSA), Molar Refractivity (MR), and logP. +- The babel tool can now setting program keywords for some quantum mechanics + formats from the command-line, including: GAMESS, Gaussian, Q-Chem, and + MOPAC. (This feature can also be accessed by developers and + expanded to other formats.) +- New options for babel tool, including: + -e for continuing after errors + -k for translating computational keywords (e.g., GAMESS, Gaussian, etc.) + --join to join all input molecules into a single output + --separate to separate disconnected fragments into separate molecular records + -C (combine mols in first file with others having the same name) + --property to add or replace a property (e.g., in an MDL SD file) + --title to add or replace the molecule title + --addtotitle to append text to the current molecule title + --addformula to append the molecular formula to the current title +- Many more bug fixes and small feature improvements. + +New File Formats +~~~~~~~~~~~~~~~~ + + Import & Export: + Carine's ASCII Crystal (ACR) + ChemDraw CDX & CDXML + Crystallographic Interchange Format (CIF) + Fasta Sequence + Thermo Format + Import: + Gaussian fchk + InChI + Export: + Open Babel MolReport + Titles diff --git a/_sources/docs/ReleaseNotes/ob211.rst.txt b/_sources/docs/ReleaseNotes/ob211.rst.txt new file mode 100644 index 00000000..4949d2e1 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob211.rst.txt @@ -0,0 +1,32 @@ +Open Babel 2.1.1 +================ + +Released on 2007-07-07. + +What's new from 2.1.0 +~~~~~~~~~~~~~~~~~~~~~ + +- Improved scripting support, including dictionary-support for + OBGenericData in pybel, casting from OBUnitCell, etc. Improved + access to OBRings from OBMol.GetSSSR(). +- Added support for descriptors (e.g., PSA, logP) from scripting + interfaces. +- Added support for reading all PDB records (beyond current atom and + bond connections). Records not handled directly by Open Babel are + added as key/value pairs through OBPairData. +- Added a new configure flag --with-pkglibdir to allow Linux package + distributors to define version-specific directories for file format + plugins. +- Fixed a bug which would not output chirality information for + canonical SMILES with 3D files. +- Fixed problems with new line-ending code. Now correctly reads DOS + and old Mac OS files with non-UNIX line endings. +- Correctly rejects SMILES with incorrect ring closures. Thanks to + Craig James for the report. +- Fixed a crash when output to canonical SMILES. +- Fixed a crash when converting from SMILES to InChI. +- Fixed a crash when reading some PDB files on Windows. +- Fixed a crash when reading invalid MDL/SDF files. +- Fixed a bug which made it impossible to read some GAMESS files. +- Fixed a problem when reading ChemDraw CDX files on Mac OS X. +- A large number of additional fixes, including some rare crashes. diff --git a/_sources/docs/ReleaseNotes/ob220.rst.txt b/_sources/docs/ReleaseNotes/ob220.rst.txt new file mode 100644 index 00000000..c249689b --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob220.rst.txt @@ -0,0 +1,75 @@ +Open Babel 2.2.0 +================ + +Released on 2008-07-04. + +What's new from 2.1.1 +~~~~~~~~~~~~~~~~~~~~~ + +- New support for 3D coordinate generation using the OBBuilder class. + Note that this code directly supports non-chiral compounds + Stereochemistry may or may not be supported in this release +- Significantly faster force fields (up to 200x faster) and support + for constrained optimization. +- New force fields, including complete UFF, MMFF94, and MMFF94s implementations. +- Monte Carlo conformer search support, including a new obconformer tool. +- Unified framework for plugin classes, including easy-to program file + formats, descriptors, filters, force fields, fingerprints, etc. +- A new "descriptor" plugin framework for QSAR descriptors, etc. + Initial descriptors include hydrogen-bond donors, acceptors, + octanol/water partition, topological polar surface area, molar + refractivity, molecular weight, InChI, SMARTS, titles, Lipinski + Rule of Five, etc. +- A new "filter" plugin framework for selecting molecules by title, + molecular weight, etc. +- Facility to add new "ops", commandline options or operations on the + conversion process as plugin code. + Initial operations include 3D coordinate generation, tautomer + standarization, and addition of polar hydrogens. +- Code for integrating Open Babel and the BOOST graph library. +- Improved scripting support, including new bindings for C# and + improved Java, Ruby, Python, and Perl bindings. +- Space group support and thoroughly revised and improved CIF format. +- Initial support for 3D point group symmetry perception. +- Improved support for "grids" or "cubes" of molecular data, such as + from quantum mechanics programs. (See below for supported file + formats.) +- Initial support for reading trajectories and animations. +- Improved support for reaction formats, including CML, RXN, and + Reaction SMILES. +- Improved residue handling in PDB and Mol2 formats. +- Improved pH-dependent hydrogen addition. +- Latest released version of the InChI library, including use of the + latest "preferred" options for InChI generation. +- Support for the cross-platform CMake build system. +- File format modules are now installed in a version-specific + directory on unix, preventing problems between 2.2.x and 2.1.x (or + older) plugin libraries. +- Framework to support "aliases" for group abbreviations, partially + implemented for MDL formats. +- Many more bug fixes and small feature improvements. + +New File Formats +~~~~~~~~~~~~~~~~ + +Import & Export: + Chemkin + Gaussian Cube + Gaussian Z-matrix + GROMACS xtc trajectories + MCDL + mmCIF + OpenDX cube (e.g., from APBS) + Reaction SMILES +Import only: + Accelrys/MSI Cerius II MSI text format + ADF output + ADF Tape41 ASCII data + GAMESS-UK input and output + Molden structure + PNG (for embedded chemical data) + PQR +Export only: + MSMS input + ADF input + InChI Keys diff --git a/_sources/docs/ReleaseNotes/ob221.rst.txt b/_sources/docs/ReleaseNotes/ob221.rst.txt new file mode 100644 index 00000000..d3f9d1ef --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob221.rst.txt @@ -0,0 +1,31 @@ +Open Babel 2.2.1 +================ + +Released on 2009-03-01. + +What's new from 2.2.0 +~~~~~~~~~~~~~~~~~~~~~ + +This release represents a major bug-fix release and is a stable +upgrade, strongly recommended for all users of Open Babel. While there +may not be many new features, many crashes and other bugs have been +fixed since 2.2.0. + +- Improved scripting interfaces, including Python 3 support and improved + Java and C# support. +- Added support for MACCS fingerprints. Thanks to the RDKit project. +- Many fixes and enhancements to the force field code. In particular, + the UFF force field implementation should handle many more molecules. +- Improved 3D coordinate generation, particularly with ring + fragments. You can give this a try with the obgen utility. +- Fixed a variety of PDB import errors with atom types. +- Added support for reading charges and radii from PQR file formats. +- Added support for reading and writing unit cells in PDB formats. +- New "output" file format for taking generic ".out", ".log", and + ".dat" files and reading with appropriate file type based on + contents. Currently works extremely well for quantum chemistry + packages. +- Added improved error handling and reporting when unable to load file + formats. +- Improved CIF file format support. +- Many, many, many additional bug fixes and small enhancements. diff --git a/_sources/docs/ReleaseNotes/ob222.rst.txt b/_sources/docs/ReleaseNotes/ob222.rst.txt new file mode 100644 index 00000000..eef87f58 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob222.rst.txt @@ -0,0 +1,40 @@ +Open Babel 2.2.2 +================ + +Released on 2009-07-04. + +What's new from 2.2.1 +~~~~~~~~~~~~~~~~~~~~~ + +This release represents a major bug-fix release and is a stable +upgrade, strongly recommended for all users of Open Babel. While there +may not be many new features, many crashes and other bugs have been +fixed since 2.2.1. + +- Upgraded to the new InChI 1.02 release to produce standardized InChI + and InChIKey output. +- Fixed many stereochemistry errors when reading/writing SMILES. This + is part of a larger project which will be finished in the 2.3 + release. +- Fixed compilation and installation on Cygwin and MinGW platforms. +- Significantly improved aromaticity and Kekule bond assignment. +- Improved 2D -> 3D coordinate generation +- Improved coordinate generation using the --gen3d command-line + operation +- Improved performance for coordinate generation. +- New --fillUC command-line operation for babel. +- Fixes to pH-dependent hydrogen addition. +- Added support for reading vibrational data from Molden, Molpro, and + NWChem output files. +- Updated atomic radii from recent theoretical calculations. +- Fixed bug when reading gzip-compressed Mol2 or XML files. +- Close files after an error. Fixes a bug with Pybel where files would + remain open. +- Many more bug fixes and small feature improvements. + +New File Formats +~~~~~~~~~~~~~~~~ + +Import & Export: +- Molpro input and output. +- VASP coordinate files (CONTCAR and POSCAR). diff --git a/_sources/docs/ReleaseNotes/ob223.rst.txt b/_sources/docs/ReleaseNotes/ob223.rst.txt new file mode 100644 index 00000000..190db6ca --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob223.rst.txt @@ -0,0 +1,17 @@ +Open Babel 2.2.3 +================ + +Released on 2009-07-31. + +What's new from 2.2.2 +~~~~~~~~~~~~~~~~~~~~~ + +This release represents an important bug-fix upgrade, strongly recommended +for all users of Open Babel. + +- Fixed bug in fingerprints in 2.2.2, where the default fingerprint + format and bit length was changed inadvertently. +- Fixed detection of shared_ptr in tr1/memory. +- Fixed additional aromaticity / Kekule assignment bugs. +- Fixed several bugs in the MMCIF format. +- Additional bug fixes. diff --git a/_sources/docs/ReleaseNotes/ob230.rst.txt b/_sources/docs/ReleaseNotes/ob230.rst.txt new file mode 100644 index 00000000..53246f3c --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob230.rst.txt @@ -0,0 +1,71 @@ +Open Babel 2.3.0 +================ + +Released on 2010-10-23. + +This release represents a major update and should be a stable upgrade, +strongly recommended for all users of Open Babel. Highlights include a +completely rewritten stereochemistry engine, Spectrophore fingerprint +generation, 2D depiction, improved 3D coordinate generation, conformer +searching, and more. Many formats are improved or added, including +CIF, PDBQT, SVG, and more. Improved developer API and scripting +support and many, many bug fixes are also included. + +What's new from 2.2.3 +~~~~~~~~~~~~~~~~~~~~~ + +* Completely rewritten stereochemistry perception, including support + for tetrahedral, square planar, and higher-order stereochemistry. +* Dramatically improved canonicalization algorithm (Note that in general, canonical SMILES have changed since the 2.2.x release.) +* 2D depiction, including SVG vector graphics generation using code from MCDL. +* New Spectrophore generation, contributed by Silicos NV. +* New ChargeMethod API including support for partial charge assignment + from Gasteiger, MMFF94, QEq, QTPIE methods and plugin interface for + adding more. +* Improved 3D coordinate generation. +* New conformer generation framework, including support for diverse + conformer generation and genetic algorithm lowest-energy searching. +* Improved user documentation. +* Improved aromaticity / Kekule bond assignment. +* Improved unit test suite using the CMake-based CTest program. +* Improved support for crystallographic unit cells (e.g., in CIF format). +* Improved UFF force field method, including hypervalent 5, 6, 7 and higher coordination numbers. +* Support for the GAFF (Generalized Amber Force Field) method. +* Support for reading geometry optimizations as multiple conformers + from Gaussian, GAMESS-US, and other quantum chemistry packages. +* Support for reading molecular orbital energies from quantum chemistry formats. +* Several memory leaks fixed. +* Fixed many compiler warnings. +* Fixed support for MinGW and Cygwin environments. +* Fixed bugs with Gaussian 09 output files. +* Latest released version of the InChI library (1.0.3) generating standard InChI. +* Many more bug fixes and small feature improvements. + +New Command-Line Operations +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* --canonical: Output atoms in canonical order for any file format (i.e., not just SMILES) +* --conformer: Run a conformer search on the input molecules (has many options) +* --gen2D: Generate a 2D depiction of the molecule +* --partialcharge <model>: Use the partial charge model supplied to + generate charges (i.e., instead of default Gasteiger sigma model) +* --sort <descriptor>: Sort molecules by a specified descriptor +* --unique: Only output unique molecules (as determined by InChI generation) + +New File Formats +~~~~~~~~~~~~~~~~ + +Import & Export: +- DL-POLY CONFIG +- FHIaims XYZ +- PDBQT + +Import only: +- DL-POLY HISTORY +- GULP output +- PWscf output +- Text + +Export only: +- MNA (Multilevel Neighborhoods of Atoms) +- SVG vector graphics diff --git a/_sources/docs/ReleaseNotes/ob231.rst.txt b/_sources/docs/ReleaseNotes/ob231.rst.txt new file mode 100644 index 00000000..5a783726 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob231.rst.txt @@ -0,0 +1,48 @@ +Open Babel 2.3.1 +================ + +Released on 2011-10-14. + +This release represents a major bug-fix release and is a stable upgrade, strongly recommended for all users of Open Babel. Many bugs and enhancements have been added since the 2.3.0 release. + +After 10 years, we finally published a paper discussing Open Babel. Please consider citing this work if you publish work which used Open Babel: Noel M. O'Boyle , Michael Banck , Craig A. James , Chris Morley , Tim Vandermeersch and Geoffrey R. Hutchison. "Open Babel: An open chemical toolbox." Journal of Cheminformatics 2011, 3:33. http://www.jcheminf.com/content/3/1/33 + +What's new from 2.3.0 +~~~~~~~~~~~~~~~~~~~~~ + +* Better support for unknown stereochemistry, including a "wobbly" bond in 2D depiction. +* Many fixes for rare bugs with stereochemical conversions, including unusual valences. +* Significantly improved 2D depiction code, improving performance and cis/trans stereochemical accuracy +* Added support for direct 2D depiction to PNG files using the Cairo library, if available. +* PNG files from Open Babel contain molecular information and can be read to give the MDL Molfile. +* SVG files with 2D depiction can now include a grid of molecules with embedded JavaScript to zoom and scroll. +* Molecular formulas now include the total charge (e.g., HCO2-) +* Added the EEM partial charge model from Bultinck, et. al. +* Fixed problems with FastSearch databases larger than 4GB, now checking for large files. +* Improved performance with force field minimization, particularly the UFF and GAFF methods. +* Several MMFF94 atom typing bugs fixed. +* Updated GAFF parameters from the AmberTools distribution. +* Improvements in 3D coordinate generation, particularly more accurate sp3 bond angles +* Fixed tests for auto-typing molecules with force fields when running through different isomers. +* Improvements in scripting bindings, particularly Python, Ruby, and Java +* Pybel now uses the built-in 2D depiction, and no longer needs OASA. +* Added initial support for MM3 atom typing with the Tinker package +* Significant bug fixes for the PDBQT format. +* Reading FASTA files can now generate 3D coordinates for single-stranded DNA in addition to the default double-strand. +* Support for reading/writing unit cell information from MOPAC files. +* Support for re-numbering SMILES by specifying the first and last atoms with -xf and -xl flags. +* Better support for InChI -> InChI key generation by direct conversion, rather than re-perception of the InChI. +* Fix for rare stack overflow crash in SMARTS perception. +* Improved UNIX man pages. +* Many bug fixes and small enhancements + +New File Formats +~~~~~~~~~~~~~~~~ + +* Import and Export: +** Gromacs GRO +* Import: +** ABINIT +** XCrySDen XSF +* Export: +** InChI Key diff --git a/_sources/docs/ReleaseNotes/ob240.rst.txt b/_sources/docs/ReleaseNotes/ob240.rst.txt new file mode 100644 index 00000000..7d6a0e00 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob240.rst.txt @@ -0,0 +1,107 @@ +Open Babel 2.4.0 +================ + +Released on 2016-09-21. + +Note that this release deprecates the babel executable in favor of obabel. A future release will remove babel entirely. For information on the differences, please see http://openbabel.org/docs/current/Command-line_tools/babel.html. + +New file formats +~~~~~~~~~~~~~~~~ + +* DALTON output files (read only) and DALTON input files (read/write) (Casper Steinmann) +* JSON format used by ChemDoodle (read/write) (Matt Swain) +* JSON format used by PubChem (read/write) (Matt Swain) +* LPMD's atomic configuration file (read/write) (Joaquin Peralta) +* The format used by the CONTFF and POSFF files in MDFF (read/write) (Kirill Okhotnikov) +* ORCA output files (read only) and ORCA input files (write only) (Dagmar Lenk) +* ORCA-AICCM's extended XYZ format (read/write) (Dagmar Lenk) +* Painter format for custom 2D depictions (write only) (Noel O'Boyle) +* Siesta output files (read only) (Patrick Avery) +* Smiley parser for parsing SMILES according to the OpenSMILES specification (read only) (Tim Vandermeersch) +* STL 3D-printing format (write only) (Matt Harvey) +* Turbomole AOFORCE output (read only) (Mathias Laurin) +* A representation of the VDW surface as a point cloud (write only) (Matt Harvey) + +New file format capabilities and options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* AutoDock PDBQT: Options to preserve hydrogens and/or atom names (Matt Harvey) +* CAR: Improved space group support in .car files (kartlee) +* CDXML: Read/write isotopes (Roger Sayle) +* CIF: Extract charges (Kirill Okhotnikov) +* CIF: Improved support for space-groups and symmetries (Alexandr Fonari) +* DL_Poly: Cell information is now read (Kirill Okhotnikov) +* Gaussian FCHK: Parse alpha and beta orbitals (Geoff Hutchison) +* Gaussian out: Extract true enthalpy of formation, quadrupole, polarizability tensor, electrostatic potential fitting points and potential values, and more (David van der Spoel) +* MDL Mol: Read in atom class information by default and optionally write it out (Roger Sayle) +* MDL Mol: Support added for ZBO, ZCH and HYD extensions (Matt Swain) +* MDL Mol: Implement the MDL valence model on reading (Roger Sayle) +* MDL SDF: Option to write out an ASCII depiction as a property (Noel O'Boyle) +* mmCIF: Improved mmCIF reading (Patrick Fuller) +* mmCIF: Support for atom occupancy and atom_type (Kirill Okhotnikov) +* Mol2: Option to read UCSF Dock scores (Maciej Wójcikowski) +* MOPAC: Read z-matrix data and parse (and prefer) ESP charges (Geoff Hutchison) +* NWChem: Support sequential calculations by optionally overwriting earlier ones (Dmitriy Fomichev) +* NWChem: Extract info on MEP(IRC), NEB and quadrupole moments (Dmitriy Fomichev) +* PDB: Read/write PDB insertion codes (Steffen Möller) +* PNG: Options to crop the margin, and control the background and bond colors (Fredrik Wallner) +* PQR: Use a stored atom radius (if present) in preference to the generic element radius (Zhixiong Zhao) +* PWSCF: Extend parsing of lattice vectors (David Lonie) +* PWSCF: Support newer versions, and the 'alat' term (Patrick Avery) +* SVG: Option to avoid addition of hydrogens to fill valence (Lee-Ping) +* SVG: Option to draw as ball-and-stick (Jean-Noël Avila) +* VASP: Vibration intensities are calculated (Christian Neiss, Mathias Laurin) +* VASP: Custom atom element sorting on writing (Kirill Okhotnikov) + +Other new features and improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* 2D layout: Improved the choice of which bonds to designate as hash/wedge bonds around a stereo center (Craig James) +* 3D builder: Use bond length corrections based on bond order from Pyykko and Atsumi (https://doi.org/10.1002/chem.200901472) (Geoff Hutchison) +* 3D generation: "--gen3d", allow user to specify the desired speed/quality (Geoff Hutchison) +* Aromaticity: Improved detection (Geoff Hutchison) +* Canonicalisation: Changed behaviour for multi-molecule SMILES. Now each molecule is canonicalized individually and then sorted. (Geoff Hutchison/Tim Vandermeersch) +* Charge models: "--print" writes the partial charges to standard output after calculation (Geoff Hutchison) +* Conformations: Confab, the systematic conformation generator, has been incorporated into Open Babel (David Hall/Noel O'Boyle) +* Conformations: Initial support for ring rotamer sampling (Geoff Hutchison) +* Conformer searching: Performance improvement by avoiding gradient calculation and optimising the default parameters (Geoff Hutchison) +* EEM charge model: Extend to use additional params from https://doi.org/10.1186/s13321-015-0107-1 (Tomáš Raček) +* FillUnitCell operation: Improved behavior (Patrick Fuller) +* Find duplicates: The "--duplicate" option can now return duplicates instead of just removing them (Chris Morley) +* GAFF forcefield: Atom types updated to match Wang et al. J. Comp. Chem. 2004, 25, 1157 (Mohammad Ghahremanpour) +* New charge model: EQeq crystal charge equilibration method (a speed-optimized crystal-focused charge estimator, http://pubs.acs.org/doi/abs/10.1021/jz3008485) (David Lonie) +* New charge model: "fromfile" reads partial charges from a named file (Matt Harvey) +* New conversion operation: "changecell", for changing cell dimensions (Kirill Okhotnikov) +* New command-line utility: "obthermo", for extracting thermochemistry data from QM calculations (David van der Spoel) +* New fingerprint: ECFP (Geoff Hutchison/Noel O'Boyle/Roger Sayle) +* OBConversion: Improvements and API changes to deal with a long-standing memory leak (David Koes) +* OBAtom::IsHBondAcceptor(): Definition updated to take into account the atom environment (Stefano Forli) +* Performance: Faster ring-finding algorithm (Roger Sayle) +* Performance: Faster fingerprint similarity calculations if compiled with -DOPTIMIZE_NATIVE=ON (Noel O'Boyle/Jeff Janes) +* SMARTS matching: The "-s" option now accepts an integer specifying the number of matches required (Chris Morley) +* UFF: Update to use traditional Rappe angle potential (Geoff Hutchison) + +Language bindings +~~~~~~~~~~~~~~~~~ + +* Bindings: Support compiling only the bindings against system libopenbabel (Reinis Danne) +* Java bindings: Add example Scala program using the Java bindings (Reinis Danne) +* New bindings: PHP (Maciej Wójcikowski) +* PHP bindings: BaPHPel, a simplified interface (Maciej Wójcikowski) +* Python bindings: Add 3D depiction support for Jupyter notebook (Patrick Fuller) +* Python bindings, Pybel: calccharges() and convertdbonds() added (Patrick Fuller, Björn Grüning) +* Python bindings, Pybel: compress output if filename ends with .gz (Maciej Wójcikowski) +* Python bindings, Pybel: Residue support (Maciej Wójcikowski) + +Development/Build/Install Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Version control: move to git and GitHub from subversion and SourceForge +* Continuous integration: Travis for Linux builds and Appveyor for Windows builds (David Lonie and Noel O'Boyle) +* Python installer: Improvements to the Python setup.py installer and "pip install openbabel" (David Hall, Matt Swain, Joshua Swamidass) +* Compilation speedup: Speed up compilation by combining the tests (Noel O'Boyle) +* MacOSX: Support compiling with libc++ on MacOSX (Matt Swain) + +Cast of contributors +~~~~~~~~~~~~~~~~~~~~ +Alexandr Fonari, Anders Steen Christensen, Andreas Kempe, arkose, Benoit Leblanc, Björn Grüning, Casper Steinmann, Chris Morley, Christoph Willing, Craig James, Dagmar Lenk, David Hall, David Koes, David Lonie, David van der Spoel, Dmitriy Fomichev, Fulvio Ciriaco, Fredrik Wallner, Geoff Hutchison, Heiko Becker, Itay Zandbank, Jean-Noel Avila, Jeff Janes, Joaquin Peralta, Joshua Swamidass, Julien Nabet, Karol Langner, Karthik Rajagopalan, Katsuhiko Nishimra, Kevin Horan, Kirill Okhotnikov, Lee-Ping, Matt Harvey, Maciej Wójcikowski, Marcus Hanwell, Mathias Laurin, Matt Swain, Mohamad Mohebifar, Mohammad Ghahremanpour, Noel O'Boyle, Patrick Avery, Patrick Fuller, Paul van Maaren, Peng Bai, Philipp Thiel, Reinis Danne, Ronald Cohen, Scott McKechnie, Stefano Forli, Steve Roughley, Steffen Moeller, Tim Vandermeersch, Tomas Racek, Tomáš Trnka, Tor Colvin, Torsten Sachse, Yi-Shu Tu, Zhixiong Zhao diff --git a/_sources/docs/ReleaseNotes/ob300.rst.txt b/_sources/docs/ReleaseNotes/ob300.rst.txt new file mode 100644 index 00000000..11583460 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob300.rst.txt @@ -0,0 +1,283 @@ +Open Babel 3.0.0 +================ + +Released on 2019-10-10. + +This is a major release. It fixes some long-standing issues affecting performance in terms of chemical accuracy and speed, and all users are recommended to upgrade. It also removes deprecated components and breaks the API in a few places. For information on migrating from the previous version, please see :ref:`migrating_to_3.0`. + +Notable changes +~~~~~~~~~~~~~~~ +* The babel program has been removed, and the replacement obabel should be used instead. The obabel program fixes some flaws with the original babel (not least that the user could accidentally overwrite an input file) and so has been preferred for many years. +* The Python bindings are now accessed via "from openbabel import pybel" or "from openbabel import openbabel". +* Under the hood, the code for handling implicit hydrogens and kekulization has been entirely replaced in order to address problems with the original approach that had resulted in multiple bug reports over the years. As well as being accurate, the new approach is much faster. +* The speed of reading and writing SMILES has been improved by more than 50-fold. +* A faster and more accurate fragment-based 3D coordinate generation code has been added, part of Google Summer of Code 2018 and 2019, detailed in `*J. Cheminf.* (2019) **11**, Art. 49.<https://doi.org/10.1186/s13321-019-0372-5>` +* New functionality in the API: + + - A new class for managing reactions stored as OBMols (OBReactionFacade) + - A new method to copy part of an OBMol into a new OBMol (OBMol::CopySubstructure) + +.. + is:pr is:merged created:>=2016-10-01 + is:pr is:merged created:>=2019-04-01 + is:pr is:merged created:>=2019-09-10 (on 2019-10-05) + +New file formats +~~~~~~~~~~~~~~~~ +* Add basic support for RInChI (Reaction InChI) (by baoilleach, PR#1667) +* Added basic ADF Band and ADF DFTB readers (by psavery, PR#1793) +* Add support for COF format (Culgi object file) plus tests (by pbecherer, PR#1944) +* Add maeparser support to openbabel (by lorton, PR#1993) + +New file format capabilities and options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Improve svg ball and stick (by ghutchis, PR#360) +* Add an option to the canonical SMILES format to specify the timeout. (by timvdm, PR#386) +* Allow to set space group origin in PDB CRYST1 section (by afonari, PR#1558) +* Parse _space_group_symop_operation_xyz in mmcif (by afonari, PR#1578) +* Improve performance of SMILES parser (by baoilleach, PR#1589) +* Handle undervalent atoms and radicals in Mol files and Smiles (by baoilleach, PR#1626) +* Add support for agents to RXN file format (by baoilleach, PR#1656) +* Allow RSMI format to read partial reactions (by baoilleach, PR#1660) +* Add support for %(NNN) notation for SMILES ring closures (by baoilleach, PR#1677) +* By default, don't perceive stereo when reading SMILES, but have the option (by baoilleach, PR#1696) +* Speed up the SMILES writer (by baoilleach, PR#1699) +* Faster SMILES: Replace std::endl by "\n" (by baoilleach, PR#1706) +* Speed up SMILES writer by replacement of SSSR in SMILES writer with a bounded BFS (by baoilleach, PR#1715) +* Speed up SMILES reading: don't pre-scan the SMILES string for illegal characters (by baoilleach, PR#1716) +* Minor speedup in SMILES: avoid repeated calls to IsOption by caching some options (by baoilleach, PR#1718) +* Read reaction map from ChemDraw CDX files (by CamAnNguyen, PR#1720) +* Two minor SMILES speed improvements (by baoilleach, PR#1725) +* Speed up SMILES reading: Moved more inside the switch statement for SMILES parsing (by baoilleach, PR#1727) +* Speed up SMILES reading: In the SMILES reader, avoid allocating a BUFSIZE buffer, and the associated string copy (by baoilleach, PR#1728) +* Speed up SMILES writing: Make generation of the SMILES atom order vector optional (by baoilleach, PR#1712) +* Add support for using atom classes as Tinker atom types. (by ghutchis, PR#1734) +* Gaussformat reading electrostatic potentials (by mmghahremanpour, PR#1748) +* Reading Exact Polairzability from Gaussian log file (by mmghahremanpour, PR#1751) +* Gaussformat reading multiple charge models (by mmghahremanpour, PR#1752) +* Write atom occupancy (if present) to PDB (by afonari, PR#1799) +* Update reaction support in ChemDraw (by baoilleach, PR#1878) +* ADF DFTB: Add new detection string for ADF 2018 (by psavery, PR#1888) +* Update Gaussian format (by e-kwsm, PR#1969) +* Update URLs of specification of gromacs (by e-kwsm, PR#1974) +* Update URL of specification of MDL MOL (by e-kwsm, PR#1980) +* Add SMILES support for elements specified by 3-digit number, e.g. [#101] (by baoilleach, PR#1997) + +Other new features and improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Include original when there are zero rotatable bonds in confab (by cowsandmilk, PR#370) +* Improve thread safety for global objects (by baoilleach, PR#381) +* Change the OBAromTyper from using SMARTS patterns to a switch statement (rebased) (by baoilleach, PR#1545) +* Keep count of implicit hydrogens instead of inferring them (by baoilleach, PR#1576) +* Obthermo update patch (by mmghahremanpour, PR#1598) +* Improve performance of element handling (by baoilleach, PR#1601) +* Implement the Daylight aromaticity model as described by John Mayfield (by baoilleach, PR#1638) +* Allow multiple agents in OBReaction (by baoilleach, PR#1640) +* Clarify python examples (by theavey, PR#1657) +* Add support for wrapping GetRGB() call to return r, g, b params. (by ghutchis, PR#1670) +* Adding missing manpages (by merkys, PR#1678) +* Expose obfunctions api through python bindings (by cstein, PR#1697) +* Avoid logging messages that are taking time (by baoilleach, PR#1714) +* warning/error messages for fastindex when the structure file is compressed (by adalke, PR#1733) +* Refactor atom class to being data on an atom rather than on a molecule (by baoilleach, PR#1741) +* Add Molecule.make2D function (by eloyfelix, PR#1765) +* Change the behavior of OBMol.Separate so that it preserves atom order (by baoilleach, PR#1773) +* When calling OBMol.Separate, preserve whether aromaticity has been perceived (by baoilleach, PR#1800) +* Add OBMol::CopySubstructure (by baoilleach, PR#1811) +* Add OBMol::SetChainsPerceived(false) (by baoilleach, PR#1813) +* Add stereo + obfunctions + kekulize to ruby binding (by CamAnNguyen, PR#1824) +* Generate useful error messages if plugins can't be found. (by dkoes, PR#1826) +* Allow public access to retrieve gradients (by ghutchis, PR#1833) +* Re-enable vector.clear() to allow wrapped std::vectors to be reused (by baoilleach, PR#1834) +* Implement reaction handling as part of OBMol (by baoilleach, PR#1836) +* Added rotors as a descriptor/filter. (by ghutchis, PR#1846) +* Keep aromaticity in EndModify() (by baoilleach, PR#1847) +* Fragment-based coordinate generation (by n-yoshikawa, PR#1850) +* Rebuild OBMM tool for interactive MM optimization (by ghutchis, PR#1873) +* Update fragment based builder (by n-yoshikawa, PR#1931) +* Refactor python bindings so that openbabel.py and pybel.py are within an openbabel folder (by baoilleach, PR#1946) +* Tidy setting/unsetting of molecule perception flags (by baoilleach, PR#1951) +* Remove outdated stereo code (by baoilleach, PR#1967) +* Remove OBBond::GetBO() and SetBO() (by baoilleach, PR#1953) +* Remove OBRandom from the public API (by baoilleach, PR#1954) +* Remove miscellanous headers from mol.h, atom.h and bond.h (by baoilleach, PR#1958) +* enhancements to obrms to support optimization of pose alignment (by dkoes, PR#1961) +* Remove GetGenericValueDef from OBGenericData (by baoilleach, PR#1964) +* Remove low-hanging deprecated methods (by baoilleach, PR#1968) +* Improve python script (by e-kwsm, PR#1970) +* Make `pybel.Outputfile` compatible with `with` statment (by yishutu, PR#1971) +* Obrms enhancement (by dkoes, PR#1978) +* Move to a single function for setting/unsetting bond and atom flags (by baoilleach, PR#1965) +* Rename/add valence and degree methods (by baoilleach, PR#1975) +* Do not stoke around the (svg) text (by Artoria2e5, PR#2012) +* Add a warning message when both -p and -h options are set (by yishutu, PR#2031) +* "Bye bye babel" - remove the babel binary (by baoilleach, PR#1976) +* Add force field support for dielectric constants in charge terms. (by ghutchis, PR#2022) + +Development/Build/Install Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Change default build type to RELEASE and add -O3 switch (by baoilleach, PR#352) +* Add a default issue template for Open Babel - Suggestions welcome (by ghutchis, PR#383) +* Compile position independent code for shared libraries. (by susilehtola, PR#1575) +* Introduce std:isnan for older versions of MSVC (by mwojcikowski, PR#1586) +* Prepend to LD_LIBRARY_PATH instead of overwrite (by barrymoo, PR#1588) +* Changes needed to compile with C++17 (by arkose, PR#1619) +* Compiler version parsing and comparison from CMake 2.8 (by cowsandmilk, PR#1630) +* Create CODE_OF_CONDUCT.md (by ghutchis, PR#1671) +* Clarify option needed to generate SWIG bindings. (by jeffjanes, PR#1686) +* Correct spelling of file name for Perl bindings (by jeffjanes, PR#1687) +* In the Python bindings, avoid adding methods from the iterated object to the iterator itself (by baoilleach, PR#1729) +* Ensure portability to ARM platforms (by baoilleach, PR#1744) +* Switch to rapidjson library for JSON parsing/writing (by mcs07, PR#1776) +* Fix linking of python bindings on Mac (by mcs07, PR#1807) +* Using pillow instead of PIL (by hille721, PR#1822) +* Ignore compile warnings on inchi directory. (by ghutchis, PR#1864) +* Compile project in Cygwin without xtcformat (by bbucior, PR#1894) +* Hyperlink DOIs to preferred resolver (by katrinleinweber, PR#1909) +* For Travis builds, include output for build failures (by baoilleach, PR#1959) +* Add __init__.py to gitignore (by yishutu, PR#1972) +* Ignore in-source installation (by RMeli, PR#2027) +* Add a GitHub funding link to the open collective page. (by ghutchis, PR#2042) + +Bug Fixes +~~~~~~~~~ +* Fix for missing ZLIB on win32 (by philthiel, PR#357) +* Depict headers were missing in the installation (by tgaudin, PR#359) +* Avoid IndexError for plugins with empty names (by langner, PR#361) +* Fixed a few errors in space-groups.txt (by psavery, PR#367) +* SF #909 - Fix segfault when ReadMolecule() called with PubChem document but file extension was generic .xml (by derekharmon, PR#369) +* Preserve triple bond when reading SMILES with a triple bond in an aromatic ring (by baoilleach, PR#371) +* Fix bug #368: Python3.6 openbabel: No module named 'DLFCN' (by hseara, PR#372) +* Fastsearch 64 fix (by dkoes, PR#1546) +* Don't try to install aromatic.txt as it is no longer present (by baoilleach, PR#1547) +* Make sure to add conformers *after* performing bond perception. (by ghutchis, PR#1549) +* Set default coordinates before doing bond perception. (by ghutchis, PR#1550) +* Ignore some non-functioning python SWIG bindings. (by djhogan, PR#1554) +* Remove delete statement. (by djhogan, PR#1556) +* Link libinchi with math library (by nsoranzo, PR#1564) +* Fix segfault in OBMol::GetSpacedFormula (by bbucior, PR#1565) +* Fix regression + minor cppcheck report (by serval2412, PR#1567) +* Convert tabs to spaces in testpdbformat.py (by adamjstewart, PR#1568) +* cppcheck: Condition '1==0' is always false (by serval2412, PR#1572) +* UFF: Fix conversion constant (by aandi, PR#1579) +* Remove the change in resonance structure from the vinylogous carboxylic acid pH model (by kyle-roberts-arzeda, PR#1580) +* Fix wedge/hash in cyclopropyl (by fredrikw, PR#1582) +* Fix multifragment depiction (by fredrikw, PR#1585) +* Fix wrong spin multiplicity assignment (by nakatamaho, PR#1592) +* Change silicon to correct MM3 atom type (by keipertk, PR#1593) +* Fix pubchem JSON handling of enum types as ints (by mcs07, PR#1596) +* Correct MM3 carboxyl oxygen atom type definition (by keipertk, PR#1599) +* Fix for calculating implicit H count when reading SMILES (by baoilleach, PR#1606) +* Fix some small misspellings in the csharp bindings (by cmanion, PR#1608) +* Tweak the handling of implicit Hs when reading SMILES (by baoilleach, PR#1609) +* Fix underflow causing a noticeable delay when e.g. writing a molfile (by baoilleach, PR#1610) +* Fix install regression with element data (by bbucior, PR#1617) +* Added some missing formats to the static build (by psavery, PR#1622) +* In SiestaFormat, print warnings to cerr (by psavery, PR#1623) +* For SIESTA format, use obErrorLog instead of cerr (by psavery, PR#1627) +* Correct the spelling of the Frerejacque number in a comment (by baoilleach, PR#1629) +* Lowercase second element letter in PDB and test (by cowsandmilk, PR#1631) +* Remove erroneous -1 in switch statement (by baoilleach, PR#1632) +* Make sure to handle molecular total charge by default for keywords (by ghutchis, PR#1634) +* Added fix for OBMolAtomBFSIter in Python3 (by oititov, PR#1637) +* space-groups.txt: correct Hall symbol for C -4 2 b (by wojdyr, PR#1645) +* Reset path to empty in kekulization code (potential segfault) (by baoilleach, PR#1650) +* Correct handling of stereo when writing InChIs (by baoilleach, PR#1652) +* ECFP Fixup (by johnmay, PR#1653) +* Fix "folding" for fingerprints to larger bit sizes - #1654. (by ghutchis, PR#1658) +* Fix reading atom symbols from XSF file (by sencer, PR#1663) +* Minor fixes in the nwchem format reader (by xomachine, PR#1666) +* use isinstance to test if filename is bytes (by cowsandmilk, PR#1673) +* Fix bug found due to MSVC warning (by baoilleach, PR#1674) +* Fix MSVC warning about unused variable (by baoilleach, PR#1675) +* Correct handling of atom maps (by baoilleach, PR#1698) +* Fix #1701 - a GCC compiler error (by baoilleach, PR#1704) +* Remove some audit messages (by baoilleach, PR#1707) +* Fix bug when copying stereo during obmol += obmolB (by baoilleach, PR#1719) +* Fix uninitialized read in kekulize.cpp found by Dr Memory. (by baoilleach, PR#1721) +* Fixes for ring closure parsing (by baoilleach, PR#1723) +* Make sure that OBAtom::IsInRing always triggers ring perception if not set as perceived (by baoilleach, PR#1724) +* Fix code error found from @baoilleach compiler warnings (by ghutchis, PR#1736) +* Fix Python3 compatibility (by ghutchis, PR#1737) +* Fix ChemDraw CDX incremental value (by CamAnNguyen, PR#1743) +* Fix error in VASPformat found by static code analysis (by baoilleach, PR#1745) +* Fix for 1731. Store atom classes in CML atomids by appending _ATOMCLASS. (by baoilleach, PR#1746) +* Fix GCC warnings (by baoilleach, PR#1747) +* Fix warning in fastsearch substructure fingerprint screen (by baoilleach, PR#1749) +* Fix #1684 - string comparison does not work with numeric sd titles (by cowsandmilk, PR#1750) +* Fixing minor things for reading ESP from log files (by mmghahremanpour, PR#1753) +* Fix #1569 - OB 2.4.1 loses the second molecule in a HIN file (by yishutu, PR#1755) +* Fix TESTDIR definition to allow space in path (by mcs07, PR#1757) +* Fix regression. Ensure that asterisk is unbracketed when writing a SMILES string (by baoilleach, PR#1759) +* Fix MSVC warning about type conversion (by baoilleach, PR#1762) +* Fix SMILES parsing fuzz test failures from AFL (by baoilleach, PR#1770) +* Fix warning about size_t versus int cast (by baoilleach, PR#1771) +* A small improvement of a bugfix solving segfault when reading GAMESS output with vibrations (by boryszef, PR#1772) +* In the Python bindings, reset the DL open flags after importing _openbabel (by baoilleach, PR#1775) +* fix cdxml stereo bonds (by JasonYCHuang, PR#1777) +* Install obabel target if using static build (by torcolvin, PR#1779) +* Fix #1769 by correctly handling the mass difference field in MDL mol files (by baoilleach, PR#1784) +* Kekulize hypervalent aromatic N and S (by baoilleach, PR#1787) +* Pdbqt fix (by dkoes, PR#1790) +* Raise a warning when coordinate is NaN (by n-yoshikawa, PR#1792) +* Use the InChI values for the average atomic mass when reading/writing isotopes (by baoilleach, PR#1795) +* Fix compile failure after recent Molden commit (by baoilleach, PR#1796) +* Fix segfault due to running off the start of an iterator in PDBQT format (by baoilleach, PR#1797) +* Fix#1768: Segfault upon reading GAMESS outputs of DFTB3 calculations (by serval2412, PR#1798) +* Always ensure hybridization (by ghutchis, PR#1801) +* Fix #1786 by changing the return value of OBResidue::GetNum() (by baoilleach, PR#1804) +* Apply fixes from Benoit Leblanc to address int/double type warnings. (by baoilleach, PR#1806) +* Fix#1607: check dynamic cast return (by serval2412, PR#1815) +* Fixes #1282: check format input is provided (by serval2412, PR#1818) +* Fix#1331: avoid crash with Q-Chem fragment (by serval2412, PR#1820) +* Set default to read CIFs with specified coordinates, no wrapping. (by ghutchis, PR#1823) +* Fix#1056: remove a debug output (by serval2412, PR#1825) +* Get ECFP working (by baoilleach, PR#1829) +* Fix cdxml upside down format (by JasonYCHuang, PR#1831) +* Fix to CopySubstructure found when running over ChEMBL (by baoilleach, PR#1832) +* Fix#192: parse and use '-a' flag for obrotate (by serval2412, PR#1835) +* Ensure carbonyl groups are checked at both 0 and 180. (by ghutchis, PR#1845) +* Ensure that the check for OBBond::IsInRing obeys the OBMol perception flags (by baoilleach, PR#1848) +* Simplify/fix behavior of OBAtom::GetResidue so that it behaves like other lazy properties (by baoilleach, PR#1849) +* Fixes #1851: check some limits when converting smi to sdf using --gen2D (by serval2412, PR#1852) +* Modify cleaning blank line behaviors (by yishutu, PR#1855) +* Ring membership of atoms and bonds was not being reset during perception (by baoilleach, PR#1856) +* Update qeq.txt (by mkrykunov, PR#1882) +* Support lone pair stereo on nitrogen as well as sulfur (by baoilleach, PR#1885) +* Changed indexing of fragments, should fix #1889 (by fredrikw, PR#1890) +* Avoid out-of-range access in OBMolBondBFSIter (by baoilleach, PR#1892) +* Fix OBChemTsfm wrapping of implicit H counts (by baoilleach, PR#1896) +* Updated the coordinate generation from templates. (by fredrikw, PR#1902) +* Fix incorrect use of `memcpy`. (by sunoru, PR#1908) +* Add SetChainsPerceived() after EndModify() in formats that add residues (by baoilleach, PR#1914) +* define isfinite removed. (by orex, PR#1928) +* Teach the isomorphism mapper to respect atom identity (by johnmay, PR#1939) +* Fix memory leak in OBSmartsPattern::Init() (by n-yoshikawa, PR#1945) +* Address CMake build warning about policy CMP0005 being set to OLD (by baoilleach, PR#1948) +* Fix clang warning about in-class init of a non-static data member (by baoilleach, PR#1949) +* Update bindings for changes to headers (by baoilleach, PR#1963) +* Fix randomly failing Python gradient test (by baoilleach, PR#1966) +* Exit with non-zero if an error occurs (by e-kwsm, PR#1973) +* Avoid non-finite bond vectors (by dkoes, PR#1981) +* Include babelconfig in vector3.h (by dkoes, PR#1985) +* Fix #1987: CMake failing at FindRapidJSON (by RMeli, PR#1988) +* fpsformat.cpp: compile bugfix header added. (by orex, PR#1991) +* Address Ubuntu bug in defining python install dir (by dkoes, PR#1992) +* PDB and PDBQT Insertion Code Fixes (by RMeli, PR#1998) +* Make pybel compatible with #1975 (by yishutu, PR#2005) +* H vector fix (by dkoes, PR#2010) +* Change forcefield.cpp so that steepest descent and conjugate gradient update maxgrad (by PeaWagon, PR#2017) +* Update coordinates in the fast option of obabel (by n-yoshikawa, PR#2026) +* Update the CSharp bindings (by baoilleach, PR#2032) +* Don't make kekule SMILES the default in the GUI (by baoilleach, PR#2039) +* Bumping the major version requires more changes throughout the library. (by baoilleach, PR#2036) +* Fix reading of uninitialized data. (by dkoes, PR#2038) +* Remove minor version from some names (by baoilleach, PR#2040) +* Fixed alias expansion for files with multiple aliases (by fredrikw, PR#2035) +* Update doc (by e-kwsm, PR#1979) +* Fix compilation with GCC 4.8 (standard compiler on CentOS 7.5) (by baoilleach, PR#2047) +* Some tests (by dkoes, PR#2008) + +Cast of contributors +~~~~~~~~~~~~~~~~~~~~ +aandi, adalke (Andrew Dalke), adamjstewart (Adam J. Stewart), afonari (Alexandr Fonari), artoria2e5 (Mingye Wang), baoilleach (Noel O'Boyle), barrymoo (Barry Moore), bbucior (Ben Bucior), boryszef (Borys Szefczyk), camannguyen (An Nguyen), cmanion (Charles A. Manion), cowsandmilk (David Hall), cstein (Casper Steinmann), derekharmon (Derek Harmon), djhogan (Daniel Hogan), dkoes (David Koes), e-kwsm (Eisuke Kawashima), eloyfelix (Eloy Felix), fredrikw (Fredrik Wallner), ghutchis (Geoff Hutchison), hille721 (Christoph Hille), hseara (Hector Martinez-Seara), jasonychuang (Jason Huang), jeffjanes (Jeff Janes), johnmay (John Mayfield), katrinleinweber (Katrin Leinweber), keipertk (Kristopher Keipert), kyle-roberts-arzeda, langner (Karol M. Langner), lorton (Pat Lorton), mcs07 (Matt Swain), merkys (Andrius Merkys), mkrykunov, mmghahremanpour (Mohammad Ghahremanpour), mwojcikowski (Maciej Wójcikowski), n-yoshikawa (Naruki Yoshikawa), nakatamaho (Nakata Maho), nsoranzo (Nicola Soranzo), oititov (Titov Oleg), orex (Kirill Okhotnikov), pbecherer (Paul Becherer), peawagon (Jen), philthiel (Philipp Thiel), psavery (Patrick Avery), rmeli (Rocco Meli), serval2412 (Julien Nabet), sunoru, susilehtola (Susi Lehtola), tgaudin (Théophile Gaudin), theavey (Thomas Heavey), timvdm (Tim Vandermeersch), torcolvin (Tor Colvin), wojdyr (Marcin Wojdyr), xomachine (Dmitriy Fomichev), yishutu (Yi-Shu Tu) diff --git a/_sources/docs/ReleaseNotes/ob310.rst.txt b/_sources/docs/ReleaseNotes/ob310.rst.txt new file mode 100644 index 00000000..11a4fa49 --- /dev/null +++ b/_sources/docs/ReleaseNotes/ob310.rst.txt @@ -0,0 +1,85 @@ +Open Babel 3.1.0 +================ + +Released on 2020-05-05. + +This version represents additional API and is backwards-compatible with the 3.0 release. + +.. + is:pr is:merged created:>=2019-10-05 (on 2020-04-28) + +New features and improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* New file format: Wiswesser Line Notation reader from Roger Sayle (by baoilleach, PR#2084) +* New option: Add the --neutralize operation to convert charged atoms to neutral (by baoilleach, PR#2109) +* New functionality: Support for periodic boundary conditions. See additional option -p for MMCIF format, and write option 'g' for CIF. (by bbucior, PR#1853) +* New functionality: Add distance geometry method (xxby n-yoshikawa, PR#1875) +* New option: Add -noh to --minimize to allow minimizing without adding explicit hydrogens (by ghutchis, PR#2184) +* Update GAS CONSTANT to 2018 CODATA recommended value (by e-kwsm, PR#2045) +* Support #0 in SMARTS so that asterisks can be matched (by baoilleach, PR#2079) +* Bring back support for lowercase elements and D/T in GetAtomicNum(). (by baoilleach, PR#2100) +* Change docstrings of add/delete hydrogens to better reflect their functionality (by baoilleach, PR#2110) +* Support kekulization of aromatic sulfoxides (by baoilleach, PR#2121) +* Enable casting to StereoBase in the Python bindings (by baoilleach, PR#2124) +* OBBuilder: Add error message for ring/rigid fragments with all zero coords. (by timvdm, PR#2149) +* R script updates (by khoran, PR#2145) +* Be more strict when parsing charges in SMILES (by baoilleach, PR#2132) +* Improve tools/obconformer.cpp (by e-kwsm, PR#2154) +* OBAtom::IsElement() implemention, make OBElements::Element enum (by dkoes, PR#1754) + +Development/Build/Install improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Avoid `using namespace` in headers (by e-kwsm, PR#2055) +* Remove babel doc (by e-kwsm, PR#2057) +* Do not hard-code Open Babel major version for include directory (by e-kwsm, PR#2059) +* Patched to build on NetBSD (by voidpin, PR#2093) +* Update download link (by njzjz, PR#2094) +* Fix GitHub ISSUE_TEMPLATE (by RMeli, PR#2082) +* Define OpenBabel3_LIBRARY (by dkoes, PR#2086) +* Initial GitHub action - misspell-fixer (by ghutchis, PR#2163) +* Use latest checkout action - more efficient (by ghutchis, PR#2172) +* Initial CMake GitHub Action (by ghutchis, PR#2165) +* Add a template to use with the release drafter GH app (by ghutchis, PR#2182) +* Pin maeparser version to 1.2.3 - should fix #2180 (by ghutchis, PR#2185) +* Workaround for SWIG 4.0.1 Java source code problem (by baoilleach, PR#2186) +* Add a build for bindings (eventually will generate source tar) (by ghutchis, PR#2183) +* Fix build on illumos (by wiedi, PR#2187) +* Update the WLN docs to have the correct syntax for .rst (by baoilleach, PR#2188) +* Rename EXTERN to OB_EXTERN to prevent clashes in other headers (by ghutchis, PR#2189) +* Re-enable Ruby bindings (by ghutchis, PR#2193) + +Bug fixes +~~~~~~~~~ +* Fix CMake error with R and C# bindings (by ghutchis, PR#2051) +* Rename MAESTRO extensions from uppercase to lowercase (by baoilleach, PR#2053) +* Fix file format docstrings that were causing problems with Sphinx or GUI (by baoilleach, PR#2054) +* Fix BUILD_SHARED=OFF (by dkoes, PR#2056) +* Fix import of openbabel (by e-kwsm, PR#2058) +* Update for Open Babel 3 (by e-kwsm, PR#2060) +* Fix maeparser compile error with some Boost configs (by fredrikw, PR#2076) +* Find or build maeparser & coordgen libraries (by ricrogz, PR#2064) +* Fix issue #2095, caused by incorrect application of protonated SMARTS (by au1985, PR#2102) +* Fix issue #1794, UFF atom typing for deuterium (by ghutchis, PR#2114) +* Fix segfault on SMI to InChI conversion when using "-d" (by timvdm, PR#2115) +* Correct the path to the openbabel-python.cpp (by baoilleach, PR#2119) +* Remove fragments with zero coordinates - fixes #2144. (by ghutchis, PR#2150) +* Fix issue #2125 - Zero occupancy in cif file treated as 1.0. (by orex, PR#2136) +* Fix #2071 - obrms parser segmentation fault (by e-kwsm, PR#2073) +* Fix #2098 - OBDistanceGeometry is unavailable to users (by n-yoshikawa, PR#2105) +* Set MAEPARSER_BUILD_SHARED_LIBS (fix #2089) (by e-kwsm, PR#2155) +* Fix the import of Tkinter in Python 3+ (by mrakitin, PR#2157) +* Fix for segault (with regression test) (by dkoes, PR#2162) +* Follow-up with missing spelling fixes from #2163 (by mrakitin, PR#2166) +* Prefer std::fabs resolves build problem on mac-current (by ghutchis, PR#2168) +* Fix distance geometry stereo issues (by timvdm, PR#2158) +* Merge of "Improve OBConversion::WriteString() and WriteFile() initialization" (adalke) #1923 (by baoilleach, PR#2176) +* Fix output format in the cifformat writer (by afonari, PR#2170) +* Fix the cif write test (i.e. modified format) (by ghutchis, PR#2177) +* Fix tautomer code (by timvdm, PR#2171) + + +Cast of contributors +~~~~~~~~~~~~~~~~~~~~ +adalke (Andrew Dalke), afonari (Alexandr Fonari), au1985 (Alex Ustinov), baoilleach (Noel O'Boyle), bbucior (Ben +Bucior), dkoes (David Koes), e-kwsm (Eisuke Kawashima), fredrikw (Fredrik +Wallner), ghutchis (Geoff Hutchison), Kamil Rytarowski, khoran (Kevin Horan), mrakitin (Maksim Rakitin), n-yoshikawa (Naruki Yoshikawa), njzjz (Jinzhe Zeng), orex (Kirill Okhotnikov), ricrogz (Ric), rmeli (Rocco Meli), Roger Sayle, timvdm (Tim Vandermeersch), voidpin (pin), wiedi (Sebastian Wiedenroth) diff --git a/_sources/docs/Stereochemistry/stereo.rst.txt b/_sources/docs/Stereochemistry/stereo.rst.txt new file mode 100644 index 00000000..89fc3b43 --- /dev/null +++ b/_sources/docs/Stereochemistry/stereo.rst.txt @@ -0,0 +1,189 @@ +Stereochemistry +=============== + +Open Babel stores stereochemistry as the relative arrangement of a set of atoms in space. For example, for a tetrahedral stereocenter, we store information like "looking from atom 2, atoms 4, 5 and 6 are arranged clockwise around atom 3". This section describes how a user can work with or manipulate this information. This might be useful to invert a particular center, replace a substituent at a stereocenter, enumerate stereoisomers or determine the number of unspecified stereocenters. + +Although Open Babel has data structures to support a variety of forms of stereochemistry, currently little use is made of any stereochemistry other than tetrahedral and cis/trans (and square planar to a certain degree). + +We will look first of all at how stereochemistry information is stored, accessed, and modified. Then we describe how this information is deduced from the chemical structure. This chapter should be read in combination with the API documentation (see the Stereochemistry overview page found under "Modules"). + +Accessing stereochemistry information +------------------------------------- + +Each record of stereochemistry information around an atom or bond is stored as StereoData associated with the OBMol. First of all, let's look at direct access to the StereoData. The following code counts the number of tetrahedral centers with specified stereochemistry, as well as the number of double bonds with specified cis/trans stereochemistry:: + + num_cistrans = 0 + num_tetra = 0 + + mol = pybel.readstring("smi", "F/C=C/C[C@@H](Cl)Br") + m = mol.OBMol + + for genericdata in m.GetAllData(ob.StereoData): + stereodata = ob.toStereoBase(genericdata) + stereotype = stereodata.GetType() + + if stereotype == ob.OBStereo.CisTrans: + cistrans = ob.toCisTransStereo(stereodata) + if cistrans.IsSpecified(): + num_cistrans += 1 + + elif stereotype == ob.OBStereo.Tetrahedral: + tetra = ob.toTetrahedralStereo(stereodata) + if tetra.IsSpecified(): + num_tetra += 1 + +.. sidebar:: Atom and Bond Ids + + All of the stereo handling code uses Ids to reference atoms and bonds, rather than indices. An Open Babel atom has an index (``OBAtom::GetIdx()``) and an Id (``OBAtom::GetId()``). The former runs from 1 to the number of atoms. The latter can be anything (don't assume it's the Idx-1), but is unique within the molecule. If you delete an atom, the indices change, but the Ids do not. For this reason, all stereo is stored using Ids so that stereo information is not invalidated by changes to the molecule. When the stereochemistry description involves implicit hydrogens or lone pairs, the special atom Id ``OBStereo::ImplicitRef`` (numerically, ``-2`` or ``4294967294`` if accessed via the bindings) is used. + +The code above is quite verbose, and requires iteration through all of the stereo data. To make it simpler to access stereo data for a particular atom or bond, a facade class OBStereoFacade can instead be used, which provides convenience functions for these operations:: + + num_cistrans = 0 + num_tetra = 0 + + mol = pybel.readstring("smi", "F/C=C/C[C@@H](Cl)Br") + m = mol.OBMol + + facade = ob.OBStereoFacade(m) + + for atom in ob.OBMolAtomIter(m): + mid = atom.GetId() + if facade.HasTetrahedralStereo(mid): + tetra = facade.GetTetrahedralStereo(mid) + if tetra.IsSpecified(): + num_tetra += 1 + + for bond in ob.OBMolBondIter(m): + mid = bond.GetId() + if facade.HasCisTransStereo(mid): + cistrans = facade.GetCisTransStereo(mid) + if cistrans.IsSpecified(): + num_cistrans += 1 + +Note that every time you create a new OBStereoFacade, a certain amount of work is done building up the correspondance between atoms/bonds and stereo data. For this reason, a single OBStereoFacade should be created for a molecule and reused. + +The Config() object +------------------- + +The description of the stereochemical configuration is accessed via a Config() object associated with each StereoData. The contents of this object will be different depending on the specific type of stereochemistry, e.g. ``OBCisTransStereo::Config`` (``OBCisTransConfig`` from Python) records the begin and end Ids of the associated bond, the Ids of the attached atoms, the spatial relationship of those atoms, and whether stereo is specified. + +Let's read the SMILES string ``F[C@@](Cl)(Br)I`` and access the stereo. When we read this SMILES string, the tetrahedral center will be the second atom, that with Idx 2.:: + + smi = "F[C@@](Cl)(Br)I" + mol = pybel.readstring("smi", smi).OBMol + secondatom = mol.GetAtom(2) + atomid = secondatom.GetId() + + stereofacade = ob.OBStereoFacade(mol) + print("Does this atom have tet stereo info?", stereofacade.HasTetrahedralStereo(atomid)) + tetstereo = stereofacade.GetTetrahedralStereo(atomid) + config = tetstereo.GetConfig() + print("The stereocenter is at atom Id {}".format(config.center)) + print("Is the configuration specified? {}".format("Yes" if config.specified else "No")) + print("Looking from atom Id {0}, the atoms Ids {1} are arranged clockwise".format(config.from_or_towards, config.refs)) + +Which prints:: + + Does this atom have tet stereo info? True + The stereocenter is at atom Id 1 + Is the configuration specified? Yes + Looking from atom Id 0, the atoms Ids (2, 3, 4) are arranged clockwise + +How do I know that I'm looking from atom Id 0, and that the atom Ids are arranged clockwise? From the documentation for ``OBTetrahedralStereo::GetConfig``, which states that this is the default. You may be used to thinking "How are these atoms arranged looking from here?". With GetConfig(), you are instead making the request "Give me the atoms in clockwise order looking from here". It follows from this that you should never need to test the value of the winding, the direction, or the from/towards atom; you provide these, and their values will be whatever you provided. For example, you could instead ask for the anticlockwise arrangement of atoms looking *towards* the atom with Id 0:: + + configB = tetstereo.GetConfig(0, ob.OBStereo.AntiClockwise, ob.OBStereo.ViewTowards) + print("Looking towards atom Id {0}, the atoms Ids {1} are arranged anticlockwise".format(config.from_or_towards, config.refs)) + +Which prints:: + + Looking towards atom Id 0, the atoms Ids (2, 3, 4) are arranged anticlockwise + +To check whether two Configs represent the same stereo configuration, use the equality operator:: + + assert config == configB + +It should be noted that the Config objects returned by GetConfig() are *copies* of the stereo configuration. That is, modifying them has no affect on the stereochemistry of the molecule (see the next section). As a result, it is straightforward to keep a copy of the stereo configuration, modify the molecule, and then check whether the modification has altered the stereochemistry using the equality operator of the Config. + +Modifying the stereochemistry +----------------------------- + +We discuss below the interaction between 2D and 3D structural information and how stereochemistry is perceived. For now, let's avoid these issues by using a 0D structure and modifying its stereochemistry:: + + from openbabel import pybel + ob = pybel.ob + + mol = pybel.readstring("smi", "C[C@@H](Cl)F") + print(mol.write("smi", opt={"nonewline": True})) + + # Invert the stereo + m = mol.OBMol + facade = ob.OBStereoFacade(m) + tetstereo = facade.GetTetrahedralStereo(m.GetAtom(2).GetId()) + config = tetstereo.GetConfig() + config.winding = ob.OBStereo.AntiClockwise + tetstereo.SetConfig(config) + print(mol.write("smi", opt={"nonewline": True})) + + config.specified = False + tetstereo.SetConfig(config) + print(mol.write("smi", opt={"nonewline": True})) + +which prints:: + + C[C@@H](Cl)F + C[C@H](Cl)F + CC(Cl)F + +How did I know that setting the relative arrangement to anti-clockwise would invert the stereo? Again, as described above, by default GetConfig() returns the atoms in clockwise order. Another way to invert the stereo would be to swap two of the refs, or to set the direction from 'from' to 'towards'. + +Stereo perception +----------------- + +Until now we have not mentioned where this stereo information came from; we have read a SMILES string and somehow the resulting molecule has stereo data associated with it. + +Stereo perception is the identification of stereo centers from the molecule and its associated data, which may include 3D coordinates, stereobonds and existing stereo data. Passing an OBMol to the global function ``PerceiveStereo`` triggers stereo perception, and sets a flag marking stereo as perceived (``OBMol::SetChiralityPerceived(true)``). If, in the first place, stereo was already marked as perceived then stereo perception is not performed. Any operations that require stereo information should call PerceiveStereo before accessing stereo information. + +Behind the scenes, the code for stereo perception is quite different depending on the dimensionality (``OBMol::GetDimension()``) of the molecule. + +.. rubric:: 3D structures + +Perhaps the most straightforward is when the structure has 3D coordinates. In this case, a symmetry analysis identifies stereogenic centers whose stereoconfigurations are then perceived from the coordinates. Some file formats such as the MOL file allow atoms and double bonds to be marked as have unspecified stereochemistry, and this information is applied to the detected stereocenters. For the specific case of the MOL file, the flag in the atom block that marks this is ignored by default (as required by the specification) but an option (``s``) is provided to read it:: + + $ obabel -:"I/C=C/C[C@@](Br)(Cl)F" --gen3d -omol | obabel -imol -osmi + I/C=C/C[C@@](Br)(Cl)F + $ obabel -:"IC=CCC(Br)(Cl)F" --gen3d -omol | obabel -imol -osmi + IC=CC[C@@](Br)(Cl)F + $ obabel -:"IC=CCC(Br)(Cl)F" --gen3d -omol | obabel -imol -as -osmi + IC=CCC(Br)(Cl)F + +As just described, the flow of information is from the 3D coordinates to Open Babel's internal record of stereo centers, and this flow is triggered by calling stereo perception (which does nothing if the stereo is marked as already perceived). It follows from this that altering the coordinates *after* stereo perception (e.g. by reflecting through an axis, thereby inverting chirality) has no affect on the internal stereo data. If operations are performed on the molecule that require stereo is be reperceived, then ``OBMol::SetChiralityPerceived(false)`` should be called. + +It should also be clear from the discussion above that changing the stereo data (e.g. using SetConfig() to invert a tetrahedral stereocenter) has no affect on the molecule's coordinates (though it may affect downstream processing, such as the information written to a SMILES string). If this is needed, the user will have to manipulate the coordinates themselves, or generate coordinates for the whole molecule using the associated library functions (e.g. the ``--gen3d`` operation). + +.. rubric:: 2D structures + +2D structures represent a depiction of a molecule, where stereochemistry is usually indicated by wedge or hash bonds. It is sometimes indicated by adopting particular conventions (e.g. the Fischer or Haworth projection of monosaccharides). It should be noted that Open Babel does not support any of these conventions, nor does it support the use of wedge or hash bonds for perspective drawing (e.g. where a thick bond is supported by two wedges). This may change in future, of course, but it's worth noting that Open Babel is not the only toolkit with these limitations and so what you think you are storing in your database may not be what the 'computer' thinks it is. + +Stereo centers are identified based on a symmetry analysis, and their configuration inferred either from the geometry (for cis/trans bonds) or from bonds marked as wedge/hash (tetrahedral centers). File format readers record information about which bonds were marked as wedges or hashes and this can be accessed with OBBond:IsWedge/IsHash, where the Begin atom of the bond is considered the origin of the wedge/hash. Similar to the situation with 3D perception, changing a bond from a wedge to a hash (or vice versa) has no affect on the stereo objects once stereo has been perceived, but triggering reperception will regenerate the desired stereo data. + +It should also be noted that the file writers regenerate the wedges or hashes from the stereo data at the point of writing; in other words, the particular location of the wedge/hash (or even whether it is present) may change on writing. This was done to ensure that the written structure accurately represents Open Babel's internal view of the molecule; passing wedges/hashes through unchanged may not represent this (consider the case where a wedge bond is attached to a tetrahedral center which cannot be a stereocenter). + +.. [Ed: I think we should alter this behavior to match the input where possible.] + +.. rubric:: 0D structures + +A SMILES string is sometimes referred to as describing a 0.5D structure, as it can describe the relative arrangement of atoms around stereocenters. The SMILES reader simply reads and records this information as stereo data, and then the molecule is marked as having stereo perceived (unless the ``S`` option is passed - see below). + +Being able to skip the symmetry analysis associated with stereo perception means that SMILES strings can be read quickly - a useful feature if dealing with millions of molecules. However, if you wish to identify additional stereocenters whose stereo configuration is unspecified, or if the SMILES strings come from an untrusted source and stereo may have been incorrectly specified (e.g. on a tetrahedral center with two groups the same), then you may wish to trigger perception. + +Without any additional information, stereo cannot be perceived from a structure that has neither 2D nor 3D coordinates. Triggering stereo perception on such a structure will generate stereo data if stereogenic centers are present, but their configuration will be marked as unspecified. However, where existing stereo data is present (e.g. after reading a SMILES string), that data will be retained if the stereocenter is identified by the perception routine as a true stereocenter. This can be illustrated using the ``S`` option to the SMILES reader, which tells it not to mark the stereo as perceived on reading; as a result, reperception will occur if triggered by a writer yielding different results in the case of an erroneously specified stereocenter:: + + $ obabel -:"F[C@@](F)(F)[C@@H](I)Br" -osmi + F[C@@](F)(F)[C@@H](I)Br + $ obabel -:"F[C@@](F)(F)[C@@H](I)Br" -aS -osmi + FC(F)(F)[C@@H](I)Br + +Miscellaneous stereo functions in the API +----------------------------------------- + +* ``OBAtom::IsChiral`` - this is a convenience function that checks whether there is any tetrahedral stereo data associated with a particular atom. OBStereoFacade should be used in preference to this. diff --git a/_sources/docs/UseTheLibrary/CSharp.rst.txt b/_sources/docs/UseTheLibrary/CSharp.rst.txt new file mode 100644 index 00000000..9126d112 --- /dev/null +++ b/_sources/docs/UseTheLibrary/CSharp.rst.txt @@ -0,0 +1,141 @@ +CSharp and OBDotNet +=================== + +**OBDotNet** is a compiled assembly that allows Open Babel to be used from the various .NET languages (e.g. Visual Basic, C#, IronPython, IronRuby, and J#) on Windows, Linux and MacOSX. The current version is OBDotNet 0.4. + +Installation +------------ + +Windows +~~~~~~~ + +The :file:`OBDotNet.dll` assembly provided on Windows was compiled using the .NET framework v3.5 for the x86 platform. To use it, you will need to compile your code using .NET v3.5 or newer and you will also need to target x86 (``/platform:x86``). + +The following instructions describe how to compile a simple C# program that uses OBDotNet: + + 1. First you need to download and install the :program:`OpenBabelGUI version 2.3.2` + 2. Next create an example CSharp program that uses the Open Babel API (see below for one or use `this link`_). Let's call this :file:`example.cs`. + 3. Copy :file:`OBDotNet.dll` from the Open Babel installation into the same folder as :file:`example.cs`. + 4. Open a command prompt at the location of :file:`example.cs` and compile it as follows:: + + C:\Work> C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe + /reference:OBDotNet.dll /platform:x86 example.cs + + 5. Run the created executable, :program:`example.exe`, to discover the molecule weight of propane:: + + C:\Work> example.exe + 44.09562 + +If you prefer to use the MSVC# GUI, note that the Express edition does not have the option to choose x86 as a target. This will be a problem if you are using a 64-bit operating system. There's some information at `Coffee Driven Development`_ on how to get around this. + +.. _this link: http://openbabel.svn.sf.net/viewvc/openbabel/openbabel/tags/openbabel-2-2-1/scripts/csharp/example.cs?revision=2910 +.. _Coffee Driven Development: http://coffeedrivendevelopment.blogspot.com/2008/06/hacking-vs-c-2008-express.html + +MacOSX and Linux +~~~~~~~~~~~~~~~~ + +On Linux and MacOSX you need to use Mono, the open source implementation of the .NET framework, to compile the bindings. The following instructions describe how to compile and use these bindings: + + 1. :file:`OBDotNet.dll` is included in the Open Babel source distribution in :file:`scripts/csharp`. To compile a CSharp application that uses this (e.g. the example program shown below), use a command similar to the following:: + + gmcs example.cs /reference:../openbabel-2.3.2/scripts/csharp/OBDotNet.dll + + 2. To run this on MacOSX or Linux you need to compile the CSharp bindings as described in the section :ref:`Compile bindings`. This creates :file:`lib/libopenbabel_csharp.so` in the build directory. + + 3. Add the location of :file:`OBDotNet.dll` to the environment variable MONO_PATH. Add the location of :file:`libopenbabel_csharp.so` to the environment variable LD_LIBRARY_PATH. Additionally, if you have not installed Open Babel globally you should set BABEL_LIBDIR to the location of the Open Babel library and BABEL_DATADIR to the :file:`data` directory. + + 4. Run :file:`example.exe`:: + + $ ./example.exe + 44.09562 + +OBDotNet API +------------ + +The API is almost identical to the Open Babel :ref:`C++ API <API>`. Differences are described here. + +.. rubric:: Using iterators + +In OBDotNet, iterators are provided as methods of the relevant class. The full list is as follows: + +* **OBMol** has ``.Atoms()``, ``.Bonds()``, ``.Residues()``, and ``.Fragments()``. These correspond to :obapi:`OBMolAtomIter`, :obapi:`OBMolBondIter`, :obapi:`OBResidueIter` and :obapi:`OBMolAtomDFSIter` respectively. +* **OBAtom** has ``.Bonds()`` and ``.Neighbours()``. These correspond to :obapi:`OBAtomBondIter` and :obapi:`OBAtomAtomIter` respectively. + +.. highlight:: c# + +Such iterators are used as follows:: + + foreach (OBAtom atom in myobmol.Atoms()) + System.Console.WriteLine(atom.GetAtomType()); + +Other iterators in the C++ API not listed above can still be used through their IEnumerator methods. + +.. rubric:: Handling OBGenericData + +To cast :obapi:`OBGenericData` to a specific subclass, you should use the ``.Downcast <T>`` method, where ``T`` is a subclass of **OBGenericData**. + +.. rubric:: Open Babel Constants + +Open Babel constants are available in the class ``openbabelcsharp``. + +Examples +-------- + +The following sections show how the same example application would be programmed in C#, Visual Basic and IronPython. The programs print out the molecular weight of propane (represented by the SMILES string "CCC"). + +.. rubric:: C# + +:: + + using System; + using OpenBabel; + + namespace MyConsoleApplication + { + class Program + { + static void Main(string[] args) + { + OBConversion obconv = new OBConversion(); + obconv.SetInFormat("smi"); + OBMol mol = new OBMol(); + obconv.ReadString(mol, "CCC"); + System.Console.WriteLine(mol.GetMolWt()); + } + } + } + +.. rubric:: Visual Basic + +.. code-block:: vb.net + + Imports OpenBabel + + Module Module1 + + Sub Main() + Dim OBConv As New OBConversion() + Dim Mol As New OBMol() + + OBConv.SetInFormat("smi") + OBConv.ReadString(Mol, "CCC") + System.Console.Write("The molecular weight of propane is " & Mol.GetMolWt()) + End Sub + + End Module + +.. rubric:: IronPython + +.. code-block:: python + + import clr + clr.AddReference("OBDotNet.dll") + + import OpenBabel as ob + + conv = ob.OBConversion() + conv.SetInFormat("smi") + mol = ob.OBMol() + conv.ReadString(mol, "CCC") + print(mol.GetMolWt()) + diff --git a/_sources/docs/UseTheLibrary/CppAPI.rst.txt b/_sources/docs/UseTheLibrary/CppAPI.rst.txt new file mode 100644 index 00000000..f05e8507 --- /dev/null +++ b/_sources/docs/UseTheLibrary/CppAPI.rst.txt @@ -0,0 +1,28 @@ +.. _API: + +The Open Babel API +================== + +The API (Application Programming Interface) is the set of classes, methods and variables that a programming library provides to the user. The Open Babel API is implemented in C++, but the same set of classes, methods and variables are accessed through the various language bindings. + +The API documentation is automatically generated from the source code using the Doxygen tool. The following links point to the various versions of the documentation: + +* API for the `current release`_ +* API for the `development version`_ (updated nightly, with `error report`_ showing errors in documentation) +* API for specific versions: `2.0`_, `2.1`_, `2.2`_, `2.3`_ + +.. _current release: http://openbabel.org/api/ +.. _development version: http://openbabel.org/dev-api/ +.. _2.3: http://openbabel.org/api/2.3/ +.. _2.2: http://openbabel.org/api/2.2/ +.. _2.1: http://openbabel.org/api/2.1/ +.. _2.0: http://openbabel.org/api/2.0/ +.. _error report: http://openbabel.org/dev-api/docbuild.out + +The Open Babel toolkit uses a version numbering that indicates how the API has changed over time: + +* Bug fix releases (e.g., 2.0.\ **0**, vs. 2.0.\ **1**) do not change API at all. +* Minor versions (e.g., 2.\ **0** vs. 2.\ **1**) will add function calls, but will be otherwise backwards-compatible. +* Major versions (e.g. **2** vs **3**) are not backwards-compatible, and have changes in the API. + +Overall, our goal is for the Open Babel API to remain stable over as long a period as possible. This means that users can be confident that their code will continue to work despite the release of new versions with additional features, file formats and bug fixes. For example, at the time of writing we have been on the version 2 series for almost five years (since November 2005). In other words, a program written using Open Babel almost five years ago still works with the latest release. diff --git a/_sources/docs/UseTheLibrary/CppExamples.rst.txt b/_sources/docs/UseTheLibrary/CppExamples.rst.txt new file mode 100644 index 00000000..01c6d438 --- /dev/null +++ b/_sources/docs/UseTheLibrary/CppExamples.rst.txt @@ -0,0 +1,166 @@ +C++ +=== + +Quickstart example +------------------ + +Here's an example C++ program that uses the Open Babel toolkit to convert between two chemical file formats: + +.. highlight:: c++ + +:: + + #include <iostream> + #include <openbabel/obconversion.h> + using namespace std; + + int main(int argc,char **argv) + { + if(argc<3) + { + cout << "Usage: ProgrameName InputFileName OutputFileName\n"; + return 1; + } + + ifstream ifs(argv[1]); + if(!ifs) + { + cout << "Cannot open input file\n"; + return 1; + } + ofstream ofs(argv[2]); + if(!ofs) + { + cout << "Cannot open output file\n"; + return 1; + } + OpenBabel::OBConversion conv(&ifs, &ofs); + if(!conv.SetInAndOutFormats("CML","MOL")) + { + cout << "Formats not available\n"; + return 1; + } + int n = conv.Convert(); + cout << n << " molecules converted\n"; + + return 0; + } + +Next, we'll look at how to compile this. + +How to compile against the Open Babel library +--------------------------------------------- + +Using Makefiles +~~~~~~~~~~~~~~~ + +The following Makefile can be used to compile the above example, assuming that it's saved as :file:`example.cpp`. You need to have already installed Open Babel somewhere. If the include files or the library are not automatically found when running :command:`make`, you can specify the location as shown by the commented out statements in CFLAGS and LDFLAGS below. + +.. code-block:: makefile + + CC = g++ + CFLAGS = -c # -I /home/user/Tools/openbabel/install/include/openbabel-2.0 + LDFLAGS = -lopenbabel # -L /home/user/Tools/openbabel/install/lib + + all: example + + example: example.o + $(CC) $(LDFLAGS) example.o -o example + + example.o: example.cpp + $(CC) $(CFLAGS) $(LDFLAGS) example.cpp + + clean: + rm -rf example.o example + +Using CMake +~~~~~~~~~~~ + +Rather than create a Makefile yourself, you can get CMake to do it for you. The nice thing about using CMake is that it can generate not only Makefiles, but also project files for MSVC++, KDevelop and Eclipse (among others). The following :file:`CMakeLists.txt` can be used to generate any of these. The commented out lines can be used to specify the location of the Open Babel library and include files if necessary. + +.. code-block:: cmake + + cmake_minimum_required(VERSION 2.6) + add_executable(example example.cpp) + target_link_libraries(example openbabel) + # target_link_libraries(example /home/user/Tools/openbabel/install/lib/libopenbabel.so) + # include_directories(/home/user/Tools/openbabel/install/include/openbabel-2.0) + +Further examples +---------------- + +Output Molecular Weight for a Multi-Molecule SDF File +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Let's say we want to print out the molecular weights of every molecule in an SD file. Why? Well, we might want to plot a histogram of the distribution, or see whether the average of the distribution is significantly different (in the statistical sense) compared to another SD file. + +:: + + #include <iostream> + + #include <openbabel/obconversion.h> + #include <openbabel/mol.h> + + int main(int argc,char **argv) + { + OBConversion obconversion; + obconversion.SetInFormat("sdf"); + OBMol mol; + + bool notatend = obconversion.ReadFile(&mol,"../xsaa.sdf"); + while (notatend) + { + std::cout << "Molecular Weight: " << mol.GetMolWt() << std::endl; + + mol.Clear(); + notatend = obconversion.Read(&mol); + } + + return(0); + } + +Properties from SMARTS Matches +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Let's say that we want to get the average bond length or dihedral angle over particular types of atoms in a large molecule. So we'll use SMARTS to match a set of atoms and loop through the matches. The following example does this for sulfur-carbon-carbon-sulfur dihedral angles in a polymer and the carbon-carbon bond lengths between the monomer units:: + + OBMol obMol; + OBBond *b1; + OBConversion obConversion; + OBFormat *inFormat; + OBSmartsPattern smarts; + smarts.Init("[#16D2r5][#6D3r5][#6D3r5][#16D2r5]"); + + string filename; + vector< vector <int> > maplist; + vector< vector <int> >::iterator matches; + double dihedral, bondLength; + + for (int i = 1; i < argc; i++) + { + obMol.Clear(); + filename = argv[i]; + inFormat = obConversion.FormatFromExt(filename.c_str()); + obConversion.SetInFormat(inFormat); + obConversion.ReadFile(&obMol, filename); + + if (smarts.Match(obMol)) + { + dihedral = 0.0; + bondLength = 0.0; + maplist = smarts.GetUMapList(); + for (matches = maplist.begin(); matches != maplist.end(); matches++) + { + dihedral += fabs(obMol.GetTorsion((*matches)[0], + (*matches)[1], + (*matches)[2], + (*matches)[3])); + b1 = obMol.GetBond((*matches)[1], (*matches)[2]); + bondLength += b1->GetLength(); + } + cout << filename << ": Average Dihedral " << dihedral / maplist.size() + << " Average Bond Length " << bondLength / maplist.size() + << " over " << maplist.size() << " matches\n"; + } + } + diff --git a/_sources/docs/UseTheLibrary/Java.rst.txt b/_sources/docs/UseTheLibrary/Java.rst.txt new file mode 100644 index 00000000..ed81448f --- /dev/null +++ b/_sources/docs/UseTheLibrary/Java.rst.txt @@ -0,0 +1,130 @@ +Java +==== + +The :file:`openbabel.jar` file in the Open Babel distribution allows you to use the Open Babel C++ library from Java or any of the other JVM languages (Jython, JRuby, BeanShell, etc.). + +Quickstart Example +------------------ + +Let's begin by looking at an example program that uses Open Babel. The following program carries out file format conversion, iteration over atoms and SMARTS pattern matching: + +.. code-block:: java + + import org.openbabel.*; + + public class Test { + + public static void main(String[] args) { + // Initialise + System.loadLibrary("openbabel_java"); + + // Read molecule from SMILES string + OBConversion conv = new OBConversion(); + OBMol mol = new OBMol(); + conv.SetInFormat("smi"); + conv.ReadString(mol, "C(Cl)(=O)CCC(=O)Cl"); + + // Print out some general information + conv.SetOutFormat("can"); + System.out.print("Canonical SMILES: " + + conv.WriteString(mol)); + System.out.println("The molecular weight is " + + mol.GetMolWt()); + for(OBAtom atom : new OBMolAtomIter(mol)) + System.out.println("Atom " + atom.GetIdx() + + ": atomic number = " + atom.GetAtomicNum() + + ", hybridisation = " + atom.GetHyb()); + + // What are the indices of the carbon atoms + // of the acid chloride groups? + OBSmartsPattern acidpattern = new OBSmartsPattern(); + acidpattern.Init("C(=O)Cl"); + acidpattern.Match(mol); + + vectorvInt matches = acidpattern.GetUMapList(); + System.out.println("There are " + matches.size() + + " acid chloride groups"); + System.out.print("Their C atoms have indices: "); + for(int i=0; i<matches.size(); i++) + System.out.print(matches.get(i).get(0) + " "); + } + } + + +Output:: + + Canonical SMILES: ClC(=O)CCC(=O)Cl + The molecular weight is 154.9793599 + Atom 1: atomic number = 6, hybridisation = 2 + Atom 2: atomic number = 17, hybridisation = 0 + Atom 3: atomic number = 8, hybridisation = 2 + Atom 4: atomic number = 6, hybridisation = 3 + Atom 5: atomic number = 6, hybridisation = 3 + Atom 6: atomic number = 6, hybridisation = 2 + Atom 7: atomic number = 8, hybridisation = 2 + Atom 8: atomic number = 17, hybridisation = 0 + There are 2 acid chloride groups + Their C atoms have indices: 1 6 + + +Installation +------------ + +Windows +~~~~~~~ + +.. highlight:: bat + +:file:`openbabel.jar` is installed along with the OpenBabelGUI on Windows, typically in :file:`C:/Program Files (x86)/OpenBabel-2.3.2`. As an example of how to use :file:`openbabel.jar`, download OBTest.java_ and compile and run it as follows:: + + C:\> set CLASSPATH=C:\Program Files (x86)\OpenBabel-2.3.2\openbabel.jar;. + C:\> "C:\Program Files\Java\jdk1.5.0_16\bin\javac.exe" OBTest.java + C:\> "C:\Program Files\Java\jdk1.5.0_16\bin\java.exe" OBTest + Running OBTest... + Benzene has 6 atoms. + C:\> + +.. _OBTest.java: http://openbabel.svn.sf.net/viewvc/openbabel/openbabel/tags/openbabel-2-2-1/scripts/java/OBTest.java?revision=2910 + +MacOSX and Linux +~~~~~~~~~~~~~~~~ + +The following instructions describe how to compile and use these bindings on MacOSX and Linux: + + 1. :file:`openbabel.jar` is included in the Open Babel source distribution in :file:`scripts/java`. To compile a Java application that uses this (e.g. the example program shown above), use a command similar to the following:: + + javac Test.java -cp ../openbabel-2.3.2/scripts/java/openbabel.jar + + 2. To run the resulting :file:`Test.class` on MacOSX or Linux you first need to compile the Java bindings as described in the section :ref:`Compile bindings`. This creates :file:`lib/libopenbabel_java.so` in the build directory. + + 3. Add the location of :file:`openbabel.jar` to the environment variable CLASSPATH, not forgetting to append the location of :file:`Test.class` (typically "."):: + + export CLASSPATH=/home/user/Tools/openbabel-2.3.2/scripts/java/openbabel.jar:. + + 4. Add the location of :file:`libopenbabel_java.so` to the environment variable LD_LIBRARY_PATH. Additionally, if you have not installed Open Babel globally you should set BABEL_LIBDIR to the location of the Open Babel library and BABEL_DATADIR to the :file:`data` directory. + + 5. Now, run the example application. The output should be as shown above. + +API +--- + +:file:`openbabel.jar` provides direct access to the C++ Open Babel library from Java through the namespace **org.openbabel**. This binding is generated using the SWIG package and provides access to almost all of the Open Babel interfaces from Java, including the base classes :obapi:`OBMol`, :obapi:`OBAtom`, :obapi:`OBBond`, and :obapi:`OBResidue`, as well as the conversion framework :obapi:`OBConversion`. + +Essentially any call in the C++ API is available to Java programs with very little difference in syntax. As a result, the principal documentation is the :ref:`Open Babel C++ API documentation <API>`. A few differences exist, however: + +.. highlight:: java + +* Global variables, global functions and constants in the C++ API can be found in **org.openbabel.openbabel_java**. The variables are accessible through get methods. +* When accessing various types of :obapi:`OBGenericData`, you will need to cast them to the particular subclass using the global functions, *toPairData*, *toUnitCell*, etc. +* The Java versions of the iterator classes in the C++ API (that is, all those classes ending in *Iter*) implement the *Iterator* and *Iterable* interfaces. This means that the following *foreach* loop is possible:: + + for(OBAtom atom : new OBMolAtomIter(mol)) { + System.out.println(atom.GetAtomicNum()); + } + +* To facilitate use of the :obapi:`OBMolAtomBFSIter`, *OBAtom* has been extended to incorporate a *CurrentDepth* value, accessible through a get method:: + + for(OBAtom atom : new OBMolAtomBFSIter(mol)) { + System.out.println(atom.GetCurrentDepth()); + } + diff --git a/_sources/docs/UseTheLibrary/Perl.rst.txt b/_sources/docs/UseTheLibrary/Perl.rst.txt new file mode 100644 index 00000000..c174fe58 --- /dev/null +++ b/_sources/docs/UseTheLibrary/Perl.rst.txt @@ -0,0 +1,171 @@ +Perl +==== + +.. highlight:: perl + +Installation +------------ + +The Perl bindings are available only on MacOSX and Linux. (We could not get them to work on Windows.) See :ref:`Compile bindings` for information on how to configure CMake to compile and install the Perl bindings. + +Using Chemistry::OpenBabel +-------------------------- + +The Chemistry::OpenBabel module is designed to allow Perl scripts +to use the C++ Open Babel library. The bindings are generated using +the SWIG package and provides access to almost all of the Open +Babel interfaces via Perl, including the base classes OBMol, +OBAtom, OBBond, and OBResidue, as well as the conversion framework +OBConversion. + +.. sidebar:: PerlMol + + For developing chemistry in Perl, you should also look at the `PerlMol <http://perlmol.org/>`_ project. + +As such, essentially any call in the C++ API is available to Perl +access with very little difference in syntax. This guide is +designed to give examples of common Perl syntax for +Chemistry::OpenBabel and pointers to the appropriate sections of +the :ref:`API documentation <API>`. + +The example script below creates atoms and bonds one-by-one using +the OBMol, OBAtom, and OBBond classes. + +:: + + #!/usr/bin/perl + + use Chemistry::OpenBabel; + + my $obMol = new Chemistry::OpenBabel::OBMol; + + $obMol->NewAtom(); + $numAtoms = $obMol->NumAtoms(); # now 1 atom + + my $atom1 = $obMol->GetAtom(1); # atoms indexed from 1 + $atom1->SetVector(0.0, 1.0, 2.0); + $atom1->SetAtomicNum(6); # carbon atom + + $obMol->NewAtom(); + $obMol->AddBond(1, 2, 1); # bond between atoms 1 and 2 with bond order 1 + $numBonds = $obMol->NumBonds(); # now 1 bond + + $obMol->Clear(); + + +More commonly, Open Babel can be used to read in molecules using +the OBConversion framework. The following script reads in molecular +information from a SMILES string, adds hydrogens, and writes +out an MDL file as a string. + +:: + + #!/usr/bin/perl + + use Chemistry::OpenBabel; + + my $obMol = new Chemistry::OpenBabel::OBMol; + my $obConversion = new Chemistry::OpenBabel::OBConversion; + $obConversion->SetInAndOutFormats("smi", "mdl"); + $obConversion->ReadString($obMol, "C1=CC=CS1"); + + $numAtoms = $obMol->NumAtoms(); # now 5 atoms + + $obMol->AddHydrogens(); + $numAtoms = $obMol->NumAtoms(); # now 9 atoms + + my $outMDL = $obConversion->WriteString($obMol); + + +The following script writes out a file using a filename, rather +than reading and writing to a Perl string. + +:: + + #!/usr/bin/perl + + use Chemistry::OpenBabel; + + my $obMol = new Chemistry::OpenBabel::OBMol; + my $obConversion = new Chemistry::OpenBabel::OBConversion; + $obConversion->SetInAndOutFormats("pdb", "mol2"); + $obConversion->ReadFile($obMol, "1ABC.pdb"); + + $obMol->AddHydrogens(); + + print "# of atoms: $obMol->NumAtoms()"; + print "# of bonds: $obMol->NumBonds()"; + print "# of residues: $obMol->NumResidues()"; + + $obConversion->WriteFile($obMol, "1abc.mol2"); + + +Examples +-------- + +Output Molecular Weight for a Multi-Molecule SDF File +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Let's say we want to print out the molecular weights of every molecule in an SD file. Why? Well, we might want to plot a histogram of the distribution, or see whether the average of the distribution is significantly different (in the statistical sense) compared to another SD file. + +:: + + use Chemistry::OpenBabel; + + my $obconversion = new Chemistry::OpenBabel::OBConversion; + $obconversion->SetInFormat("sdf"); + my $obmol = new Chemistry::OpenBabel::OBMol; + + my $notatend = $obconversion->ReadFile($obmol, "../xsaa.sdf"); + while ($notatend) { + print $obmol->GetMolWt(), "\n"; + $obmol->Clear(); + $notatend = $obconversion->Read($obmol); + } + +Add and Delete Atoms +~~~~~~~~~~~~~~~~~~~~ + +This script shows an example of deleting and modifying atoms to transform one structure to a related one. It operates on a set of substituted thiophenes, deletes the sulfur atom (note that R1 and R2 may contain sulfur, so the SMARTS pattern is designed to constrain to the ring sulfur), etc. The result is a substituted ethylene, as indicated in the diagrams. + +.. image:: ../_static/Tutorial-Thiophene.png +.. image:: ../_static/Tutorial-Transform.png + +:: + + use Chemistry::OpenBabel; + + my $obMol = new Chemistry::OpenBabel::OBMol; + my $obConversion = new Chemistry::OpenBabel::OBConversion; + my $filename = shift @ARGV; + + $obConversion->SetInAndOutFormats("xyz", "mol"); + $obConversion->ReadFile($obMol, $filename); + + for (1..$obMol->NumAtoms()) { + $atom = $obMol->GetAtom($_); + # look to see if this atom is a thiophene sulfur atom + if ($atom->MatchesSMARTS("[#16D2]([#6D3H1])[#6D3H1]")) { + $sulfurIdx = $atom->GetIdx(); + # see if this atom is one of the carbon atoms bonded to a thiophene sulfur + } elsif ($atom->MatchesSMARTS("[#6D3H1]([#16D2][#6D3H1])[#6]") ) { + if ($c2Idx == 0) { $c2Idx = $atom->GetIdx(); } + else {$c5Idx = $atom->GetIdx(); } + } + } + + # Get the actual atom objects -- indexing will change as atoms are added and deleted! + $sulfurAtom = $obMol->GetAtom($sulfurIdx); + $c2Atom = $obMol->GetAtom($c2Idx); + $c5Atom = $obMol->GetAtom($c5Idx); + + $obMol->DeleteAtom($sulfurAtom); + + $obMol->DeleteHydrogens($c2Atom); + $obMol->DeleteHydrogens($c5Atom); + + $c2Atom->SetAtomicNum(1); + $c5Atom->SetAtomicNum(1); + + $obConversion->WriteFile($obMol, "$filename.mol"); + diff --git a/_sources/docs/UseTheLibrary/Python.rst.txt b/_sources/docs/UseTheLibrary/Python.rst.txt new file mode 100644 index 00000000..8715ba0e --- /dev/null +++ b/_sources/docs/UseTheLibrary/Python.rst.txt @@ -0,0 +1,12 @@ +Python +====== + +.. toctree:: + :maxdepth: 2 + + PythonIntro.rst + PythonInstall.rst + PythonDoc.rst + Python_Pybel.rst + Python_PybelAPI.rst + PythonExamples.rst diff --git a/_sources/docs/UseTheLibrary/PythonDoc.rst.txt b/_sources/docs/UseTheLibrary/PythonDoc.rst.txt new file mode 100644 index 00000000..b68f7868 --- /dev/null +++ b/_sources/docs/UseTheLibrary/PythonDoc.rst.txt @@ -0,0 +1,234 @@ +.. _openbabel python module: + +The openbabel module +==================== + +The **openbabel** module provides direct access to the C++ Open +Babel library from Python. This binding is generated using the SWIG +package and provides access to almost all of the Open Babel +interfaces via Python, including the base classes OBMol, OBAtom, +OBBond, and OBResidue, as well as the conversion framework +OBConversion. As such, essentially any call in the C++ API is +available to Python scripts with very little difference in syntax. +As a result, the principal documentation is the +:ref:`C++ API documentation <API>`. + +Examples +^^^^^^^^ + +Here we give some examples of common Python syntax for the +``openbabel`` module and pointers to the appropriate sections of +the API documentation. + +The example script below creates atoms and bonds one-by-one using +the +:obapi:`OBMol`, :obapi:`OBAtom`, and :obapi:`OBBond` classes. + +.. highlight:: python + +:: + + from openbabel import openbabel + + mol = openbabel.OBMol() + print(mol.NumAtoms()) #Should print 0 (atoms) + + a = mol.NewAtom() + a.SetAtomicNum(6) # carbon atom + a.SetVector(0.0, 1.0, 2.0) # coordinates + + b = mol.NewAtom() + mol.AddBond(1, 2, 1) # atoms indexed from 1 + print(mol.NumAtoms()) #Should print 2 (atoms) + print(mol.NumBonds()) Should print 1 (bond) + + mol.Clear(); + +More commonly, Open Babel can be used to read in molecules using +the :obapi:`OBConversion` +framework. The following script reads in molecular information (a +SMI file) from a string, adds hydrogens, and writes out an MDL file +as a string. + +:: + + from openbabel import openbabel + + obConversion = openbabel.OBConversion() + obConversion.SetInAndOutFormats("smi", "mdl") + + mol = openbabel.OBMol() + obConversion.ReadString(mol, "C1=CC=CS1") + + print(mol.NumAtoms()) #Should print 5 (atoms) + + mol.AddHydrogens() + print(mol.NumAtoms()) Should print 9 (atoms) after adding hydrogens + + outMDL = obConversion.WriteString(mol) + +The following script writes out a file using a filename, rather +than reading and writing to a Python string. + +:: + + from openbabel import openbabel + + obConversion = openbabel.OBConversion() + obConversion.SetInAndOutFormats("pdb", "mol2") + + mol = openbabel.OBMol() + obConversion.ReadFile(mol, "1ABC.pdb.gz") # Open Babel will uncompress automatically + + mol.AddHydrogens() + + print(mol.NumAtoms()) + print(mol.NumBonds()) + print(mol.NumResidues()) + + obConversion.WriteFile(mol, '1abc.mol2') + +Using iterators +^^^^^^^^^^^^^^^ + +A number of Open Babel toolkit classes provide iterators over +various objects; these classes are identifiable by the suffix +"Iter" in the +`list of toolkit classes <http://openbabel.sourceforge.net/api/current/annotated.shtml>`_ +in the API: + +- `OBAtomAtomIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBAtomAtomIter.shtml>`_ + and + `OBAtomBondIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBAtomBondIter.shtml>`_ + - given an OBAtom, iterate over all neighboring OBAtoms or OBBonds +- `OBMolAtomIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolAtomIter.shtml>`_, + `OBMolBondIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolBondIter.shtml>`_, + `OBMolAngleIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolAngleIter.shtml>`_, + `OBMolTorsionIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolTorsionIter.shtml>`_, + `OBMolRingIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolRingIter.shtml>`_ + - given an OBMol, iterate over all OBAtoms, OBBonds, OBAngles, + OBTorsions or OBRings. +- `OBMolAtomBFSIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolAtomBFSIter.shtml>`_ + - given an OBMol and the index of an atom, OBMolAtomBFSIter + iterates over all the neighbouring atoms in a breadth-first manner. + It differs from the other iterators in that it returns two values - + an OBAtom, and the 'depth' of the OBAtom in the breadth-first + search (this is useful, for example, when creating circular + fingerprints) +- `OBMolPairIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBMolPairIter.shtml>`_ + - given an OBMol, iterate over all pairs of OBAtoms separated by + more than three bonds +- `OBResidueIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBResidueIter.shtml>`_ + - given an OBMol representing a protein, iterate over all + OBResidues +- `OBResidueAtomIter <http://openbabel.sourceforge.net/api/current/classOpenBabel_1_1OBResidueAtomIter.shtml>`_ + - given an OBResidue, iterate over all OBAtoms + +These iterator classes can be used using the typical Python syntax +for iterators: + +:: + + for obatom in openbabel.OBMolAtomIter(obmol): + print(obatom.GetAtomicMass()) + +Note that OBMolTorsionIter returns atom IDs which are off by one. +That is, you need to add one to each ID to get the correct ID. +Also, if you add or remove atoms, you will need to delete the +existing TorsionData before using OBMolTorsionIter. This is done as +follows: +:: + + mol.DeleteData(openbabel.TorsionData) + +Calling a method requiring an array of C doubles +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Some Open Babel toolkit methods, for example :obapi:`OBMol::Rotate() <OpenBabel::OBMol::Rotate>`, +require an array of doubles. It's not possible to directly use a +list of floats when calling such a function from Python. Instead, +you need to first explicitly create a C array using the +*double\_array()* function: + +:: + + obMol.Rotate([1.0, -54.7, 3]) + # Error! + myarray = openbabel.double_array([1.0, -54.7, 3]) + obMol.Rotate(myarray) + # Works! + +Accessing OBPairData, OBUnitCell and other OBGenericData +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you want to access any subclass of OBGenericData (such as :obapi:`OBPairData` +or :obapi:`OBUnitCell`) +associated with a molecule, you need to 'cast' the :obapi:`OBGenericData` +returned by :obapi:`OBMol.GetData() <OpenBabel::OBMol::GetData>` using the *toPairData()*, *toUnitCell()* (etc.) +functions: + +:: + + pairdata = [openbabel.toPairData(x) for x in obMol.GetData() + if x.GetDataType()==openbabel.PairData] + print(pairdata[0].GetAttribute(), pairdata[0].GetValue()) + + unitcell = openbabel.toUnitCell(obMol.GetData(openbabel.UnitCell)) + print(unitcell.GetAlpha(), unitcell.GetSpaceGroup()) + +Using FastSearch from Python +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Rather than use the :obapi:`FastSearch` class directly, it's easiest to use the :obapi:`OpenInAndOutFiles() <OpenBabel::OBConversion::OpenInAndOutFiles>` method as follows:: + + >>> from openbabel import openbabel + >>> conv=openbabel.OBConversion() + >>> conv.OpenInAndOutFiles("1200mols.smi","index.fs") + True + >>> conv.SetInAndOutFormats("smi","fs") + True + >>> conv.Convert() + This will prepare an index of 1200mols.smi and may take some time... + It took 6 seconds + 1192 + >>> conv.CloseOutFile() + >>> conv.OpenInAndOutFiles("index.fs","results.smi") + True + >>> conv.SetInAndOutFormats("fs","smi") + True + >>> conv.AddOption("s",conv.GENOPTIONS,"C=CC#N") + >>> conv.Convert() + 10 candidates from fingerprint search phase + 1202 + >>> f=open("results.smi") + >>> f.read() + 'OC(=O)C(=Cc1ccccc1)C#N\t298\nN#CC(=Cc1ccccc1)C#N\t490\nO=N(=O)c1cc(ccc1)C=C(C#N + )C#N\t491\nClc1ccc(cc1)C=C(C#N)C#N\t492\nClc1ccc(c(c1)Cl)C=C(C#N)C#N\t493\nClc1c + cc(cc1Cl)C=C(C#N)C#N\t494\nBrc1ccc(cc1)C=C(C#N)C#N\t532\nClc1ccccc1C=C(C#N)C#N\t + 542\nN#CC(=CC=Cc1occc1)C#N\t548\nCCOC(=O)C(C#N)=C(C)C\t1074\n' + +Combining numpy with Open Babel +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you are using the Python numerical extension, numpy, and you try +to pass values from a numpy array to Open Babel, it may not work +unless you convert the values to Python built-in types first: + +:: + + import numpy + from openbabel import openbabel + + mol = openbabel.OBMol() + atom = mol.NewAtom() + + coord = numpy.array([1.2, 2.3, 4.6], "float32") + atom.SetVector(coord[0], coord[1], coord[2]) + # Error + + atom.SetVector(float(coord[0]), float(coord[1]), float(coord[2])) + # No error + + coord = numpy.array([1.2, 2.3, 4.6], "float64") + atom.SetVector(coord[0], coord[1], coord[2]) + # No error either - not all numpy arrays will cause an error diff --git a/_sources/docs/UseTheLibrary/PythonExamples.rst.txt b/_sources/docs/UseTheLibrary/PythonExamples.rst.txt new file mode 100644 index 00000000..96464480 --- /dev/null +++ b/_sources/docs/UseTheLibrary/PythonExamples.rst.txt @@ -0,0 +1,152 @@ +Examples +======== + +Output Molecular Weight for a Multi-Molecule SDF File +----------------------------------------------------- + +Let's say we want to print out the molecular weights of every +molecule in an SD file. Why? Well, we might want to plot a +histogram of the distribution, or see whether the average of the +distribution is significantly different (in the statistical sense) +compared to another SD file. + +.. rubric:: openbabel.py + +:: + + from openbabel import openbabel as ob + + obconversion = ob.OBConversion() + obconversion.SetInFormat("sdf") + obmol = ob.OBMol() + + notatend = obconversion.ReadFile(obmol,"../xsaa.sdf") + while notatend: + print(obmol.GetMolWt()) + obmol = ob.OBMol() + notatend = obconversion.Read(obmol) + +.. rubric:: Pybel + +:: + + from openbabel import pybel + + for molecule in pybel.readfile("sdf","../xsaa.sdf"): + print(molecule.molwt) + +Find information on all of the atoms and bonds connected to a particular atom +----------------------------------------------------------------------------- + +First of all, look at all of the classes in the :ref:`Open Babel API <API>` that +end with "Iter". You should use these whenever you need to do +something like iterate over all of the atoms or bonds connected to +a particular atom, iterate over all the atoms in a molecule, +iterate over all of the residues in a protein, and so on. + +As an example, let's say we want to find information on all of the +bond orders and atoms connected to a particular OBAtom called +'obatom'. The idea is that we iterate over the neighbouring atoms +using OBAtomAtomIter, and then find the bond between the +neighbouring atom and 'obatom'. Alternatively, we could have +iterated over the bonds (OBAtomBondIter), but we would need to look +at the indices of the two atoms at the ends of the bond to find out +which is the neighbouring atom: + +:: + + for neighbour_atom in ob.OBAtomAtomIter(obatom): + print(neighbour_atom.GetAtomicNum()) + bond = obatom.GetBond(neighbour_atom) + print(bond.GetBondOrder()) + +Examples from around the web +---------------------------- + +- Noel O'Blog - + `Hack that SD file <http://baoilleach.blogspot.com/2007/07/pybel-hack-that-sd-file.html>`_, + Just How Unique are your Molecules + `Part I <http://baoilleach.blogspot.com/2007/07/pybel-just-how-unique-are-your.html>`_ + and + `Part II <http://baoilleach.blogspot.com/2007/07/pybel-just-how-unique-are-your_12.html>`_, + `Calculate circular fingerprints with Pybel <http://baoilleach.blogspot.com/2008/02/calculate-circular-fingerprints-with.html>`_, + `Molecular Graph-ics with Pybel <http://baoilleach.blogspot.com/2008/10/molecular-graph-ics-with-pybel.html>`_, + and + `Generating InChI's Mini-Me, the InChIKey <http://baoilleach.blogspot.com/2008/10/generating-inchis-mini-me-inchikey.html>`_. +- `Filter erroneous structures from the ZINC database <http://blur.compbio.ucsf.edu/pipermail/zinc-fans/2007-September/000293.html>`_ +- Quantum Pharmaceuticals - + `Investigation of datasets for hERG binding <http://drugdiscoverywizzards.blogspot.com/2007/12/how-good-are-biological-experiments.html>`_ +- cclib - Given the coordinates, charge, and multiplicity, + `how to create the corresponding OBMol <http://cclib.svn.sourceforge.net/viewvc/cclib/tags/cclib-0.8/src/cclib/bridge/cclib2openbabel.py?view=markup>`_ +- Florian Nigsch wrote an implementation of `Murcko fragments <http://flo.nigsch.com/?p=29>`_ using Pybel +- Andrew Dalke's `Chemical Toolkit Rosetta <http://ctr.wikia.com/wiki/Chemistry_Toolkit_Rosetta_Wiki>`_ contains several examples of Python code using openbabel.py and pybel + +.. Comment out this section for the moment until rewritten + + Invert a particular stereocenter in a series of molecules + --------------------------------------------------------- + + The following was a request on the + `CCL.net <http://www.ccl.net/cgi-bin/ccl/message-new?2008+03+20+005>`__ + list: + + I am looking for any program which can specifically change or + invert the stereocenter. I have a lot of compounds to work with. + All those compounds have more than one stereocenters. I want to + invert one stereocenter which is common in all compounds. So, + precisely, my problem is to change a carbon's stereocenter from "S" + to "R" and need to do this thing for all of compounds in database. + + OBAtom has methods to interrogate and alter an atom's + stereochemistry. If you use a SMARTS query to find the target atom, + it's easy to change it.: + + :: + + from openbabel import pybel + + smarts = pybel.Smarts("C[C@](O)CC(=O)O") + inverse = pybel.Smarts("C[C@@](O)CC(=O)O") + + outputfile = pybel.Outputfile("sdf", "output.sdf") + for mol in pybel.readfile("smi", "3_p0.smi"): + matches = smarts.findall(mol) + if matches: + firstmatch = matches[0] + matchingatom = firstmatch[1] + mol.OBMol.GetAtom(matchingatom).SetClockwiseStereo() + assert inverse.findall(mol), "Hasn't been inverted!" + outputfile.write(mol) + outputfile.close() + +Split an SDF file using the molecule titles +------------------------------------------- + +The following was a request on the +`CCL.net <http://ccl.net/cgi-bin/ccl/message-new?2009+10+22+002>`__ +list: + + Hi all, Does anyone have a script to split an SDFfile into single + sdfs named after each after each individual molecule as specified + in first line of parent multi file? + +The solution is simple... + +:: + + from openbabel import pybel + for mol in pybel.readfile("sdf", "bigmol.sdf"): + mol.write("sdf", "%s.sdf" % mol.title) + +An implementation of RECAP +-------------------------- + +TJ O'Donnell (of `gNova <http://www.gnova.com/>`_) has written an +implementation of the RECAP fragmentation algorithm in 130 lines of +Python. The code is at `[1] <http://gist.github.com/95387>`_. + +TJ's book, +"`Design and Use of Relational Databases in Chemistry <http://www.amazon.com/Design-Use-Relational-Databases-Chemistry/dp/1420064428/ref=sr_1_1?ie=UTF8&s=books&qid=1221754435&sr=1-1>`_", +also contains examples of Python code using Open Babel to create and +query molecular databases (see for example the link to Open Babel +code in the `Appendix <http://www.gnova.com/book/>`_). diff --git a/_sources/docs/UseTheLibrary/PythonInstall.rst.txt b/_sources/docs/UseTheLibrary/PythonInstall.rst.txt new file mode 100644 index 00000000..58471637 --- /dev/null +++ b/_sources/docs/UseTheLibrary/PythonInstall.rst.txt @@ -0,0 +1,112 @@ +Install Python bindings +~~~~~~~~~~~~~~~~~~~~~~~ + +Windows +------- + +Install the bindings +^^^^^^^^^^^^^^^^^^^^ + +#. First you need to download and install the main Open Babel executable + and library as described in :ref:`Install binaries`. +#. Next, use ``pip`` to install the Python bindings:: + + pip install -U openbabel + +**Note**: Python is available as either a 32-bit or 64-bit version. You need to install the corresponding version of Open Babel in step 1. + +Install Pillow (optional) +^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you want to display 2D depictions using Pybel (rather than just write to +a file), you need to install the Pillow library:: + + pip install -U pillow + +Test the installation +^^^^^^^^^^^^^^^^^^^^^ + +Open a Windows command prompt, and type the following commands to +make sure that everything is installed okay. If you get an error +message, there's something wrong and you should email the mailing +list with the output from these commands. + +:: + + C:\Documents and Settings\Noel> obabel -V + Open Babel 3.0.0 -- Oct 7 2019 -- 20:18:16 + + C:\Documents and Settings\Noel> obabel -Hsdf + sdf MDL MOL format + Reads and writes V2000 and V3000 versions + + Read Options, e.g. -as + s determine chirality from atom parity flags + ... + ... + + C:\Documents and Settings\Noel> dir "%BABEL_DATADIR%"\mr.txt + Volume in drive C has no label. + Volume Serial Number is 68A3-3CC9 + + Directory of C:\Users\Noel\AppData\Roaming\OpenBabel-3.0.0\data + + 06/10/2019 16:37 4,295 mr.txt + 1 File(s) 4,295 bytes + 0 Dir(s) 58,607,575,040 bytes free + + C:\Documents and Settings\Noel> py + Python 2.7.16 (v2.7.16:413a49145e, Mar 4 2019, 01:37:19) [MSC v.1500 64 + bit (AMD64)] on win32 + Type "help", "copyright", "credits" or "license" for more information. + >>> from openbabel import pybel + >>> mol = pybel.readstring("smi", "CC(=O)Br") + >>> mol.make3D() + >>> print(mol.write("sdf")) + + OpenBabel01010918183D + + 7 6 0 0 0 0 0 0 0 0999 V2000 + 1.0166 -0.0354 -0.0062 C 0 0 0 0 0 + 2.5200 -0.1269 0.0003 C 0 0 0 0 0 + 3.0871 -1.2168 0.0026 O 0 0 0 0 0 + 3.2979 1.4258 0.0015 Br 0 0 0 0 0 + 0.6684 1.0007 0.0052 H 0 0 0 0 0 + 0.6255 -0.5416 0.8803 H 0 0 0 0 0 + 0.6345 -0.5199 -0.9086 H 0 0 0 0 0 + 1 2 1 0 0 0 + 1 5 1 0 0 0 + 1 6 1 0 0 0 + 1 7 1 0 0 0 + 2 4 1 0 0 0 + 2 3 2 0 0 0 + M END + $$$$ + >>> mol.draw() # If you installed PIL, this will display its structure + >>> (Hit CTRL+Z followed by Enter to exit) + +Linux and MacOSX +---------------- + +See :ref:`Compile bindings` for information on how to configure CMake to compile the Python bindings. This can be done either globally or locally. + +You may need to add the location of :file:`libopenbabel.so` (on my system, the location is :file:`/usr/local/lib`) to the environment variable LD\_LIBRARY\_PATH if you get the following error when you try to import the OpenBabel library at the Python prompt: + +:: + + $ python + >>> from openbabel import openbabel + Traceback (most recent call last): + File "<stdin>", line 1, in + File "/usr/lib/python2.4/site-packages/openbabel.py", line 9, in + import _openbabel + ImportError: libopenbabel.so.3: cannot open shared object file: No such file or directory + +Install Pillow (optional) +^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you want to display 2D depictions using Pybel (rather than just write to +a file), you need the Pillow library, and the Python Tkinter library (part of the standard library). +These should be available through +your package manager, e.g. on Ubuntu, Pillow is provided by 'python-pil' and +'python-pil.imagetk', while Tkinter is provided by 'python-tk'. diff --git a/_sources/docs/UseTheLibrary/PythonIntro.rst.txt b/_sources/docs/UseTheLibrary/PythonIntro.rst.txt new file mode 100644 index 00000000..1fec37da --- /dev/null +++ b/_sources/docs/UseTheLibrary/PythonIntro.rst.txt @@ -0,0 +1,14 @@ +Introduction +~~~~~~~~~~~~ + +The Python interface to Open Babel is perhaps the most popular of the several languages that Open Babel supports. We provide two Python modules that can be used to access the functionality of Open Babel toolkit: + +1. The *openbabel* module: + + This contains the standard Python bindings automatically generated using SWIG from the C++ API. See :ref:`openbabel python module`. + +2. The *Pybel* module: + + This is a light-weight wrapper around the classes and methods in the *openbabel* module. Pybel provides more convenient and Pythonic ways to access the Open Babel toolkit. See :ref:`pybel module`. + +You don't have to choose between them though - they can be used together. diff --git a/_sources/docs/UseTheLibrary/Python_Pybel.rst.txt b/_sources/docs/UseTheLibrary/Python_Pybel.rst.txt new file mode 100644 index 00000000..2509bf7d --- /dev/null +++ b/_sources/docs/UseTheLibrary/Python_Pybel.rst.txt @@ -0,0 +1,351 @@ +.. _pybel module: + +Pybel +===== + +.. highlight:: python + +Pybel provides convenience functions and classes that make it +simpler to use the Open Babel libraries from Python, especially for +file input/output and for accessing the attributes of atoms and +molecules. The Atom and Molecule classes used by Pybel can be +converted to and from the OBAtom and OBMol used by the +:file:`openbabel` module. These features are discussed in more detail +below. + +The rationale and technical details behind Pybel are described in O'Boyle et al [omh2008]_. To support further development of Pybel, please cite this paper if you use Pybel to obtain results for publication. + +Information on the Pybel API can be found at the interactive Python +prompt using the ``help()`` function. The full API is also listed in +the next section (see :ref:`Pybel API`). + +To use Pybel, use ``from openbabel import pybel``. + +.. [omh2008] N.M. O'Boyle, C. Morley and G.R. Hutchison. + **Pybel: a Python wrapper for the OpenBabel cheminformatics toolkit.** + *Chem. Cent. J.* **2008**, *2*, 5. + [`Link <https://doi.org/10.1186/1752-153X-2-5>`_] + +Atoms and Molecules +^^^^^^^^^^^^^^^^^^^ + +A +:class:`~pybel.Molecule` +can be created in any of three ways: + + +#. From an :obapi:`OBMol`, using ``Molecule(myOBMol)`` +#. By reading from a file (see :ref:`Input Output` + below) +#. By reading from a string (see :ref:`Input Output` + below) + +An :class:`~pybel.Atom` +be created in two different ways: + + +#. From an :obapi:`OBAtom`, using ``Atom(myOBAtom)`` +#. By accessing the :attr:`~pybel.Molecule.atoms` attribute of a :class:`~pybel.Molecule` + +.. sidebar:: Using Pybel with :file:`openbabel.py` + + It is always possible to access the OBMol or OBAtom on which a + Molecule or Atom is based, by accessing the appropriate attribute, + either ``.OBMol`` or ``.OBAtom``. In this way, it is easy to + combine the convenience of ``pybel`` with the many additional + capabilities present in ``openbabel``. See + :ref:`Combining` + below. + +Molecules have the following attributes: :attr:`~pybel.Molecule.atoms`, :attr:`~pybel.Molecule.charge`, :attr:`~pybel.Molecule.data`, :attr:`~pybel.Molecule.dim`, +:attr:`~pybel.Molecule.energy`, :attr:`~pybel.Molecule.exactmass`, :attr:`~pybel.Molecule.formula`, :attr:`~pybel.Molecule.molwt`, :attr:`~pybel.Molecule.spin`, :attr:`~pybel.Molecule.sssr`, :attr:`~pybel.Molecule.title` +and :attr:`~pybel.Molecule.unitcell` (if crystal data). The :attr:`~pybel.Molecule.atoms` attribute provides a +list of the Atoms in a Molecule. The :attr:`~pybel.Molecule.data` attribute returns a +dictionary-like object for accessing and editing the data fields +associated with the molecule (technically, it's a +:class:`~pybel.MoleculeData` +object, but you can use it like it's a regular dictionary). The +:attr:`~pybel.Molecule.unitcell` attribute gives access to any unit cell data +associated with the molecule (see +:obapi:`OBUnitCell`). +The remaining attributes correspond directly to attributes of +OBMols: e.g. :attr:`~pybel.Molecule.formula` is equivalent to +:obapi:`OBMol::GetFormula() <OpenBabel::OBMol::GetFormula>`. For more information on what these +attributes are, please see the Open Babel C++ documentation for +:obapi:`OBMol`. + +For example, let's suppose we have an SD file containing descriptor +values in the data fields: + +:: + + >>> mol = next(readfile("sdf", "calculatedprops.sdf")) # (readfile is described below) + >>> print(mol.molwt) + 100.1 + >>> print(len(mol.atoms)) + 16 + >>> print(mol.data.keys()) + {'Comment': 'Created by CDK', 'NSC': 1, 'Hydrogen Bond Donors': 3, + 'Surface Area': 342.43, .... } + >>> print(mol.data['Hydrogen Bond Donors']) + 3 + >>> mol.data['Random Value'] = random.randint(0,1000) # Add a descriptor containing noise + +Molecules have a :func:`~pybel.Molecule.write()` +method that writes a representation of a Molecule to a file or to a +string. See `Input/Output <#Input.2FOutput>`_ below. They also have +a :func:`~pybel.Molecule.calcfp()` +method that calculates a molecular fingerprint. See :ref:`Fingerprints Pybel` +below. + +The :func:`~pybel.Molecule.draw()` +method of a Molecule generates 2D coordinates and a 2D depiction of +a molecule. It uses the +`OASA library <http://bkchem.zirael.org/oasa_en.html>`_ by Beda +Kosata to do this. The default +options are to show the image on the screen (``show=True``), not to +write to a file (``filename=None``), to calculate 2D coordinates +(``usecoords=False``) but not to store them (``update=False``). + +The :func:`~pybel.Molecule.addh()` +and :func:`~pybel.Molecule.removeh()` +methods allow hydrogens to be added and removed. + +If a molecule does not have 3D coordinates, they can be generated +using the :func:`~pybel.Molecule.make3D()` +method. By default, this includes 50 steps of a geometry +optimisation using the MMFF94 forcefield. The list of available +forcefields is stored in the +:attr:`~pybel.forcefields` +variable. To further optimise the structure, you can use the +:func:`~pybel.Molecule.localopt()` +method, which by default carries out 500 steps of an optimisation +using MMFF94. Note that hydrogens need to be added before calling +``localopt()``. + +The :func:`~pybel.Molecule.calcdesc()` +method of a Molecule returns a dictionary containing descriptor +values for LogP, Polar Surface Area ("TPSA") and Molar Refractivity +("MR"). A list of the available descriptors is contained in the +variable :data:`~pybel.descs`. + +If only one or two descriptor values are required, you can specify +the names as follows: ``calcdesc(["LogP", "TPSA"])``. Since the +:attr:`~pybel.Molecule.data` attribute of a Molecule is also a dictionary, you can +easily add the result of ``calcdesc()`` to an SD file (for example) +as follows: + +:: + + mol = next(readfile("sdf", "without_desc.sdf")) + descvalues = mol.calcdesc() + # In Python, the update method of a dictionary allows you + # to add the contents of one dictionary to another + mol.data.update(descvalues) + output = Outputfile("sdf", "with_desc.sdf") + output.write(mol) + output.close() + +For convenience, a Molecule provides an iterator over its Atoms. +This is used as follows: + +:: + + for atom in myMolecule: + # do something with atom + +Atoms have the following attributes: :attr:`~pybel.Atom.atomicmass`, :attr:`~pybel.Atom.atomicnum`, +:attr:`~pybel.Atom.coords`, :attr:`~pybel.Atom.exactmass`, :attr:`~pybel.Atom.formalcharge`, :attr:`~pybel.Atom.heavyvalence`, +:attr:`~pybel.Atom.heterovalence`, :attr:`~pybel.Atom.hyb`, :attr:`~pybel.Atom.idx`, :attr:`~pybel.Atom.implicitvalence`, :attr:`~pybel.Atom.isotope`, +:attr:`~pybel.Atom.partialcharge`, :attr:`~pybel.Atom.spin`, :attr:`~pybel.Atom.type`, :attr:`~pybel.Atom.valence`, :attr:`~pybel.Atom.vector`. The ``.coords`` +attribute provides a tuple (x, y, z) of the atom's coordinates. The +remaining attributes are as for the *Get* methods of +:obapi:`OBAtom`. + +.. _Input Output: + +Input/Output +^^^^^^^^^^^^ + +One of the strengths of Open Babel is the number of chemical file +formats that it can handle (see :ref:`file formats`). Pybel provides a dictionary of the +input and output formats in the variables :attr:`~pybel.informats` +and :attr:`~pybel.outformats` +where the keys are the three-letter codes for each format (e.g. +``pdb``) and the values are the descriptions (e.g. ``Protein Data Bank +format``). + +Pybel greatly simplifies the process of reading and writing +molecules to and from strings or files. There are two functions for +reading Molecules: + + +#. :func:`~pybel.readstring()` + reads a Molecule from a string +#. :func:`~pybel.readfile()` + provides an iterator over the Molecules in a file + +Here are some examples of their use. Note in particular the use of +``next()`` to access the first (and possibly only) molecule in a +file: + +:: + + >>> mymol = readstring("smi", "CCCC") + >>> print(mymol.molwt) + 58 + >>> for mymol in readfile("sdf", "largeSDfile.sdf") + ... print(mymol.molwt) + >>> singlemol = next(readfile("pdb", "1CRN.pdb")) + +If a single molecule is to be written to a molecule or string, the +:func:`~pybel.Molecule.write` +method of the Molecule should be used: + +#. ``mymol.write(format)`` returns a string +#. ``mymol.write(format, filename)`` writes the Molecule to a file. + An optional additional parameter, ``overwrite``, should be set to + ``True`` if you wish to overwrite an existing file. + +For files containing multiple molecules, the +:class:`~pybel.Outputfile` +class should be used instead. This is initialised with a format and +filename (and optional ``overwrite`` parameter). To write a +Molecule to the file, the +:func:`~pybel.Outputfile.write()` +method of the Outputfile is called with the Molecule as a +parameter. When all molecules have been written, the +:func:`~pybel.Outputfile.close()` +method of the Outputfile should be called. + +Here are some examples of output using the Pybel methods and +classes: + +:: + + >>> print(mymol.write("smi")) + 'CCCC' + >>> mymol.write("smi", "outputfile.txt") + >>> largeSDfile = Outputfile("sdf", "multipleSD.sdf") + >>> largeSDfile.write(mymol) + >>> largeSDfile.write(myothermol) + >>> largeSDfile.close() + +.. _Fingerprints Pybel: + +Fingerprints +^^^^^^^^^^^^ + +A :class:`~pybel.Fingerprint` +can be created in either of two ways: + + +#. From a vector returned by the OpenBabel GetFingerprint() method, + using ``Fingerprint(myvector)`` +#. By calling the :func:`~pybel.Molecule.calcfp()` + method of a Molecule + +The :func:`~pybel.Molecule.calcfp()` method takes an optional argument, ``fptype``, +which should be one of the fingerprint types supported by OpenBabel +(see :ref:`fingerprints`). The +list of supported fingerprints is stored in the variable +:attr:`~pybel.fps`. +If unspecified, the default fingerprint (``FP2``) is calculated. + +Once created, the Fingerprint has two attributes: :attr:`~pybel.Fingerprint.fp` gives the +original OpenBabel vector corresponding to the fingerprint, and +:attr:`~pybel.Fingerprint.bits` gives a list of the bits that are set. + +The Tanimoto coefficient of two Fingerprints can be calculated +using the ``|`` operator. + +Here is an example of its use: + +:: + + >>> from openbabel import pybel + >>> smiles = ['CCCC', 'CCCN'] + >>> mols = [pybel.readstring("smi", x) for x in smiles] # Create a list of two molecules + >>> fps = [x.calcfp() for x in mols] # Calculate their fingerprints + >>> print(fps[0].bits, fps[1].bits) + [261, 385, 671] [83, 261, 349, 671, 907] + >>> print(fps[0] | fps[1]) # Print the Tanimoto coefficient + 0.3333 + +SMARTS matching +^^^^^^^^^^^^^^^ + +Pybel also provides a simplified API to the Open Babel SMARTS +pattern matcher. A +:class:`~pybel.Smarts` +object is created, and the +:func:`~pybel.Smarts.findall()` +method is then used to return a list of the matches to a given +Molecule. + +Here is an example of its use: + +:: + + >>> mol = readstring("smi","CCN(CC)CC") # triethylamine + >>> smarts = Smarts("[#6][#6]") # Matches an ethyl group + >>> print(smarts.findall(mol)) + [(1, 2), (4, 5), (6, 7)] + +.. _Combining: + +Combining Pybel with :file:`openbabel.py` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is easy to combine the ease of use of Pybel with the +comprehensive coverage of the Open Babel toolkit that +:file:`openbabel.py` provides. Pybel is really a wrapper around +:file:`openbabel.py`, with the result that the OBAtom and OBMol used by +:file:`openbabel.py` can be interconverted to the Atom and Molecule used by +Pybel. + +The following example shows how to read a molecule from a PDB file +using Pybel, and then how to use :file:`openbabel.py` to add hydrogens. It +also illustrates how to find out information on what methods and +classes are available, while at the interactive Python prompt. + +:: + + >>> from openbabel import pybel + >>> mol = next(pybel.readfile("pdb", "1PYB")) + >>> help(mol) + Help on Molecule in module pybel object: + ... + | Attributes: + | atoms, charge, dim, energy, exactmass, flags, formula, + | mod, molwt, spin, sssr, title. + ... + | The original Open Babel molecule can be accessed using the attribute: + | OBMol + ... + >>> print(len(mol.atoms), mol.molwt) + 3430 49315.2 + >>> dir(mol.OBMol) # Show the list of methods provided by openbabel.py + ['AddAtom', 'AddBond', 'AddConformer', 'AddHydrogens', 'AddPolarHydrogens', ... ] + >>> mol.OBMol.AddHydrogens() + >>> print(len(mol.atoms), mol.molwt) + 7244 49406.0 + +The next example is an extension of one of the :file:`openbabel.py` +examples at the top of this page. It shows how a molecule could be +created using :file:`openbabel.py`, and then written to a file using +Pybel: + +:: + + from openbabel import openbabel, pybel + + mol = openbabel.OBMol() + a = mol.NewAtom() + a.SetAtomicNum(6) # carbon atom + a.SetVector(0.0, 1.0, 2.0) # coordinates + b = mol.NewAtom() + mol.AddBond(1, 2, 1) # atoms indexed from 1 + + pybelmol = pybel.Molecule(mol) + pybelmol.write("sdf", "outputfile.sdf") diff --git a/_sources/docs/UseTheLibrary/Python_PybelAPI.rst.txt b/_sources/docs/UseTheLibrary/Python_PybelAPI.rst.txt new file mode 100644 index 00000000..fbf3685a --- /dev/null +++ b/_sources/docs/UseTheLibrary/Python_PybelAPI.rst.txt @@ -0,0 +1,8 @@ +.. _Pybel API: + +Pybel API +========= + +.. automodule:: pybel + :members: + :undoc-members: diff --git a/_sources/docs/UseTheLibrary/Ruby.rst.txt b/_sources/docs/UseTheLibrary/Ruby.rst.txt new file mode 100644 index 00000000..91c782d7 --- /dev/null +++ b/_sources/docs/UseTheLibrary/Ruby.rst.txt @@ -0,0 +1,23 @@ +Ruby +==== + +.. highlight:: irb + +As with the other language bindings, just follow the instructions at :ref:`Compile bindings` to build the Ruby bindings. + +Like any Ruby module, the Open Babel bindings can be used from a Ruby script or interactively using :program:`irb` as follows:: + + $ irb + irb(main):001:0> require 'openbabel' + => true + irb(main):002:0> c=OpenBabel::OBConversion.new + => #<OpenBabel::OBConversion:0x2acedbadd020> + irb(main):003:0> c.set_in_format 'smi' + => true + irb(main):004:0> benzene=OpenBabel::OBMol.new + => #<OpenBabel::OBMol:0x2acedbacfa10> + irb(main):005:0> c.read_string benzene, 'c1ccccc1' + => true + irb(main):006:0> benzene.num_atoms + => 6 + diff --git a/_sources/docs/UseTheLibrary/intro.rst.txt b/_sources/docs/UseTheLibrary/intro.rst.txt new file mode 100644 index 00000000..a0cb5616 --- /dev/null +++ b/_sources/docs/UseTheLibrary/intro.rst.txt @@ -0,0 +1,25 @@ +Write software using the Open Babel library +=========================================== + +Behind the :command:`obabel` command line program lies a complete cheminformatics toolkit, the Open Babel library. Using this library, you can write your own custom scripts and software for yourself or others. + +.. note:: + + Any software that uses the Open Babel library must abide by terms of the `GNU Public License version 2`_. This includes all of the supporting language bindings (for example, Python scripts) as well as C++ programs. To summarise, if you are considering distributing your software to other people, you must make your source code available to them on request. + +Open Babel is a C++ library and can easily be used from C++. In addition it can be accessed from Python, Perl, Ruby, CSharp and Java. These are referred to as language bindings (the Python bindings, etc.) and they were automatically generated from the C++ library using SWIG_. For Python we also provide a module (Pybel) that makes it easier to access features of the bindings. + +.. _SWIG: http://swig.org +.. _GNU Public License version 2: http://www.gnu.org/licenses/gpl-2.0.html + +.. toctree:: + :maxdepth: 2 + + CppAPI.rst + CppExamples.rst + Python.rst + Java.rst + Perl.rst + CSharp.rst + Ruby.rst + migration.rst diff --git a/_sources/docs/UseTheLibrary/migration.rst.txt b/_sources/docs/UseTheLibrary/migration.rst.txt new file mode 100644 index 00000000..971ee323 --- /dev/null +++ b/_sources/docs/UseTheLibrary/migration.rst.txt @@ -0,0 +1,178 @@ +.. _migrating_to_3.0: + +Updating to Open Babel 3.0 from 2.x +=================================== + +Open Babel 3.0 breaks the API in a number of cases, and introduces some new behavior behind-the-scenes. These changes were necessary to fix some long standing issues impacting chemical accuracy as well as performance. + +Here we describe the main changes, and how to change existing code to adapt. + +Removal of babel +---------------- + +The ``babel`` executable has been removed, and ``obabel`` should be used instead. Essentially :command:`obabel` is a modern version of :command:`babel` with additional capabilities and a more standard interface. Typically the only change needed is to place ``-O`` before the output filename:: + + + $ babel -ismi tmp.smi -omol out.mol + $ obabel -ismi tmp.smi -omol -O out.mol + +Specifically, the differences are as follows: + +* :command:`obabel` requires that the output file be specified with a ``-O`` option. This is closer to the normal Unix convention for commandline programs, and prevents users accidentally overwriting the input file. + +* :command:`obabel` is more flexible when the user needs to specify parameter values on options. For instance, the ``--unique`` option can be used with or without a parameter (specifying the criteria used). With :command:`babel`, this only works when the option is the last on the line; with :command:`obabel`, no such restriction applies. Because of the original design of :command:`babel`, it is not possible to add this capability in a backwards-compatible way. + +* :command:`obabel` has a shortcut for entering SMILES strings. Precede the SMILES by -: and use in place of an input file. The SMILES string should be enclosed in quotation marks. For example:: + + obabel -:"O=C(O)c1ccccc1OC(=O)C" -ocan + + More than one can be used, and a molecule title can be included if enclosed in quotes:: + + obabel -:"O=C(O)c1ccccc1OC(=O)C aspirin" -:"Oc1ccccc1C(=O)O salicylic acid" + -ofpt + +* :command:`obabel` cannot use concatenated single-character options. + +Python module +------------- + +In OB 3.x, both ``openbabel.py`` and ``pybel.py`` live within the ``openbabel`` module:: + + # OB 2.x + import openbabel as ob + import pybel + + # OB 3.0 + from openbabel import openbabel as ob + from openbabel import pybel + +While more verbose, the new arrangement is in line with standard practice and helps avoid conflict with a different Python project, PyBEL. + +Handling of elements and related information +-------------------------------------------- + +The API for interconverting atomic numbers and element symbols has been replaced for performance reasons. The ``OBElementTable`` class has been removed and its associated functions are now available through the ``OBElements`` namespace: + +.. code-block: c++ + +:: + + // OB 2.x + OBElementTable etab; + const char *elem = etab.GetSymbol(6); + unsigned int atomic_num = etab.GetAtomicNum(elem); + + // OB 3.0 + #include <openbabel/elements.h> + const char *elem = OBElements::GetSymbol(6); + unsigned int atomic_num = OBElements::GetAtomicNum(elem); + +Furthermore, the OBAtom API convenience functions for testing for particular elements (e.g. ``IsHydrogen()``) have been removed. Instead, ``OBAtom::GetAtomicNum()`` should be used along with an element constant or atomic number: + +:: + + // OB 2.x + if (atom->IsCarbon()) {... + + // OB 3.0 + if (atom->GetAtomicNum() == OBElements.Carbon) {... + // or + if (atom->GetAtomicNum() == 6) {... + +Handling of isotope information now longer uses ``OBIsotopeTable`` but is accessed through the ``OBElements`` namespace:: + + // OB 2.x + OBIsotopeTable isotab; + isotab.GetExactMass(6, 14); + + // OB 3.0 + double exact = OBElements.GetExactMass(OBElements.Carbon, 14); + +.. (TMI?) Finally, the OBElement::CorrectedBondRad() method was removed. + +Atom classes +------------ + +In OB 2.x, atom class information was stored as part of an ``OBAtomClassData`` object attached to an ``OBMol`` and accessed via ``OBMol.GetData("Atom Class")``. In OB 3.0, atom class information is instead stored as an ``OBPairInteger`` associated with an ``OBAtom`` and accessed via ``OBAtom.GetData("Atom Class")``. In Python:: + + # OB 3.0 + data = myatom.GetData("Atom Class") + atom_class = None + if data is not None: + atom_class = ob.toPairInteger(data).GetGenericValue() + +OBAtom valence and degree methods +--------------------------------- + +OB 2.x referred to the function that returned the explicit degree of an atom as ``GetValence()``. This was confusing, at best. To find the explicit valence, the ``BOSum()`` method was required. OB 3.0 avoids this confusion by renaming methods associated with degree or valence: + +* ``OBAtom::GetExplicitValence()`` (OB 2.x ``BOSum()``) +* ``OBAtom::GetExplicitDegree()`` (OB 2.x ``GetValence()``) +* ``OBAtom::GetHvyDegree()`` (OB 2.x ``GetHvyValence()``) +* ``OBAtom::GetHeteroDegree()`` (OB 2.x ``GetHeteroValence()``) + +Molecule, atom and bond flags +----------------------------- + +The "Unset" methods for molecule, atom and bond flags have been removed. Instead, a value of ``false`` should be passed to the corresponding "Set" method. For example, ``OBMol::UnsetAromaticPerceived()`` in OB 2.x is now ``OBMol::SetAromaticPerceived(false)``. + +Removal of deprecated methods +----------------------------- + +Several deprecated methods have been removed. For the most part, an equivalent function with a different name is present in the API: + +* ``OBBond::GetBO()``/``SetBO()`` removed. ``OBBond::GetBondOrder()``/``SetBondOrder()`` should be used instead. +* ``OBAtom::GetCIdx()`` removed. ``OBAtom::GetCoordinateIdx()`` should be used instead. +* ``OBBitVec::Empty()`` removed. ``OBBitVec::IsEmpty()`` should be used instead. +* ``OBBitVec::BitIsOn()`` removed. ``OBBitVec::BitIsSet()`` should be used instead. + +Handling of implicit hydrogens +------------------------------ + +With OB 3.0, the number of implicit hydrogens is stored as a property of the atom. This value can be interrogated and set independently of any other property of the atom. This is how other mature cheminformatics toolkits handle implicit hydrogens. In contrast, in OB 2.x this was a derived property worked out from valence rules and some additional flags set on an atom to indicate non-standard valency. + +From the point of view of the user, the advantage of the 2.x approach was that the user never needed to consider the implicit hydrogens; their count was calculated based on the explicit atoms (a behavior known as "floating valence"). The disadvantage was that it was difficult for the user to specify non-standard valencies, may have papered-over problems with the data, gave rise to subtle bugs which were not easily addressed and had poorer performance. + +As an example of how the behavior has changed, let's look at creating a bond. If we read the SMILES string ``C.C``, create a bond between the two atoms and write out the SMILES string, we get different answers for OB 2.x (``CC``) versus OB 3.0 (``[CH4][CH4]``). OB 2.x just works out the count based on standard valence rules. With OB 3.0, there were four implicit hydrogens on each carbon before we made the bond, and there still are four - they didn't go anywhere and weren't automatically adjusted. + +While this may seem like a major change, adapting code to handle the change should be straightforward: adding or removing a bond should be accompanied by incrementing or decrementing the implicit hydrogen count by the bond order. This also applies to deleting an atom, since this deletes any bonds connected to it. Note that care should be taken not to set the hydrogen count to a negative value when decrementing. + +:: + + unsigned int bondorder = 1; + mol->AddBond(1, 2, bondorder); + OBAtom* start = mol->GetAtom(1); + unsigned int hcount = start->GetImplicitHCount(); + start->SetImplicitHCount(bondorder >= hcount ? 0 : hcount - bondorder); + OBAtom* end = mol->GetAtom(2); + hcount = end->GetImplicitHCount(); + end->SetImplicitHCount(bondorder >= hcount ? 0 : hcount - bondorder); + +For the particular case of creating a new atom, it is worth noting that the implicit hydrogen count defaults to zero and that users must set it themselves if necessary. To help with this situation a convenience function has been added to OBAtom that sets the implicit hydrogen count to be consistent with normal valence rules. TODO + +Regarding specific API functions, the following have been removed: + +* ``OBAtom::SetImplicitValence()``, ``GetImplicitValence()`` +* ``OBAtom::IncrementImplicitValence()``, ``DecrementImplicitValence()`` +* ``OBAtom::ForceNoH()``, ``HasNoHForce()``, ``ForceImplH()``, ``HasImplHForced()`` +* ``OBAtom::ImplicitHydrogenCount()`` + +The following have been added: + +* ``OBAtom::SetImplicitHCount()``, ``GetImplicitHCount()`` + +Handling of aromaticity +----------------------- + +Molecule modification no longer clears the aromaticity perception flag. If the user wishes to force reperception after modification, then they should call ``OBMol::SetAromaticPerceived(false)``. + +.. + Kekulization + ------------ + The following API functions have been removed as part of this rewrite. + * OBAtom::KBOSum() + * OBBond::SetKSingle(), SetKDouble(), SetKTriple() + * OBBond::UnsetKekule() + * OBBond::IsSingle(), IsDouble(), IsTriple(). + * OBBond::IsKSingle(), IsKDouble(), IsKTriple() + Regarding ``OBBond::IsSingle()`` etc., the user should replaced these with ``OBBond::GetBondOrder()==1`` if that is their intention. The original IsSingle(), etc. returned ``false`` for aromatic bonds - this can be tested with a call to ``OBBond::IsAromatic()``. diff --git a/_sources/docs/WritePlugins/AddFileFormat.rst.txt b/_sources/docs/WritePlugins/AddFileFormat.rst.txt new file mode 100644 index 00000000..1fa96520 --- /dev/null +++ b/_sources/docs/WritePlugins/AddFileFormat.rst.txt @@ -0,0 +1,24 @@ +.. _add-file-format: + +How to add a new file format +============================ + +Adding support for a new file format is a relatively easy process, particularly with Open Babel 2.3 and later. Here are several important steps to remember when developing a format translator: + + 1. Create a file for your format in :file:`src/formats/` or :file:`src/formats/xml/` (for XML-based formats). Ideally, this file is self-contained although several formats modules are compiled across multiple source code files. + 2. Add the name of the new .cpp file to an appropriate place in :file:`src/formats/CMakeLists.txt`. It will now be compiled as part of the build process. + 3. Take a look at other file format code, particularly :file:`exampleformat.cpp`, which contains a heavily-annotated description of writing a new format. XML formats need to take a different approach; see the code in :file:`xcmlformat.cpp` or :file:`pubchemformat.cpp`. + 4. When reading in molecules (and thus performing a lot of molecular modifications) call :obapi:`OBMol::BeginModify() <OpenBabel::OBMol::BeginModify>` at the beginning and :obapi:`OBMol::EndModify() <OpenBabel::OBMol::EndModify>` at the end. This will ensure that perception routines do not run while you read in a molecule and are reset after your code finishes (see :ref:`lazy evaluation`). + 5. Currently, lazy perception does not include connectivity and bond order assignment. If your format does not include bonds, make sure to call :obapi:`OBMol::ConnectTheDots() <OpenBabel::OBMol::ConnectTheDots>` and :obapi:`OBMol::PerceiveBondOrders() <OpenBabel::OBMol::PerceiveBondOrders>` after :obapi:`OBMol::EndModify() <OpenBabel::OBMol::EndModify>` to ensure bonds are assigned. + 6. Consider various input and output options that users can set from the command-line or GUI. For example, many quantum mechanics formats (as well as other formats which do not recognize bonds) offer the following options: + + ``-as`` Call only :obapi:`OBMol::ConnectTheDots() <OpenBabel::OBMol::ConnectTheDots>` (single bonds only) + + ``-ab`` No bond perception + + 7. Make sure to use generic data classes like :obapi:`OBUnitCell` and others as appropriate. If your format stores any sort of common data types, consider adding a subclass of :obapi:`OBGenericData` for use by other formats and user code. + 8. Please make sure to add several example files to the test set repository. Ideally, these should work several areas of your import code -- in the end, the more robust the test set, the more stable and useful Open Babel will be. The test files should include at least one example of a correct file and one example of an invalid file (i.e., something which will properly be ignored and not crash :command:`babel`). + 9. Make sure to document your format using the string returned by ``Description()``. At the minimum this should include a description of all options, along with examples. However, the more information you add (e.g. unimplemented features, applications of the format, and so forth) the more confident users will be in using it. + 10. That's it! Contact the openbabel-discuss_ mailing list with any questions, comments, or to contribute your new format code. + +.. _openbabel-discuss: http://lists.sourceforge.net/lists/listinfo/openbabel-discuss diff --git a/_sources/docs/WritePlugins/AddNewDescriptor.rst.txt b/_sources/docs/WritePlugins/AddNewDescriptor.rst.txt new file mode 100644 index 00000000..e9e9054d --- /dev/null +++ b/_sources/docs/WritePlugins/AddNewDescriptor.rst.txt @@ -0,0 +1,83 @@ +.. _add-new-descriptor: + +How to add a new descriptor +=========================== + +[Some text here] + +Add a new group contribution descriptor +--------------------------------------- + +Group contribution descriptors are a common type of molecular descriptor whose value is a sum of contributions from substructures of the molecule. Such a descriptor can easily be added to Open Babel without the need to recompile the code. All you need is a set of SMARTS strings for each group, and their corresponding contributions to the descriptor value. + +The following example shows how to add a new descriptor, *hellohalo*, whose value increments by 1, 2, 3 or 4 for each F, Cl, Br, and I (respectively) in the molecule. + +1. Create a working directory, for example :file:`C:\\Work`. +2. Copy the plugin definition file, :file:`plugindefines.txt` to the working directory. This file can be found in the Open Babel data directory (typically in :file:`/usr/share/openbabel` on Linux systems, or :file:`C:\\Users\\username\\AppData\Roaming\\OpenBabel-2.3.2\\data` on Windows). +3. For the *hellohalo* descriptor, add the following to the end of :file:`plugindefines.txt` (make sure to include a blank line between it and other descriptor definitions):: + + OBGroupContrib + hellohalo # name of descriptor + hellohalo_smarts.txt # data file + Count up the number of halogens (sort of)\n # brief description + This descriptor is not correlated with any\n # longer description + known property, living or dead. + +4. Now create a file :file:`hellohalo_smarts.txt`, again in the working directory, containing the following SMARTS definitions and contribution values:: + + # These are the SMARTS strings and contribution values + # for the 'hellohalo' group contribution descriptor. + ;heavy + F 1 # This is for fluorines + Cl 2 # And this is for chlorines + Br 3 # Etc. + I 4 # Ditto + +That's it! + +Now let's test it. Open a command prompt, and change directory to the working directory. We can find information on the new descriptor using :command:`obabel`'s ``-L`` option:: + + C:\Work>obabel -L descriptors + abonds Number of aromatic bonds + atoms Number of atoms + ... + hellohalo Count up the number of halogens (sort of) + ... + title For comparing a molecule's title + TPSA topological polar surface area + + C:\Work>obabel -L hellohalo + One of the descriptors + hellohalo Count up the number of halogens (sort of) + This descriptor is not correlated with any + known property, living or dead. + Datafile: hellohalo_smarts.txt + OBGroupContrib is definable + +An easy way to test the descriptor is to use the title output format, and append the descriptor value to the title:: + + C:\Work>obabel -:C(Cl)(Cl)I -otxt --append hellohalo + 8 + 1 molecule converted + +There are a couple of points to note about the pattern file: + +1. Although a SMARTS string may match a substructure of a molecule, the descriptor contribution is only assigned to the first atom of the match. + +2. Where several SMARTS strings assign values to the same atom, only the final assignment is retained. As an example, the following set of patterns will assign a contribution of 0.4 to all atoms except for carbon atoms, which have a value of 1.0:: + + ;heavy + [*] 0.4 # All atoms + [#6] 1.0 # All carbon atoms + +3. If you wish to take into account contributions from hydrogen atoms, you should precede the ``;heavy`` section by a ``;hydrogen`` section. The values for the contributions in the latter section are multiplied by the number of hydrogens attached to the matching atom. For example, consider the following set of patterns:: + + ;hydrogen + [*] 0.2 # Hydrogens attached to all atoms + C 1.0 # Hydrogens attached to an aliphatic carbon + ;heavy + C 10.0 # An aliphatic carbon + + For ethanol, this gives a value of 25.2: two carbons (20.0), five hydrogens attached to a carbon (5.0), and one other hydrogen (0.2). + +For further inspiration, check out :file:`psa.txt`, :file:`mr.txt` and :file:`logp.txt` in the :file:`data` directory. These are the group contribution descriptions for Polar Surface Area, Molar Refractivity and LogP. diff --git a/_sources/docs/WritePlugins/AddingNewOptions.rst.txt b/_sources/docs/WritePlugins/AddingNewOptions.rst.txt new file mode 100644 index 00000000..38568abe --- /dev/null +++ b/_sources/docs/WritePlugins/AddingNewOptions.rst.txt @@ -0,0 +1,82 @@ +Adding new operations and options +================================= + +The :command:`babel` command line has the form:: + + babel inputfile [outputfile] [options] + +There are several types of options: + + Options that control the conversion process + For example ``-i``, ``-o`` and ``-m`` + Options specific to particular input or output formats + These are specified with the ``-a`` and ``-x`` prefixes + General options + These usually operate on a molecule after it has been read by the input format and before it has been written by the output format. + +The ones of interest here are the general options. These can be single letter options like ``-c`` (which centers coordinates), or multi-character options like ``--separate`` (which makes separate molecules from disconnected fragments). The ones mentioned are hardwired into the code, but it is possible to define new options that work in a similar way. This is done using the :obapi:`OBOp` class. + +The OBOp class +-------------- + +The name :obapi:`OBOp` is intended to imply an operation as well as an option. This is a plugin class, which means that new ops are easily added without a need to alter any existing code. + +The ops that are installed can be found using:: + + babel -L ops + +or in the plugins menu item in the GUI. An example is the ``--gen3D`` option, which adds 3D coordinates to a molecule: + +.. code-block:: c++ + :linenos: + + class OpGen3D : public OBOp + { + public: + OpGen3D(const char* ID) : OBOp(ID, false){}; + const char* Description(){ return "Generate 3D coordinates"; } + + virtual bool WorksWith(OBBase* pOb)const + { return dynamic_cast<OBMol*>(pOb)!=NULL; } + virtual bool Do(OBBase* pOb, OpMap* pmap, const char* OptionText); + }; + + OpGen3D theOpGen3D("gen3D"); + + bool OpGen3D::Do(OBBase* pOb, OpMap* pmap, const char* OptionText) + { + OBMol* pmol = dynamic_cast<OBMol*>(pOb); + if(!pmol) + return false; + + OBBuilder builder; + builder.Build(*pmol); + pmol->SetDimension(3); + + return true; + } + +The real work is done in the *Do* function, but there is a bit of boilerplate code that is necessary. + +Line **4**: The constructor calls the base class constructor, which registers the class with the system. There could be additional parameters on the constructor if necessary, provided the base constructor is called in this way. (The ``false`` parameter value is to do with setting a default instance which is not relevant here.) + +Line **5**: It is necessary to provide a description. The first line is used as a caption for the GUI checkbox. Subsequent lines are shown when listed with the verbose option. + +Line **7**: *WorksWith()* identifies the type of object. Usually this is a molecule (*OBMol*) and the line is used as shown. The function is used by the GUI to display the option only when it is relevant. + + The *OBOp* base class doesn't know about *OBMol* or *OBConversion* and so it can be used with any kind of object derived from *OBBase* (essentially anything). Although this means that the dependencies between one bit of the program and another are reduced, it does lead to some compromises, such as having to code *WorksWith()* explicitly rather than as a base class default. + +Line **12**: This is a global instance which defines the Id of the class. This is the option name used on the command line, preceded by ``--``. + +Line **14**: The *Do()* function carries out the operation on the target object. It should normally return ``true``. Returning ``false`` prevents the molecule being sent to the output format. Although this means that it is possible to use an *OBOp* class as a filter, it is better to do this using the ``--filter`` option. + +Any other general options specified on the command line (or the GUI) can be accessed by calling *find* on the parameter *pmap*. For example, to determine whether the ``-c`` option was also specified: + +.. code-block:: c++ + + OpMap::const_iterator iter = pmap->find("c"); + if(iter!=pmap->end()) + do something; + + + diff --git a/_sources/docs/WritePlugins/index.rst.txt b/_sources/docs/WritePlugins/index.rst.txt new file mode 100644 index 00000000..a73453e8 --- /dev/null +++ b/_sources/docs/WritePlugins/index.rst.txt @@ -0,0 +1,43 @@ +.. _Add plugins: + +Adding plugins +============== + +Open Babel uses a plugin architecture for file formats, 'operations', charge models, forcefields, fingerprints and descriptors. The general idea behind plugins is described on Wikipedia_. When you start an application that uses the Open Babel library, it searches for available plugins and loads them. This means, for example, that plugins could be distributed separately to the Open Babel distribution. + +.. _Wikipedia: http://en.wikipedia.org/wiki/Plug-in_%28computing%29 + +In fact, even the plugin types are themselves plugins; this makes it easy to add new categories of plugin. The different types of plugins can be listed using:: + + C:\>babel -L + charges + descriptors + fingerprints + forcefields + formats + loaders + ops + +To list the plugins of a particular type, for example, charge models, just specify the plugin type:: + + C:\>babel -L charges + gasteiger Assign Gasteiger-Marsili sigma partial charges + mmff94 Assign MMFF94 partial charges + qeq Assign QEq (charge equilibration) partial charges (Rappe and Goddard, 199 + 1) + qtpie Assign QTPIE (charge transfer, polarization and equilibration) partial + charges (Chen and Martinez, 2007) + +To add a new plugin of any type, the general method is very simple: + +1. Make a copy of an existing plugin .cpp file +2. Edit it so that it does what you want +3. Add the name of the .cpp file to the appropriate :file:`CMakeLists.txt`. + +The following sections describe in depth how to add support for a new file format or operation to Open Babel. Remember that if you do add a new plugin, please contribute the code back to the Open Babel project. + +.. toctree:: + + AddFileFormat.rst + AddingNewOptions.rst + AddNewDescriptor.rst diff --git a/_sources/docs/index.rst.txt b/_sources/docs/index.rst.txt new file mode 100644 index 00000000..147343b0 --- /dev/null +++ b/_sources/docs/index.rst.txt @@ -0,0 +1,39 @@ +User Guide +========== + +Open Babel, or how I learned to love the chemistry file format +-------------------------------------------------------------- + +The latest version of this documentation is available in several formats from http://openbabel.org/docs/ + +.. toctree:: + :maxdepth: 2 + + Introduction/intro.rst + Installation/install.rst + Command-line_tools/babel.rst + GUI/GUI.rst + GUITutorial/GUITutorial.rst + Fingerprints/intro.rst + Command-line_tools/Rosetta.rst + Depiction/depiction.rst + 3DStructureGen/Overview.rst + Forcefields/Overview.rst + UseTheLibrary/intro.rst + Cheminf101/index.rst + Stereochemistry/stereo.rst + Aromaticity/Aromaticity.rst + Features/Radicals.rst + Contributing/Contributing.rst + WritePlugins/index.rst + FileFormats/Overview.rst + Descriptors/descriptors.rst + Charges/charges.rst + ReleaseNotes/index.rst + +.. The following lines are commented out ... + Indices and tables + ------------------ + * :ref:`genindex` + * :ref:`modindex` + * :ref:`search` diff --git a/api/index.html b/api/index.html index 784ef3be..d4ec6d5e 100644 --- a/api/index.html +++ b/api/index.html @@ -48,7 +48,7 @@ <link rel="canonical" href="https://openbabel.github.io/api/index.html" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> - <link rel="prev" title="Open Babel - the chemistry toolbox" href="../index.html" /> + <link rel="prev" title="Open Babel 1.99" href="../docs/ReleaseNotes/ob1.99.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> </head> @@ -142,6 +142,13 @@ </p> <ul class="bd-navbar-elements navbar-nav"> + <li class="nav-item"> + <a class="nav-link nav-internal" href="../docs/index.html"> + User Guide + </a> + </li> + + <li class="nav-item current active"> <a class="nav-link nav-internal" href="#"> API @@ -261,6 +268,13 @@ </p> <ul class="bd-navbar-elements navbar-nav"> + <li class="nav-item"> + <a class="nav-link nav-internal" href="../docs/index.html"> + User Guide + </a> + </li> + + <li class="nav-item current active"> <a class="nav-link nav-internal" href="#"> API @@ -386,12 +400,12 @@ <div class="prev-next-area"> <a class="left-prev" - href="../index.html" + href="../docs/ReleaseNotes/ob1.99.html" title="previous page"> <i class="fa-solid fa-angle-left"></i> <div class="prev-next-info"> <p class="prev-next-subtitle">previous</p> - <p class="prev-next-title">Open Babel - the chemistry toolbox</p> + <p class="prev-next-title">Open Babel 1.99</p> </div> </a> </div> diff --git a/docs/3DStructureGen/Overview.html b/docs/3DStructureGen/Overview.html new file mode 100644 index 00000000..be8f207c --- /dev/null +++ b/docs/3DStructureGen/Overview.html @@ -0,0 +1,555 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>3D Structure Generation — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/3DStructureGen/SingleConformer.html b/docs/3DStructureGen/SingleConformer.html new file mode 100644 index 00000000..bfffd502 --- /dev/null +++ b/docs/3DStructureGen/SingleConformer.html @@ -0,0 +1,637 @@ + + + + + + + + + + + Generate a single conformer — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Generate a single conformer#

+

There are several steps involved in generating a low-energy conformer from a 0D or 2D structure.

+
+

OBBuilder#

+

The :obapi:`OBBuilder` class is the part of Open Babel that can take a +2D or 0D structure and generate a 3D structure. The 3D structure is +made very quickly using a combination of rules (e.g. sp3 atoms should have four bonds arranged in a tetrahedron) and common fragments (e.g. cyclohexane is shaped like a chair).

+

The 3D structures that come straight out of OBBuilder may be useful for some purposes but most people will want to “clean them up”. This is because they may have clashes or have high energy structures due to some strain. The conformer search or geometry optimization methods described below are typically used after calling OBBuilder.

+

Full discussion of the methods for coordinate generation is available in ‘Fast, efficient fragment-based coordinate generation for Open Babel’ *J. Cheminf.* (2019) **11**, Art. 49.<https://doi.org/10.1186/s13321-019-0372-5>. Please cite this paper if you use the coordinate generation features in Open Babel.

+

The functionality of OBBuilder is not directly available through obabel but it is used as the necessary first step of the Gen3D operation discussed below.

+
+
+

Conformer searching#

+

Given a 3D structure, the goal of conformer searching is to find a low energy conformation. This may be useful as a “clean-up” procedure after an initial 3D structure generation. Note that conformer searching does not alter stereochemistry.

+

The Open Babel library provides access to several algorithms for conformer searching. All of these algorithms adopt the torsion-driving approach; that is, conformations are generated by setting torsion angles to one of a number of allowed values. The allowed values are listed in the data file torlib.txt; for example, C-C bonds in alkanes have three allowed values: -60, 60 and 180.

+
    +
  1. :obapi:`Systematic Rotor Search <SystematicRotorSearch>`: Systematically +iterate through all possible +conformers according to Open Babel’s torsion library. +This approach is thorough and will +find the global minimum. However as +the number of conformations increases by multiples for each additional +rotational bond, this can take quite a while for molecules with even just +7 rotatable bonds. This approach scales to the power of N, where N is the +number of rotatable bonds.

  2. +
  3. :obapi:`Fast Rotor Search <FastRotorSearch>`: This iterates through the +same conformer space as the +SystematicRotorSearch but it greedily optimises the torsion angle at each +rotatable bond in turn, starting from the most central. Thus it scales +linearly with the number of rotatable bonds.

  4. +
  5. :obapi:`Random Rotor Search <RandomRotorSearch>`: Conformations are +generated by randomly choosing from the allowed torsion angles.

  6. +
  7. :obapi:`Weighted Rotor Search <WeightedRotorSearch>`: This method uses an +iterative procedure to find a +global minimum. As with the Random Rotor Search, it randomly choses from +the allowed torsion angles but the choice is reweighted based on the energy +of the generated conformer. Over time, the generated conformer for each +step should become increasingly better.

  8. +
+

For each of these methods, the lowest energy conformation found is selected. In some cases, the entire set of conformations generated is also available. Many +of these methods include an option to optimize the geometry of conformations +during the search. This greatly slows down the procedure but may produce more +accurate results.

+

The choice of which algorithm to use depends on the speed/accuracy tradeoff with +which you are happy, and also on the number of rotatable bonds in the molecule. +Are you looking for a reasonable structure for 3D display? Or are you looking +for a structure close to the global minimum?

+

To use from obabel, see the help for the conformer operation (obabel -L conformer). This operation is used both for conformer searching and for the genetic algorithm conformer generation described below.

+

Here is an example of use from Python:

+
>>> ff = ob.OBForceField.FindForceField("mmff94")
+>>> ff.Setup(obmol)
+True
+>>> print(ff.Energy())
+15.179054202
+>>> ff.SystematicRotorSearch(100)
+>>> print(ff.Energy())
+10.8861155747
+
+
+
+
+

Gen3D#

+

To illustrate how some of the above methods might be used in practice, consider the gen3d operation. This operation (invoked using --gen3d at the commandline) generates 3D structures for 0D or 2D structures using the following series of steps, all of which have been described above:

+
    +
  1. Use the OBBuilder to create a 3D structure using rules and fragment templates

  2. +
  3. Do 250 steps of a steepest descent geometry optimization with the MMFF94 +forcefield

  4. +
  5. Do 200 iterations of a Weighted Rotor conformational search (optimizing each +conformer with 25 steps of a steepest descent)

  6. +
  7. Do 250 steps of a conjugate gradient geometry optimization

  8. +
+

Taken together, all of these steps ensure that the generated structure is likely to be the global minimum energy conformer. However, for many applications where 100s if not 1000s of molecules need to be processed, gen3d is rather slow:

+
+
    +
  1. --fastest only generate coordinates, no force field or conformer search

  2. +
  3. --fast perform quick forcefield optimization

  4. +
  5. --medium (default) forcefield optimization + fast conformer search

  6. +
  7. --better more optimization + fast conformer search

  8. +
  9. --best more optimization + significant conformer search

  10. +
+
+

Details on some of the trade-offs involved are outlined in ‘Fast, efficient fragment-based coordinate generation for Open Babel’ *J. Cheminf.* (2019) **11**, Art. 49.<https://doi.org/10.1186/s13321-019-0372-5>. If you use the 3D coordinate generation, please cite this paper.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/3DStructureGen/multipleconformers.html b/docs/3DStructureGen/multipleconformers.html new file mode 100644 index 00000000..ac8a4974 --- /dev/null +++ b/docs/3DStructureGen/multipleconformers.html @@ -0,0 +1,666 @@ + + + + + + + + + + + Generate multiple conformers — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Generate multiple conformers#

+

In contrast to conformer searching, the goal of conformer generation is not simply to find a low energy conformation but to generate several different conformations. Such conformations may be required by another piece of software such as some protein-ligand docking and pharmacophore programs. They may also be useful if considering writing some sort of shape comparison method.

+

Open Babel has two distinct conformer generating codes:

+
    +
  1. Confab: A systematic conformer generator that generates all diverse +low-energy conformers.

  2. +
  3. Genetic algorithm: This is a stochastic conformer generator that generates +diverse conformers either on an energy or RMSD basis

  4. +
+
+

Genetic algorithm#

+

A genetic algorithm is a general computational method to find a globally optimum solution to some multiparameter problem. It involves a population of conformers which after a series of generations, iteratively arrive at an optimal solution in terms of either RMSD diversity or energy.

+

Information about using this method is available at the command-line using: obabel -L conformer. Although labelled as “Conformer Searching”, if you choose the genetic algorithm method (which is the default) then you can save the conformers in the final generation using --writeconformers. For example, the following line creates 30 conformers optimized for RMSD diversity:

+
obabel startingConformer.mol -O ga_conformers.sdf --conformer --nconf 30
+       --score rmsd --writeconformers
+
+
+

In this case --score rmsd was not strictly necessary as RMSD diversity was the default in any case.

+
+
+

Confab#

+

Confab systematically generates all diverse low-energy conformers for molecules. To run Confab use the --confab operation, and to assess the results by calculating RMSDs to reference structures, use the confabreport output format.

+

confab operator

+
    +
  • obabel <inputfile> -O <outputfile> --confab [confab options] for typical usage

  • +
  • obabel -L confab for help text

  • +
+

The inputfile should contain one or more 3D structures (note that 2D structures will generate erroneous results). Generated conformers are written to the outputfile. All of the conformers for a particular molecule will have the same title as the original molecule.

+
+
--rcutoff <rmsd>
+

RMSD cutoff (default 0.5 Angstrom)

+
+
--ecutoff <energy>
+

Energy cutoff (default 50.0 kcal/mol)

+
+
--conf <#confs>
+

Max number of conformers to test (default is 1 million)

+
+
--original
+

Include the input conformation as the first conformer

+
+
--verbose
+

Verbose - display information on torsions found

+
+
+

confabreport format

+
    +
  • obabel <inputfile> [-O <outputfile>] -o confabreport -xf <reference_file> [-xr <rmsd>] for typical usage

  • +
  • obabel -L confabreport for help text

  • +
+

Once a file containing conformers has been generated by Confab, the result can be compared to the original input structures or a set of reference structures using this output format. Conformers are matched with reference structures using the molecule title. For every conformer, there should be a reference structure (but not necessarily vice versa).

+
+
-f <filename>
+

File containing reference structures

+
+
-r <rmsd>
+

RMSD cutoff (default 0.5 Angstrom)

+

The number of structures with conformers within this RMSD cutoff +of the reference will be reported.

+
+
+

Example

+

The example file, bostrom.sdf, contains 36 molecules which have from 1 to 11 rotatable bonds (see Bostrom, Greenwood, Gottfries, J Mol Graph Model, 2003, 21, 449).

+

We can generate and test up to 100K conformers using Confab as follows:

+
> obabel bostrom.sdf -O confs.sdf --confab --conf 100000
+
+**Starting Confab 1.1.0
+**To support, cite Journal of Cheminformatics, 2011, 3, 8.
+..Input format = sdf
+..Output format = sdf
+..RMSD cutoff = 0.5
+..Energy cutoff = 50
+..Conformer cutoff = 1000000
+..Write input conformation? False
+..Verbose? False
+
+**Molecule 1
+..title = 1a28_STR_1_A_1__C__
+..number of rotatable bonds = 1
+..tot conformations = 12
+..tot confs tested = 12
+..below energy threshold = 10
+..generated 3 conformers
+
+... etc, etc
+
+0 molecules converted
+
+
+

To check how many of the generated conformers are within 1.0 A RMSD of the original structures, we can use the confabreport format as follows:

+
> obabel confs.sdf -oconfabreport -xf bostrom.sdf -xr 1.0
+
+**Generating Confab Report
+..Reference file = bostrom.sdf
+..Conformer file = confs.sdf
+
+..Molecule 1
+..title = 1a28_STR_1_A_1__C__
+..number of confs = 3
+..minimum rmsd = 0.0644801
+..confs less than cutoffs: 0.2 0.5 1 1.5 2 3 4 100
+..1 1 3 3 3 3 3 3
+..cutoff (1) passed =  Yes
+
+... etc, etc
+
+**Summary
+..number of molecules = 36
+..less than cutoff(1) = 35
+52271 molecules converted
+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Aromaticity/Aromaticity.html b/docs/Aromaticity/Aromaticity.html new file mode 100644 index 00000000..4580dc67 --- /dev/null +++ b/docs/Aromaticity/Aromaticity.html @@ -0,0 +1,599 @@ + + + + + + + + + + + Handling of aromaticity — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Handling of aromaticity#

+

The purpose of this section is to give an overview of how Open Babel handles aromaticity. Given that atoms can be aromatic, bonds can be aromatic, and that molecules have a flag for aromaticity perceived, it’s important to understand how these all work together.

+
+

How is aromaticity information stored?#

+

Like many other toolkits, Open Babel stores aromaticity information separate from bond order information. This means that there isn’t a special bond order to indicate aromatic bond. Instead, aromaticity is stored as a flag on an atom as well as a flag on a bond. You can access and set this information using the following API functions:

+
    +
  • OBAtom::IsAromatic(), OBAtom::SetAromatic(), OBBond::UnsetAromatic()

  • +
  • OBBond::IsAromatic(), OBBond::SetAromatic(), OBBond::UnsetAromatic()

  • +
+

There is a catch though, or rather a key point to note. OBMols have a flag to indicate whether aromaticity has been perceived. This is set via the following API functions:

+
    +
  • OBMol::SetAromaticPerceived(), OBMol::UnsetAromaticPerceived()

  • +
+

The value of this flag determines the behaviour of the OBAtom and OBBond IsAromatic() functions.

+
    +
  • If the flag is set, then IsAromatic() simply returns the corresponding value of the atom or bond flag.

  • +
  • If unset, then IsAromatic() triggers aromaticity perception (from scratch), and then returns the value of the flag.

  • +
+
+
+

Perception of aromaticity#

+

It’s convenient to use the term “perception”, but what we mean is to apply an aromaticity model. Currently Open Babel only has a single aromaticity model, which is close to the Daylight aromaticity model. An aromaticity model describes how many pi electrons are contributed by each atom; if this sums to 4n+2 within a cycle, then all atoms and bonds in that cycle will be marked as aromatic.

+

Applying a model involves creating an instance of OBAromaticTyper(), and calling AssignAromaticFlags() passing an OBMol as a parameter. This wipes any existing flags, sets the atom and bond flags according to the model, and marks the aromaticity as perceived.

+

If you wish (and know what you are doing), you can apply your own aromaticity model by setting various atoms and bonds as aromatic and then marking the molecule as having aromaticity perceived. Naturally, not all models will make sense chemically. Even more problematic is the situation where no Kekulé form exists that corresponds to the aromatic form. And finally, there is the philosophical question of the meaning of an aromatic atom without aromatic bonds, and vice versa.

+
+
+

SMILES reading and writing#

+

Putting the pieces together, let’s look at the interaction between SMILES reading/writing and the handling of aromaticity.

+

Writing SMILES

+

Unless Kekulé SMILES are requested (via the k output option), the SMILES writer will always write an aromatic SMILES string. IsAromatic() will be called on atoms and bonds to determine whether to use lowercase letters. As described earlier, this will trigger aromaticity perception according to the default model if the molecules is not marked as having its aromaticity perceived.

+

Reading SMILES

+

The situation when reading SMILES is a bit more involved. If the SMILES string contains lowercase characters and aromatic bonds, this information is used to mark atoms and bonds as aromatic. The molecule is then kekulized to assign bond orders to aromatic bonds. Next, unless the a option is supplied, the molecule is marked as having its aromaticity unperceived.

+

That last step might seem strange. Why, after going to the trouble of reading the aromaticity and using it to kekulize, do we then effectively ignore it?

+

The reason is simply this: when writing an aromatic SMILES, we usually want to use our own aromaticity model and not that present in the input SMILES string. Otherwise, SMILES strings for the same molecule from different sources (that may use different aromaticity models) would not yield the same canonical SMILES string.

+

Of course, if the SMILES string came from Open Babel in the first place, we are doing unnecessary work when we keep reapplying the same aromaticity model. In this case, you can speed things up by using the a option, so that the aromaticity information present in the input is retained. The following examples show this in action:

+
$ obabel -:cc -osmi
+C=C
+$ obabel -:cc -osmi -aa
+cc
+
+
+
+
+

Effect of modifying the structure#

+

Perhaps surprisingly, modifying the structure has no effect on the existing aromaticity flags; deleting an atom does not mark aromaticity as unperceived, nor indeed does any other change to the structure such as changing the atomic number of an atom or setting its charge; nor does the use of Begin/EndModify() affect the aromaticity flags. The only way to ensure that aromaticity is reperceived after modifying the structure is to explicitly mark it as unperceived.

+

The rationale for this is that an efficient toolkit should avoid unnecessary work. The toolkit does not know if a particular modification invalidates any aromaticity already perceived, or even if it did know, it cannot know whether the user actually wishes to invalidate it. It’s up to the user to tell the toolkit. This places more responsibility in the hands of the user, but also more power.

+

To illustrate, let’s consider what happens when the user reads benzene from the SMILES string c1ccccc1, and then modifies the structure by deleting an aromatic atom.

+

As this is an aromatic SMILES string, the SMILES reader will mark all atoms and bonds as aromatic. Next, the molecule itself is marked as not having aromaticity perceived (see previous section). After reading, we can trigger aromaticity perception by calling IsAromatic() on an atom; now, in addition to the atoms and bonds being marked as aromatic, the molecule itself will be marked as having aromaticity perceived.

+

If at this point we delete a carbon and write out a SMILES string, what will the result be? You may expect something like [CH]=CC=C[CH] (or C=CC=CC if we also adjust the hydrogen count on the neighbor atoms) but instead it will be [cH]ccc[cH] (or ccccc if hydrogens were adjusted).

+

This follows from the discussion above - structural modifications have no effect on aromaticity flags. If instead the user wishes the SMILES writer to reperceive aromaticity, all that is necessary is to mark the molecule as not having aromaticity perceived, in which case the Kekulé form will instead be obtained.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Charges/charges.html b/docs/Charges/charges.html new file mode 100644 index 00000000..e0dc7dbd --- /dev/null +++ b/docs/Charges/charges.html @@ -0,0 +1,559 @@ + + + + + + + + + + + Charge models — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Charge models#

+

Insert text here.

+
+

Cheminformatics charge models#

+

Assign Gasteiger-Marsili sigma partial charges (gasteiger)

+

Assign MMFF94 partial charges (mmff94)

+
+
+

Special charge models#

+

Assign Electronegativity Equilization Method (EEM) atomic partial charges (eem)

+

Assign QEq (charge equilibration) partial charges (Rappe and Goddard, 1991) (qeq)

+

Assign QTPIE (charge transfer, polarization and equilibration) partial charges (Chen and Martinez, 2007) (qtpie)

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Cheminf101/basics.html b/docs/Cheminf101/basics.html new file mode 100644 index 00000000..78d31d06 --- /dev/null +++ b/docs/Cheminf101/basics.html @@ -0,0 +1,643 @@ + + + + + + + + + + + Cheminformatics Basics — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Cheminformatics Basics#

+
+

What is Cheminformatics?#

+

Cheminformatics is a cross between Computer Science and +Chemistry – the process of storing and retrieving information about +chemical compounds.

+

Information Systems are concerned with storing, retrieving, and +searching information, and with storing relationships between +bits of data. For example:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Operation

Classical Information +System

Chemical Information System

Store

Name = ‘Jimmy Carter’

Stores text, numbers, dates, …

image0

Stores chemical compounds and information about them

Retrieve

Find record #13282

Retrieves ‘Jimmy Carter’

Find CC(=O)C4CC3C2CC(C)C1=C(C)… +C(=O)CC(O)C1C2CCC3(C)C4

Retrieves: image0

Search

Find Presidents named +‘Bush’

George Bush and George +W. Bush

Find molecules containing image2

Retrieves: image3

Relationship

Year Carter was elected

Answer: Elected in 1976

What’s the logP(o/w) of image2

Answer: logP(o/W) = 2.62

+
+
+

How is Cheminformatics Different?#

+

There are four key problems a cheminformatics system solves:

+
    +
  1. Store a Molecule

    +

    Computer scientists usually use the valence model of chemistry to +represent compounds. The next section +Representing Molecules, +discusses this at length.

    +
  2. +
  3. Find exact molecule

    +

    If you ask, “Is Abraham Lincoln in the database?” it’s not hard to +find the answer. But, given a specific molecule, is it in the +database? What do we know about it? This may seem seem simple at +first glance, but it’s not, as we’ll see when we discuss tautomers, +stereochemistry, metals, and other “flaws” in the valence model of +chemistry.

    +
  4. +
  5. Substructure search

    +

    If you ask, “Is anyone named Lincoln in the database?” you usually +expect to find the former President and a number of others - this +is called a search rather than a lookup. For a chemical +informatics system, we have a substructure search: Find all +molecules containing a partial molecule (the “substructure”) drawn +by the user. The substructure is usually a functional group, +“scaffold”, or core structure representing a class of molecules. +This too is a hard problem, much harder than most text searches, +for reasons that go to the very root of mathematics and the theory +of computability.

    +
  6. +
  7. Similarity search

    +

    Some databases can find similar-sounding or misspelled words, such as “Find Lincon” or “find Cincinati”, which respectively might find +Abraham Lincoln and Cincinnati. Many chemical information systems can find molecules similar to a given molecule, ranked by +similarity. There are several ways to measure molecular similarity, discussed further in the section on Molecular Similarity.

    +
  8. +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Cheminf101/index.html b/docs/Cheminf101/index.html new file mode 100644 index 00000000..854a6d43 --- /dev/null +++ b/docs/Cheminf101/index.html @@ -0,0 +1,572 @@ + + + + + + + + + + + Cheminformatics 101 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Cheminformatics 101#

+

+An introduction to the computer science and chemistry of chemical information systems

+Copyright © 2009 by Craig A. James, eMolecules, Inc.

The original version of this introduction to cheminformatics can be found on the eMolecules website. It is included here with the permission of the author.

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Cheminf101/registration.html b/docs/Cheminf101/registration.html new file mode 100644 index 00000000..84248256 --- /dev/null +++ b/docs/Cheminf101/registration.html @@ -0,0 +1,630 @@ + + + + + + + + + + + Chemical Registration Systems — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chemical Registration Systems#

+

Chemical Registration is the “big brother” of cheminformatics.

+

A cheminformatics system is primarily devoted to recording chemical +structure. Chemical Registration systems are additionally concerned +with:

+
    +
  • Structural novelty - ensure that each compound is only +registered once

  • +
  • Structural normalization - ensure that structures with +alternative representations (such as nitro groups, ferrocenes, and +tautomers) are entered in a uniform way.

  • +
  • Structure drawing - ensure that compounds are drawn in a uniform +fashion, so that they can be quickly recognized “by eye”.

  • +
  • Maintaining relationships among related compounds. For example, +all salt forms of a compound should be recognized as being related +to one another, and compounds in different solvates are also +related.

  • +
  • Registering mixtures, formulations and alternative structures.

  • +
  • Registering compounds the structure of which is unknown.

  • +
  • Roles, responsibilities, security, and company workflow.

  • +
  • Updates, amendments and corrections, and controlling propagation +of changes (e.g. does changing a compound change a mixture +containing that compound?)

  • +
+

The scope of Chemical Registration Systems is far beyond the goals +of this brief introduction to cheminformatics. However, to +illustrate just one of the points above, let’s consider structural +novelty. In real life, chemical structure can be very ambiguous. +Imagine you have five bottles of a particular compound that has a +stereo center:

+
    +
  1. The contents of the first bottle were carefully analyzed, and +found to be a single stereoisomer.

  2. +
  3. The contents of the second bottle were carefully analyzed and +found to contain a racemic mixture of the stereoisomers.

  4. +
  5. The stereoisomers of the third bottle are unknown. It may be +pure, or have one predominant form, or be a racemic mixture.

  6. +
  7. The fourth bottle was obtained by running part of the contents +of bottle #2 through a chromatographic separation. It is +isotopically pure, but you don’t know which stereoisomer.

  8. +
  9. The fifth bottle is the other fraction from the same separation +of #4. It is also isotopically pure, but you don’t know which +stereoisomer, but you know it’s the opposite of #4.

  10. +
+

Which of these five bottles contain the same compound, and which +are different? That is the essential task of a chemical registry +system, which would consider all five to be different. After all, +you probably have data about each bottle (that’s why you have +them), and you must be able to record it and not confuse it with +the other bottles.

+

In this example above, consider what is known and not known:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Bottle

Known

Not Known

1

Everything

Nothing

2

Everything

Nothing

3

Compound is known

Stereochemistry

4

Compound and purity known, stereochemistry is opposite of #5

Specific stereochemistry

5

Compound and purity known, stereochemistry is opposite of #4

Specific stereochemistry

+

A cheminformatics system has no way to record the contents of the +five bottles; it is only concerned with structure. By contrast, a +chemical registration system can record both what is known as +well as what is not known. This is the critical difference +between the two.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Cheminf101/represent.html b/docs/Cheminf101/represent.html new file mode 100644 index 00000000..418513fb --- /dev/null +++ b/docs/Cheminf101/represent.html @@ -0,0 +1,816 @@ + + + + + + + + + + + Representing Molecules — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Representing Molecules#

+
+

What is a Molecule?#

+

One of the greatest achievements in chemistry was the development +of the valence model of chemistry, where a molecule is +represented as atoms joined by semi-rigid bonds that can be +single, double, or triple. This simple mental model has little +resemblance to the underlying quantum-mechanical reality of +electrons, protons and neutrons, yet it has proved to be a +remarkably useful approximation of how atoms behave in close +proximity to one another, and has been the foundation of chemical +instruction for well over a century.

+

The valence model is also the foundation of modern chemical +information systems. When a Computer Scientist approaches a +problem, the first task is to figure out a datamodel that +represents the problem to be solved as information. To the +Computer Scientist, the valence model naturally transforms into a +graph, where the nodes are atoms and the edges are bonds. +Computer Scientists know how to manipulate graphs - mathematical +graph theory and computer science have been closely allied since +the invention of the digital computer.

+
+

There are atoms and space. Everything else is opinion.

+

—Democritus

+
+

However, the valence model of chemistry has many shortcomings. The +most obvious is aromaticity, which quickly required adding the +concept of a non-integral “aromatic” distributed bond, to the +single/double/triple bonds of the simple valence model. And that +was just the start - tautomers, ferrocenes, charged molecules and a +host of other common molecules simply don’t fit the valence model +well.

+

This complicates life for the computer scientist. As we shall see, +they are the source of most of the complexity of modern +cheminformatics systems.

+
+
+

Older systems: Connection Tables#

+

Most of the early (and some modern) representations of molecules +were in a connection table, literally, a table enumerating the +atoms, and a table enumerating the bonds and which atoms each bond +connected. Here is an example of connection-table (CTAB) portion of +an MDL “SD” file (the data portion is not shown here):

+
MOLCONV
+
+3 2  0  0  1  0              1 V2000
+5.9800   -0.0000   -0.0000 Br  0  0  0  0  0  0
+4.4000   -0.6600    0.8300 C   0  0  0  0  0  0
+3.5400   -1.3500   -0.1900 C   0  0  0  0  0  0
+1  2  1  0
+2  3  1  0
+
+
+

This simple example illustrates most of the key features. The +molecule has three atoms, two bonds, and is provided with +three-dimensional (x,y,z) coordinates. MDL provides +extensive documentation +for their various CTFile formats if you are interested in the +details.

+

Connection tables can capture the valence model of chemistry fairly +well, but they suffer from three problems:

+

1. They are very inefficient, taking on the order of a dozen or two of +bytes of data per atom and per bond. Newer line notations +(discussed below) represent a molecules with an average of 1.2 to +1.5 bytes per atom, or 6-8 bytes per atom if coordinates are added.

+

2. Many suffered from lack of specificity. For example, since +hydrogens are often not specified, there can be ambiguity as to the +electronic state of some molecules, because the connection-table +format does not explicitly state the valence assumptions.

+

3. Most mix the concept of connectivity (what the atoms are and how +they are connected) with other data such as 2D and 3D coordinates. +For example, if you had two different conformers of a molecule, +most connection tables would require you to specify the entire +molecule twice, even though the connection table is identical in +both.

+
+
+

Line Notations: InChI, SMILES, WLN and others#

+

A line notation represents a molecule as a single-line string of +characters.

+
+
+
WLN - Wisswesser Line Notation

WLN, invented by William J. Wisswesser in the early 1950’s, was the +first comprehensive line notation, capable of representing +arbitrarily complex molecules correctly and compactly.

+
1H = CH4 Methane
+2H = CH3-CH3 Ethane
+3H = CH3-CH2-CH3 Propane
+QVR BG CG DG EG FG = C7HCl5O2 Pentachlorbenzoate
+
+
+

WLN was the first line notation to feature a canonical form, that +is, the rules for WLN meant there was only one “correct” WLN for +any particular molecule. Those versed in WLN were able to write +molecular structure in a line format, communicate molecular +structure to one another and to computer programs. Unfortunately, +WLN’s complexity prevented widespread adoption. The rules for +correct specification of WLN filled a small book, encoding those +rules into a computer proved difficult, and the rules for the +canonicalization were computationally +intractable.

+
+
SMILES - Simplified Molecular Input Line Entry System

The best-known line notation today is SMILES. It was by Arthur and +David Weininger in response to a need for a simpler, more “human +accessible” notation than WLN. While SMILES is not trivial to learn +and write, most chemists can create correct SMILES with just a few +minutes training, and the entire SMILES language can be learned in +an hour or two. You can +read more details here. +Here are some examples:

+
C          methane
+CC         ethane
+C=C        ethene
+Oc1ccccc1  phenol
+
+
+

SMILES, like WLN, has a canonical form, but unlike WLN, Weininger +relied on the computer, rather than the chemist, to convert a +non-canonical SMILES to a canonical SMILES. This important +separation of duties was key to making SMILES easy to enter. (Read +more about canonicalization below.)

+
+
InChI

InChI is the latest and most modern of the line notations. It +resolves many of the chemical ambiguities not addressed by SMILES, +particularly with respect to stereo centers, tautomers and other of +the “valence model problems” mentioned +above.

+

You can read more about InChI at the +Official Web Site, +or on the +Unofficial InChI FAQ page.

+
+
+
+
+
+

Canonicalization#

+

A critical feature of line notations is canonicalization - the +ability to choose one “blessed” representation from among the many. +Consider:

+
OCC   ethanol
+CCO   ethanol
+
+
+

Both of these SMILES represent the same molecule. If we could all +agree that one of these was the “correct” or “canonical” SMILES for +ethanol, then we would always store it the same way in our +database. More importantly, if we want to ask, “Is ethanol in our +database” we know that it will only be there once, and that we can +generate the canonical SMILES for ethanol and look it up.

+

(Note that in theory one can create a canonical connection table, +too, but it’s not as useful since informatics systems usually have +trouble indexing BLOBs - large objects.)

+
+
+

Line Notation versus Connection Tables: A practical matter#

+

Why are line notations preferred over connection-table formats? In +theory, either could express the same information. But there are +practical difference, mostly related to the complexity of “parsing” +a connection table. If you know that the whole molecule is on one +line of a file, it’s easy to parse.

+

Line notations are also very nice for database applications. +Relational databases have datatypes that, roughly speaking, are +divided into numbers, text, and “everything else”, also known as +“BLOBs” (Binary Large OBjects). You can store line notations in the +“text” fields much more easily than connection tables.

+

Line notations also have pragmatic advantages. Modern Unix-like +systems (such as UNIX, Linux and Cygwin) have a number of very +powerful “filter” text-processing programs that can be “piped” +together (connected end-to-end) to perform important tasks. For +example, to count the number of molecules containing aliphatic +nitrogen in a SMILES file, I can simply:

+
grep N file.smi | wc
+
+
+

(grep looks for a particular expression, in this case N, and +prints any line that contains it, and wc (“word count”) counts the +number of words and lines.)

+

This is just a simple example of the power available via “script” +programs using “filters” on Unix-like systems. Unix filters are +much less useful for connection-table formats, because each +molecule is spread over many lines.

+
+
+

Query Languages: SMARTS#

+

In addition to a typographical way to represent molecules, we also +need a way to enter queries about molecules, such as, “Find all +molecules that contain a phenol.”

+

With text, we’re familiar with the concept of typing a partial +word, such as “ford” to find “Henry Ford” as well as “John +Hartford”. For chemistry, we can also specify partial structures, +and find anything that contains them. For example:

+ + + + + + + + + + + + + + + + + +

Query

Database

Matches?

image0

image1

YES (matched portion highlighted in blue)

image0

image2

NO (double bond indicated doesn’t match)

+ +

The simplest query language for chemistry is SMILES itself: Just +specify a structure, such as Oc1ccccc1, and search. This is how +eMolecules’ basic searching works (see Sidebar). It’s simple and, because of the +high-performance indexes in eMolecules, is also very fast.

+

However, for general-purpose cheminformatics, one needs more power. +What if the substructure you’re looking for isn’t a valid molecule? +For example ClccBr (1,2- substitution on an aromatic ring) isn’t a +whole molecule, since the concept of aromaticity is only sensible +in the context of a whole ring system.

+

Or what if the thing we’re looking for isn’t a simple atom such as +Br, but rather a concept like “Halogen”? Or, “A terminal methyl”?

+

To address this, cheminformatics systems have special +query languages, such as SMARTS (SMiles ARbitrary Target +Specification). SMARTS is a close cousin to SMILES, but it has +expressions instead of simple atoms and bonds. For example, [C,N] +will find an atom that is either carbon or nitrogen.

+
+
+

IUPAC Names, Trade Names, Common Names#

+

Chemistry also has three other important name systems:

+
+
IUPAC Names

IUPAC +(the International +Union of Pure and Applied Chemistry) established a +naming convention that is +widely used throughout chemistry. Any chemical can be named, and +all IUPAC names are unambiguous. This textual representation is +aimed at humans, not computers: Chemists versed in IUPAC +nomenclature (which is widely taught) can read an IUPAC name and +visualize or draw the molecule.

+
+
Trade Names

Names such as Tylenol™ and Valium™ are given to compounds +and formulations by manufacturers for marketing and sales purposes, +and for regulatory purposes.

+
+
Common names

Names such as “aspirin” or “alcohol” for +substances that are in widespread use.

+
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Cheminf101/search.html b/docs/Cheminf101/search.html new file mode 100644 index 00000000..0422e875 --- /dev/null +++ b/docs/Cheminf101/search.html @@ -0,0 +1,658 @@ + + + + + + + + + + + Substructure Searching with Indexes — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Substructure Searching with Indexes#

+
+

What is Indexing?#

+

Indexing is pre-computing the answers to portions of expected +questions before they’re asked, so that when the question comes, +it can be answered quickly.

+

Take your favorite search engine (AOL, Yahoo!, Google, MSN, …) +for example. Without indexing, they might wait until you ask for +“John Hartford Bluegrass”, then start searching the web, and in a +year or two find all the web pages about the deceased banjo/fiddle +player and steamboat captain. That would probably not impress you.

+

Instead, these search engines search the web before you ask your +question, and build an index of the words they find. When you +type in “Bluegrass John Hartford”, they already know all of the +pages that have “John”, all of the pages with “Hartford”, and all +of the pages with “Bluegrass”. Instead of searching, they examine +their index, and find pages that are on all three lists, and +quickly find your results. (NB: It’s actually a lot more complex, +but this illustrates the main idea of indexing.)

+
+
+

Indexes for Chemicals#

+

Instead of indexing words, cheminformatics systems index +substructures. Although there are many schemes for doing this, +cheminformatics systems all use the same fundamental principle: +they decompose the molecule into smaller bits, and index those.

+
+../../_images/steroid_substruct_keys.png +
+

Roughly speaking, a cheminformatics system will index each of the +substructures (fragments) above, so that every molecule that +contains each fragment is known.

+

When a query is entered, the cheminformatics system breaks apart +the query using the same technique, to find all of the fragments in +the query. It then checks its index for each fragment, and combines +the lists it finds to get only those molecules that have all of +those fragments.

+

This doesn’t mean that all molecules returned by the index actually +are matches. In the language of databases, we say the index will +return false positives, candidate molecules that don’t actually +match the substructure search.

+

Consider our example of searching for “John Hartford” - the index +might return many pages that have both “John” and “Hartford”, yet +have nothing to do with bluegrass music or steamboats. For example, +it might return a page containing, “President John F. Kennedy +visited Hartford, Connecticut today…”. To confirm that the search +system has found something relevant, it must check the pages return +from the index to ensure that the specific phrase “John Hartford” +is present. However, notice that this is much faster than +searching every page, since the overwhelming majority of web pages +were instantly rejected because they have neither “John” nor +“Hartford” on them.

+

Similarly, a chemical fragment index serves to find only the most +likely molecules for our substructure match - anything that the +index didn’t find is definitely not a match. But we still have to +examine each of the molecules returned by the indexing system and +verify that the complete substructure for which we are searching is +present.

+
+
+

NP-Complete - A Little about Computability#

+

Searching through a page of text for the words “John Hartford” is +pretty easy for a modern computer. Although false positives +returned by the index are a nuisance and impair performance, they +are not a catastrophe. Not so for substructure matching. +Unfortunately, substructure matching falls into a category of +“hard” mathematical problems, which means false positives from the +index are a big problem.

+

Substructure matching (finding a certain functional group within a +molecule) is an example of what mathematicians call +graph isomorphism, +and is in a class of problems called +NP Complete. +Roughly speaking, this means the time it takes to do a substructure +search is non-polynomial, i.e. exponential in the number of atoms +and bonds. To see why this is a computational disaster, compare two +tasks, one that takes polynomial time, +k1*N2, versus one that takes exponential +time k2*2N. Our polynomial task is bad +enough: If we double N, it takes four times as long to solve. But +the exponential task is worse: +Every time we add an atom it doubles. So going from one atom to +two doubles the time, and going from 100 atoms to 101 atoms doubles +the time. Even if we can get k2 down to a millionth of +k1, we’re still in trouble - a million is just +220 or twenty atoms away.

+

It has been mathematically proven that substructure searching is in +the set of NP Complete problems, so there’s no point wasting our +time searching for a polynomial algorithm. The good news is that +most molecules have “low connectivity”, meaning most atoms have +fewer than four bonds, unlike the weird and twisted graphs that +mathematicians consider. In practice, most substructure matching +can be done in polynomial time around N2 or +N3. But even with this improvement, substructure +matching is an “expensive” time-consuming task for a computer.

+

The key point is that indexing is particularly important for +cheminformatics systems. The typical modern computer can only +examine a few thousand molecules per second, so examining millions +of molecules one-by-one is out of the question. The indexing done +by a modern cheminformatics system is the key to its performance.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Cheminf101/similarity.html b/docs/Cheminf101/similarity.html new file mode 100644 index 00000000..9eb181c1 --- /dev/null +++ b/docs/Cheminf101/similarity.html @@ -0,0 +1,620 @@ + + + + + + + + + + + Molecular Similarity — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Molecular Similarity#

+

Substructure searching is a very powerful technique, but sometimes +it misses answers for seemingly trivial differences. We saw this +earlier with the following:

+ + + + + + + + + + + + + + +

Query

Target

image0

image1

We’re looking +for +steroids…

But we don’t find this one because of +the double bond

+

It is somewhat like searching for “221b Baker Street” and finding +nothing because the database contains “221B Baker Street” and the +system doesn’t consider “b” and “B” a match.

+

A good similarity search would find the target structure shown +above, because even though it is not a substructure match, it is +highly similar to our query.

+

There are many ways to measure similarity.

+
+
2D topology

The best-known and most widely used similarity metrics compare the +two-dimensional topology, that is, they only use the molecule’s +atoms and bonds without considering its shape.

+

Tanimoto similarity is perhaps the best known as it is easy to +implement and fast to compute. An excellent summary of 2D +similarity metrics can be found in section 5.3 of the +Daylight Theory Manual.

+
+
3D configuration

One of the most important uses of similarity is in the discovery of +new drugs, and a molecule’s shape is critical to it’s medicinal +value (see QSAR).

+

3D similarity searches compare the configuration (also called the +“conformation”) of a molecule to other molecules. The “electronic +surface” of the molecule is the important bit - the part that can +interact with other molecules. 3D searches compare the surfaces of +two molecules, and how polarized or polarizable each bit of the +surface is.

+

3D similarity searches are uncommon, for two reasons: It’s +difficult and it’s slow. The difficulty comes from the complexity +of molecular interactions - a molecule is not a fixed shape, but +rather a dynamic object that changes according to its environment. +And the slowness comes from the difficulty: To get better results, +scientists employ more and more complex programs.

+
+
Physical Properties

The above 2D and 3D similarity are based on the molecule’s +structure. Another technique compares the properties - either +computed or measured or both - and declares that molecules with +many properties in common are likely to have similar structure. It +is the idea of QSAR taken to the database.

+
+
Clustering

“Clustering” is the process of differentiating a set of things into +groups where each group has common features. Molecules can be +clustered using a variety of techniques, such as common 2D and/or +3D features.

+

Note that clustering is not a similarity metric per se (the topic +of this section), but it may use various similarity metrics when +computing clusters. It is included here because it can be used as a +“cheap substitute”. That is, when someone wants to find compounds +similar to a known compound, you can show them the group (the +cluster) to which the compound belongs. It allows you to +pre-compute the clusters, spending lots of computational time up +front, and then give answers very quickly.

+
+
+

Many cheminformatics databases have one or more similarity searches +available.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Command-line_tools/Rosetta.html b/docs/Command-line_tools/Rosetta.html new file mode 100644 index 00000000..8c99957a --- /dev/null +++ b/docs/Command-line_tools/Rosetta.html @@ -0,0 +1,824 @@ + + + + + + + + + + + obabel vs Chemistry Toolkit Rosetta — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

obabel vs Chemistry Toolkit Rosetta#

+

The Chemistry Toolkit Rosetta is the brainchild of Andrew Dalke. It is a website that illustrates how to program various chemical toolkits to do a set of tasks. To make it easily understandable, these tasks are probably on the simpler side of those in the real world. The Rosetta already contains several examples of using the Open Babel Python bindings to carry out tasks.

+

Here we focus on the use of the command line application obabel to accomplish the tasks listed in the Rosetta. Inevitably we will struggle with more complicated tasks; however this section is intended to show how far you can go simply using obabel, and to illustrate some of its less common features. Some of the tasks cannot be done exactly as specified, but they are are usually close enough to useful.

+

Note that except for the examples involving piping, the GUI could also be used. Also the copy output format at present works only for files with Unix line endings.

+
+

Heavy atom counts from an SD file#

+
+

For each record from the benzodiazepine file, print the total number of heavy atoms in each record (that is, exclude hydrogens). The output is one output line per record, containing the count as an integer. If at all possible, show how to read directly from the gzip’ed input SD file.

+
+
obabel benzodiazepine.sdf.gz -otxt --title "" --append atoms -d -l5
+
+
+

The txt format outputs only the title but we set that to nothing and then append the result. The atoms descriptor counts the number of atoms after the -d option has removed the hydrogens. The -l5 limits the output to the first 5 molecules, in case you really didn’t want to print out results for all 12386 molecules.

+
+
+

Convert a SMILES string to canonical SMILES#

+
+

Parse two SMILES strings and convert them to canonical form. Check that the results give the same string.

+
+
obabel -:"CN2C(=O)N(C)C(=O)C1=C2N=CN1C" -:"CN1C=NC2=C1C(=O)N(C)C(=O)N2C" -ocan
+
+
+

giving:

+
Cn1cnc2c1c(=O)n(C)c(=O)n2C
+Cn1cnc2c1c(=O)n(C)c(=O)n2C
+2 molecules converted
+
+
+
+
+

Report how many SD file records are within a certain molecular weight range#

+
+

Read the benzodiazepine file and report the number of records which contain a molecular weight between 300 and 400.

+
+
obabel benzodiazepine.sdf.gz -onul --filter "MW>=300 MW<=400"
+3916 molecules converted
+
+
+
+
+

Convert SMILES file to SD file#

+
+

Convert a SMILES file into an SD file. The conversion must do its best to use the MDL conventions for the SD file, including aromaticity perception. Note that the use of aromatic bond types in CTABs is only allowed for queries, so aromatic structures must be written in a Kekule form. Because the stereochemistry of molecules in SD files is defined solely by the arrangement of atoms, it is necessary to assign either 2D or 3D coordinates to the molecule before generating output. The coordinates do not have to be reasonable (i.e. it’s ok if they would make a chemist scream in horror), so long as the resulting structure is chemically correct.

+
+
obabel infile.smi -O outfile.sdf --gen3D
+
+
+
+
+

Report the similarity between two structures#

+
+

Report the similarity between “CC(C)C=CCCCCC(=O)NCc1ccc(c(c1)OC)O” (PubChem CID 1548943) and “COC1=C(C=CC(=C1)C=O)O” (PubChem CID 1183).

+
+

Two types of fingerprint are used: the default FP2 path-based one, and FP4 which is structure key based:

+
obabel -:"CC(C)C=CCCCCC(=O)NCc1ccc(c(c1)OC)O" -:"COC1=C(C=CC(=C1)C=O)O" -ofpt
+Tanimoto from first mol = 0.360465
+
+obabel -:"CC(C)C=CCCCCC(=O)NCc1ccc(c(c1)OC)O" -:"COC1=C(C=CC(=C1)C=O)O" -ofpt
+       -xfFP4
+Tanimoto from first mol = 0.277778
+
+
+
+
+

Find the 10 nearest neighbors in a data set#

+
+

The data will come from the gzip’ed SD file of the benzodiazepine data set. Use the first structure as the query structure, and use the rest of the file as the targets to find the 10 most similar structures. The output is sorted by similarity, from most similar to least. Each target match is on its own line, and the line contains the similarity score in the first column in the range 0.00 to 1.00 (preferably to 2 decimal places), then a space, then the target ID, which is the title line from the SD file.

+
+

A fastsearch index, using the default FP2 fingerprint, is prepared first:

+
obabel benzodiazepine.sdf -ofs
+
+
+

The query molecule (first in the file) is extracted:

+
obabel benzodiazepine.sdf -O first.sdf -l1
+
+
+

The similarity search of the index file for the 10 most similar molecules is done. The output is to Title format (txt), with the -aa option of Fastsearch format (fs) adding the Tanimoto score:

+
obabel benzodiazepine.fs -otxt -s first.sdf -at 10 -aa
+
+623918 1
+450820 1
+1688 1
+20351792 0.993007
+9862446 0.986111
+398658 0.97931
+398657 0.97931
+6452650 0.978873
+450830 0.978873
+3016 0.978873
+10 molecules converted
+
+
+

The Tanimoto coefficient comes second, rather than first as requested and is not formatted to two decimal places, but the information is still there.

+
+
+

Depict a compound as an image#

+
+

Depict the SMILES “CN1C=NC2=C1C(=O)N(C(=O)N2C)C” as an image of size 200x250 pixels. The image should be in PNG format if possible, otherwise in GIF format. If possible, give it the title “Caffeine”. It should display the structure on a white background.

+
+

Open Babel can output 2D structures as PNG. The -d makes hydrogen implicit. Width and height are set with the -xw and -xh options.:

+
obabel -:"CN1C=NC2=C1C(=O)N(C(=O)N2C)C Caffeine" -O out.png -xw 200 -xh 250 -d
+
+
+

Open Babel also supports outputting SVG, which is resolution independent as a vector format.:

+
obabel -:"CN1C=NC2=C1C(=O)N(C(=O)N2C)C Caffeine" -O out.svg -d
+
+
+
+
+

Highlight a substructure in the depiction#

+
+

Read record 3016 from the benzodiazepine SD file. Find all atoms which match the SMARTS “c1ccc2c(c1)C(=NCCN2)c3ccccc3” and highlight them in red. All other atoms must be drawn in black.

+

The resulting image should be 200x250 pixels and on a white background. The resulting image file should be in PNG (preferred) or GIF format.

+
+
obabel benzodiazepine.sdf.gz -O out.png --filter "title=3016"
+       -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -xw 200 -xh 250 -d
+
+
+

Open Babel can output 2D structures as PNG. The compressed data file can be used as input. The -d makes hydrogen implicit and the -xu removes the element-specific coloring. Width and height are set with the -xw and -xh options.

+

This is slow (about a minute) because each molecule is fully interpreted, although in most cases only the title is required. The task can be done 10 times faster by using the uncompressed file, converting only the title (the -aT option) and copying the SD text to standard out when a match occurs. This is piped to a second command which outputs the structure.:

+
obabel benzodiazepine.sdf -ocopy --filter "title=3016" -aT |
+       obabel -isdf -O out.png -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -xw 200 -xh 250 -d
+
+
+

Open Babel also supports outputting SVG, which is resolution independent as a vector format.:

+
obabel benzodiazepine.sdf.gz -O out.svg --filter "title=3016"
+       -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -d
+
+obabel benzodiazepine.sdf -ocopy --filter "title=3016" -aT |
+       obabel -isdf -O out.svg -s "c1ccc2c(c1)C(=NCCN2)c3ccccc3 red" -xu -d
+
+
+
+
+

Align the depiction using a fixed substructure#

+
+

Use the first 16 structures of the benzodiazepine SD file to make a 4x4 grid of depictions as a single image. The first structure is in the upper-left corner, the second is to its right, and so on. Each depiction should include the title field of the corresponding record, which in this case is the PubChem identifier.

+

Use “[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12” as the common SMARTS substructure. This is the fused ring of the benzodiazepine system but without bond type or atom aromaticity information. Use the first molecule as the reference depiction. All other depictions must have the depiction of their common substructure aligned to the reference.

+
+

Since Open Babel 2.3.1 this can be done in one line:

+
obabel benzodiazepine.sdf.gz -O out.png -l16 --align -d -xu -xw 400 -xh 400
+       -s"[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12 green"
+
+
+

The depiction has some cosmetic tweaks: the substructure is highlighted in green; -d removes hydrogen; -xu removes the element specific coloring. +Open Babel also supports outputting SVG, which is resolution independent as a vector format.:

+
obabel benzodiazepine.sdf.gz -O out.svg -l16 --align -d -xu
+       -s"[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12 green"
+
+
+

In earlier versions the obfit program can be used. First extract the first molecule for the reference and the first 16 to be displayed:

+
obabel benzodiazepine.sdf.gz -O firstbenzo.sdf -l1
+obabel benzodiazepine.sdf.gz -O sixteenbenzo.sdf -l16
+
+
+

Then use the program obfit, which is distributed with Open Babel:

+
obfit "[#7]~1~[#6]~[#6]~[#7]~[#6]~[#6]~2~[#6]~[#6]~[#6]~[#6]~[#6]12"
+      firstbenzo.sdf  sixteenbenzo.sdf > 16out.sdf
+
+
+

Display the 16 molecules (with implicit hydrogens) as SVG (earlier versions of Open Babel do not support PNG):

+
obabel 16out.sdf -O out.png -d -xw 400 -xh 400
+
+
+
+
+

Perform a substructure search on an SDF file and report the number of false positives#

+
+

The sample database will be gzip’ed SD file of the benzodiazepine data set. The query structure will be defined as “C1C=C(NC=O)C=CC=1”.

+
+

The default FP2 fingerprint is sensitive to whether a bond is aromatic or not. So this Kekule structure needs to be converted to its aromatic form. As this happens automatically on conversion, the easiest way is to store the SMILES string in a file, and use this file to specify the search pattern.

+

Prepare an index (of the unzipped data file):

+
obabel benzodiazepine.sdf -ofs
+
+
+

Do the substructure search. A very large number of molecules match the query, so the maximum number of hits has to be increased with the -al 9000 option. By virtue of the ~ it is the false positives that are output (to nowhere) but their number is reported:

+
obabel benzodiazepine.fs -onul -s ~substruct.smi -al 9000
+8531 candidates from fingerprint search phase
+12 molecules converted
+
+
+
+
+

Calculate TPSA#

+
+

The goal of this task is get an idea of how to do a set of SMARTS matches when the data comes in from an external table.

+

Write a function or method named “TPSA” which gets its data from the file “tpsa.tab”. The function should take a molecule record as input, and return the TPSA value as a float. Use the function to calculate the TPSA of “CN2C(=O)N(C)C(=O)C1=C2N=CN1C”. The answer should be 61.82, which agrees exactly with Ertl’s online TPSA tool but not with PubChem’s value of 58.4.

+
+

Open Babel’s command line cannot parse tables with custom formats. But the TPSA descriptor, defined by a table in the file psa.txt, is already present and can be used as follows:

+
obabel -:CN2C(=O)N(C)C(=O)C1=C2N=CN1C -osmi --append TPSA
+
+
+

giving:

+
Cn1c(=O)n(C)c(=O)c2c1ncn2C      61.82
+1 molecule converted
+
+
+

The table in tpsa.tab and Open Babel’s psa.txt have the same content but different formats. The first few rows of tpsa.tab are:

+
psa   SMARTS  description
+23.79 [N0;H0;D1;v3]   N#
+23.85 [N+0;H1;D1;v3]  [NH]=
+26.02 [N+0;H2;D1;v3]  [NH2]-
+
+
+

and the equivalent lines from Open Babel’s psa.txt:

+
[N]#* 23.79
+[NH]=*        23.85
+[NH2]-*       26.02
+
+
+

It is possible to add new descriptors without having to recompile. If another property, myProp, could be calculated using a table in myprop.txt with the same format as psa.txt, then a descriptor could set up by adding the following item to plugindefines.txt:

+
OBGroupContrib
+myProp          # name of descriptor
+myprop.txt      # data file
+Coolness index  # brief description
+
+
+

The following would then output molecules in increasing order of myProp with the value added to the title:

+
obabel infile.smi -osmi --sort myProp+
+
+
+
+
+

Working with SD tag data#

+
+

The input file is SD file from the benzodiazepine data set. Every record contains the tags PUBCHEM_CACTVS_HBOND_DONOR, PUBCHEM_CACTVS_HBOND_ACCEPTOR and PUBCHEM_MOLECULAR_WEIGHT, and most of the records contain the tag PUBCHEM_XLOGP3.

+

The program must create a new SD file which is the same as the input file but with a new tag data field named “RULE5”. This must be “1” if the record passes Lipinski’s rule, “0” if it does not, and “no logP” if the PUBCHEM_XLOGP3 field is missing.

+
+

This exercise is a bit of a stretch for the Open Babel command-line. However, the individual lines may be instructional, since they are more like the sort of task that would normally be attempted.

+
obabel benzodiazepine.sdf.gz -O out1.sdf --filter "PUBCHEM_CACTVS_HBOND_DONOR<=5 &
+       PUBCHEM_CACTVS_HBOND_ACCEPTOR<=10 & PUBCHEM_MOLECULAR_WEIGHT<=500 &
+       PUBCHEM_XLOGP3<=5"
+       --property "RULE5" "1"
+
+obabel benzodiazepine.sdf.gz -O out2.sdf --filter "!PUBCHEM_XLOGP3"
+       --property "RULE5" "no logP"
+
+obabel benzodiazepine.sdf.gz -O out3.sdf --filter "!PUBCHEM_XLOGP3 &
+       !(PUBCHEM_CACTVS_HBOND_DONOR<=5 & PUBCHEM_CACTVS_HBOND_ACCEPTOR<=10 &
+       PUBCHEM_MOLECULAR_WEIGHT<=500 & PUBCHEM_XLOGP3<=5)"
+       --property "RULE5" "0"
+
+
+

The first command converts only molecules passing Lipinski’s rule, putting them in out1.sdf, and adding an additional property, RULE5, with a value of 1.

+

The second command converts only molecules that do not have a property PUBCHEM_XLOGP3.

+

The third command converts only molecules that do have a PUBCHEM_XLOGP3 and which fail Lipinski’s rule.

+

Use cat or type at the command prompt to concatenate the three files out1.sdf, out2.sdf, out3.sdf.

+

These operations are slow because the chemistry of each molecule is fully converted. As illustrated below, the filtering alone could have been done more quickly using the uncompressed file and the -aP option, which restricts the reading of the SDF file to the title and properties only, and then copying the molecule’s SDF text verbatim with -o copy. But adding the additional property is not then possible:

+
obabel benzodiazepine.sdf -o copy -O out1.sdf -aP --filter
+       "PUBCHEM_CACTVS_HBOND_DONOR<=5 & PUBCHEM_CACTVS_HBOND_ACCEPTOR<=10 &
+       PUBCHEM_MOLECULAR_WEIGHT<=500 & PUBCHEM_XLOGP3<=5"
+
+
+
+
+

Unattempted tasks#

+

A number of the Chemical Toolkit Rosetta tasks cannot be attempted as the obabel tool does not (currently!) have the necessary functionality. These include the following:

+
    +
  • Detect and report SMILES and SDF parsing errors

  • +
  • Ring counts in a SMILES file

  • +
  • Unique SMARTS matches against a SMILES string

  • +
  • Find the graph diameter

  • +
  • Break rotatable bonds and report the fragments

  • +
  • Change stereochemistry of certain atoms in SMILES file

  • +
+

To handle these tasks, you need to use the Open Babel library directly. This is the subject of the next section.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Command-line_tools/babel.html b/docs/Command-line_tools/babel.html new file mode 100644 index 00000000..12d4a000 --- /dev/null +++ b/docs/Command-line_tools/babel.html @@ -0,0 +1,1260 @@ + + + + + + + + + + + obabel - Convert, Filter and Manipulate Chemical Data — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

obabel - Convert, Filter and Manipulate Chemical Data#

+

obabel is a command-line program for interconverting between many file formats used in molecular modeling and computational chemistry and related areas. It can also be used for filtering molecules and for simple manipulation of chemical data.

+
+

Synopsis#

+
    +
  • obabel [-H <help-options>]

  • +
+
    +
  • obabel [-i <input-ID>] infile [-o <output-ID>] [-O outfile] [OPTIONS]

  • +
+
+
+
+

Options#

+

Information and help

+
    +
  • obabel [-H <help-options>]

  • +
+
+
-H
+

Output usage information

+
+
-H <format-ID>
+

Output formatting information and options for +the format specified

+
+
-Hall
+

Output formatting information and options for all +formats

+
+
-L
+

List plugin types (charges, descriptors, fingerprints, forcefields, formats, loaders and ops)

+
+
-L <plugin type>
+

List plugins of this type. For example, obabel -L formats gives the list of file formats.

+
+
-L <plugin-ID>
+

Details of a particular plugin (of any plugin type). For example, obabel -L cml gives details on the CML file format.

+
+
-V
+

Output version number

+
+
+

Conversion options

+
    +
  • obabel [-i <input-ID>] infile [-o <output-ID>] [-O outfile] [OPTIONS]

  • +
  • obabel -:"<text>"  [-i <input-ID>] [-o <output-ID>] [-O outfile] [OPTIONS]

  • +
+
+

Note

+

If only input and output files are given, Open Babel will guess the file type from the filename extension. For information on the file formats supported by Open Babel, please see Supported File Formats and Options. If text is provided using the -: notation, SMILES are assumed by default if an input format is not specified.

+
+
+
-a <options>
+

Format-specific input options. Use -H <format-ID> to see options +allowed by a particular format, or see the appropriate section in +Supported File Formats and Options.

+
+
--add <list>
+

Add properties (for SDF, CML, etc.) from descriptors in list. Use +-L descriptors to see available descriptors.

+
+
--addfilename
+

Add the input filename to the title.

+
+
--addinindex
+

Append input index to title (that is, the index before any filtering)

+
+
--addoutindex
+

Append output index to title (that is, the index after any filtering)

+
+
--addpolarh
+

Like -h, but only adds hydrogens to polar atoms.

+
+
--addtotitle <text>
+

Append the text after each molecule title

+
+
--append <list>
+

Append properties or descriptor values appropriate for a molecule to its title. For more +information, see Append property values to the title.

+
+
-b
+

Convert dative bonds (e.g. [N+]([O-])=O to N(=O)=O)

+
+
-c
+

Center atomic coordinates at (0,0,0)

+
+
-C
+

Combine molecules in first file with others having the same name

+
+
--canonical
+

Canonicalize the atom order. If generating canonical SMILES, do not use +this option. Instead use the Canonical SMILES format (can).

+
+
--conformer <options>
+

Conformer searching to generate low-energy or diverse +conformers. For more information, see Generating conformers for structures.

+
+
-d
+

Delete hydrogens (make all hydrogen implicit)

+
+
--delete <list>
+

Delete properties in list

+
+
-e
+

Continue to convert molecules after errors

+
+
--energy <options>
+

Forcefield energy evaluation. See Forcefield energy and minimization.

+
+
--errorlevel <N>
+

Filter the level of errors and warnings displayed:

+
    +
  • 1 = critical errors only

  • +
  • 2 = include warnings too (default)

  • +
  • 3 = include informational messages too

  • +
  • 4 = include “audit log” messages of changes to data

  • +
  • 5 = include debugging messages too

  • +
+
+
-f <#>
+

For multiple entry input, start import with molecule # as the first +entry

+
+
--fillUC <param>
+

For a crystal structure, add atoms to fill the entire unit cell based +on the unique positions, the unit cell and the spacegroup. The parameter +can either be strict (the default), which only keeps atoms inside the +unit cell, or keepconnect, which fills the unit cell but keeps the +original connectivity.

+
+
--filter <criteria>
+

Filter based on molecular properties. See +Filtering molecules from a multimolecule file for examples and a list of +criteria.

+
+
--gen2d
+

Generate 2D coordinates

+
+
--gen3d
+

Generate 3D coordinates. You can specify the speed of prediction. See Specifying the speed of 3D coordinate generation.

+
+
-h
+

Add hydrogens (make all hydrogen explicit)

+
+
--highlight <substructure color>
+

Highlight substructures in 2D depictions. Valid +colors are black, gray, white, red, green, blue, yellow, +cyan, purple, teal and olive. Additional colors may be +specified as hexadecimal RGB values preceded by #. +Multiple substructures and corresponding colors may be +specified.

+
+
-i <format-ID>
+

Specifies input format. See Supported File Formats and Options.

+
+
-j, --join
+

Join all input molecules into a single output molecule entry

+
+
-k
+

Translate computational chemistry modeling keywords. See +the computational chemistry formats (Computational chemistry formats), +for example GAMESS Input (gamin, inp) and Gaussian Input (com, gau, gjc, gjf).

+
+
-l <#>
+

For multiple entry input, stop import with molecule # as the last +entry

+
+
--largest <#N descriptor>
+

Only convert the N molecules which have the largest values of the +specified descriptor. Preceding the descriptor by ~ inverts +this filter.

+
+
-m
+

Produce multiple output files, to allow:

+
    +
  • Splitting one input file - put each molecule into consecutively +numbered output files

  • +
  • Batch conversion - convert each of multiple input files into a +specified output format

  • +
+
+
--minimize <options>
+

Forcefield energy minimization. See Forcefield energy and minimization.

+
+
-o <format-ID>
+

Specifies output format. See Supported File Formats and Options.

+
+
-p <pH>
+

Add hydrogens appropriate for pH (use transforms in phmodel.txt)

+
+
--partialcharge <charge-method>
+

Calculate partial charges by the specified method. List available methods +using obabel -L charges.

+
+
--property <name value>
+

Add or replace a property (for example, in an SD file)

+
+
-r
+

Remove all but the largest contiguous fragment (strip salts)

+
+
--readconformer
+

Combine adjacent conformers in multi-molecule input into a single molecule. +If a molecule has the same structure as the preceding molecule, as +determined from its SMILES, it is not output but its coordinates are +added to the preceding molecule as an additional conformer. There can +be multiple groups of conformers, but the molecules in each group must +be adjacent.

+
+
-s <SMARTS>
+

Convert only molecules matching the SMARTS pattern specified

+
+
-s <filename.xxx>
+

Convert only molecules with the molecule in the file as a substructure

+
+
--separate
+

Separate disconnected fragments into individual molecular records

+
+
--smallest <#N descriptor>
+

Only convert the N molecules which have the smallest values of the +specified descriptor. Preceding the descriptor by ~ inverts this +filter.

+
+
--sort
+

Output molecules ordered by the value of a descriptor. See Sorting molecules.

+
+
--title <title>
+

Add or replace molecular title

+
+
--unique, --unique <param>
+

Do not convert duplicate molecules. See Remove duplicate molecules.

+
+
--writeconformers
+

Output multiple conformers as separate molecules

+
+
-x <options>
+

Format-specific output options. use -H <format-ID> to see options +allowed by a particular format, or see the appropriate section in +Supported File Formats and Options.

+
+
-v <SMARTS>
+

Convert only molecules NOT matching the SMARTS pattern specified

+
+
-z
+

Compress the output with gzip (not on Windows)

+
+
+
+
+

Examples#

+

The examples below assume the files are in the current directory. Otherwise you may need to include the full path to the files e.g. /Users/username/Desktop/mymols.sdf and you may need to put quotes around the filenames (especially on Windows, where they can contain spaces).

+

Standard conversion:

+
obabel ethanol.xyz -O ethanol.pdb
+babel ethanol.xyz ethanol.pdb
+
+
+

Conversion if the files do not have an extension that describes their format:

+
obabel -ixyz ethanol.aa -opdb -O ethanol.bb
+babel -ixyz ethanol.aa -opdb ethanol.bb
+
+
+

Molecules from multiple input files (which can have different formats) are normally combined in the output file:

+
obabel ethanol.xyz acetal.sdf benzene.cml -O allmols.smi
+
+
+

Conversion from a SMI file in STDIN to a Mol2 file written to STDOUT:

+
obabel -ismi -omol2
+
+
+

Split a multi-molecule file into new1.smi, new2.smi, etc.:

+
obabel infile.mol -O new.smi -m
+
+
+

In Windows this can also be written:

+
obabel infile.mol -O new*.smi
+
+
+

Multiple input files can be converted in batch format too. To convert all files ending in .xyz (*.xyz) to PDB files, you can type:

+
obabel *.xyz -opdb -m
+
+
+

Open Babel will not generate coordinates unless asked, so while a conversion from SMILES to SDF will generate a valid SDF file, the resulting file will not contain coordinates. To generate coordinates, use either the --gen3d or the --gen2d option:

+
obabel infile.smi -O out.sdf --gen3d
+
+
+

If you want to remove all hydrogens (i.e. make them all implicit) when doing the conversion the command would be:

+
obabel mymols.sdf -osmi -O outputfile.smi -d
+
+
+

If you want to add hydrogens (i.e. make them all explicit) when doing the conversion the command would be:

+
obabel mymols.sdf -O outputfile.smi -h
+
+
+

If you want to add hydrogens appropriate for pH7.4 when doing the conversion the command would be:

+
obabel mymols.sdf -O outputfile.smi -p
+
+
+

The protonation is done on an atom-by-atom basis so molecules with multiple ionizable centers will have all centers ionized.

+

Of course you don’t actually need to change the file type to modify the hydrogens. If you want to add all hydrogens the command would be:

+
obabel mymols.sdf -O mymols_H.sdf -h
+
+
+

Some functional groups e.g. nitro or sulphone can be represented either as [N+]([O-])=O or N(=O)=O. To convert all to the dative bond form:

+
obabel mymols.sdf -O outputfile.smi -b
+
+
+

If you only want to convert a subset of molecules you can define them using -f and -l. To convert molecules 2-4 of the file mymols.sdf type:

+
obabel mymols.sdf -f 2 -l 4 -osdf -O outputfile.sdf
+
+
+

Alternatively you can select a subset matching a SMARTS pattern, so to select all molecules containing bromobenzene use:

+
obabel mymols.sdf -O selected.sdf -s "c1ccccc1Br"
+
+
+

You can also select the subset that do not match a SMARTS pattern, so to select all molecules not containing bromobenzene use:

+
obabel mymols.sdf -O selected.sdf -v "c1ccccc1Br"
+
+
+

You can of course combine options, so to join molecules and add hydrogens type:

+
obabel mymols.sdf -O myjoined.sdf -h -j
+
+
+

Files compressed with gzip are read transparently, whether or not they have a .gz suffix:

+
obabel compressed.sdf.gz -O expanded.smi
+
+
+

On platforms other than Windows, the output file can be compressed with gzip, but note if you don’t specify the .gz suffix it will not be added automatically, which could cause problems when you try to open the file:

+
obabel mymols.sdf -O outputfile.sdf.gz -z
+
+
+

This next example reads the first 50 molecules in a compressed dataset and prints out the SMILES of those containing a pyridine ring, together with the index in the file, the ID (taken from an SDF property) as well as the output index:

+
obabel chembl_02.sdf.gz -osmi -l 50 -s c1ccccn1 --append chebi_id
+       --addinindex --addoutindex
+
+
+

For the test data (taken from ChEMBLdb), this gave:

+
N1(CCN(CC1)c1c(cc2c3c1OCC(n3cc(c2=O)C(=O)O)C)F)C        3 100146 1
+c1(c(=O)c2c(n(c1)OC)c(c(N1CC(CC1)CNCC)c(c2)F)F)C(=O)O   6 100195 2
+S(=O)(=O)(Nc1ncc(cc1)C)c1c2c(c(N(C)C)ccc2)ccc1          22 100589 3
+c1([nH]c2c(c1)cccc2)C(=O)N1CCN(c2c(N(CC)CC)cccn2)CC1    46 101536 4
+
+
+
+
+

Format Options#

+

Individual file formats may have additional formatting options. These are listed in the documentation for the individual formats (see Supported File Formats and Options) or can be shown using the -H <format-Id> option, e.g. -H cml.

+

To use these additional options, input format options are preceded by -a, e.g. -as. Output format options, which are much more common, are preceded by -x, e.g. -xn. So to read the 2D coordinates (rather than the 3D) from a CML file and generate an SVG file displaying the molecule on a black background, the relevant options are used as follows:

+
obabel mymol.cml out.svg -a2 -xb
+
+
+
+
+

Append property values to the title#

+

The command line option --append adds extra information to the title of the molecule.

+

The information can be calculated from the structure of the molecule or can originate from a property attached to the molecule (in the case of CML and SDF input files). It is used as follows:

+
obabel infile.sdf -osmi --append "MW CAT_NO"
+
+
+

MW is the ID of a descriptor which calculates the molecular weight of the molecule, and CAT_NO is a property of the molecule from the SDF input file. The values of these are added to the title of the molecule. For input files with many molecules these additions are specific to each molecule. (Note that the related option --addtotitle simply adds the same text to every title.)

+

The append option only takes one parameter, which means that it may be necessary to enclose all of the descriptor IDs or property names together in a single set of quotes.

+

If the name of the property in the SDF file (internally the Attribute in OBPairData) contains spaces, these spaces should be replaced by underscore characters, ‘_’. So the example above would also work for a property named CAT NO.

+

By default, the extra items are added to the title separated by spaces. But if the first character in the parameter is a punctuation character other than ‘_’, it is used as the separator instead. If the list starts with “t”, a tab character is used as a separator.

+
+
+

Generating conformers for structures#

+

The command line option --conformer allows performing conformer +searches using a range of different algorithms and options:

+
    +
  • --log - output a log of the energies (default = no log)

  • +
  • --nconf # - number of conformers to generate

  • +
+

Forcefield-based methods for finding stable conformers:

+
    +
  • --systematic - systematically (exhaustively) generate all conformers

  • +
  • --random - randomly generate conformers

  • +
  • --weighted - weighted rotor search for lowest energy conformer

  • +
  • --ff <name> - select a forcefield (default = MMFF94)

  • +
+

Genetic algorithm based methods (default):

+
    +
  • --children # - number of children to generate for each parent (default = 5)

  • +
  • --mutability # - mutation frequency (default = 5)

  • +
  • --converge # - number of identical generations before convergence is reached

  • +
  • --score # - scoring function [rmsd|energy] (default = rmsd)

  • +
+

You can use them like this (to generate 50 conformers, scoring with +MMFF94 energies but default genetic algorithm options):

+
obabel EtOT5D.cml -O EtOT5D0.xyz --conformer --nconf 50 --score energy
+
+
+

or if you also wish to generate 3D coordinates, followed by conformer +searching try something like this:

+
obabel ligand.babel.smi -O ligand.babel.sdf --gen3d --conformer --nconf 20 --weighted
+
+
+
+
+

Filtering molecules from a multimolecule file#

+

Six of the options above can be used to filter molecules:

+
    +
  • -s - convert molecules that match a SMARTS string

  • +
  • -v - convert molecules that don’t match a SMARTS string

  • +
  • -f and -l - convert molecules in a certain range

  • +
  • --unique - only convert unique molecules (that is, remove duplicates)

  • +
  • --filter - convert molecules that meet specified chemical (and other) criteria

  • +
+

This section focuses on the --filter option, which is very versatile and can select a subset of molecules based either on properties imported with the molecule (as from a SDF file) or from calculations made by Open Babel on the molecule.

+

The aim has been to make the option flexible and intuitive to use; don’t be put off by the long description.

+

You use it like this:

+
obabel filterset.sdf -osmi --filter "MW<130 ROTATABLE_BOND > 2"
+
+
+

It takes one parameter which probably needs to be enclosed in double quotes to avoid confusing the shell or operating system. (You don’t need the quotes with the Windows GUI.) The parameter contains one or more conditional tests. By default, these have all to be true for the molecule to be converted. As well as this implicit AND behaviour, you can write a full Boolean expression (see below). As you can see, there can be spaces or not in sensible places and the conditional tests could be separated by a comma or semicolon.

+

You can filter on two types of property:

+
    +
  • An SDF property, as the identifier ROTATABLE_BOND could be. There is no need for it to be previously known to Open Babel.

  • +
  • A descriptor name (internally, an ID of an OBDescriptor object). This is a plug-in class so that new objects can easily be added. MW is the ID of a descriptor which calculates molecular weight. You can see a list of available descriptors using:

    +
    obabel -L descriptors
    +
    +
    +

    or from a menu item in the GUI.

    +
  • +
+ +

The descriptor names are case-insensitive. With the property names currently, you need to get the case right. Both types of identifier can contain letters, numbers and underscores, ‘_’. Properties can contain spaces, but then when writing the name in the filter parameter, you need to replace them with underscores. So in the example above, the test would also be suitable for a property ‘ROTATABLE BOND’.

+

Open Babel uses a SDF-like property (internally this is stored in the class OBPairData) in preference to a descriptor if one exists in the molecule. So with the example file, which can be found here:

+
obabel filterset.sdf -osmi --filter "logP>5"
+
+
+

converts only a molecule with a property logP=10.900, since the others do not have this property and logP, being also a descriptor, is calculated and is always much less than 5.

+

If a property does not have a conditional test, then it returns true only if it exists. So:

+
obabel filterset.sdf -osmi --filter "ROTATABLE_BOND MW<130"
+
+
+

converts only those molecules with a ROTATABLE_BOND property and a molecular weight less than 130. If you wanted to also include all the molecules without ROTATABLE_BOND defined, use:

+
obabel filterset.sdf -osmi --filter "!ROTATABLE_BOND || (ROTATABLE_BOND & MW<130)"
+
+
+

The ! means negate. AND can be & or &&, OR can be | or ||. The brackets are not strictly necessary here because & has precedent over | in the normal way. If the result of a test doesn’t matter, it is parsed but not evaluated. In the example, the expression in the brackets is not evaluated for molecules without a ROTATABLE_BOND property. This doesn’t matter here, but if evaluation of a descriptor involved a lot of computation, it would pay to include it late in the boolean expression so that there is a chance it is skipped for some molecules.

+

Descriptors must have a conditional test and it is an error if they don’t. The default test, as used by MW or logP, is a numerical one, but the parsing of the text, and what the test does is defined in each descriptor’s code (a virtual function in the OBDescriptor class). Three examples of this are described in the following sections.

+
+

String descriptors#

+
obabel filterset.sdf -osmi --filter "title='Ethanol'"
+
+
+

The descriptor title, when followed by a string (here enclosed by single quotes), does a case-sensitive string comparison. (‘ethanol’ wouldn’t match anything in the example file.) The comparison does not have to be just equality:

+
obabel filterset.sdf -osmi --filter "title>='D'"
+
+
+

converts molecules with titles Dimethyl Ether and Ethanol in the example file.

+

It is not always necessary to use the single quotes when the meaning is unambiguous: the two examples above work without them. But a numerical, rather than a string, comparison is made if both operands can be converted to numbers. This can be useful:

+
obabel filterset.sdf -osmi --filter "title<129"
+
+
+

will convert the molecules with titles 56 123 and 126, which is probably what you wanted.

+
obabel filterset.sdf -osmi --filter "title<'129'"
+
+
+

converts only 123 and 126 because a string comparison is being made.

+

String comparisons can use * as a wildcard if used as the first or last character of the string (anywhere else a * is a normal character). So --filter "title='*ol'" will match molecules with titles ‘methanol’, ‘ethanol’ etc. and --filter "title='eth*' will match ‘ethanol’, ‘ethyl acetate’, ‘ethical solution’ etc. Use a * at both the first and last characters to test for the occurrence of a string, so --filter "title='*ol*'" will match ‘oleum’, ‘polonium’ and ‘ethanol’.

+
+
+

SMARTS descriptor#

+

This descriptor will do a SMARTS test (substructure and more) on the molecules. The smarts ID can be abbreviated to s and the = is optional. More than one SMARTS test can be done:

+
obabel filterset.sdf -osmi --filter "s='CN' s!='[N+]'"
+
+
+

This provides a more flexible alternative to the existing -s and -v options, since the SMARTS descriptor test can be combined with other tests.

+
+
+

InChI descriptor#

+
obabel filterset.sdf -osmi --filter "inchi='InChI=1/C2H6O/c1-2-3/h3H,2H2,1H3'"
+
+
+

will convert only ethanol. It uses the default parameters for InChI comparison, so there may be some messages from the InChI code. There is quite a lot of flexibility on how the InChI is presented (you can miss out the non-essential bits):

+
obabel filterset.sdf -osmi --filter "inchi='1/C2H6O/c1-2-3/h3H,2H2,1H3'"
+obabel filterset.sdf -osmi --filter "inchi='C2H6O/c1-2-3/h3H,2H2,1H3'"
+obabel filterset.sdf -osmi --filter "inchi=C2H6O/c1-2-3/h3H,2H2,1H3"
+obabel filterset.sdf -osmi --filter "InChI=1/C2H6O/c1-2-3/h3H,2H2,1H3"
+
+
+

all have the same effect.

+

The comparison of the InChI string is done only as far as the parameter’s length. This means that we can take advantage of InChI’s layered structure:

+
obabel filterset.sdf -osmi --filter "inchi=C2H6O"
+
+
+

will convert both Ethanol and Dimethyl Ether.

+
+
+
+

Substructure and similarity searching#

+

For information on using obabel for substructure searching and similarity searching, see Molecular fingerprints and similarity searching.

+
+
+

Sorting molecules#

+

The --sort option is used to output molecules ordered by the value of a descriptor:

+
obabel  infile.xxx  outfile.xxx  --sort desc
+
+
+

If the descriptor desc provides a numerical value, the molecule with the smallest value is output first. For descriptors that provide a string output the order is alphabetical, but for the InChI descriptor a more chemically informed order is used (e.g. “CH4” is before than “C2H6”, “CH4” is less than “ClH” hydrogen chloride).

+

The order can be reversed by preceding the descriptor name with ~, e.g.:

+
obabel  infile.xxx  outfile.yyy  --sort ~logP
+
+
+

As a shortcut, the value of the descriptor can be appended to the molecule name by adding a + to the descriptor, e.g.:

+
obabel  aromatics.smi  -osmi  --sort ~MW+
+ c1ccccc1C=C   styrene 104.149
+ c1ccccc1C     toluene 92.1384
+ c1ccccc1      benzene 78.1118
+
+
+
+
+

Remove duplicate molecules#

+

The --unique option is used to remove, i.e. not output, any chemically identical molecules during conversion:

+
obabel  infile.xxx  outfile.yyy  --unique [param]
+
+
+

The optional parameter param defines what is regarded as “chemically identical”. It can be the name of any descriptor, although not many are likely to be useful. If param is omitted, the InChI descriptor is used. Other useful descriptors are ‘cansmi’ and ‘cansmiNS’ (canonical SMILES, with and without stereochemical information),’title’ and truncated InChI (see below).

+

A message is output for each duplicate found:

+
Removed methyl benzene - a duplicate of toluene (#1)
+
+
+

Clearly, this is more useful if each molecule has a title. The (#1) is the number of duplicates found so far.

+

If you wanted to identify duplicates but not output the unique molecules, you could use the null format:

+
obabel  infile.xxx  -onul  --unique
+
+
+
+

Truncated InChI#

+

It is possible to relax the criterion by which molecules are regarded as “chemically identical” by using a truncated InChI specification as param. This takes advantage of the layered structure of InChI. So to remove duplicates, treating stereoisomers as the same molecule:

+
obabel  infile.xxx  outfile.yyy  --unique /nostereo
+
+
+

Truncated InChI specifications start with / and are case-sensitive. param can be a concatenation of these e.g. /nochg/noiso:

+
/formula   formula only
+/connect   formula and connectivity only
+/nostereo  ignore E/Z and sp3 stereochemistry
+/nosp3     ignore sp3 stereochemistry
+/noEZ      ignore E/Z stereoochemistry
+/nochg     ignore charge and protonation
+/noiso     ignore isotopes
+
+
+
+
+

Multiple files#

+

The input molecules do not have to be in a single file. So to collect all the unique molecules from a set of MOL files:

+
obabel  *.mol  uniquemols.sdf  --unique
+
+
+

If you want the unique molecules to remain in individual files:

+
obabel  *.mol  U.mol  -m  --unique
+
+
+

On the GUI use the form:

+
obabel  *.mol  U*.mol  --unique
+
+
+

Either form is acceptable on the Windows command line.

+

The unique molecules will be in files with the original name prefixed by ‘U’. Duplicate molecules will be in similar files but with zero length, which you will have to delete yourself.

+
+
+
+

Aliases for chemical groups#

+

There is a limited amount of support for representing common chemical groups by an alias, e.g. benzoic acid as Ph-COOH, with two alias groups. Internally in Open Babel, the molecule usually has a ‘real’ structure with the alias names present as only an alternative representation. For MDL MOL and SD files alias names can be read from or written to an ‘A’ line. The more modern RGroup representations are not yet recognized. Reading is transparent; the alias group is expanded and the ‘real’ atoms given reasonable coordinates if the the molecule is 2D or 3D. Writing in alias form, rather than the ‘real’ structure, requires the use of the -xA option. SVGFormat will also display any aliases present in a molecule if the -xA option is set.

+

The alias names that are recognized are in the file superatoms.txt which can be edited.

+

Normal molecules can have certain common groups given alternative alias representation using the --genalias option. The groups that are recognized and converted are a subset of those that are read. Displaying or writing them still requires the -xA option. For example, if aspirin.smi contained O=C(O)c1ccccc1OC(=O)C, it could be displayed with the aliases COOH and OAc by:

+
obabel aspirin.smi  -O out.svg  --genalias  -xA
+
+
+
+
+

Forcefield energy and minimization#

+

Open Babel supports a number of forcefields which can be used for energy evaluation as well as energy minimization. The available forcefields as listed as follows:

+
C:\>obabel -L forcefields
+GAFF    General Amber Force Field (GAFF).
+Ghemical    Ghemical force field.
+MMFF94    MMFF94 force field.
+MMFF94s    MMFF94s force field.
+UFF    Universal Force Field.
+
+
+

To evaluate a molecule’s energy using a forcefield, use the --energy option. The energy is put in an OBPairData object “Energy” which is accessible via an SDF or CML property or --append (to title). Use --ff <forcefield_id> to select a forcefield (default is Ghemical) and --log for a log of the energy calculation. The simplest way to output the energy is as follows:

+
obabel infile.xxx -otxt --energy --append "Energy"
+
+
+

To perform forcefield minimization, the --minimize option is used. The following shows typical usage:

+
obabel infile.xxx -O outfile.yyy --minimize --steps 1500 --sd
+
+
+

The available options are as follows:

+
--log        output a log of the minimization process (default= no log)
+--crit <converge>     set convergence criteria (default=1e-6)
+--sd         use steepest descent algorithm (default = conjugate gradient)
+--newton     use Newton2Num linesearch (default = Simple)
+--ff <forcefield-id>       select a forcefield (default = Ghemical)
+--steps <number>    specify the maximum number of steps (default = 2500)
+--cut        use cut-off (default = don't use cut-off)
+--rvdw <cutoff>     specify the VDW cut-off distance (default = 6.0)
+--rele <cutoff>     specify the Electrostatic cut-off distance (default = 10.0)
+--freq <steps>     specify the frequency to update the non-bonded pairs (default = 10)
+
+
+

Note that for both --energy and --minimize, hydrogens are made explicit before energy evaluation.

+
+
+

Aligning molecules or substructures#

+

The --align option aligns molecules to the first molecule provided. +It is typically used with the -s option to specify an alignment +based on a substructure:

+
obabel pattern.www  dataset.xxx  -O outset.yyy  -s SMARTS  --align
+
+
+

Here, only molecules matching the specified SMARTS pattern are converted +and are aligned by +having all their atom coordinates modified. The atoms that are +used in the alignment are those matched by SMARTS in the first +output molecule. The subsequent molecules are aligned so that +the coordinates of atoms equivalent to these are as nearly as +possible the same as those of the pattern atoms. +The atoms in the various molecules can be in any order. +Tha alignment ignores hydrogen atoms but includes symmetry. +Note that the standalone program obfit has similar functionality.

+

The first input molecule could also be part of the data set:

+
obabel dataset.xxx  -O outset.yyy  -s SMARTS  --align
+
+
+

This form is useful for ensuring that a particular substructure always +has the same orientation in a 2D display of a set of molecules. +0D molecules, for example from SMILES, are given 2D coordinates before +alignment.

+

See documentation for the -s option for its other possible +parameters. For example, the matching atoms could be those +of a molecule in a specified file.

+

If the -s option is not used, all of the atoms in the first molecule +are used as pattern atoms. The order of the atoms must be the same +in all the molecules.

+

The output molecules have a property (represented internally as +OBPairData) called rmsd, which is a measure of the quality +of the fit. To attach it to the title of each molecule use +--append rmsd.

+

To output the two conformers closest to the first conformer in a dataset:

+
obabel dataset.xxx  -O outset.yyy  --align  --smallest 2 rmsd
+
+
+
+
+

Specifying the speed of 3D coordinate generation#

+

When you use the --gen3d option, you can specify the speed and quality. The following shows typical usage:

+
obabel infile.smi -O out.sdf --gen3d fastest
+
+
+

The available options are as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

option

description

fastest

No cleanup

fast

Force field cleanup (100 cycles)

med (default)

Force field cleanup (100 cycles) + Fast rotor search (only one permutation)

slow

Force field cleanup (250 cycles) + Fast rotor search (permute central rotors)

slowest

Force field cleanup (500 cycles) + Slow rotor search

better

Same as slow

best

Same as slowest

dist, dg

Use distance geometry method (unstable)

+

You can also specify the speed by an integer from 1 (slowest) to 5 (fastest).

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Contributing/Contributing.html b/docs/Contributing/Contributing.html new file mode 100644 index 00000000..7f6f77b5 --- /dev/null +++ b/docs/Contributing/Contributing.html @@ -0,0 +1,577 @@ + + + + + + + + + + + Contributing to Open Babel — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Contributing/DevBestPractices.html b/docs/Contributing/DevBestPractices.html new file mode 100644 index 00000000..3511a745 --- /dev/null +++ b/docs/Contributing/DevBestPractices.html @@ -0,0 +1,690 @@ + + + + + + + + + + + Developing Open Babel — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Developing Open Babel#

+

Due to its open nature of its development, Open Babel contains code contributed by a wide variety of developers (see Thanks). This section describes some general guidelines and “best practices” for code developers.

+
+

Developer Resources#

+

For new and existing developers here are some useful resources:

+ +
+
+

Working with the Development Code#

+

To download and update the latest version of the Open Babel source code, you need Git. Git is the name of the project used to maintain the Open Babel version control repository. There are many clients for Git, including command-line and GUI applications.

+
+

Keeping up to date with Git#

+
    +
  1. Check out the latest development version:

    +
    git clone https://github.com/openbabel/openbabel.git openbabel-dev
    +
    +
    +

    This creates a directory called openbabel-dev, which contains the latest source code from Open Babel.

    +
  2. +
  3. Configure and compile this using CMake (see Compiling Open Babel).

  4. +
  5. After some time passes, and you want the latest bug fixes or new features, you may want to update your source code. To do this, go into the openbabel-dev directory you created above, and type:

    +
    git pull -u
    +
    +
    +
  6. +
  7. Do step (2) again.

  8. +
  9. If, after updating, the compilation fails please report it to the Open Babel mailing list. In the meanwhile, if you want to go back to a particular revision (that is, if you don’t want to use the latest one), just use git log to find the checksum of the current revision, and update to an earlier revision using this:

  10. +
+
+

$ git log +… +commit 1c2916cc5e6ed31a23291524b08291c904506c3f +Author: Noel O’Boyle <baoilleach@gmail.com> +Date: Mon Apr 30 07:33:17 2018 +0100

+

$ git checkout 1c2916cc5

+
+
+
+
+

Modular design of code base#

+

Since version 2.0, Open Babel has had a modular structure. Particularly for the use of Open Babel as a chemical file format converter, it aims to:

+
    +
  • separate the chemistry, the conversion process and the user interfaces, reducing, as far as possible, the dependency of one on another.

  • +
  • put all the code for each chemical format in one place (usually a single cpp file) and make the addition of new formats simple.

  • +
  • allow the format conversion of not just molecules, but also any other chemical objects, such as reactions.

  • +
+
+../../_images/OBStructure.png +
+

The structure of the Open Babel codebase broken down into modules#

+
+
+

The separate parts of the OpenBabel program are:

+
+
    +
  • The Chemical core, which contains OBMol etc. and has all the chemical structure description and manipulation. This bit is the heart of the application and its API can be used as a chemical toolbox. It has no input/output capabilities.

  • +
  • The Formats, which read and write to files of different types. These classes are derived from a common base class, OBFormat, which is in the Conversion Control module. They also make use of the chemical routines in the Chemical Core module. Each format file contains a global object of the format class. When the format is loaded the class constructor registers the presence of the class with OBConversion. This means the formats are plugins - new formats can be added without changing any framework code.

  • +
  • Common Formats include OBMoleculeFormats and XMLBaseFormat from which most other formats (like Format A and Format B in the diagram) are derived. Independent formats like Format C are also possible.

  • +
  • The Conversion control, which also keeps track of the available formats, the conversion options and the input and output streams. It can be compiled without reference to any other parts of the program. In particular, it knows nothing of the Chemical core: mol.h is not included.

  • +
  • The User interface, which may be a command line (in main.cpp), a Graphical User Interface(GUI), especially suited to Windows users and novices, or may be part of another program which uses OpenBabel’s input and output facilities. This depends only on the Conversion control module (obconversion.h is included), but not on the Chemical core or on any of the Formats.

  • +
  • The Fingerprint API, as well as being usable in external programs, is employed by the fastsearch and fingerprint formats.

  • +
  • The Fingerprints, which are bit arrays which describe an object and which facilitate fast searching. They are also built as plugins, registering themselves with their base class OBFingerprint which is in the Fingerprint API.

  • +
  • The Error handling can be used throughout the program to log and display errors and warnings (see below).

  • +
+
+

It is possible to build each box in the diagram as a separate DLL or shared library and the restricted dependencies can help to limit the amount of recompilation. For the formats or the fingerprints built in this way it may be possible to use only those whose DLL or so files are present when the program starts. Several formats or fingerprints may be present in a single dynamic library.

+

Alternatively, and most commonly, the same source code can be built into a single executable. The restricted dependencies still provide easier program maintenance.

+

This segregation means that a module can directly call code only in other modules connected to it by forward arrows. So some discipline is needed when adding new code, and sometimes non-obvious work-arounds are necessary. For instance, since the user interface doesn’t know about the Chemical Core, if it were necessary to set any parameters in it, then this would have to be done through a pseudo format OBAPIInterface.

+

Sometimes one format needs to use code from another format, for example, rxnformat needs to read mol files with code from mdlformat. The calling format should not use the code directly but should do it through a OBConversion object configured with the appropriate helper format.

+

The objects passed between the modules in the diagram above are polymorphic :obapi:`OBBase` pointers. This means that the conversion framework can be used by any object derived from OBBase (which essentially means anything - chemical or not). Most commonly these refer to OBMol objects, less commonly to OBReaction objects, but could be extended to anything else without needing to change any existing code.

+
+
+

Error Handling and Warnings#

+

The general philosophy of the Open Babel project is to attempt to gracefully recover from error conditions. Depending on the severity of the error, a message may or may not be sent to the user – users can filter out developer debugging messages and minor errors, but should be notified of significant problems.

+

Errors and warnings in Open Babel are handled internally by a flexible system motivated by a few factors:

+
    +
  • End users often do not wish to be deluged by debugging or other messages during operation.

  • +
  • Other developers may wish to redirect or filter error/warning output (e.g., in a GUI).

  • +
  • The operation of Open Babel should be open to developers and users alike to monitor an “audit trail” of operations on files and molecules, and debug the program and library itself when the need arises.

  • +
+

Multiple error/warning levels exist and should be used by code. These are defined in the :obapi:`obMessageLevel` enum as follows:

+
    +
  • obError – for critical errors (e.g., cannot read a file)

  • +
  • obWarning – for non-critical problems (e.g., molecule appears empty)

  • +
  • obInfo – for informative messages (e.g., file is a non-standard format)

  • +
  • obAuditMsg – for messages auditing methods which destroy or perceive molecular data (e.g., kekulization, atom typing, etc.)

  • +
  • obDebug – for messages only useful for debugging purposes

  • +
+

The default filter level is set to obWarning, which means that users are told of critical errors, but not non-standard formatting of input files.

+

A global error handler :obapi:`obErrorLog` (an instance of :obapi:`OBMessageHandler`) is defined and should be used as shown in the API documentation for the :obapi:`OBMessageHandler` class.

+
+
+

Lazy Evaluation#

+

The :obapi:`OBMol::BeginModify() <OpenBabel::OBMol::BeginModify>` and :obapi:`OBMol::EndModify() <OpenBabel::OBMol::EndModify>` calls are part of Open Babel’s lazy evaluation mechanism.

+

In some cases, code may desire to make a large number of changes to an OBMol object at once. Ideally, this should all happen without triggering unintended perception routines. Therefore, the BeginModify() call marks the beginning of such code, and EndModify() triggers any needed updates of lazy evaluation methods.

+

For example:

+
mol.BeginModify();
+double x,y,z;
+OBAtom *atom;
+vector<string> vs;
+
+for (i = 1; i <= natoms; i ++)
+{
+    if (!ifs.getline(buffer,BUFF_SIZE))
+        return(false);
+    tokenize(vs,buffer);
+    if (vs.size() != 4)
+        return(false);
+
+    atom = mol.NewAtom();
+    x = atof((char*)vs[1].c_str());
+    y = atof((char*)vs[2].c_str());
+    z = atof((char*)vs[3].c_str());
+
+    atom->SetVector(x,y,z); //set coordinates
+    atom->SetAtomicNum(atoi(vs[0].c_str())); // set atomic number
+}
+mol.ConnectTheDots();
+mol.PerceiveBondOrders();
+mol.EndModify();
+
+
+

This code reads in a list of atoms with XYZ coordinates and the atomic number in the first column (vs[0]). Since hundreds or thousands of atoms could be added to a molecule, followed by creating bonds, the code is enclosed in a BeginModify()/EndModify() pair.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Contributing/Documentation.html b/docs/Contributing/Documentation.html new file mode 100644 index 00000000..f4b5e348 --- /dev/null +++ b/docs/Contributing/Documentation.html @@ -0,0 +1,590 @@ + + + + + + + + + + + Documentation — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Documentation#

+

Documenting Open Babel is an important and ongoing task. As an open source project, code must be documented, both for other developers to use the API and for others to follow your code. This includes clear documentation on the interfaces of particular classes and methods (that is, the API documentation) but also tutorials and examples of using the Open Babel library to accomplish clear tasks.

+

Beyond the documentation described above, as an open-source project involving many, many contributors, the internal code should be clearly commented and easy to read (in English, preferably, since this is the common language of developers on the project).

+
+

Adding New Code#

+

The golden rule is write the documentation, then code to the specs.

+

You should never, ever start writing code unless you’ve specified, clearly and exactly, what your code will do. This makes life easier for you (i.e., you know exactly what the code should do), and for others reading your code.

+

This mantra also facilitates writing tests (see Adding a new test).

+
+
+

Modifying Old Code#

+

When modifying old code, please take a little time to improve the documentation of the function.

+

Even an “obvious” function must be documented, if for no other reason than to say, “This function does what you think, and has no side effects.”

+

Take :obapi:`OBAtom::SetAtomicNum() <OpenBabel::OBAtom::SetAtomicNum>` - should be “obvious”, right? Wrong.

+
+
    +
  • Does it affect the charge?

  • +
  • The spin multiplicity?

  • +
  • The implicit valence?

  • +
  • The hybridization?

  • +
  • What happens if I do SetHybridization(3) and then SetAtomicNum(1)?

  • +
  • Does the molecule have to be in the modify state?

  • +
  • If the molecule is not in the modify state, is it put into the modify state by SetAtomicNum()?

  • +
  • Does SetAtomicNum() cause a recomputation of aromaticity?

  • +
+
+
+
+

User documentation and tutorials#

+

There’s no point spending time adding new features to Open Babel unless you describe how to use them and give examples. The best place to do this is in the user documentation…which you’re reading right now.

+

This documentation is automatically generated from text files in a simple markup language (reStructuredText) using the Sphinx documentation system. This allows us to generate web pages, PDF files, and even ePub eBooks all from the same source (which is currently maintained at BitBucket).

+

If you notice any errors or feel like adding a section, please let us know at openbabel-devel.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Contributing/Overview.html b/docs/Contributing/Overview.html new file mode 100644 index 00000000..1630061a --- /dev/null +++ b/docs/Contributing/Overview.html @@ -0,0 +1,574 @@ + + + + + + + + + + + Overview — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Overview#

+

Open Babel is developed using open, community-oriented development made possible by an active community – developers, testers, writers, implementers and most of all users. No matter which ‘er’ you happen to be, or how much time you can provide, you can make valuable contributions.

+

Not sure where to start? This section aims to give you some ideas.

+

Provide input

+

You can help us by:

+ +

Spread the word

+

If you find Open Babel useful, there’s a chance that others will also. You can help us by:

+
    +
  • promoting and citing Open Babel in talks and publications

  • +
  • writing blog posts about Open Babel

  • +
  • helping with documentation and our website

  • +
  • building your own software on Open Babel

  • +
+

To get started, just send an email to our mailing list.

+

Code a storm

+

As an open source project, Open Babel has a very open development process. This means that many contributors have helped with the project with a variety of help – some for long periods of time, and some with small, single changes. All types of assistance has been valuable to the growth of the project over the years.

+

New developers are always very welcome to OpenBabel so if you’re interested, just send an email to the developer list (join here) about what you would like to work on, or else we can come up with some ideas for areas where you could contribute. Here are some possibilities:

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Contributing/SoftwareArchaeology.html b/docs/Contributing/SoftwareArchaeology.html new file mode 100644 index 00000000..47708990 --- /dev/null +++ b/docs/Contributing/SoftwareArchaeology.html @@ -0,0 +1,597 @@ + + + + + + + + + + + Software Archaeology — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Software Archaeology#

+

In any large software project, some parts of the code are revised and kept up-to-date more than others.

+

Conversely, some parts of the code begin to fall behind – the code may be poorly tested, poorly documented, and not always up to best practices.

+

With that in mind, the following sections describe the important task of software archeology – diving in to older parts of code and bringing them up to date. Whenever editing a file, please keep these in mind.

+
+

Documentation and Code Readability#

+
    +
  • Add clear documentation for every public function (see Documentation).

  • +
  • Add clear comments on the internal operation of functions so that anyone can read through the code quickly.

    +
    +
      +
    • If you’re not sure what a function does, e-mail the openbabel-devel list and it can be worked out.

    • +
    +
    +
  • +
  • Mark functions which should be publicly visible and functions which are only useful internally. Many methods are not particularly useful except inside the library itself.

  • +
  • Improve code indentation

    +
    +
      +
    • It seems like a minor point, but the format of your code is important. As open source software, your code is read by many, many people.

    • +
    • Different contributions have often had different indentation styles. Simply making the code indentation consistent across an entire file makes the code easier to read.

    • +
    • The current accepted scheme for Open Babel is a default indent of two spaces, and use of spaces instead of tabs.

    • +
    • For tips on changing your editor to use this indentation style, please e-mail the openbabel-devel list.

    • +
    +
    +
  • +
  • Delete code which is commented out. The SVN version control system maintains history, so if we need it later, we can go back and get that code. Dead code like this simply makes it harder to read the important code!

  • +
  • Marking areas of code which use :obapi:`OBAtom::GetIdx() <OpenBabel::OBAtom::GetIdx>` or other accesses to atom indexes, which may break when atom indexing changes.

  • +
+
+
+

Code Maintenance#

+
    +
  • Minimize #if/#endif conditional compilation. Some is required for portability, but these should be minimized where possible. If there seems to be some magic #define which accesses parts of the file, it’s probably dead code. As above, dead code makes it harder to maintain and read everything else.

  • +
  • Removing calls to cout, cerr, STDOUT, perror etc. These should use the global error reporting code.

  • +
  • Minimize warnings from compilers (e.g., GCC flags -Wextra -Wall). Sometimes these are innocuous, but it’s usually better to fix the problems before they become bugs.

  • +
  • Use static code analysis tools to find potential bugs in the code and remove them.

  • +
  • Insure proper use of atom and bond iterators, e.g., FOR_ATOMS_OF_MOL rather than atom or bond index access, which will break if indexing changes.

  • +
+

Patches and contributions towards any of these tasks will be greatly appreciated.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Contributing/Testing.html b/docs/Contributing/Testing.html new file mode 100644 index 00000000..375f28d4 --- /dev/null +++ b/docs/Contributing/Testing.html @@ -0,0 +1,730 @@ + + + + + + + + + + + Adding a new test — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Adding a new test#

+

Tests allow us to maintain code quality, ensure that code is working, prevent regressions, and facilitate refactoring. Personally, I find that there is no better motivation for writing tests than knowing that that bug I fixed will stay fixed, and that feature I implemented will not be broken by others. As an open source developer, I never have enough time; tests ensure that what time I have is not wasted.

+

We can divide the existing tests into three classes, based on how they test the Open Babel codebase:

+
    +
  1. Tests written in C++ that test the public API

  2. +
  3. Tests written in Python that use the SWIG bindings to test the public API

  4. +
  5. Tests written in Python that use the command-line executables for testing

  6. +
+

Which type of test should you write? It doesn’t really matter - it’s more important that you write some type of test. Personally, I can more quickly test more if I write the test in Python, so generally I write and check-in tests of type (2) above; when I need to run a testcase in a debugger, I write a short test of type (1) so that I can step through and see what’s happening.

+
+

Running tests#

+

To begin with, we need to configure CMake to enable tests: -DENABLE_TESTS=ON. This adds the make test target and builds the C++ tests. For tests of type 3 (above), you will also need to enable the Python bindings: -DPYTHON_BINDINGS=ON -DRUN_SWIG=ON. Some tests are dependent on optional dependencies; if you don’t build with support for these, then the corresponding tests will not be run.

+

To actually run the tests, you can run the entire test suite in one go or run individual tests. To run the entire suite, use make test or ctest (note that you can use the -j option to speed up ctest). The ctest command also allows a single test or a list of tests to be specified, and in combination with -VV (verbose) may be useful to run an individual test. However, I find it more useful to run individual tests directly. Here is an example of how to run an individual test for each of the three types discussed earlier:

+
    +
  1. test_runner regressionstest 1

    +

    This will run test number 1 in regressionstest.cpp. Nothing will happen…unless the test fails. (test_runner is a testing harness generated by CMake.)

    +
  2. +
  3. python test\testbindings.py TestSuite.testAsterisk

    +

    This will run the testAsterisk test in testbindings.py. This will write out a single dot, and some summary information.

    +
  4. +
  5. python test\testbabel.py testOBabel.testSMItoInChI

    +

    This will run the testSMItoInChI test in testbabel.py.

    +
  6. +
+

The next few sections describe adding a new test of types 1 to 3. The same test will be added, a test to ensure that the molecular weight of ethanol is reported as 46.07.

+
+
+

Test using C++#

+

The easiest place to add new tests is into test/regressionstest.cpp. Look at the switch statement at the end of the file and pick a number for the test. Let’s say 260. Add the following:

+
case 260:
+  test_Ethanol_MolWt();
+  break;
+
+
+

Now add the value of 260 to test/CMakeLists.txt so that it will be run as part of the testsuite.:

+
set (regressions_parts 1 221 222 223 224 225 226 227 260)
+
+
+

Now let’s add the actual test somewhere near the top of the file:

+
void test_Ethanol_MolWt()
+{
+  OBMol mol;
+  OBConversion conv;
+  OB_REQUIRE(conv.SetInFormat("smi"));
+  conv.ReadString(&mol, "CCO");
+  double molwt = mol.GetMolWt();
+  OB_ASSERT(molwt - 46.07 < 0.01);
+}
+
+
+

The various assert methods are listed in obtest.h and are as follows:

+
    +
  • OB_REQUIRE(exp) - This must evaluate to true or else the test will be marked as failing and will terminate. This is useful for conditions that must be true or else the remaining tests cannot be run (e.g. was the necessary OBFormat found?).

  • +
  • OB_ASSERT(exp) - This must evaluate to true or else the test will be marked as failing. In contrast to OB_REQUIRE, the test does not terminate in this case, but continues to run. This feature can be useful because it lets you know (based on the output) how many and which OB_ASSERT statements failed.

  • +
  • OB_COMPARE(expA, expB) - Expressions A and B must be equal or else the test fails (but does not terminate).

  • +
+

It is often useful to write a test that uses a checked-in testfile. Let’s do this for our example testcase. If you place a file ethanol.smi into test/files, then the following will read it using a convenience function provided by obtest.h.:

+
void test_Ethanol_MolWt()
+{
+  OBMolPtr mol = OBTestUtil::ReadFile("ethanol.smi")
+  double molwt = mol.GetMolWt();
+  OB_ASSERT(molwt - 46.07 < 0.01);
+}
+
+
+

As well as ReadFile (which is convenient for single molecules), the OBTestUtil struct provides GetFilename which will return the full path to the testfile, if you wish to open it yourself.

+
+
+

Test using a command-line executable#

+

At the command-line we can calculate the molecular weight of ethanol as shown below. We are going to do something similar using the Python test framework:

+
> obabel -:CCO --append MW -otxt
+46.0684
+
+
+

Open test/testbabel.py in an editor. I have grouped tests related to the obabel executable into a class testOBabel, so let’s add a new test there. Somewhere in that class (for example, at the end), add a function such as the following (note: it must begin with the word “test”):

+
def testMolWtEthanol(self):
+    """Check the molecular weight of ethanol"""
+    self.canFindExecutable("obabel")
+    answers = [
+            ("CCO", 46.07),
+            ("[H]", 1.01),
+            ("[2H]", 2.01),
+            ]
+    for smi, molwt in answers:
+        output, error = run_exec('obabel -:%s --append mw -otxt' % smi)
+        my_molwt = round(float(output), 2)
+        self.assertEqual(my_molwt, molwt)
+
+
+

We provide a few convenience functions to help write these tests. The most important of these is run_exec(command) which runs the commandline executable returns a tuple of stdout and stderr. Behind the scenes, it adds the full path to the named executable. In the example above, run_exec(stdin, command) took a single argument; the next example will show its use with two arguments - the additional argument is a string which is treated as stdin, and piped through the executable.

+

In the previous example, each SMILES string was passed in one-at-a-time. However, it is more efficient to do them all in one go as in the following example:

+
def testMolWtEthanol(self):
+    """Check the molecular weight of ethanol"""
+    self.canFindExecutable("obabel")
+    smifile = """CCO
+    [H]
+    [2H]
+    """
+    answers = [46.07, 1.01, 2.01]
+    output, error = run_exec(smifile, 'obabel -ismi --append mw -otxt')
+    for ans, my_ans in zip(answers, output.split("\n")):
+        self.assertEqual(ans, round(float(my_ans), 2))
+
+
+

To use a testfile placed in test/files, the getTestFile() member function is provided:

+
def testMolWtEthanol(self):
+    """Check the molecular weight of ethanol"""
+    self.canFindExecutable("obabel")
+    answers = [46.07, 1.01, 2.01]
+    smifile = self.getTestFile("ethanol.smi")
+    output, error = run_exec('obabel %s --append mw -otxt' % smifile)
+    for ans, my_ans in zip(answers, output.split("\n")):
+        self.assertEqual(ans, round(float(my_ans), 2))
+
+
+

The full list of provided convenience functions is:

+
    +
  • run_exec(command), run_exec(stdin, command) - see above

  • +
  • BaseTest.getTestFile(filename) - returns the full path to a testfile

  • +
  • BaseTest.canFindExecutable(executable) - checks whether the executable exists in the expected location

  • +
  • BaseTest.assertConverted(stderr, N) - An assert statement that takes the stderr from run_exec and will check whether the number of molecules reported as converted matches N

  • +
+
+
+

Test the API using Python#

+

The easiest place to add new tests is into test/testbindings.py. Classes are used to organise the tests, but for a single ‘miscellaneous’ test a good place is the TestSuite class. Somewhere in that class add the following function:

+
def testMolWtEthanol(self):
+    """Check the molecular weight of ethanol"""
+    answers = [
+            ("CCO", 46.07),
+            ("[H]", 1.01),
+            ("[2H]", 2.01),
+            ]
+    for smi, molwt in answers:
+        my_molwt = round(pybel.readstring("smi", smi).molwt, 2)
+        self.assertEqual(my_molwt, molwt)
+
+
+

The variable here is defined in testbindings.py and may be used find the path to testfiles. For example, given the test/ethanol.smi, the following may be used to read it:

+
def testMolWtEthanol(self):
+    """Check the molecular weight of ethanol"""
+    answers = [46.07, 1.01, 2.01]
+    testfile = os.path.join(here, "test", "ethanol.smi")
+    for mol, answer in zip(pybel.readfile("smi", testfile), answers):
+        my_molwt = round(mol.molwt, 2)
+        self.assertEqual(my_molwt, molwt)
+
+
+

The tests use the standard unittest framework. One thing to note, which is not obvious, is how to test for exceptions. A typical case is checking that a dodgy SMILES is rejected on reading; in this instance, Pybel.readstring() will raise an IOError. To assert that this is the case, rather than use try/except, the following syntax is required:

+
self.assertRaises(IOError, pybel.readstring, "smi", "~*&*($")
+
+
+

If you have multiple tests to add on a single ‘topic’, you will probably want to add your own class either into testbindings.py or a new Python file. Note that if you create a new Python file, it should start with the word test and you will need to add the rest of the name to the pybindtest list in test/CMakeLists.txt.

+
+
+

Some final comments#

+

Some thoughts on the topic of the perfect test:

+
    +
  • When adding a regression test for a bug fix, the test should fail without the fix, but pass afterwards.

  • +
  • When adding a test for a new feature, the test should provide complete coverage for all code paths.

  • +
  • Test not just perfect input, but all sorts of dodgy input like molecules with no atoms, empty strings, and so forth.

  • +
  • Don’t be afraid to add tests for things which you already (think you) know will pass; such tests may surprise you, and even if they don’t they will prevent regressions.

  • +
+

Potential problems/gotchas:

+
    +
  • Why isn’t your Python test being run? Test functions name must begin with the word test.

  • +
  • If your new test passes first time, check that it is actually running correctly, by changing your asserts so that they should fail.

  • +
  • The C++ tests will be marked as failing if the test writes any of the following to stdout: ERROR, FAIL, Test failed. This is actually how the assert methods work.

  • +
  • It’s best to avoid writing to disk, and instead write to a variable or stdout and capture it (as in the examples above).

  • +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Depiction/depiction.html b/docs/Depiction/depiction.html new file mode 100644 index 00000000..d6f2611d --- /dev/null +++ b/docs/Depiction/depiction.html @@ -0,0 +1,593 @@ + + + + + + + + + + + 2D Depiction — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

2D Depiction#

+

As the old Chinese proverb has it, a molecular depiction is worth a +thousand words. This chapter covers everything relevant to using Open +Babel to generate or read/write a 2D depiction, expected by most +chemists for print or website purposes.

+

When we talk about a depiction in cheminformatics, there are really two different concepts covered by this term:

+
    +
  1. Graphical display of a molecule’s structure as a 2D image (such as the PNG and SVG formats). Here is an example:

    +
    obabel -:C(=O)Cl -O acidchloride.png
    +
    +
    +
  2. +
+../../_images/acidchloride.png +
    +
  1. Storage of the 2D coordinates (and associated stereo symbols) associated with Concept 1 (using formats such as Mol and Mol2). Here is the connection table from the corresponding Mol file for the above depiction:

    +
    3  2  0  0  0  0  0  0  0  0999 V2000
    +  0.8660   -0.5000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    +  1.7321   -0.0000    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    +  0.0000    0.0000    0.0000 Cl  0  0  0  0  0  0  0  0  0  0  0  0
    +1  2  2  0  0  0  0
    +1  3  1  0  0  0  0
    +
    +
    +
  2. +
+
+

Note

+

The focus in this chapter is on 2D depiction and not 3D. It is of course possible to generate and store 3D coordinates in many of the file formats supported by Open Babel, but the only support for depiction is the Povray format, used to create ray-traced ball-and-stick diagrams of molecules. +Other Open Source chemistry projects such as Avogadro, PyMOL, and Jmol cover this area very well.

+
+
+

Molecular graphics#

+

As of Open Babel 2.3.2, there are three output formats for displaying a 2D image:

+
    +
  1. PNG format: This is a bitmap format used to create images of a certain +pixel width. These images can be inserted into Word documents or displayed +on web pages.

  2. +
  3. SVG format: This is a vector format, which can be scaled to generate images +of any size without loss of quality. In particular, Open Babel’s SVG images +can be interactively zoomed and panned using a modern web browser.

  4. +
  5. ASCII format: This is a depiction of a molecule using ASCII text. This can +be useful if you are logged into a remote server, or are working at the +command-line, and just need a basic check of the identity of a molecule.

  6. +
+

All of these formats support multimolecule files. The PNG and SVG formats +arrange the molecules into rows and columns (you can specify the number of rows or columns if you wish), while the ASCII format just uses a single column. The remainder of this chapter will concentrate on the PNG and SVG formats; for more information on the ASCII format, see the format description [ref].

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Descriptors/descriptors.html b/docs/Descriptors/descriptors.html new file mode 100644 index 00000000..fd7c5539 --- /dev/null +++ b/docs/Descriptors/descriptors.html @@ -0,0 +1,608 @@ + + + + + + + + + + + Descriptors — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Descriptors#

+
+

Numerical descriptors#

+

Number of atoms (atoms)

+

Add or remove hydrogens to count total or heavy atoms +SMARTS: *

+

Number of bonds (bonds)

+

Add or remove hydrogens to count total or bonds between heavy atoms +SMARTS: *~*

+

Number of Hydrogen Bond Donors (JoelLib) (HBD)

+

SMARTS: [!#6;!H0]

+

Number of Hydrogen Bond Acceptors 1 (JoelLib) (HBA1)

+

Identification of Biological Activity Profiles Using Substructural +Analysis and Genetic Algorithms – Gillet, Willett and Bradshaw, +U. of Sheffield and Glaxo Wellcome. +Presented at Random & Rational: Drug Discovery via Rational Design +and Combinitorial Chemistry, Strategic Research Institute, Princeton +NJ, Sept. 1995 +SMARTS: [$([!#6;+0]);!$([F,Cl,Br,I]);!$([o,s,nX3]);!$([Nv5,Pv5,Sv4,Sv6])]

+

Number of Hydrogen Bond Acceptors 2 (JoelLib) (HBA2)

+

SMARTS: [$([$([#8,#16]);!$(*=N~O);!$(*~N=O);X1,X2]),$([#7;v3;!$([nH]);!$(*(-a)-a)])]

+

Number of Fluorine Atoms (nF)

+

SMARTS: F

+

octanol/water partition coefficient (logP)

+

Datafile: logp.txt

+

Molecular Weight filter (MW)

+

Number of triple bonds (tbonds)

+

SMARTS: *#*

+

molar refractivity (MR)

+

Datafile: mr.txt

+

Number of aromatic bonds (abonds)

+

SMARTS: *:*

+

Number of single bonds (sbonds)

+

SMARTS: *-*

+

Number of double bonds (dbonds)

+

SMARTS: *=*

+

topological polar surface area (TPSA)

+

Datafile: psa.txt

+

Rotatable bonds filter (rotors)

+

Melting point (MP)

+

This is a melting point descriptor developed +by Andy Lang. For details see: +http://onschallenge.wikispaces.com/MeltingPointModel011 +Datafile: mpC.txt

+
+
+

Textual descriptors#

+

Canonical SMILES (cansmi)

+

Canonical SMILES without isotopes or stereo (cansmiNS)

+

IUPAC InChI identifier (InChI)

+

InChIKey (InChIKey)

+

Chemical formula (formula)

+

For comparing a molecule’s title (title)

+
+
+

Descriptors for filtering#

+

Lipinski Rule of Five (L5)

+

HBD<5 HBA1<10 MW<500 logP<5

+

SMARTS filter (smarts)

+

SMARTS filter (s)

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Features/Radicals.html b/docs/Features/Radicals.html new file mode 100644 index 00000000..1336b6fa --- /dev/null +++ b/docs/Features/Radicals.html @@ -0,0 +1,706 @@ + + + + + + + + + + + Radicals and SMILES extensions — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Radicals and SMILES extensions#

+
+

The need for radicals and implicit hydrogen to coexist#

+

Hydrogen deficient molecules, radicals, carbenes, etc., are not +well catered for by chemical software aimed at pharmaceuticals. But +radicals are important reaction intermediates in living systems as +well as many other fields, such as polymers, paints, oils, +combustion and atmospheric chemistry. The examples given here are +small molecules, relevant to the last two applications.

+

Chemistry software to handle radicals is complicated by the common +use of implicit hydrogen when describing molecules. How is the +program to know when you type “O” whether you mean an oxygen atom +or water? This ambiguity leads some to say that hydrogens should +always be explicit in any chemical description. But this is not the +way that most chemists work. A straight paraffinic chain from which +a hydrogen had been abstracted might commonly be represented by +something like: 3-pentyl radical

+

This uses implicit hydrogens and an explicit radical centre. But +sometimes the hydrogens are explicit and the radical centre +implicit, as when CH3is used to represent the methyl radical.

+
+
+

How Open Babel does it#

+

Open Babel accepts molecules with explicit or implicit hydrogens and +can convert between the two. It will also handle radicals (and +other hydrogen-deficient species) with implicit hydrogen by using +internally a property of an atom, _spinmultiplicity, modelled on +the RAD property in MDL MOL files and also used in CML. This can be +regarded in the present context as a measure of the hydrogen +deficiency of an atom. Its value is:

+
    +
  • 0 for normal atoms,

  • +
  • 2 for radical (missing one hydrogen) and

  • +
  • 1 or 3 for carbenes and nitrenes (missing two hydrogens).

  • +
+

It happens that for some doubly deficient species, like carbene +CH2 and oxygen atoms, the singlet and triplet species are fairly close +in energy and both may be significant in certain applications such +as combustion, atmospheric or preparative organic chemistry, so it +is convenient that they can be described separately. There are of +course an infinity of other electronic configurations of molecules +but Open Babel has no special descriptors for them. However, even +more hydrogen-deficient atoms are indicated by the highest possible +value of spinmultiplicity (C atom has spin multiplicity of 5). +(This extends MDL’s RAD property which has a maximum value of 3.)

+

If the spin multiplicity of an atom is not input explicitly, it is +set (in :obapi:`OBMol::AssignSpinMultiplicity() <OpenBabel::OBMol::AssignSpinMultiplicity>`) when the input format is +MOL, SMI, CML or Therm. This routine is called after all the atoms +and bonds of the molecule are known. It detects hydrogen deficiency +in an atom and assigns spin multiplicity appropriately. But because +hydrogen may be implicit it only does this for atoms which have at +least one explicit hydrogen or on atoms which have had +:obapi:`ForceNoH() <OpenBabel::OBAtom::ForceNoH>` called for them - which is effectively zero explicit +hydrogens. The latter is used, for instance, when SMILES inputs [O] +to ensure that it is seen as an oxygen atom (spin multiplicity=3) +rather than water. Otherwise, atoms with no explicit hydrogen are +assumed to have a spin multiplicity of 0, i.e with full complement +of implicit hydrogens.

+

In deciding which atoms should be have spin multiplicity assigned, +hydrogen atoms which have an isotope specification (D,T or even 1H) +do not count. So SMILES N[2H] is NH2D (spin multiplicity +left at 0, so with a full content of implicit hydrogens), whereas +N[H] is NH (spin multiplicity=3). A deuterated radical like NHD is +represented by [NH][2H].

+
+
+

In radicals either the hydrogen or the spin multiplicity can be implicit#

+

Once the spin multiplicity has been set on an atom, the hydrogens +can be implicit even if it is a radical. For instance, the +following mol file, with explicit hydrogens, is one way of +representing the ethyl radical:

+
ethyl radical
+ OpenBabel04010617172D
+Has explicit hydrogen and implicit spin multiplicity
+  7  6  0  0  0  0  0  0  0  0999 V2000
+    0.0000    0.0000    0.0000 C   0  0  0  0  0
+    0.0000    0.0000    0.0000 C   0  0  0  0  0
+    0.0000    0.0000    0.0000 H   0  0  0  0  0
+    0.0000    0.0000    0.0000 H   0  0  0  0  0
+    0.0000    0.0000    0.0000 H   0  0  0  0  0
+    0.0000    0.0000    0.0000 H   0  0  0  0  0
+    0.0000    0.0000    0.0000 H   0  0  0  0  0
+  1  2  1  0  0  0
+  1  3  1  0  0  0
+  1  4  1  0  0  0
+  1  5  1  0  0  0
+  2  6  1  0  0  0
+  2  7  1  0  0  0
+M  END
+
+
+

When read by Open Babel the spinmultiplicity is set to 2 on the C +atom 2. If the hydrogens are made implicit, perhaps by the -d +option, and the molecule output again, an alternative +representation is produced:

+
ethyl radical
+ OpenBabel04010617192D
+Has explicit spin multiplicity and implicit hydrogen
+  2  1  0  0  0  0  0  0  0  0999 V2000
+    0.0000    0.0000    0.0000 C   0  0  0  0  0
+    0.0000    0.0000    0.0000 C   0  0  0  0  0
+  1  2  1  0  0  0
+M  RAD  1   2   2
+M  END
+
+
+
+
+

SMILES extensions for radicals#

+

Although radical structures can be represented in SMILES by +specifying the hydrogens explicitly, e.g. [CH3] is the methyl +radical, some chemists have apparently felt the need to devise +non-standard extensions that represent the radical centre +explicitly. Open Babel will recognize C[O.] as well as C[O] as the +methoxy radical CH3O during input, but the non-standard +form is not supported in output.

+

By default, radical centres are output in explict hydrogen form, +e.g. C[CH2] for the ethyl radical. All the atoms will be in explict +H form, i.e. [CH3][CH2], if :obapi:`AddHydrogens() <OpenBabel::OBMol::AddHydrogens>` or the -h option has +been specified. The output is always standard SMILES, although +other programs may not interpret radicals correctly.

+

Open Babel supports another SMILES extension for both input and +output: the use of lower case atomic symbols to represent radical +centres. (This is supported on the ACCORD Chemistry Control and +maybe elsewhere.) So the ethyl radical is Cc and the methoxy radical +is Co. This form is input transparently and can be output by using +the -xr option “radicals lower case”. It is a useful shorthand in +writing radicals, and in many cases is easier to read since the +emphasis is on the radical centre rather than the number of +hydrogens which is less chemically significant.

+

In addition, this extension interprets multiple lower case c +without ring closure as a conjugated carbon chain, so that cccc is +input as 1,3-butadiene. Lycopene (the red in tomatoes) is +Cc(C)cCCc(C)cccc(C)cccc(C)ccccc(C)cccc(C)cccc(C)CCcc(C)C (without +the stereochemical specifications). This conjugated chain form is +not used on output - except in the standard SMILES aromatic form, +c1ccccc1 benzene.

+

It is interesting to note that the lower case extension actually improves +the chemical representation in a few cases. The allyl radical C3H5 +would be conventionally [CH2]=[CH][CH2] (in its explict H form), +but could be represented as ccc with the extended syntax. The +latter more accurately represents the symmetry of the molecule +caused by delocalisation.

+

This extension is not as robust or as carefully considered as standard +SMILES and should be used with restraint. A structure that uses c +as a radical centre close to aromatic carbons can be confusing to +read, and Open Babel’s SMILES parser can also be confused. For example, it +recognizes c1ccccc1c as the benzyl radical, but it doesn’t like +c1cc(c)ccc1. Radical centres should not be involved in ring +closure: for cyclohexyl radical C1cCCCC1 is ok, but c1CCCCC1 is not.

+
+
+

Other Supported Extensions#

+

Open Babel supports quadruple bonds $, e.g. [Rh-](Cl)(Cl)(Cl)(Cl)$[Rh-](Cl)(Cl)(Cl)Cl +and aromatic [te], e.g. Cc1[te]ccc1. In addition, ring closures +up to 5 digits %(N) are supported, e.g. C%(100)CC%(100).

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/2D_drawing_Formats.html b/docs/FileFormats/2D_drawing_Formats.html new file mode 100644 index 00000000..a73144f7 --- /dev/null +++ b/docs/FileFormats/2D_drawing_Formats.html @@ -0,0 +1,576 @@ + + + + + + + + + + + 2D drawing formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/3D_viewer_Formats.html b/docs/FileFormats/3D_viewer_Formats.html new file mode 100644 index 00000000..82ad47ac --- /dev/null +++ b/docs/FileFormats/3D_viewer_Formats.html @@ -0,0 +1,599 @@ + + + + + + + + + + + 3D viewer formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ABINIT_Output_Format.html b/docs/FileFormats/ABINIT_Output_Format.html new file mode 100644 index 00000000..411476a8 --- /dev/null +++ b/docs/FileFormats/ABINIT_Output_Format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + ABINIT Output Format (abinit) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ABINIT Output Format (abinit)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ACES_input_format.html b/docs/FileFormats/ACES_input_format.html new file mode 100644 index 00000000..c9be4aa3 --- /dev/null +++ b/docs/FileFormats/ACES_input_format.html @@ -0,0 +1,619 @@ + + + + + + + + + + + ACES input format (acesin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ACES input format (acesin)#

+

ACES is a set of programs that performs ab initio quantum chemistry calculations.

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ACES_output_format.html b/docs/FileFormats/ACES_output_format.html new file mode 100644 index 00000000..c4053490 --- /dev/null +++ b/docs/FileFormats/ACES_output_format.html @@ -0,0 +1,641 @@ + + + + + + + + + + + ACES output format (acesout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ACES output format (acesout)#

+

ACES is a set of programs that performs ab initio quantum chemistry calculations.

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ACR_format.html b/docs/FileFormats/ACR_format.html new file mode 100644 index 00000000..f0081799 --- /dev/null +++ b/docs/FileFormats/ACR_format.html @@ -0,0 +1,595 @@ + + + + + + + + + + + ACR format (acr) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ACR format (acr)#

+

CaRIne ASCII Crystal format (ACR)

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Consider single bonds only

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ADF_Band_output_format.html b/docs/FileFormats/ADF_Band_output_format.html new file mode 100644 index 00000000..aed0730c --- /dev/null +++ b/docs/FileFormats/ADF_Band_output_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + ADF Band output format (adfband) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ADF Band output format (adfband)#

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ADF_DFTB_output_format.html b/docs/FileFormats/ADF_DFTB_output_format.html new file mode 100644 index 00000000..64a89732 --- /dev/null +++ b/docs/FileFormats/ADF_DFTB_output_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + ADF DFTB output format (adfdftb) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ADF DFTB output format (adfdftb)#

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ADF_TAPE41_format.html b/docs/FileFormats/ADF_TAPE41_format.html new file mode 100644 index 00000000..7b6471b9 --- /dev/null +++ b/docs/FileFormats/ADF_TAPE41_format.html @@ -0,0 +1,598 @@ + + + + + + + + + + + ADF TAPE41 format (t41) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ADF TAPE41 format (t41)#

+

Currently the ADF Tape41 support reads grids from +TAPE41 text files. To generate an ASCII version from +the default binary, use the dmpkf program.

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ADF_cartesian_input_format.html b/docs/FileFormats/ADF_cartesian_input_format.html new file mode 100644 index 00000000..611f3f7a --- /dev/null +++ b/docs/FileFormats/ADF_cartesian_input_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + ADF cartesian input format (adf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ADF cartesian input format (adf)#

+
+

Note

+

This is a write-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ADF_output_format.html b/docs/FileFormats/ADF_output_format.html new file mode 100644 index 00000000..fe0ea2eb --- /dev/null +++ b/docs/FileFormats/ADF_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + ADF output format (adfout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ADF output format (adfout)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ASCII_format.html b/docs/FileFormats/ASCII_format.html new file mode 100644 index 00000000..abbffa06 --- /dev/null +++ b/docs/FileFormats/ASCII_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + ASCII format (ascii) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ASCII format (ascii)#

+

2D depiction of a single molecule as ASCII text

+

This format generates a 2D depiction of a molecule using only ASCII text +suitable for a command-line console, or a text file. For example:

+
obabel -:c1ccccc1C(=O)Cl -oascii -xh 20
+
+       __
+    __/__\_
+  _/__/    \__
+_/_/          \__
+|               |
+|             | |
+|             | |
+|             | |
+|             | |
+|___            _               Cl
+  \_\__       _/ \_          __
+     \_\_  __/     \__    __/
+       \__/           \__/
+                       | |
+                       | |
+                       | |
+                       | |
+
+                        O
+
+
+

If the image appears elongated or squat, the aspect ratio should be changed +from its default value of 1.5 using the -xa <ratio> option. To help +determine the correct value, use the -xs option to display a square.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-w <characters>
+

Image width in characters, default 79

+
+
-h <characters>
+

Image height in characters, default is width/aspect

+
+
-a <ratio>
+

Aspect ratio of character height:width, default is 1.5

+
+
-s
+

Display a square - this is useful for correcting the aspect ratio

+
+
-t
+

Write the output molecule index and the title

+
+
-m
+

Include a margin around the depiction

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.html b/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.html new file mode 100644 index 00000000..9657e281 --- /dev/null +++ b/docs/FileFormats/Accelrys_or_MSI_Biosym_or_Insight_II_CAR_format.html @@ -0,0 +1,597 @@ + + + + + + + + + + + Accelrys/MSI Biosym/Insight II CAR format (arc, car) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Accelrys/MSI Biosym/Insight II CAR format (arc, car)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.html b/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.html new file mode 100644 index 00000000..7c19b9eb --- /dev/null +++ b/docs/FileFormats/Accelrys_or_MSI_Cerius_II_MSI_format.html @@ -0,0 +1,575 @@ + + + + + + + + + + + Accelrys/MSI Cerius II MSI format (msi) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Accelrys/MSI Cerius II MSI format (msi)#

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.html b/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.html new file mode 100644 index 00000000..20b5a2aa --- /dev/null +++ b/docs/FileFormats/Accelrys_or_MSI_Quanta_CSR_format.html @@ -0,0 +1,575 @@ + + + + + + + + + + + Accelrys/MSI Quanta CSR format (csr) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Accelrys/MSI Quanta CSR format (csr)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Alchemy_format.html b/docs/FileFormats/Alchemy_format.html new file mode 100644 index 00000000..8edee8a0 --- /dev/null +++ b/docs/FileFormats/Alchemy_format.html @@ -0,0 +1,569 @@ + + + + + + + + + + + Alchemy format (alc) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Alchemy format (alc)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Amber_Prep_format.html b/docs/FileFormats/Amber_Prep_format.html new file mode 100644 index 00000000..4837a1f2 --- /dev/null +++ b/docs/FileFormats/Amber_Prep_format.html @@ -0,0 +1,604 @@ + + + + + + + + + + + Amber Prep format (prep) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Amber Prep format (prep)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/AutoDock_PDBQT_format.html b/docs/FileFormats/AutoDock_PDBQT_format.html new file mode 100644 index 00000000..bc5f970c --- /dev/null +++ b/docs/FileFormats/AutoDock_PDBQT_format.html @@ -0,0 +1,630 @@ + + + + + + + + + + + AutoDock PDBQT format (pdbqt) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

AutoDock PDBQT format (pdbqt)#

+

Reads and writes AutoDock PDBQT (Protein Data Bank, Partial Charge (Q), & Atom Type (T)) format

+

Note that the torsion tree is by default. Use the r write option +to prevent this.

+
+

Read Options#

+
+
-b
+

Disable automatic bonding

+
+
-d
+

Input file is in dlg (AutoDock docking log) format

+
+
+
+
+

Write Options#

+
+
-b
+

Enable automatic bonding

+
+
-r
+

Output as a rigid molecule (i.e. no branches or torsion tree)

+
+
-c
+

Combine separate molecular pieces of input into a single rigid molecule (requires “r” option or will have no effect)

+
+
-s
+

Output as a flexible residue

+
+
-p
+

Preserve atom indices from input file (default is to renumber atoms sequentially)

+
+
-h
+

Preserve hydrogens

+
+
-n
+

Preserve atom names

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Ball_and_Stick_format.html b/docs/FileFormats/Ball_and_Stick_format.html new file mode 100644 index 00000000..cb16c8d7 --- /dev/null +++ b/docs/FileFormats/Ball_and_Stick_format.html @@ -0,0 +1,576 @@ + + + + + + + + + + + Ball and Stick format (bs) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Ball and Stick format (bs)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Biological_data_Formats.html b/docs/FileFormats/Biological_data_Formats.html new file mode 100644 index 00000000..5c390144 --- /dev/null +++ b/docs/FileFormats/Biological_data_Formats.html @@ -0,0 +1,574 @@ + + + + + + + + + + + Biological data formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/CAChe_MolStruct_format.html b/docs/FileFormats/CAChe_MolStruct_format.html new file mode 100644 index 00000000..da2045a8 --- /dev/null +++ b/docs/FileFormats/CAChe_MolStruct_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + CAChe MolStruct format (cac, cache) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

CAChe MolStruct format (cac, cache)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/CASTEP_format.html b/docs/FileFormats/CASTEP_format.html new file mode 100644 index 00000000..bad1ba68 --- /dev/null +++ b/docs/FileFormats/CASTEP_format.html @@ -0,0 +1,619 @@ + + + + + + + + + + + CASTEP format (castep) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

CASTEP format (castep)#

+

The format used by CASTEP.

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/CCC_format.html b/docs/FileFormats/CCC_format.html new file mode 100644 index 00000000..c7b2c7f4 --- /dev/null +++ b/docs/FileFormats/CCC_format.html @@ -0,0 +1,573 @@ + + + + + + + + + + + CCC format (ccc) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

CCC format (ccc)#

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/CML_Reaction_format.html b/docs/FileFormats/CML_Reaction_format.html new file mode 100644 index 00000000..50d169eb --- /dev/null +++ b/docs/FileFormats/CML_Reaction_format.html @@ -0,0 +1,629 @@ + + + + + + + + + + + CML Reaction format (cmlr) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

CML Reaction format (cmlr)#

+

A minimal implementation of the CML Reaction format

+

This implementation uses libxml2.

+
+

Write Options#

+
+
-1
+

output CML1 (rather than CML2)

+
+
-a
+

output array format for atoms and bonds

+
+
-l
+

molecules NOT in MoleculeList

+
+
-h
+

use hydrogenCount for all hydrogens

+
+
-x
+

omit XML declaration

+
+
-r
+

omit rate constant data

+
+
-N <prefix>
+

add namespace prefix to elements

+
+
-M
+

add obr prefix on non-CMLReact elements

+
+
-p
+

add properties to molecules

+
+
+
+
+

Comments#

+

The implementation of this format which reads and writes to and from +OBReaction objects is fairly minimal at present. (Currently the only +other reaction format in OpenBabel is RXN.) During reading, only the +elements <reaction>, <reactant>, <product> and <molecule> are acted +upon (the last through CML). The molecules can be collected together +in a list at the start of the file and referenced in the reactant and +product via e.g. <molecule ref=”mol1”>.

+

On writing, the list format can be specified with the -xl option. The +list containers are <moleculeList> and <reactionList> and the overall +wrapper is <mechanism>. These are non-standard CMLReact element names +and would have to be changed (in the code) to <list>,<list> and <cml> +if this was unacceptable.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/CSD_CSSR_format.html b/docs/FileFormats/CSD_CSSR_format.html new file mode 100644 index 00000000..2494e903 --- /dev/null +++ b/docs/FileFormats/CSD_CSSR_format.html @@ -0,0 +1,575 @@ + + + + + + + + + + + CSD CSSR format (cssr) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

CSD CSSR format (cssr)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Cacao_Cartesian_format.html b/docs/FileFormats/Cacao_Cartesian_format.html new file mode 100644 index 00000000..65d356f3 --- /dev/null +++ b/docs/FileFormats/Cacao_Cartesian_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + Cacao Cartesian format (caccrt) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Cacao Cartesian format (caccrt)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Cacao_Internal_format.html b/docs/FileFormats/Cacao_Internal_format.html new file mode 100644 index 00000000..ef1fd3cb --- /dev/null +++ b/docs/FileFormats/Cacao_Internal_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + Cacao Internal format (cacint) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Cacao Internal format (cacint)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Canonical_SMILES_format.html b/docs/FileFormats/Canonical_SMILES_format.html new file mode 100644 index 00000000..25b44a52 --- /dev/null +++ b/docs/FileFormats/Canonical_SMILES_format.html @@ -0,0 +1,630 @@ + + + + + + + + + + + Canonical SMILES format (can) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Canonical SMILES format (can)#

+

A canonical form of the SMILES linear text format

+

The SMILES format is a linear text format which can describe the +connectivity and chirality of a molecule. Canonical SMILES gives a single +‘canonical’ form for any particular molecule.

+
+

See also

+

The “regular” SMILES format (smi, smiles) gives faster +output, since no canonical numbering is performed.

+
+
+

Write Options#

+
+
-a
+

Output atomclass like [C:2], if available

+
+
-h
+

Output explicit hydrogens as such

+
+
-i
+

Do not include isotopic or chiral markings

+
+
-n
+

No molecule name

+
+
-r
+

Radicals lower case eg ethyl is Cc

+
+
-t
+

Molecule name only

+
+
-F <atom numbers>
+

Generate Canonical SMILES for a fragment

+

The atom numbers should be specified like “1 2 4 7”.

+
+
-f <atomno>
+

Specify the first atom

+

This atom will be used to begin the SMILES string.

+
+
-l <atomno>
+

Specify the last atom

+

The output will be rearranged so that any additional +SMILES added to the end will be attached to this atom. +See the SMILES format (smi, smiles) for more information.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Chem3D_Cartesian_1_format.html b/docs/FileFormats/Chem3D_Cartesian_1_format.html new file mode 100644 index 00000000..5fed9b21 --- /dev/null +++ b/docs/FileFormats/Chem3D_Cartesian_1_format.html @@ -0,0 +1,576 @@ + + + + + + + + + + + Chem3D Cartesian 1 format (c3d1) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chem3D Cartesian 1 format (c3d1)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Chem3D_Cartesian_2_format.html b/docs/FileFormats/Chem3D_Cartesian_2_format.html new file mode 100644 index 00000000..c6577880 --- /dev/null +++ b/docs/FileFormats/Chem3D_Cartesian_2_format.html @@ -0,0 +1,576 @@ + + + + + + + + + + + Chem3D Cartesian 2 format (c3d2) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chem3D Cartesian 2 format (c3d2)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ChemDoodle_JSON.html b/docs/FileFormats/ChemDoodle_JSON.html new file mode 100644 index 00000000..0719c9bf --- /dev/null +++ b/docs/FileFormats/ChemDoodle_JSON.html @@ -0,0 +1,604 @@ + + + + + + + + + + + ChemDoodle JSON (cdjson) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ChemDoodle JSON (cdjson)#

+

The native way to present data to the ChemDoodle Web Components

+
+

Read Options#

+
+
-c <num>
+

coordinate multiplier (default: 20)

+
+
+
+
+

Write Options#

+
+
-c <num>
+

coordinate multiplier (default: 20)

+
+
-m
+

minified output formatting, with no line breaks or indents

+
+
-v
+

verbose output (include default values)

+
+
-w
+

use wedge/hash bonds from input instead of perceived stereochemistry

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ChemDraw_CDXML_format.html b/docs/FileFormats/ChemDraw_CDXML_format.html new file mode 100644 index 00000000..e3af6bda --- /dev/null +++ b/docs/FileFormats/ChemDraw_CDXML_format.html @@ -0,0 +1,570 @@ + + + + + + + + + + + ChemDraw CDXML format (cdxml) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ChemDraw CDXML format (cdxml)#

+

Minimal support of chemical structure information only.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ChemDraw_Connection_Table_format.html b/docs/FileFormats/ChemDraw_Connection_Table_format.html new file mode 100644 index 00000000..ded6bdd6 --- /dev/null +++ b/docs/FileFormats/ChemDraw_Connection_Table_format.html @@ -0,0 +1,569 @@ + + + + + + + + + + + ChemDraw Connection Table format (ct) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ChemDraw Connection Table format (ct)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ChemDraw_binary_format.html b/docs/FileFormats/ChemDraw_binary_format.html new file mode 100644 index 00000000..a51f45c9 --- /dev/null +++ b/docs/FileFormats/ChemDraw_binary_format.html @@ -0,0 +1,609 @@ + + + + + + + + + + + ChemDraw binary format (cdx) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ChemDraw binary format (cdx)#

+

Read only

+

The whole file is read in one call. +Note that a file may contain a mixture of reactions and +molecules. +With the -ad option, a human-readable representation of the CDX tree +structure is output as an OBText object. Use textformat to view it:

+
obabel input.cdx -otext -ad
+
+
+

Many reactions in CDX files are not fully specified with reaction data +structures, and may not be completely interpreted by this parser.

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-m
+

read molecules only; no reactions

+
+
-d
+

output CDX tree to OBText object

+
+
-o
+

display only objects in tree output

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ChemKin_format.html b/docs/FileFormats/ChemKin_format.html new file mode 100644 index 00000000..3c97b602 --- /dev/null +++ b/docs/FileFormats/ChemKin_format.html @@ -0,0 +1,606 @@ + + + + + + + + + + + ChemKin format (ck) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ChemKin format (ck)#

+
+

Read Options#

+
+
-f <file>
+

File with standard thermo data: default therm.dat

+
+
-z
+

Use standard thermo only

+
+
-L
+

Reactions have labels (Usually optional)

+
+
+
+
+

Write Options#

+
+
-s
+

Simple output: reactions only

+
+
-t
+

Do not include species thermo data

+
+
-0
+

Omit reactions with zero rates

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Chemical_Markup_Language.html b/docs/FileFormats/Chemical_Markup_Language.html new file mode 100644 index 00000000..b01d1957 --- /dev/null +++ b/docs/FileFormats/Chemical_Markup_Language.html @@ -0,0 +1,678 @@ + + + + + + + + + + + Chemical Markup Language (cml, mrv) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chemical Markup Language (cml, mrv)#

+

An XML format for interchange of chemical information.

+

This format writes and reads CML XML files. To write CML1 format rather than +the default CML2, use the -x1 option. To write the array form use -xa +and to specify all hydrogens using the hydrogenCount attribute on atoms use +-xh.

+

Crystal structures are written using the <crystal>, <xfract> (,…etc.) +elements if the OBMol has a OBGenericDataType::UnitCell data.

+

All these forms are handled transparently during reading. Only a subset of +CML elements and attributes are recognised, but these include most of those +which define chemical structure, see below.

+

The following are read:

+
    +
  • Elements:

    +
      +
    • molecule, atomArray, atom, bondArray, bond, atomParity, bondStereo

    • +
    • name, formula, crystal, scalar (contains crystal data)

    • +
    • string, stringArray, integer, integerArray, float floatArray, builtin

    • +
    +
  • +
  • Attributes:

    +
      +
    • On <molecule>: id, title, ref(in CMLReact)

    • +
    • On <atom>: id, atomId, atomID, elementType, x2, y2, x3, y3, z3, xy2, xyz3, +xFract, yFract, zFract, xyzFract, hydrogenCount, formalCharge, isotope, +isotopeNumber, spinMultiplicity, radical(from Marvin), +atomRefs4 (for atomParity)

    • +
    • On <bond>: atomRefs2, order, CML1: atomRef, atomRef1, atomRef2

    • +
    +
  • +
+

Atom classes are also read and written. This is done using a specially +formed atom id. When reading, if the atom id is of the form aN_M (where +N and M are positive integers), then M is interpreted as the atom class. +Such atom ids are automatically generated when writing an atom with an +atom class.

+
+

Read Options#

+
+
-2
+

read 2D rather than 3D coordinates if both provided

+
+
+
+
+

Write Options#

+
+
-1
+

write CML1 (rather than CML2)

+
+
-a
+

write array format for atoms and bonds

+
+
-A
+

write aromatic bonds as such, not Kekule form

+
+
-m
+

write metadata

+
+
-x
+

omit XML and namespace declarations

+
+
-c
+

continuous output: no formatting

+
+
-p
+

write properties

+
+
-N <prefix>
+

add namespace prefix to elements

+
+
+
+
+

Comments#

+

In the absence of hydrogenCount and any explicit hydrogen on +an atom, implicit hydrogen is assumed to be present appropriate +to the radical or spinMultiplicity attributes on the atom or +its normal valency if they are not present.

+

The XML formats require the XML text to be well formed but +generally interpret it fairly tolerantly. Unrecognised elements +and attributes are ignored and there are rather few error messages +when any required structures are not found. This laxity allows, for +instance, the reactant and product molecules to be picked out of a CML +React file using CML. Each format has an element which is regarded as +defining the object that OpenBabel will convert. For CML this is +<molecule>. Files can have multiple objects and these can be treated +the same as with other multiple object formats like SMILES and MDL +Molfile. So conversion can start at the nth object using the -fn option +and finish before the end using the -ln option. Multiple object XML files +also can be indexed and searched using FastSearch, although this has +not yet been extensively tested.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Chemical_Resource_Kit_3D_format.html b/docs/FileFormats/Chemical_Resource_Kit_3D_format.html new file mode 100644 index 00000000..6ff04373 --- /dev/null +++ b/docs/FileFormats/Chemical_Resource_Kit_3D_format.html @@ -0,0 +1,576 @@ + + + + + + + + + + + Chemical Resource Kit 3D format (crk3d) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chemical Resource Kit 3D format (crk3d)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).html b/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).html new file mode 100644 index 00000000..ada4e745 --- /dev/null +++ b/docs/FileFormats/Chemical_Resource_Kit_diagram(2D).html @@ -0,0 +1,569 @@ + + + + + + + + + + + Chemical Resource Kit diagram(2D) (crk2d) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chemical Resource Kit diagram(2D) (crk2d)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Chemtool_format.html b/docs/FileFormats/Chemtool_format.html new file mode 100644 index 00000000..8f94f046 --- /dev/null +++ b/docs/FileFormats/Chemtool_format.html @@ -0,0 +1,573 @@ + + + + + + + + + + + Chemtool format (cht) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Chemtool format (cht)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Common_cheminformatics_Formats.html b/docs/FileFormats/Common_cheminformatics_Formats.html new file mode 100644 index 00000000..c6a92f48 --- /dev/null +++ b/docs/FileFormats/Common_cheminformatics_Formats.html @@ -0,0 +1,618 @@ + + + + + + + + + + + Common cheminformatics formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Compare_molecules_using_InChI.html b/docs/FileFormats/Compare_molecules_using_InChI.html new file mode 100644 index 00000000..6cb6579c --- /dev/null +++ b/docs/FileFormats/Compare_molecules_using_InChI.html @@ -0,0 +1,588 @@ + + + + + + + + + + + Compare molecules using InChI (k) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Compare molecules using InChI (k)#

+

A utility format that allows you to compare molecules using their InChIs

+

The first molecule is compared with the rest, e.g.:

+
babel first.smi second.mol third.cml -ok
+
+
+

This is the same as using -oinchi -xet and can take the same options as InChI format +(see InChI format (inchi)).

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Computational_chemistry_Formats.html b/docs/FileFormats/Computational_chemistry_Formats.html new file mode 100644 index 00000000..cc111db0 --- /dev/null +++ b/docs/FileFormats/Computational_chemistry_Formats.html @@ -0,0 +1,764 @@ + + + + + + + + + + + Computational chemistry formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Computational chemistry formats#

+
+ +
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Confab_report_format.html b/docs/FileFormats/Confab_report_format.html new file mode 100644 index 00000000..d9c8a630 --- /dev/null +++ b/docs/FileFormats/Confab_report_format.html @@ -0,0 +1,613 @@ + + + + + + + + + + + Confab report format (confabreport) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Confab report format (confabreport)#

+

Assess performance of a conformer generator relative to a set of reference structures

+

Once a file containing conformers has been generated by Confab, +the result can be compared to the original input structures or a set +of reference structures using this output format.

+

Conformers are matched with reference structures using the molecule +title. For every conformer, there should be a reference structure +(but not necessarily vice versa).

+

Further information is available in the section describing Confab.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-f <filename>
+

File containing reference structures

+
+
-r <rmsd>
+

RMSD cutoff (default 0.5 Angstrom)

+

The number of structures with conformers within this RMSD cutoff +of the reference will be reported.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Copy_raw_text.html b/docs/FileFormats/Copy_raw_text.html new file mode 100644 index 00000000..d0323fd9 --- /dev/null +++ b/docs/FileFormats/Copy_raw_text.html @@ -0,0 +1,602 @@ + + + + + + + + + + + Copy raw text (copy) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Copy raw text (copy)#

+

A utility format for exactly copying the text of a chemical file format

+

This format allows you to filter molecules from multimolecule files +without the risk of losing any additional information they contain, +since no format conversion is carried out.

+
+

Warning

+

Currently not working correctly for files with Windows line endings.

+
+

Example:

+
+

Extract only structures that include at least one aromatic carbon +(by matching the SMARTS pattern [c]):

+
babel -s '[c]' database.sdf -ocopy new.sd
+
+
+
+
+

Note

+

XML files may be missing non-object elements +at the start or end and so may no longer be well formed.

+
+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Crystal_09_output_format.html b/docs/FileFormats/Crystal_09_output_format.html new file mode 100644 index 00000000..f1c19c2c --- /dev/null +++ b/docs/FileFormats/Crystal_09_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + Crystal 09 output format (c09out) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Crystal 09 output format (c09out)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Consider single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Crystallographic_Information_File.html b/docs/FileFormats/Crystallographic_Information_File.html new file mode 100644 index 00000000..4ebd3e6e --- /dev/null +++ b/docs/FileFormats/Crystallographic_Information_File.html @@ -0,0 +1,616 @@ + + + + + + + + + + + Crystallographic Information File (cif) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Crystallographic Information File (cif)#

+

The CIF file format is the standard interchange format for small-molecule crystal structures

+

Fractional coordinates are converted to cartesian ones using the following convention:

+
    +
  • The x axis is parallel to a

  • +
  • The y axis is in the (a,b) plane

  • +
  • The z axis is along c*

  • +
+
+
Ref: Int. Tables for Crystallography (2006), vol. B, sec 3.3.1.1.1

(the matrix used is the 2nd form listed)

+
+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
-B
+

Use bonds listed in CIF file from _geom_bond_etc records (overrides option b)

+
+
+
+
+

Write Options#

+
+
-g
+

Write bonds using _geom_bond_etc fields

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Crystallography_Formats.html b/docs/FileFormats/Crystallography_Formats.html new file mode 100644 index 00000000..ae1e9ec9 --- /dev/null +++ b/docs/FileFormats/Crystallography_Formats.html @@ -0,0 +1,596 @@ + + + + + + + + + + + Crystallography formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Culgi_object_file_format.html b/docs/FileFormats/Culgi_object_file_format.html new file mode 100644 index 00000000..4f214a17 --- /dev/null +++ b/docs/FileFormats/Culgi_object_file_format.html @@ -0,0 +1,616 @@ + + + + + + + + + + + Culgi object file format (cof) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Culgi object file format (cof)#

+

Culgi format

+

No options currently

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/DALTON_input_format.html b/docs/FileFormats/DALTON_input_format.html new file mode 100644 index 00000000..0dd753ba --- /dev/null +++ b/docs/FileFormats/DALTON_input_format.html @@ -0,0 +1,652 @@ + + + + + + + + + + + DALTON input format (dalmol) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

DALTON input format (dalmol)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+

Write Options#

+
+
-a
+

write input in atomic units instead of Angstrom

+
+
-b
+

write input using the ATOMBASIS format

+
+
-k <basis>
+

specify basis set to use

+

e.g. -xk STO-3G

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/DALTON_output_format.html b/docs/FileFormats/DALTON_output_format.html new file mode 100644 index 00000000..98f4404f --- /dev/null +++ b/docs/FileFormats/DALTON_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + DALTON output format (dallog) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

DALTON output format (dallog)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/DL-POLY_CONFIG.html b/docs/FileFormats/DL-POLY_CONFIG.html new file mode 100644 index 00000000..bac047ef --- /dev/null +++ b/docs/FileFormats/DL-POLY_CONFIG.html @@ -0,0 +1,578 @@ + + + + + + + + + + + DL-POLY CONFIG (CONFIG) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

DL-POLY CONFIG (CONFIG)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/DL-POLY_HISTORY.html b/docs/FileFormats/DL-POLY_HISTORY.html new file mode 100644 index 00000000..93a1b4a4 --- /dev/null +++ b/docs/FileFormats/DL-POLY_HISTORY.html @@ -0,0 +1,582 @@ + + + + + + + + + + + DL-POLY HISTORY (HISTORY) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

DL-POLY HISTORY (HISTORY)#

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/DMol3_coordinates_format.html b/docs/FileFormats/DMol3_coordinates_format.html new file mode 100644 index 00000000..edd63f63 --- /dev/null +++ b/docs/FileFormats/DMol3_coordinates_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + DMol3 coordinates format (dmol, outmol) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

DMol3 coordinates format (dmol, outmol)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Dock_3.5_Box_format.html b/docs/FileFormats/Dock_3.5_Box_format.html new file mode 100644 index 00000000..9cd0720d --- /dev/null +++ b/docs/FileFormats/Dock_3.5_Box_format.html @@ -0,0 +1,578 @@ + + + + + + + + + + + Dock 3.5 Box format (box) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Dock 3.5 Box format (box)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.html b/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.html new file mode 100644 index 00000000..11faee81 --- /dev/null +++ b/docs/FileFormats/Extended_XYZ_cartesian_coordinates_format.html @@ -0,0 +1,675 @@ + + + + + + + + + + + Extended XYZ cartesian coordinates format (exyz) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Extended XYZ cartesian coordinates format (exyz)#

+

A format used by ORCA-AICCM

+

The “EXYZ” chemical file format is an extended version of the standard +“XYZ” chemical file format with additional keywords and informations about +the unit cell and virtual atoms.

+
    +
  • Line one of the file contains the number of atoms in the file.

  • +
  • Line two of the file contains a title, comment, filename and/or the +following keywords: %PBC or %VIRTUAL

  • +
+

Any remaining lines are parsed for atom information until a blank line. These +lines start with the element symbol, followed by X, Y, and Z coordinates in +angstroms separated by whitespace and - if %VIRTUAL is specified - the +optional word VIRTUAL to mark virtual atoms. If %PBC is specified +a second block will be present containing the 3 vectors for the unit cell +in angstrom and the offset as shown in the example below:

+
4
+%PBC
+   C        0.00000        1.40272        0.00000
+   H        0.00000        2.49029        0.00000
+   C       -1.21479        0.70136        0.00000
+   H       -2.15666        1.24515        0.00000
+
+Vector1    2.445200    0.000000    0.000000
+Vector2    0.000000    1.000000    0.000000
+Vector3    0.000000    0.000000    1.000000
+Offset     0.000000    0.000000    0.000000
+
+
+

On output, the first line written is the number of atoms in the molecule. +Line two is the title of the molecule or the filename if no title is defined. +Remaining lines define the atoms in the file. The first column is the atomic +symbol (right-aligned on the third character), followed by the XYZ coordinates +in “15.5” format separated by an addition whitespace, in angstroms. This means +that all coordinates are printed with five decimal places.

+

The next block starts with a blank line to separate the coordinates from the +unit cell vectors followed by the vectors of the unit cell marked with the +keywords Vector1/2/3. The vectors themselves are written in the same format +as the atom coordinates. The last line contains the keyword Offset and the +offset of the unit cell. The unit is always angstrom.

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/FASTA_format.html b/docs/FileFormats/FASTA_format.html new file mode 100644 index 00000000..28463a59 --- /dev/null +++ b/docs/FileFormats/FASTA_format.html @@ -0,0 +1,604 @@ + + + + + + + + + + + FASTA format (fa, fasta, fsa) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

FASTA format (fa, fasta, fsa)#

+

A file format used to exchange information between genetic sequence databases

+
+

Read Options#

+
+
-1
+

Output single-stranded DNA

+
+
-t <turns>
+

Use the specified number of base pairs per turn (e.g., 10)

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+

Write Options#

+
+
-n
+

Omit title and comments

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/FHIaims_XYZ_format.html b/docs/FileFormats/FHIaims_XYZ_format.html new file mode 100644 index 00000000..651309a4 --- /dev/null +++ b/docs/FileFormats/FHIaims_XYZ_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + FHIaims XYZ format (fhiaims) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

FHIaims XYZ format (fhiaims)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).html b/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).html new file mode 100644 index 00000000..486c7cc9 --- /dev/null +++ b/docs/FileFormats/FPS_text_fingerprint_format_(Dalke).html @@ -0,0 +1,609 @@ + + + + + + + + + + + FPS text fingerprint format (Dalke) (fps) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

FPS text fingerprint format (Dalke) (fps)#

+

The FPS file format for fingerprints was developed by Andrew Dalke to +define and promote common file formats for storing and exchanging +cheminformatics fingerprint data sets, and to develop tools which +work with that format. For more information, see +http://chem-fingerprints.googlecode.com

+

Any molecule without a title is given its index in the file as title.

+

A list of available fingerprint types can be obtained by:

+
obabel -L fingerprints
+
+
+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-f <id>
+

Fingerprint type

+
+
-N <num>
+

Fold to specified number of bits, 32, 64, 128, etc.

+
+
-p
+

Use full input path as source, not just filename

+
+
-t <text>
+

Use <text> as source in header

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Fastsearch_format.html b/docs/FileFormats/Fastsearch_format.html new file mode 100644 index 00000000..570c6c8e --- /dev/null +++ b/docs/FileFormats/Fastsearch_format.html @@ -0,0 +1,658 @@ + + + + + + + + + + + Fastsearch format (fs) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Fastsearch format (fs)#

+

Fingerprint-aided substructure and similarity searching

+

Writing to the fs format makes an index of a multi-molecule datafile:

+
obabel dataset.sdf -ofs
+
+
+

This prepares an index dataset.fs with default parameters, and is slow +(~30 minutes for a 250,000 molecule file).

+

However, when reading from the fs format searches are much faster, a few seconds, +and so can be done interactively.

+

The search target is the parameter of the -s option and can be +slightly extended SMILES (with [#n] atoms and ~ bonds) or +the name of a file containing a molecule.

+

Several types of searches are possible:

+
    +
  • Identical molecule:

    +
    obabel index.fs -O outfile.yyy -s SMILES exact
    +
    +
    +
  • +
  • Substructure:

    +
    obabel index.fs -O outfile.yyy  -s SMILES   or
    +obabel index.fs -O outfile.yyy  -s filename.xxx
    +
    +
    +

    where xxx is a format id known to OpenBabel, e.g. sdf

    +
  • +
  • Molecular similarity based on Tanimoto coefficient:

    +
    obabel index.fs -O outfile.yyy -at15  -sSMILES  # best 15 molecules
    +obabel index.fs -O outfile.yyy -at0.7 -sSMILES  # Tanimoto >0.7
    +obabel index.fs -O outfile.yyy -at0.7,0.9 -sSMILES
    +#     Tanimoto >0.7 && Tanimoto < 0.9
    +
    +
    +
  • +
+

The datafile plus the -ifs option can be used instead of the index file.

+

NOTE on 32-bit systems the datafile MUST NOT be larger than 4GB.

+

Dative bonds like -[N+][O-](=O) are indexed as -N(=O)(=O), and when searching +the target molecule should be in the second form.

+ +
+

Read Options#

+
+
-t <num>
+

Do similarity search:<num>mols or <num> as min Tanimoto

+
+
-a
+

Add Tanimoto coeff to title in similarity search

+
+
-l <num>
+

Maximum number of candidates. Default<4000>

+
+
-e
+

Exact match

+

Alternative to using exact in -s parameter, see above

+
+
-n
+

No further SMARTS filtering after fingerprint phase

+
+
+
+
+

Write Options#

+
+
-f <num>
+

Fingerprint type

+

If not specified, the default fingerprint (currently FP2) is used

+
+
-N <num>
+

Fold fingerprint to <num> bits

+
+
-u
+

Update an existing index

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Feature_format.html b/docs/FileFormats/Feature_format.html new file mode 100644 index 00000000..a0fac287 --- /dev/null +++ b/docs/FileFormats/Feature_format.html @@ -0,0 +1,591 @@ + + + + + + + + + + + Feature format (feat) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Feature format (feat)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Fenske-Hall_Z-Matrix_format.html b/docs/FileFormats/Fenske-Hall_Z-Matrix_format.html new file mode 100644 index 00000000..f3df812e --- /dev/null +++ b/docs/FileFormats/Fenske-Hall_Z-Matrix_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + Fenske-Hall Z-Matrix format (fh) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Fenske-Hall Z-Matrix format (fh)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Fingerprint_format.html b/docs/FileFormats/Fingerprint_format.html new file mode 100644 index 00000000..b336951d --- /dev/null +++ b/docs/FileFormats/Fingerprint_format.html @@ -0,0 +1,658 @@ + + + + + + + + + + + Fingerprint format (fpt) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Fingerprint format (fpt)#

+

Generate or display molecular fingerprints.

+

This format constructs and displays fingerprints and (for multiple input +objects) the Tanimoto coefficient and whether a superstructure of the first +object.

+

A list of available fingerprint types can be obtained by:

+
babel -L fingerprints
+
+
+

The current default type FP2 is is of the Daylight type, indexing a molecule +based on the occurrence of linear fragment up to 7 atoms in length. To use a +fingerprint type other than the default, use the -xf option, for example:

+
babel infile.xxx -ofpt -xfFP3
+
+
+

For a single molecule the fingerprint is output in hexadecimal form +(intended mainly for debugging).

+

With multiple molecules the hexadecimal form is output only if the -xh +option is specified. But in addition the Tanimoto coefficient between the +first molecule and each of the subsequent ones is displayed. If the first +molecule is a substructure of the target molecule a note saying this is +also displayed.

+

The Tanimoto coefficient is defined as:

+
Number of bits set in (patternFP & targetFP) / Number of bits in (patternFP | targetFP)
+
+
+

where the boolean operations between the fingerprints are bitwise.

+

The Tanimoto coefficient has no absolute meaning and depends on the design of the fingerprint.

+

Use the -xs option to describe the bits that are set in the fingerprint. +The output depends on the fingerprint type. For Fingerprint FP4, each bit +corresponds to a particular chemical feature, which are specified as SMARTS +patterns in SMARTS_InteLigand.txt, and the output is a tab-separated +list of the features of a molecule. For instance, a well-known molecule +gives:

+
Primary_carbon: Carboxylic_acid: Carboxylic_ester: Carboxylic_acid_derivative:
+Vinylogous_carbonyl_or_carboxyl_derivative: Vinylogous_ester: Aromatic:
+Conjugated_double_bond: C_ONS_bond: 1,3-Tautomerizable: Rotatable_bond: CH-acidic:
+
+
+

For the path-based fingerprint FP2, the output from the -xs option is +instead a list of the chemical fragments used to set bits, e.g.:

+
$ obabel -:"CCC(=O)Cl" -ofpt -xs -xf FP2
+>
+0 6 1 6 <670>
+0 6 1 6 1 6 <260>
+0 8 2 6 <623>
+...etc
+
+
+

where the first digit is 0 for linear fragments but is a bond order +for cyclic fragments. The remaining digits indicate the atomic number +and bond order alternatively. Note that a bond order of 5 is used for +aromatic bonds. For example, bit 623 above is the linear fragment O=C +(8 for oxygen, 2 for double bond and 6 for carbon).

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-f <id>
+

fingerprint type

+
+
-N <num>
+

fold to specified number of bits, 32, 64, 128, etc.

+
+
-h
+

hex output when multiple molecules

+
+
-o
+

hex output only

+
+
-s
+

describe each set bit

+
+
-u
+

describe each unset bit

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Free_Form_Fractional_format.html b/docs/FileFormats/Free_Form_Fractional_format.html new file mode 100644 index 00000000..e6796849 --- /dev/null +++ b/docs/FileFormats/Free_Form_Fractional_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + Free Form Fractional format (fract) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Free Form Fractional format (fract)#

+

General purpose crystallographic format

+

The “free-form” fractional format attempts to allow for input from a +range of fractional / crystallography file formats. As such, it has only +a few restrictions on input:

+
    +
  • Line one of the file contains a title or comment.

  • +
  • Line two of the file contains the unit cell parameters separated by +whitespace and/or commas (i.e. “a b c alpha beta gamma”).

  • +
  • Any remaining lines are parsed for atom information. Lines start with +the element symbol, followed by fractional X, Y, and Z coordinates +(in angstroms) separated by whitespace.

  • +
+

Any numeric input (i.e., unit cell parameters, XYZ coordinates) can include +designations of errors, although this is currently ignored. For example:

+
C 1.00067(3) 2.75(2) 3.0678(12)
+
+
+

will be parsed as:

+
C 1.00067 2.75 3.0678
+
+
+

When used as an output format, The first line written is the title of the +molecule or the filename if no title is defined. If a molecule has a defined +unit cell, then the second line will be formatted as:

+
a b c alpha beta gamma
+
+
+

where a, b, c are the unit cell vector lengths, and alpha, beta, and gamma are +the angles between them. These numbers are formatted as “10.5”, which means that +5 decimal places will be output for all numbers. In the case where no unit cell +is defined for the molecule, the vector lengths will be defined as 1.0, and the +angles to 90.0 degrees.

+

Remaining lines define the atoms in the file. The first column is the atomic +symbol, followed by the XYZ coordinates in 10.5 format (in angstroms).

+

Here is an example file:

+
ZnO test file
+3.14 3.24 5.18 90.0 90.0 120.0
+O 0.66667  0.33333  0.3750
+O 0.33333  0.66667  0.8750
+Zn 0.66667  0.33333  0.0000
+Zn 0.33333  0.66667  0.5000
+
+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GAMESS-UK_Input.html b/docs/FileFormats/GAMESS-UK_Input.html new file mode 100644 index 00000000..6f6cae6e --- /dev/null +++ b/docs/FileFormats/GAMESS-UK_Input.html @@ -0,0 +1,614 @@ + + + + + + + + + + + GAMESS-UK Input (gukin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GAMESS-UK Input (gukin)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GAMESS-UK_Output.html b/docs/FileFormats/GAMESS-UK_Output.html new file mode 100644 index 00000000..981e0ba3 --- /dev/null +++ b/docs/FileFormats/GAMESS-UK_Output.html @@ -0,0 +1,614 @@ + + + + + + + + + + + GAMESS-UK Output (gukout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GAMESS-UK Output (gukout)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GAMESS_Input.html b/docs/FileFormats/GAMESS_Input.html new file mode 100644 index 00000000..6a8639a2 --- /dev/null +++ b/docs/FileFormats/GAMESS_Input.html @@ -0,0 +1,636 @@ + + + + + + + + + + + GAMESS Input (gamin, inp) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GAMESS Input (gamin, inp)#

+
+

Write Options#

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GAMESS_Output.html b/docs/FileFormats/GAMESS_Output.html new file mode 100644 index 00000000..4dec7096 --- /dev/null +++ b/docs/FileFormats/GAMESS_Output.html @@ -0,0 +1,643 @@ + + + + + + + + + + + GAMESS Output (gam, gamess, gamout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GAMESS Output (gam, gamess, gamout)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
-c
+

Read multiple conformers

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GROMOS96_format.html b/docs/FileFormats/GROMOS96_format.html new file mode 100644 index 00000000..186a3210 --- /dev/null +++ b/docs/FileFormats/GROMOS96_format.html @@ -0,0 +1,601 @@ + + + + + + + + + + + GROMOS96 format (gr96) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GROMOS96 format (gr96)#

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-n
+

output nm (not Angstroms)

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GRO_format.html b/docs/FileFormats/GRO_format.html new file mode 100644 index 00000000..6a470552 --- /dev/null +++ b/docs/FileFormats/GRO_format.html @@ -0,0 +1,603 @@ + + + + + + + + + + + GRO format (gro) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GRO format (gro)#

+

This is GRO file format as used in Gromacs.

+

Right now there is only limited support for element perception. It works for +elements with one letter symbols if the atomtype starts with the same letter.

+
+

Read Options#

+
+
-s
+

Consider single bonds only

+
+
-b
+

Disable bonding entierly

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/GULP_format.html b/docs/FileFormats/GULP_format.html new file mode 100644 index 00000000..07d045d6 --- /dev/null +++ b/docs/FileFormats/GULP_format.html @@ -0,0 +1,619 @@ + + + + + + + + + + + GULP format (got) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

GULP format (got)#

+

The format used by GULP (General Utility Lattice Program).

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Gaussian_Input.html b/docs/FileFormats/Gaussian_Input.html new file mode 100644 index 00000000..f4740c6f --- /dev/null +++ b/docs/FileFormats/Gaussian_Input.html @@ -0,0 +1,646 @@ + + + + + + + + + + + Gaussian Input (com, gau, gjc, gjf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Gaussian Input (com, gau, gjc, gjf)#

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-b
+

Output includes bonds

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
-u
+

Write the crystallographic unit cell, if present.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Gaussian_Output.html b/docs/FileFormats/Gaussian_Output.html new file mode 100644 index 00000000..a5a43a16 --- /dev/null +++ b/docs/FileFormats/Gaussian_Output.html @@ -0,0 +1,640 @@ + + + + + + + + + + + Gaussian Output (g03, g09, g16, g92, g94, g98, gal) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Gaussian Output (g03, g09, g16, g92, g94, g98, gal)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Gaussian_Z-Matrix_Input.html b/docs/FileFormats/Gaussian_Z-Matrix_Input.html new file mode 100644 index 00000000..8c0e372a --- /dev/null +++ b/docs/FileFormats/Gaussian_Z-Matrix_Input.html @@ -0,0 +1,648 @@ + + + + + + + + + + + Gaussian Z-Matrix Input (gzmat) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Gaussian Z-Matrix Input (gzmat)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+

Write Options#

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Gaussian_cube_format.html b/docs/FileFormats/Gaussian_cube_format.html new file mode 100644 index 00000000..ce1b487d --- /dev/null +++ b/docs/FileFormats/Gaussian_cube_format.html @@ -0,0 +1,594 @@ + + + + + + + + + + + Gaussian cube format (cub, cube) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Gaussian cube format (cub, cube)#

+

A grid format for volume data used by Gaussian

+

Open Babel supports reading and writing Gaussian cubes, including multiple +grids in one file.

+
+

Read Options#

+
+
-b
+

no bonds

+
+
-s
+

no multiple bonds

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.html b/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.html new file mode 100644 index 00000000..1a58848c --- /dev/null +++ b/docs/FileFormats/Gaussian_formatted_checkpoint_file_format.html @@ -0,0 +1,642 @@ + + + + + + + + + + + Gaussian formatted checkpoint file format (fch, fchk, fck) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Gaussian formatted checkpoint file format (fch, fchk, fck)#

+

A formatted text file containing the results of a Gaussian calculation

+

Currently supports reading molecular geometries from fchk files. More to come.

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Single bonds only

+
+
-b
+

No bond perception

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/General_XML_format.html b/docs/FileFormats/General_XML_format.html new file mode 100644 index 00000000..5afde419 --- /dev/null +++ b/docs/FileFormats/General_XML_format.html @@ -0,0 +1,612 @@ + + + + + + + + + + + General XML format (xml) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

General XML format (xml)#

+

Calls a particular XML format depending on the XML namespace.

+

This is a general XML “format” which reads a generic XML file and infers +its format from the namespace as given in a xmlns attribute on an element. +If a namespace is recognised as associated with one of the XML formats in +Open Babel, and the type of the object (e.g. a molecule) is appropriate to +the output format then this is used to input a single object. If no namespace +declaration is found the default format (currently CML) is used.

+

The process is repeated for any subsequent input so that it is possible to +input objects written in several different schemas from the same document. +The file CMLandPubChem.xml illustrates this and contains molecules in +both CML and PubChem formats.

+

This implementation uses libxml2.

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-n
+

Read objects of first namespace only

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Generic_Output_file_format.html b/docs/FileFormats/Generic_Output_file_format.html new file mode 100644 index 00000000..4c8e151e --- /dev/null +++ b/docs/FileFormats/Generic_Output_file_format.html @@ -0,0 +1,606 @@ + + + + + + + + + + + Generic Output file format (dat, log, out, output) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Generic Output file format (dat, log, out, output)#

+

Automatically detect and read computational chemistry output files

+

This format can be used to read ADF, Gaussian, GAMESS, PWSCF, Q-Chem, +MOPAC, ORCA etc. output files by automatically detecting the file type.

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Ghemical_format.html b/docs/FileFormats/Ghemical_format.html new file mode 100644 index 00000000..7ec1b359 --- /dev/null +++ b/docs/FileFormats/Ghemical_format.html @@ -0,0 +1,577 @@ + + + + + + + + + + + Ghemical format (gpr) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Ghemical format (gpr)#

+

Open source molecular modelling

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/HyperChem_HIN_format.html b/docs/FileFormats/HyperChem_HIN_format.html new file mode 100644 index 00000000..8540361c --- /dev/null +++ b/docs/FileFormats/HyperChem_HIN_format.html @@ -0,0 +1,614 @@ + + + + + + + + + + + HyperChem HIN format (hin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

HyperChem HIN format (hin)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Image_Formats.html b/docs/FileFormats/Image_Formats.html new file mode 100644 index 00000000..a3cd7047 --- /dev/null +++ b/docs/FileFormats/Image_Formats.html @@ -0,0 +1,591 @@ + + + + + + + + + + + Image formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/InChIKey.html b/docs/FileFormats/InChIKey.html new file mode 100644 index 00000000..ccceecdb --- /dev/null +++ b/docs/FileFormats/InChIKey.html @@ -0,0 +1,602 @@ + + + + + + + + + + + InChIKey (inchikey) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

InChIKey (inchikey)#

+

A hashed representation of the InChI.

+

The InChIKey is a fixed-length (27-character) condensed digital +representation of an InChI, developed to make it easy to perform +web searches for chemical structures.

+

An InChIKey consists of 14 characters (derived from the connectivity +layer in the InChI), a hyphen, 9 characters (derived from the +remaining layers), a character indicating the InChI version, a hyphen +and a final checksum character. Contrast the InChI and InChIKey of the +molecule represented by the SMILES string CC(=O)Cl:

+
obabel -:CC(=O)Cl -oinchi
+InChI=1S/C2H3ClO/c1-2(3)4/h1H3
+
+obabel -:CC(=O)Cl -oinchikey
+WETWJCDKMRHUPV-UHFFFAOYSA-N
+
+
+

This is the same as using -oinchi -xK and can take the same options +as the InChI format (see InChI format (inchi)):

+
obabel -:CC(=O)Cl -oinchi -xK
+WETWJCDKMRHUPV-UHFFFAOYSA-N
+
+
+

Note that while a molecule with a particular InChI will always give the +same InChIKey, the reverse is not true; there may exist more than one +molecule which have different InChIs but yield the same InChIKey.

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/InChI_format.html b/docs/FileFormats/InChI_format.html new file mode 100644 index 00000000..76c6fbcb --- /dev/null +++ b/docs/FileFormats/InChI_format.html @@ -0,0 +1,701 @@ + + + + + + + + + + + InChI format (inchi) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

InChI format (inchi)#

+

IUPAC/NIST molecular identifier

+
+

Read Options#

+
+
-X <Option string>
+

List of InChI options

+
+
-n
+

molecule name follows InChI on same line

+
+
-a
+

add InChI string to molecule name

+
+
+
+
+

Write Options#

+
+

Standard InChI is written unless certain InChI options are used

+
+
+
-K
+

output InChIKey only

+
+
-t
+

add molecule name after InChI

+
+
-w
+

ignore less important warnings

+

These are: +‘Omitted undefined stereo’ +‘Charges were rearranged’ +‘Proton(s) added/removed’ +‘Metal was disconnected’

+
+
-a
+

output auxiliary information

+
+
-l
+

display InChI log

+
+
-r
+

recalculate InChI; normally an input InChI is reused

+
+
-s
+

recalculate wedge and hash bonds(2D structures only)

+

Uniqueness options (see also --unique and --sort which are more versatile)

+
+
-u
+

output only unique molecules

+
+
-U
+

output only unique molecules and sort them

+
+
-e
+

compare first molecule to others

+

This can also be done with InChICompare format:

+
babel first.smi second.mol third.cml -ok
+
+
+
+
-T <param>
+

truncate InChI according to various parameters

+

See below for possible truncation parameters.

+
+
-X <Option string>
+

Additional InChI options

+

See InChI documentation. +These options should be space delimited in a single quoted string.

+
    +
  • Structure perception (compatible with stdInChI): NEWPSOFF, DoNotAddH, SNon

  • +
  • Stereo interpretation (produces non-standard InChI): SRel, SRac, +SUCF, ChiralFlagON, ChiralFlagOFF

  • +
  • InChI creation options (produces non-standard InChI): SUU, SLUUD, +FixedH, RecMet, KET, 15T

  • +
+

The following options are for convenience, e.g. -xF +but produce non-standard InChI.

+
+
-F
+

include fixed hydrogen layer

+
+
-M
+

include bonds to metal

+
+
+
+
+

Comments#

+

Truncation parameters used with -xT:

+
+
/formula
+

formula only

+
+
/connect
+

formula and connectivity only

+
+
/nostereo
+

ignore E/Z and sp3 stereochemistry

+
+
/nosp3
+

ignore sp3 stereochemistry

+
+
/noEZ
+

ignore E/Z steroeochemistry

+
+
/nochg
+

ignore charge and protonation

+
+
/noiso
+

ignore isotopes

+
+
+

Note that these can also be combined, e.g. /nochg/noiso

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/JSON_Formats.html b/docs/FileFormats/JSON_Formats.html new file mode 100644 index 00000000..ee890799 --- /dev/null +++ b/docs/FileFormats/JSON_Formats.html @@ -0,0 +1,575 @@ + + + + + + + + + + + JSON formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Jaguar_input_format.html b/docs/FileFormats/Jaguar_input_format.html new file mode 100644 index 00000000..2b90f431 --- /dev/null +++ b/docs/FileFormats/Jaguar_input_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + Jaguar input format (jin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Jaguar input format (jin)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Jaguar_output_format.html b/docs/FileFormats/Jaguar_output_format.html new file mode 100644 index 00000000..8f96d317 --- /dev/null +++ b/docs/FileFormats/Jaguar_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + Jaguar output format (jout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Jaguar output format (jout)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.html b/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.html new file mode 100644 index 00000000..a3308b5c --- /dev/null +++ b/docs/FileFormats/Kinetics_and_Thermodynamics_Formats.html @@ -0,0 +1,574 @@ + + + + + + + + + + + Kinetics and Thermodynamics formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/LPMD_format.html b/docs/FileFormats/LPMD_format.html new file mode 100644 index 00000000..cd4e8ff6 --- /dev/null +++ b/docs/FileFormats/LPMD_format.html @@ -0,0 +1,621 @@ + + + + + + + + + + + LPMD format (lpmd) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

LPMD format (lpmd)#

+

Read and write LPMD’s atomic configuration file

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+

Write Options#

+
+
-f <num>
+

Indicate the level of the output file: 0 (default), 1 or 2.

+
+
-m <num>
+

Indicate the mode for level 2 output files

+

0 (default) is for accelerations and 1 for forces

+
+
-c <vectorcells>
+

Set the cell vectors if not present

+

Example: -xc 10.0,0,0,0.0,10.0,0.0,0.0,0.0,20.0

+
+
-e
+

Add the charge to the output file

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/M.F._Sanner's_MSMS_input_format.html b/docs/FileFormats/M.F._Sanner's_MSMS_input_format.html new file mode 100644 index 00000000..1ced577c --- /dev/null +++ b/docs/FileFormats/M.F._Sanner's_MSMS_input_format.html @@ -0,0 +1,589 @@ + + + + + + + + + + + M.F. Sanner’s MSMS input format (msms) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

M.F. Sanner’s MSMS input format (msms)#

+

Generates input to the MSMS (Michael Sanner Molecular Surface) program to compute solvent surfaces.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-a
+

output atom names

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MCDL_format.html b/docs/FileFormats/MCDL_format.html new file mode 100644 index 00000000..911c647c --- /dev/null +++ b/docs/FileFormats/MCDL_format.html @@ -0,0 +1,588 @@ + + + + + + + + + + + MCDL format (mcdl) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MCDL format (mcdl)#

+

Modular Chemical Descriptor Language

+

As described in [gb2001].

+
+
+[gb2001] +

A.A. Gakh and M.N. Burnett. Modular Chemical Descriptor +Language (MCDL): Composition, Connectivity and +Supplementary Modules. +J. Chem. Inf. Comput. Sci., 2004, 41, 1491-1499. +[Link]

+
+
+

Here’s an example conversion from SMILES to MCDL:

+
obabel -:"CC(=O)Cl" -omcdl
+CHHH;COCl[2]
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MDFF_format.html b/docs/FileFormats/MDFF_format.html new file mode 100644 index 00000000..f770f364 --- /dev/null +++ b/docs/FileFormats/MDFF_format.html @@ -0,0 +1,607 @@ + + + + + + + + + + + MDFF format (CONTFF, MDFF, POSFF) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MDFF format (CONTFF, MDFF, POSFF)#

+

The format used in the POSFF and CONTFF files used by MDFF

+

POSFF and CONTFF are read to obtain information from MDFF calculations. +The program will try to read the IONS.POT file if the name of the +input file is POSFF or CONTFF.

+
+

Write Options#

+
+
-w
+

Sort atoms by atomic number

+
+
-u <elementlist>
+

Sort atoms by list of element symbols provided in comma-separated string w/o spaces

+
+
-i
+

Write IONS.POT file

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MDL_MOL_format.html b/docs/FileFormats/MDL_MOL_format.html new file mode 100644 index 00000000..c3b319c3 --- /dev/null +++ b/docs/FileFormats/MDL_MOL_format.html @@ -0,0 +1,663 @@ + + + + + + + + + + + MDL MOL format (mdl, mol, sd, sdf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MDL MOL format (mdl, mol, sd, sdf)#

+

Reads and writes V2000 and V3000 versions

+

Open Babel supports an extension to the MOL file standard +that allows cis/trans and tetrahedral stereochemistry to be +stored in 0D MOL files. The tetrahedral stereochemistry is +stored as the atom parity, while the cis/trans stereochemistry +is stored using Up and Down bonds similar to how it is +represented in a SMILES string. Use the S option +when reading or writing if you want to avoid storing +or interpreting stereochemistry in 0D MOL files.

+
+

Read Options#

+
+
-s
+

determine chirality from atom parity flags

+

The default setting for 2D and 3D is to ignore atom parity and +work out the chirality based on the bond +stereochemistry (2D) or coordinates (3D). +For 0D the default is already to determine the chirality +from the atom parity.

+
+
-S
+

do not read stereochemistry from 0D MOL files

+

Open Babel supports reading and writing cis/trans +and tetrahedral stereochemistry to 0D MOL files. +This is an extension to the standard which you can +turn off using this option.

+
+
-T
+

read title only

+
+
-P
+

read title and properties only

+

When filtering an sdf file on title or properties +only, avoid lengthy chemical interpretation by +using the T or P option together with the +copy format.

+
+
+
+
+

Write Options#

+
+
-3
+

output V3000 not V2000 (used for >999 atoms/bonds)

+
+
-a
+

write atomclass if available

+
+
-m
+

write no properties

+
+
-w
+

use wedge and hash bonds from input (2D only)

+
+
-v
+

always specify the valence in the valence field

+

The default behavior is to only specify the valence if it +is not consistent with the MDL valence model. +So, for CH4 we don’t specify it, but we do for CH3. +This option may be useful to preserve the correct number of +implicit hydrogens if a downstream tool does not correctly +implement the MDL valence model (but does honor the valence +field).

+
+
-S
+

do not store cis/trans stereochemistry in 0D MOL files

+
+
-A
+

output in Alias form, e.g. Ph, if present

+
+
-E
+

add an ASCII depiction of the molecule as a property

+
+
-H
+

use HYD extension (always on if mol contains zero-order bonds)

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MDL_RXN_format.html b/docs/FileFormats/MDL_RXN_format.html new file mode 100644 index 00000000..fba19396 --- /dev/null +++ b/docs/FileFormats/MDL_RXN_format.html @@ -0,0 +1,588 @@ + + + + + + + + + + + MDL RXN format (rxn) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MDL RXN format (rxn)#

+

The MDL reaction format is used to store information on chemical reactions.

+
+
Output Options, e.g. -xA

A output in Alias form, e.g. Ph, if present +G <option> how to handle any agents present

+
+

One of the following options should be specifed:

+
    +
  • +
    agent - Treat as an agent (default). Note that some programs

    may not read agents in RXN files.

    +
    +
    +
  • +
  • reactant - Treat any agent as a reactant

  • +
  • product - Treat any agent as a product

  • +
  • ignore - Ignore any agent

  • +
  • both - Treat as both a reactant and a product

  • +
+
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MOPAC_Cartesian_format.html b/docs/FileFormats/MOPAC_Cartesian_format.html new file mode 100644 index 00000000..c5c5369f --- /dev/null +++ b/docs/FileFormats/MOPAC_Cartesian_format.html @@ -0,0 +1,651 @@ + + + + + + + + + + + MOPAC Cartesian format (mop, mopcrt, mpc) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MOPAC Cartesian format (mop, mopcrt, mpc)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+

Write Options#

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
-u
+

Write the crystallographic unit cell, if present.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MOPAC_Internal.html b/docs/FileFormats/MOPAC_Internal.html new file mode 100644 index 00000000..df7f9a63 --- /dev/null +++ b/docs/FileFormats/MOPAC_Internal.html @@ -0,0 +1,636 @@ + + + + + + + + + + + MOPAC Internal (mopin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MOPAC Internal (mopin)#

+
+

Write Options#

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MOPAC_Output_format.html b/docs/FileFormats/MOPAC_Output_format.html new file mode 100644 index 00000000..79dcaae5 --- /dev/null +++ b/docs/FileFormats/MOPAC_Output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + MOPAC Output format (moo, mopout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MOPAC Output format (moo, mopout)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MPQC_output_format.html b/docs/FileFormats/MPQC_output_format.html new file mode 100644 index 00000000..e92836cf --- /dev/null +++ b/docs/FileFormats/MPQC_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + MPQC output format (mpqc) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MPQC output format (mpqc)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MPQC_simplified_input_format.html b/docs/FileFormats/MPQC_simplified_input_format.html new file mode 100644 index 00000000..4539362c --- /dev/null +++ b/docs/FileFormats/MPQC_simplified_input_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + MPQC simplified input format (mpqcin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MPQC simplified input format (mpqcin)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MSI_BGF_format.html b/docs/FileFormats/MSI_BGF_format.html new file mode 100644 index 00000000..4e4067e4 --- /dev/null +++ b/docs/FileFormats/MSI_BGF_format.html @@ -0,0 +1,571 @@ + + + + + + + + + + + MSI BGF format (bgf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MSI BGF format (bgf)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MacroModel_format.html b/docs/FileFormats/MacroModel_format.html new file mode 100644 index 00000000..125b9102 --- /dev/null +++ b/docs/FileFormats/MacroModel_format.html @@ -0,0 +1,578 @@ + + + + + + + + + + + MacroModel format (mmd, mmod) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MacroModel format (mmd, mmod)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Macromolecular_Crystallographic_Info.html b/docs/FileFormats/Macromolecular_Crystallographic_Info.html new file mode 100644 index 00000000..bf914481 --- /dev/null +++ b/docs/FileFormats/Macromolecular_Crystallographic_Info.html @@ -0,0 +1,599 @@ + + + + + + + + + + + Macromolecular Crystallographic Info (mcif, mmcif) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Macromolecular Crystallographic Info (mcif, mmcif)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-p
+

Apply periodic boundary conditions for bonds

+
+
-b
+

Disable bonding entirely

+
+
-w
+

Wrap atomic coordinates into unit cell box

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Maestro_format.html b/docs/FileFormats/Maestro_format.html new file mode 100644 index 00000000..b3e8b0ac --- /dev/null +++ b/docs/FileFormats/Maestro_format.html @@ -0,0 +1,577 @@ + + + + + + + + + + + Maestro format (mae, maegz) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Maestro format (mae, maegz)#

+

File format of Schrödinger Software

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Miscellaneous_Formats.html b/docs/FileFormats/Miscellaneous_Formats.html new file mode 100644 index 00000000..084852da --- /dev/null +++ b/docs/FileFormats/Miscellaneous_Formats.html @@ -0,0 +1,568 @@ + + + + + + + + + + + Miscellaneous formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/MolPrint2D_format.html b/docs/FileFormats/MolPrint2D_format.html new file mode 100644 index 00000000..112b5473 --- /dev/null +++ b/docs/FileFormats/MolPrint2D_format.html @@ -0,0 +1,628 @@ + + + + + + + + + + + MolPrint2D format (mpd) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MolPrint2D format (mpd)#

+

An implementation of the circular fingerprint MolPrint2D

+

MolPrint2D is an atom-environment fingerprint developed by Bender et al [bmg2004] +which has been used in QSAR studies and for measuring molecular similarity.

+

The format of the output is as follows:

+
[Molec_name]\t[atomtype];[layer]-[frequency]-[neighbour_type];
+
+
+

Example for the SMILES string CC(=O)Cl:

+
acid chloride   1;1-1-2;2-1-9;2-1-15;   2;1-1-1;1-1-9;1-1-15;
+                9;1-1-2;2-1-1;2-1-15;   15;1-1-2;2-1-1;2-1-9;
+
+
+
+
+[bmg2004] +

Andreas Bender, Hamse Y. Mussa, and Robert C. Glen. Molecular +Similarity Searching Using Atom Environments, Information-Based +Feature Selection, and a Naive Bayesian Classifier. +J. Chem. Inf. Comput. Sci. 2004, 44, 170-178. +[Link]

+
+
+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-n
+

prefix molecule names with name of file

+
+
-c
+

use XML style separators instead

+
+
-i
+

use IDX atom types of babel internal

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Molden_format.html b/docs/FileFormats/Molden_format.html new file mode 100644 index 00000000..6bea7547 --- /dev/null +++ b/docs/FileFormats/Molden_format.html @@ -0,0 +1,598 @@ + + + + + + + + + + + Molden format (mold, molden, molf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Molden format (mold, molden, molf)#

+
+

Read Options#

+
+
-b
+

no bonds

+
+
-s
+

no multiple bonds

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Molecular_dynamics_and_docking_Formats.html b/docs/FileFormats/Molecular_dynamics_and_docking_Formats.html new file mode 100644 index 00000000..c686f024 --- /dev/null +++ b/docs/FileFormats/Molecular_dynamics_and_docking_Formats.html @@ -0,0 +1,618 @@ + + + + + + + + + + + Molecular dynamics and docking formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Molecular_fingerprint_Formats.html b/docs/FileFormats/Molecular_fingerprint_Formats.html new file mode 100644 index 00000000..65a61420 --- /dev/null +++ b/docs/FileFormats/Molecular_fingerprint_Formats.html @@ -0,0 +1,579 @@ + + + + + + + + + + + Molecular fingerprint formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Molpro_input_format.html b/docs/FileFormats/Molpro_input_format.html new file mode 100644 index 00000000..09157e44 --- /dev/null +++ b/docs/FileFormats/Molpro_input_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + Molpro input format (mp) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Molpro input format (mp)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Molpro_output_format.html b/docs/FileFormats/Molpro_output_format.html new file mode 100644 index 00000000..40ad0680 --- /dev/null +++ b/docs/FileFormats/Molpro_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + Molpro output format (mpo) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Molpro output format (mpo)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).html b/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).html new file mode 100644 index 00000000..ebf0714c --- /dev/null +++ b/docs/FileFormats/Multilevel_Neighborhoods_of_Atoms_(MNA).html @@ -0,0 +1,742 @@ + + + + + + + + + + + Multilevel Neighborhoods of Atoms (MNA) (mna) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Multilevel Neighborhoods of Atoms (MNA) (mna)#

+

Iteratively generated 2D descriptors suitable for QSAR

+

Multilevel Neighborhoods of Atoms (MNA) descriptors are +2D molecular fragments suitable for use in QSAR modelling [fpbg99]. +The format outputs a complete descriptor fingerprint per +molecule. Thus, a 27-atom (including hydrogen) molecule would +result in 27 descriptors, one per line.

+

MNA descriptors are generated recursively. Starting at the origin, +each atom is appended to the descriptor immediately followed by a +parenthesized list of its neighbours. This process iterates until the +specified distance from the origin, also known as the depth of the +descriptor.

+

Elements are simplified into 32 groups. Each group has a representative +symbol used to stand for any element in that group:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Type

Elements

H

H

C

C

N

N

O

O

F

F

Si

Si

P

P

S

S

Cl

Cl

Ca

Ca

As

As

Se

Se

Br

Br

Li

Li, Na

B

B, Re

Mg

Mg, Mn

Sn

Sn, Pb

Te

Te, Po

I

I, At

Os

Os, Ir

Sc

Sc, Ti, Zr

Fe

Fe, Hf, Ta

Co

Co, Sb, W

Sr

Sr, Ba, Ra

Pd

Pd, Pt, Au

Be

Be, Zn, Cd, Hg

K

K, Rb, Cs, Fr

V

V, Cr, Nb, Mo, Tc

Ni

Ni, Cu, Ge, Ru, Rh, Ag, Bi

In

In, La, Ce, Pr, Nd, Pm, Sm, Eu

Al

Al, Ga, Y, Gd, Tb, Dy, Ho, Er, Tm, Yb, Lu, Tl

R

R, He, Ne, Ar, Kr, Xe, Rn, Ac, Th, Pa, U, Np, Pu, Am, Cm, Bk, Cf, Es, Fm, Md, No, Lr, Db, Jl

+

Acyclic atoms are preceded by a hyphen “-” mark.

+

Here’s the multi-level neighborhood for the molecule +represented by the SMILES string CC(=O)Cl:

+
# The contents of this file were derived from
+# Title = acid chloride
+-C(-H(-C)-H(-C)-H(-C)-C(-C-O-Cl))
+-C(-C(-H-H-H-C)-O(-C)-Cl(-C))
+-O(-C(-C-O-Cl))
+-Cl(-C(-C-O-Cl))
+-H(-C(-H-H-H-C))
+-H(-C(-H-H-H-C))
+-H(-C(-H-H-H-C))
+
+
+
+
+[fpbg99] +

Dmitrii Filimonov, Vladimir Poroikov, Yulia Borodina, and +Tatyana Gloriozova. Chemical Similarity Assessment through +Multilevel Neighborhoods of Atoms: Definition and Comparison with +the Other Descriptors. J. Chem. Inf. Comput. Sci. 1999, 39, 666-670. +[Link]

+
+
+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-L <num>
+

Levels (default = 2)

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/NWChem_input_format.html b/docs/FileFormats/NWChem_input_format.html new file mode 100644 index 00000000..e7bed098 --- /dev/null +++ b/docs/FileFormats/NWChem_input_format.html @@ -0,0 +1,618 @@ + + + + + + + + + + + NWChem input format (nw) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

NWChem input format (nw)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/NWChem_output_format.html b/docs/FileFormats/NWChem_output_format.html new file mode 100644 index 00000000..4dc4792b --- /dev/null +++ b/docs/FileFormats/NWChem_output_format.html @@ -0,0 +1,646 @@ + + + + + + + + + + + NWChem output format (nwo) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

NWChem output format (nwo)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-f
+

Overwrite molecule if more than one

+

calculation with different molecules +is present in the output file +(last calculation will be prefered)

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ORCA_input_format.html b/docs/FileFormats/ORCA_input_format.html new file mode 100644 index 00000000..6db11ae5 --- /dev/null +++ b/docs/FileFormats/ORCA_input_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + ORCA input format (orcainp) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ORCA input format (orcainp)#

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ORCA_output_format.html b/docs/FileFormats/ORCA_output_format.html new file mode 100644 index 00000000..82f6a467 --- /dev/null +++ b/docs/FileFormats/ORCA_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + ORCA output format (orca) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ORCA output format (orca)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Obscure_Formats.html b/docs/FileFormats/Obscure_Formats.html new file mode 100644 index 00000000..dc96238a --- /dev/null +++ b/docs/FileFormats/Obscure_Formats.html @@ -0,0 +1,576 @@ + + + + + + + + + + + Obscure formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/OpenDX_cube_format_for_APBS.html b/docs/FileFormats/OpenDX_cube_format_for_APBS.html new file mode 100644 index 00000000..fd0b0dfd --- /dev/null +++ b/docs/FileFormats/OpenDX_cube_format_for_APBS.html @@ -0,0 +1,572 @@ + + + + + + + + + + + OpenDX cube format for APBS (dx) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

OpenDX cube format for APBS (dx)#

+

A volume data format for IBM’s Open Source visualization software

+

The OpenDX support is currently designed to read the OpenDX cube +files from APBS.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Open_Babel_molecule_report.html b/docs/FileFormats/Open_Babel_molecule_report.html new file mode 100644 index 00000000..2e69f50f --- /dev/null +++ b/docs/FileFormats/Open_Babel_molecule_report.html @@ -0,0 +1,609 @@ + + + + + + + + + + + Open Babel molecule report (molreport) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel molecule report (molreport)#

+

Generates a summary of the atoms and bonds in a molecule

+

Example output:

+
TITLE: Ethanol.mopout
+FORMULA: C2H6O
+MASS: 46.0684
+ATOM:         1   C TYPE: C3     HYB:  3 CHARGE:  -0.2151
+ATOM:         2   C TYPE: C3     HYB:  3 CHARGE:  -0.0192
+ATOM:         3   O TYPE: O3     HYB:  3 CHARGE:  -0.3295
+ATOM:         4   H TYPE: HC     HYB:  0 CHARGE:   0.0771
+ATOM:         5   H TYPE: HC     HYB:  0 CHARGE:   0.0873
+ATOM:         6   H TYPE: HC     HYB:  0 CHARGE:   0.0874
+ATOM:         7   H TYPE: HC     HYB:  0 CHARGE:   0.0577
+ATOM:         8   H TYPE: HC     HYB:  0 CHARGE:   0.0577
+ATOM:         9   H TYPE: HC     HYB:  0 CHARGE:   0.1966
+BOND:         0 START:         8 END:         2 ORDER:   1
+BOND:         1 START:         6 END:         1 ORDER:   1
+BOND:         2 START:         1 END:         2 ORDER:   1
+BOND:         3 START:         1 END:         4 ORDER:   1
+BOND:         4 START:         1 END:         5 ORDER:   1
+BOND:         5 START:         2 END:         3 ORDER:   1
+BOND:         6 START:         2 END:         7 ORDER:   1
+BOND:         7 START:         3 END:         9 ORDER:   1
+
+
+ +
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Open_Babel_report_format.html b/docs/FileFormats/Open_Babel_report_format.html new file mode 100644 index 00000000..345ec7ce --- /dev/null +++ b/docs/FileFormats/Open_Babel_report_format.html @@ -0,0 +1,700 @@ + + + + + + + + + + + Open Babel report format (report) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel report format (report)#

+

A detailed report on the geometry of a molecule

+

The report format presents a report of various molecular information, +including:

+
    +
  • Filename / molecule title

  • +
  • Molecular formula

  • +
  • Mass

  • +
  • Exact mass (i.e., for high-resolution mass spectrometry, the mass of the most abundant elements)

  • +
  • Total charge (if not electrically neutral)

  • +
  • Total spin (if not singlet)

  • +
  • Interatomic distances

  • +
  • Atomic charges

  • +
  • Bond angles

  • +
  • Dihedral angles

  • +
  • Chirality information (including which atoms are chiral)

  • +
  • Additional comments in the input file

  • +
+

Example for benzene:

+
FILENAME: benzene.report
+FORMULA: C6H6
+MASS: 78.1118
+EXACT MASS: 78.0469502
+INTERATOMIC DISTANCES
+
+              C   1      C   2      C   3      C   4      C   5      C   6
+              ------------------------------------------------------------------
+   C   1    0.0000
+   C   2    1.3958     0.0000
+   C   3    2.4176     1.3958     0.0000
+   C   4    2.7916     2.4176     1.3958     0.0000
+   C   5    2.4176     2.7916     2.4176     1.3958     0.0000
+   C   6    1.3958     2.4176     2.7916     2.4176     1.3958     0.0000
+   H   7    1.0846     2.1537     3.4003     3.8761     3.4003     2.1537
+   H   8    2.1537     1.0846     2.1537     3.4003     3.8761     3.4003
+   H   9    3.4003     2.1537     1.0846     2.1537     3.4003     3.8761
+   H  10    3.8761     3.4003     2.1537     1.0846     2.1537     3.4003
+   H  11    3.4003     3.8761     3.4003     2.1537     1.0846     2.1537
+   H  12    2.1537     3.4003     3.8761     3.4003     2.1537     1.0846
+
+              H   7      H   8      H   9      H  10      H  11      H  12
+              ------------------------------------------------------------------
+   H   7    0.0000
+   H   8    2.4803     0.0000
+   H   9    4.2961     2.4804     0.0000
+   H  10    4.9607     4.2961     2.4803     0.0000
+   H  11    4.2961     4.9607     4.2961     2.4803     0.0000
+   H  12    2.4803     4.2961     4.9607     4.2961     2.4804     0.0000
+
+ATOMIC CHARGES
+   C   1   -0.1000000000
+   C   2   -0.1000000000
+   C   3   -0.1000000000
+   C   4   -0.1000000000
+   C   5   -0.1000000000
+   C   6   -0.1000000000
+   H   7    0.1000000000
+   H   8    0.1000000000
+   H   9    0.1000000000
+   H  10    0.1000000000
+   H  11    0.1000000000
+   H  12    0.1000000000
+
+BOND ANGLES
+   7    1    2   HC  Car  Car    120.000
+   1    2    3  Car  Car  Car    120.000
+   1    2    8  Car  Car   HC    120.000
+   8    2    3   HC  Car  Car    120.000
+   2    3    4  Car  Car  Car    120.000
+   2    3    9  Car  Car   HC    120.000
+   9    3    4   HC  Car  Car    120.000
+   3    4    5  Car  Car  Car    120.000
+   3    4   10  Car  Car   HC    120.000
+  10    4    5   HC  Car  Car    120.000
+   4    5    6  Car  Car  Car    120.000
+   4    5   11  Car  Car   HC    120.000
+  11    5    6   HC  Car  Car    120.000
+   5    6    1  Car  Car  Car    120.000
+   5    6   12  Car  Car   HC    120.000
+  12    6    1   HC  Car  Car    120.000
+   6    1    2  Car  Car  Car    120.000
+   6    1    7  Car  Car   HC    120.000
+   2    1    7  Car  Car   HC    120.000
+   3    2    8  Car  Car   HC    120.000
+   4    3    9  Car  Car   HC    120.000
+   5    4   10  Car  Car   HC    120.000
+   6    5   11  Car  Car   HC    120.000
+   1    6   12  Car  Car   HC    120.000
+
+TORSION ANGLES
+   6    1    2    3      0.026
+   6    1    2    8   -179.974
+   7    1    2    3    179.974
+   7    1    2    8     -0.026
+   1    2    3    4     -0.026
+   1    2    3    9   -179.974
+   8    2    3    4    179.974
+   8    2    3    9      0.026
+   2    3    4    5      0.026
+   2    3    4   10    179.974
+   9    3    4    5    179.974
+   9    3    4   10     -0.026
+   3    4    5    6     -0.026
+   3    4    5   11    179.974
+  10    4    5    6   -179.974
+  10    4    5   11      0.026
+   4    5    6    1      0.026
+   4    5    6   12    179.974
+  11    5    6    1   -179.974
+  11    5    6   12     -0.026
+   5    6    1    2     -0.026
+   5    6    1    7   -179.974
+  12    6    1    2    179.974
+  12    6    1    7      0.026
+
+
+ +
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Other_cheminformatics_Formats.html b/docs/FileFormats/Other_cheminformatics_Formats.html new file mode 100644 index 00000000..6fe6e255 --- /dev/null +++ b/docs/FileFormats/Other_cheminformatics_Formats.html @@ -0,0 +1,580 @@ + + + + + + + + + + + Other cheminformatics formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Outputs_nothing.html b/docs/FileFormats/Outputs_nothing.html new file mode 100644 index 00000000..2523b512 --- /dev/null +++ b/docs/FileFormats/Outputs_nothing.html @@ -0,0 +1,581 @@ + + + + + + + + + + + Outputs nothing (nul) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Outputs nothing (nul)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Overview.html b/docs/FileFormats/Overview.html new file mode 100644 index 00000000..ce646043 --- /dev/null +++ b/docs/FileFormats/Overview.html @@ -0,0 +1,788 @@ + + + + + + + + + + + Supported File Formats and Options — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Supported File Formats and Options#

+

Chemists are a very imaginative group. They keep thinking of new file formats.

+

Indeed, these are not just simple differences in how chemical +data is stored, but often completely different views on molecular +representations. For example, some file formats ignore hydrogen atoms +as “implicit,” while others do not store bonding information. This is, +in fact, a key reason for Open Babel’s existence.

+

OpenBabel has support for 146 formats in total. It can read 108 formats and can write 107 formats. These formats are identified by a name (for example, ShelX format) and one or more short codes (in this case, ins or res). The titles of each section provide this information (for example, ShelX format (ins, res)).

+

The short code is used when using obabel or babel to convert files from one format to another:

+
obabel -iins myfile.ins -ocml
+
+
+

converts from ShelX format to Chemical Markup Language (in this case, no output file is specified and the output will be written to screen [stdout]). In fact, if the filename extension is the same as the file format code, then there is no need to specify the code. In other words, the following command will behave identically:

+
babel myfile.ins -ocml
+
+
+

As well as the general conversion options described elsewhere (see Options), each format may have its own options for either reading or writing. For example, the ShelX format has two options that affect reading of files, s and b. To set a file format option:

+
    +
  • For Read Options, precede the option with -a at the command line

  • +
  • For Write Options, precede the option with -x

  • +
+ +

For example, if we wanted to set all bonds to single bonds when reading a ShelX format file, we could specify the s option:

+
babel -iins myfile.ins -ocml -as
+
+
+

More than one read (or write) option can be specified (e.g. -ax -ay -az). babel (but not obabel) also allows you to specify several options together (e.g. as -axyz).

+
+
Developer Note

To set the file formats for an OBConversion object, use SetInAndOutFormat(InCode, OutCode). To set a Read Option s, use SetOptions("s", OBConversion::INOPTIONS).

+
+
+
+ +
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/PCModel_Format.html b/docs/FileFormats/PCModel_Format.html new file mode 100644 index 00000000..b821c16e --- /dev/null +++ b/docs/FileFormats/PCModel_Format.html @@ -0,0 +1,576 @@ + + + + + + + + + + + PCModel Format (pcm) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

PCModel Format (pcm)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/PNG_2D_depiction.html b/docs/FileFormats/PNG_2D_depiction.html new file mode 100644 index 00000000..3f0f0aca --- /dev/null +++ b/docs/FileFormats/PNG_2D_depiction.html @@ -0,0 +1,712 @@ + + + + + + + + + + + PNG 2D depiction (png) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

PNG 2D depiction (png)#

+

or add/extract chemical structures from a .png file

+

The PNG format has several uses. The most common is to generate a +.png file for one or more molecules. +2D coordinates are generated if not present:

+
obabel mymol.smi -O image.png
+
+
+

Chemical structure data can be embedded in the .png file +(in a tEXt chunk):

+
obabel mymol.mol -O image.png -xO molfile
+
+
+

The parameter of the -xO option specifies the format (“file”can be added). +Note that if you intend to embed a 2D or 3D format, you may have to call +--gen2d or --gen3d to generate the required coordinates if they are +not present in the input.

+

Molecules can also be embedded in an existing PNG file:

+
obabel existing.png mymol1.smi mymol2.mol -O augmented.png -xO mol
+
+
+

Reading from a PNG file will extract any embedded chemical structure data:

+
obabel augmented.png -O contents.sdf
+
+
+
+

Read Options#

+
+
-y <additional chunk ID>
+

Look also in chunks with specified ID

+
+
+
+
+

Write Options#

+
+
-p <pixels>
+

image size, default 300

+
+
-w <pixels>
+

image width (or from image size)

+
+
-h <pixels>
+

image height (or from image size)

+
+
-c <num>
+

number of columns in table

+
+
-r <num>
+

number of rows in table

+
+
-N <num>
+

max number objects to be output

+
+
-u
+

no element-specific atom coloring

+

Use this option to produce a black and white diagram

+
+
-U
+

do not use internally-specified color

+

e.g. atom color read from cml or generated by internal code

+
+
-b <color>
+

background color, default white

+

e.g -xb yellow or -xb #88ff00 -xb none is transparent. +Just -xb is black with white bonds. +The atom symbol colors work with black and white backgrounds, +but may not with other colors.

+
+
-B <color>
+

bond color, default black

+

e.g -xB yellow or -xB #88ff00

+
+
-C
+

do not draw terminal C (and attached H) explicitly

+

The default is to draw all hetero atoms and terminal C explicitly, +together with their attched hydrogens.

+
+
-a
+

draw all carbon atoms

+

So propane would display as H3C-CH2-CH3

+
+
-d
+

do not display molecule name

+
+
-m
+

do not add margins to the image

+

This only applies if there is a single molecule to depict. +Implies -xd.

+
+
-s
+

use asymmetric double bonds

+
+
-t
+

use thicker lines

+
+
-A
+

display aliases, if present

+

This applies to structures which have an alternative, usually +shorter, representation already present. This might have been input +from an A or S superatom entry in an sd or mol file, or can be +generated using the –genalias option. For example:

+
obabel -:"c1cc(C=O)ccc1C(=O)O" -O out.png
+       --genalias -xA
+
+
+

would add a aliases COOH and CHO to represent the carboxyl and +aldehyde groups and would display them as such in the svg diagram. +The aliases which are recognized are in data/superatom.txt, which +can be edited.

+
+
-O <format ID>
+

Format of embedded text

+

For example, molfile or smi. +If there is no parameter, input format is used.

+
+
-y <additional chunk ID>
+

Write to a chunk with specified ID

+
+
+
+
+

Comments#

+

If Cairo was not found when Open Babel was compiled, then +the 2D depiction will be unavailable. However, it will still be +possible to extract and embed chemical data in .png files.

+ +
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/POS_cartesian_coordinates_format.html b/docs/FileFormats/POS_cartesian_coordinates_format.html new file mode 100644 index 00000000..a9d6129c --- /dev/null +++ b/docs/FileFormats/POS_cartesian_coordinates_format.html @@ -0,0 +1,603 @@ + + + + + + + + + + + POS cartesian coordinates format (pos) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

POS cartesian coordinates format (pos)#

+

A generic coordinate format

+

The “POS” file format is a modified version of the “XYZ” general format

+
    +
  • Line one of the file contains the number of atoms in the file.

  • +
  • Line two of the file contains a title, comment, or filename.

  • +
+

Example:

+
.. note:: This is a read-only format.
+
+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/POV-Ray_input_format.html b/docs/FileFormats/POV-Ray_input_format.html new file mode 100644 index 00000000..45d89a4b --- /dev/null +++ b/docs/FileFormats/POV-Ray_input_format.html @@ -0,0 +1,627 @@ + + + + + + + + + + + POV-Ray input format (pov) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

POV-Ray input format (pov)#

+

Generate an input file for the open source POV-Ray ray tracer.

+

The POV-Ray file generated by Open Babel should be considered a starting +point for the user to create a rendered image of a molecule. Although care +is taken to center the camera on the molecule, the user will probably want +to adjust the viewpoint, change the lighting, textures, etc.

+

The file babel_povray3.inc is required to render the povray file +generated by Open Babel. This file is included in the Open Babel +distribution, and it should be copied into the same directory as the +.pov file before rendering. By editing the settings in +babel_povray3.inc it is possible to tune the appearance +of the molecule.

+

For example, the image below was generated by rendering the output from the +following command after setting the reflection of non-metal atoms to 0 +(line 121 in babel_povray3.inc):

+
obabel -:"CC(=O)Cl acid chloride" --gen3d -O chloride.pov -xc -xf -xs -m SPF
+
+
+../../_images/povray.png +
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-c
+

Add a black and white checkerboard

+
+
-f
+

Add a mirror sphere

+
+
-m <model-type>
+

BAS (ball-and-stick), SPF (space-fill) or CST (capped sticks)

+

The default option is ball-and-stick. To choose space-fill, you would use +the following command line:

+
obabel aspirin.mol -O aspirin.pov -xm SPF
+
+
+
+
-s
+

Add a sky (with clouds)

+
+
-t
+

Use transparent textures

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/PQR_format.html b/docs/FileFormats/PQR_format.html new file mode 100644 index 00000000..09dba544 --- /dev/null +++ b/docs/FileFormats/PQR_format.html @@ -0,0 +1,588 @@ + + + + + + + + + + + PQR format (pqr) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

PQR format (pqr)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/PWscf_format.html b/docs/FileFormats/PWscf_format.html new file mode 100644 index 00000000..6b3860d2 --- /dev/null +++ b/docs/FileFormats/PWscf_format.html @@ -0,0 +1,619 @@ + + + + + + + + + + + PWscf format (pwscf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

PWscf format (pwscf)#

+

The format used by PWscf, part of Quantum Espresso.

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Painter_format.html b/docs/FileFormats/Painter_format.html new file mode 100644 index 00000000..713a68ab --- /dev/null +++ b/docs/FileFormats/Painter_format.html @@ -0,0 +1,628 @@ + + + + + + + + + + + Painter format (paint) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Painter format (paint)#

+

Commands used to generate a 2D depiction of a molecule

+

This is a utility format that is useful if you want to +generate a depiction of a molecule yourself, for example +by drawing on a Graphics2D canvas in Java. The format +writes out a list of drawing commands as shown +in the following example:

+
obabel -:CC(=O)Cl -opaint
+
+NewCanvas 149.3 140.0
+SetPenColor 0.0 0.0 0.0 1.0 (rgba)
+DrawLine 109.3 100.0 to 74.6 80.0
+SetPenColor 0.0 0.0 0.0 1.0 (rgba)
+DrawLine 71.6 80.0 to 71.6 53.0
+DrawLine 77.6 80.0 to 77.6 53.0
+SetPenColor 0.0 0.0 0.0 1.0 (rgba)
+DrawLine 74.6 80.0 to 51.3 93.5
+SetPenColor 0.4 0.4 0.4 1.0 (rgba)
+SetPenColor 0.4 0.4 0.4 1.0 (rgba)
+SetPenColor 1.0 0.1 0.1 1.0 (rgba)
+SetFontSize 16
+SetFontSize 16
+SetFontSize 16
+DrawText 74.6 40.0 "O"
+SetPenColor 0.1 0.9 0.1 1.0 (rgba)
+SetFontSize 16
+SetFontSize 16
+SetFontSize 16
+SetFontSize 16
+DrawText 40.0 100.0 "Cl"
+
+
+

Note that the origin is considered to be in the top left corner.

+

The following image was drawn using the information +in this format as described at +http://baoilleach.blogspot.co.uk/2012/04/painting-molecules-your-way-introducing.html:

+../../_images/bananamol.png +
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-M
+

Do not include a margin around the depiction

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Parallel_Quantum_Solutions_format.html b/docs/FileFormats/Parallel_Quantum_Solutions_format.html new file mode 100644 index 00000000..160a8e25 --- /dev/null +++ b/docs/FileFormats/Parallel_Quantum_Solutions_format.html @@ -0,0 +1,614 @@ + + + + + + + + + + + Parallel Quantum Solutions format (pqs) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Parallel Quantum Solutions format (pqs)#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Point_cloud_on_VDW_surface.html b/docs/FileFormats/Point_cloud_on_VDW_surface.html new file mode 100644 index 00000000..2dacc141 --- /dev/null +++ b/docs/FileFormats/Point_cloud_on_VDW_surface.html @@ -0,0 +1,609 @@ + + + + + + + + + + + Point cloud on VDW surface (pointcloud) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Point cloud on VDW surface (pointcloud)#

+

Generates a point cloud on the VDW surface around the molecule

+

The surface location is calculated by adding the probe atom radius +(if specified) to the Van der Waal radius of the particular atom multipled +by the specified multiple (1.0 if unspecified).Output is a list of {x,y,z} tuples in Angstrom. Alternatively, if the x +option is specified, the XYZ cartesian coordinates format (xyz) is used +instead.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-r <radii>
+

create a surface for each VDS radius (default 1.0)

+

A comma-separated list of VDW radius multiples

+
+
-d <densities>
+

for each surface, specify the point density (default 1.0 Angstrom^2)

+

A comma-separated list of densities

+
+
-p <radius>
+

radius of the probe atom in Angstrom (default 0.0)

+
+
-x
+

output in xyz format

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Protein_Data_Bank_format.html b/docs/FileFormats/Protein_Data_Bank_format.html new file mode 100644 index 00000000..774b8d32 --- /dev/null +++ b/docs/FileFormats/Protein_Data_Bank_format.html @@ -0,0 +1,610 @@ + + + + + + + + + + + Protein Data Bank format (ent, pdb) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Protein Data Bank format (ent, pdb)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
-c
+

Ignore CONECT records

+
+
+
+
+

Write Options#

+
+
-n
+

Do not write duplicate CONECT records to indicate bond order

+
+
-o
+

Write origin in space group label (CRYST1 section)

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/PubChem_JSON.html b/docs/FileFormats/PubChem_JSON.html new file mode 100644 index 00000000..7d378cdf --- /dev/null +++ b/docs/FileFormats/PubChem_JSON.html @@ -0,0 +1,599 @@ + + + + + + + + + + + PubChem JSON (pcjson) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

PubChem JSON (pcjson)#

+

The JSON format returned by the PubChem PUG REST service

+

The data contained in this format closely resembles PubChem’s internal data structure.

+
+

Read Options#

+
+
-s
+

disable stereo perception and just read stereo information from input

+
+
+
+
+

Write Options#

+
+
-m
+

minified output, with no line breaks or indents

+
+
-w
+

use bond styles from input instead of perceived stereochemistry

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/PubChem_format.html b/docs/FileFormats/PubChem_format.html new file mode 100644 index 00000000..5e369d9c --- /dev/null +++ b/docs/FileFormats/PubChem_format.html @@ -0,0 +1,582 @@ + + + + + + + + + + + PubChem format (pc) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

PubChem format (pc)#

+

An XML format containing information on PubChem entries.

+

PubChem is a freely-available +database of chemical compounds and their properties.

+

OpenBabel only extracts the chemical structure information, and the +potentially large amount of other information is currently ignored. +The format seems to handle multiple conformers, but only one is read +(this needs testing).

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Q-Chem_input_format.html b/docs/FileFormats/Q-Chem_input_format.html new file mode 100644 index 00000000..7f4e5dbd --- /dev/null +++ b/docs/FileFormats/Q-Chem_input_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + Q-Chem input format (qcin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Q-Chem input format (qcin)#

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-k <keywords>
+

Use the specified keywords for input

+
+
-f <file>
+

Read the file specified for input keywords

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Q-Chem_output_format.html b/docs/FileFormats/Q-Chem_output_format.html new file mode 100644 index 00000000..6399a296 --- /dev/null +++ b/docs/FileFormats/Q-Chem_output_format.html @@ -0,0 +1,640 @@ + + + + + + + + + + + Q-Chem output format (qcout) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Q-Chem output format (qcout)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/RInChI.html b/docs/FileFormats/RInChI.html new file mode 100644 index 00000000..7ef588d0 --- /dev/null +++ b/docs/FileFormats/RInChI.html @@ -0,0 +1,602 @@ + + + + + + + + + + + RInChI (rinchi) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

RInChI (rinchi)#

+

The Reaction InChI

+

The Reaction InChI (or RInChI) is intended to be a unique +string that describes a reaction. This may be useful for +indexing and searching reaction databases. As with the InChI +it is recommended that you always keep the original reaction +information and use the RInChI in addition.

+

The RInChI format is a hierarchical, layered description of a +reaction with different levels based on the Standard InChI +representation of each structural component participating in +the reaction.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-e
+

Treat this reaction as an equilibrium reaction

+

Layer 5 of the generated RInChI will have /d=

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Reaction_Formats.html b/docs/FileFormats/Reaction_Formats.html new file mode 100644 index 00000000..ccd027ea --- /dev/null +++ b/docs/FileFormats/Reaction_Formats.html @@ -0,0 +1,581 @@ + + + + + + + + + + + Reaction formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Reaction_SMILES_format.html b/docs/FileFormats/Reaction_SMILES_format.html new file mode 100644 index 00000000..70d7bbb0 --- /dev/null +++ b/docs/FileFormats/Reaction_SMILES_format.html @@ -0,0 +1,587 @@ + + + + + + + + + + + Reaction SMILES format (rsmi) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Reaction SMILES format (rsmi)#

+
+

Write Options#

+
+
-r
+

radicals lower case eg ethyl is Cc

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Read_and_write_raw_text.html b/docs/FileFormats/Read_and_write_raw_text.html new file mode 100644 index 00000000..69b47161 --- /dev/null +++ b/docs/FileFormats/Read_and_write_raw_text.html @@ -0,0 +1,578 @@ + + + + + + + + + + + Read and write raw text (text) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Read and write raw text (text)#

+

Facilitates the input of boilerplate text with babel commandline

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/SIESTA_format.html b/docs/FileFormats/SIESTA_format.html new file mode 100644 index 00000000..89b50e2c --- /dev/null +++ b/docs/FileFormats/SIESTA_format.html @@ -0,0 +1,583 @@ + + + + + + + + + + + SIESTA format (siesta) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

SIESTA format (siesta)#

+

The format used by SIESTA (Spanish Initiative for Electronic Simulations with Thousands of Atoms).

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/SMILES_FIX_format.html b/docs/FileFormats/SMILES_FIX_format.html new file mode 100644 index 00000000..2b8d385b --- /dev/null +++ b/docs/FileFormats/SMILES_FIX_format.html @@ -0,0 +1,573 @@ + + + + + + + + + + + SMILES FIX format (fix) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

SMILES FIX format (fix)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/SMILES_format.html b/docs/FileFormats/SMILES_format.html new file mode 100644 index 00000000..56f3a421 --- /dev/null +++ b/docs/FileFormats/SMILES_format.html @@ -0,0 +1,693 @@ + + + + + + + + + + + SMILES format (smi, smiles) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

SMILES format (smi, smiles)#

+

A linear text format which can describe the connectivity and chirality of a molecule

+

Open Babel implements the OpenSMILES specification.

+

It also implements an extension to this specification for radicals.

+

Note that the l <atomno> option, used to specify a “last” atom, is +intended for the generation of SMILES strings to which additional atoms +will be concatenated. If the atom specified has an explicit H within a bracket +(e.g. [nH] or [C@@H]) the output will have the H removed along with any +associated stereo symbols.

+
+

See also

+

The Canonical SMILES format (can) produces a canonical representation +of the molecule in SMILES format. This is the same as the c option +below but may be more convenient to use.

+
+
+

Read Options#

+
+
-a
+

Preserve aromaticity present in the SMILES

+

This option should only be used if reading aromatic SMILES +generated by the same version of Open Babel. Any other +use will lead to undefined behavior. The advantage of this +option is that it avoids aromaticity perception, thus speeding +up reading SMILES.

+
+
-S
+

Clean stereochemistry

+

By default, stereochemistry is accepted as given. If you wish +to clean up stereochemistry (e.g. by removing tetrahedral +stereochemistry where two of the substituents are identical) +then specifying this option will reperceive stereocenters.

+
+
+
+
+

Write Options#

+
+
-a
+

Output atomclass like [C:2], if available

+
+
-c
+

Output in canonical form

+
+
-U
+

Universal SMILES

+
+
-I
+

Inchified SMILES

+
+
-h
+

Output explicit hydrogens as such

+
+
-i
+

Do not include isotopic or chiral markings

+
+
-k
+

Create Kekule SMILES instead of aromatic

+
+
-n
+

No molecule name

+
+
-r
+

Radicals lower case eg ethyl is Cc

+
+
-t
+

Molecule name only

+
+
-x
+

append X/Y coordinates in canonical-SMILES order

+
+
-C
+

‘anti-canonical’ random order (mostly for testing)

+
+
-o <ordering>
+

Output in user-specified order

+

Ordering should be specified like 4-2-1-3 for a 4-atom molecule. +This gives canonical labels 1,2,3,4 to atoms 4,2,1,3 respectively, +so that atom 4 will be visited first and the remaining atoms +visited in a depth-first manner following the lowest canonical labels.

+
+
-O
+

Store the SMILES atom order as a space-separated string

+

The string is stored as an OBPairData wth the name +‘SMILES Atom Order’.

+
+
-F <atom numbers>
+

Generate SMILES for a fragment

+

The atom numbers should be specified like “1 2 4 7”.

+
+
-R
+

Do not reuse bond closure symbols

+
+
-f <atomno>
+

Specify the first atom

+

This atom will be used to begin the SMILES string.

+
+
-l <atomno>
+

Specify the last atom

+

The output will be rearranged so that any additional +SMILES added to the end will be attached to this atom.

+
+
-T <max seconds>
+

Specify the canonicalization timeout

+

Canonicalization can take a while for symmetric molecules and a +timeout is used. The default is 5 seconds.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/SMILES_format_using_Smiley_parser.html b/docs/FileFormats/SMILES_format_using_Smiley_parser.html new file mode 100644 index 00000000..3514c9e0 --- /dev/null +++ b/docs/FileFormats/SMILES_format_using_Smiley_parser.html @@ -0,0 +1,689 @@ + + + + + + + + + + + SMILES format using Smiley parser (smy) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

SMILES format using Smiley parser (smy)#

+

The Smiley parser presents an alternative to the standard SMILES parser +(SMILES format (smi, smiles)). It was written to be strictly compatible with the +OpenSMILES standard (http://opensmiles.org). In comparison, the standard +parser is more forgiving to erroneous input, and also supports some extensions +such as for radicals.

+

In addition, the Smiley parser returns detailed error messages when problems +arise parsing or validating the SMILES, whereas the standard parser seldom +describes the specific problem. For a detailed description of the OpenSMILES +semantics, the specification should be consulted. In addition to syntactical +and grammatical correctness, the Smiley parser also verifies some basic +semantics.

+

Here are some examples of the errors reported:

+
SyntaxError: Bracket atom expression contains invalid trailing characters.
+F.FB(F)F.[NH2+251][C@@H](CP(c1ccccc1)c1ccccc1)C(C)(C)C 31586112
+               ^^
+SyntaxError: Unmatched branch opening.
+CC(CC
+  ^^^
+SyntaxError: Unmatched branch closing.
+CC)CC
+^^^
+SemanticsError: Unmatched ring bond.
+C1CCC
+^
+SemanticsError: Conflicing ring bonds.
+C-1CCCCC=1
+
+
+
+

Hydrogen with Hydrogen Count#

+

Hydrogen atoms can not have a hydrogen count. Hydrogen bound to a hydrogen +atom should be specified by two bracket atom expressions.

+

Examples:

+
[HH]        invalid
+[HH1]       invalid (same as [HH]
+[HH3]       invalid
+[HH0]       valid (same as [H])
+[H][H]      valid
+
+
+
+
+

Unmatched Ring Bond#

+

Report unmatched ring bonds.

+

Example:

+
C1CCC
+
+
+
+
+

Conflicting Ring Bonds#

+

When the bond type for ring bonds are explicitly specified at both ends, +these should be the same.

+

Example:

+
C-1CCCCCC=1
+
+
+
+
+

Invalid Ring Bonds#

+

There are two types of invalid ring bonds. The first is when two atoms both +have the same two ring bonds. This would mean adding a parallel edge in the +graph which is not allowed. The second type is similar but results in a +self-loop by having a ring bond number twice.

+

Examples:

+
C12CCCC12      parallel bond
+C11            self-loop bond
+
+
+
+
+

Invalid Chiral Valence#

+

When an atom is specified as being chiral, it should have the correct +number of neighboring atoms (possibly including an implicit H inside the +bracket.

+

The valid valences are:

+
Tetrahedral (TH)          : 4
+Allene (AL)               : 4 (*)
+Square Planar (SP)        : 4
+Trigonal Bypiramidal (TB) : 5
+Octahedral(OH)            : 6
+
+(*) The chiral atom has only 2 bonds but the neighbor's neighbors are
+    counted: NC(Br)=[C@AL1]=C(F)I
+
+
+
+
+

Invalid Chiral Hydrogen Count#

+

Chiral atoms can only have one hydrogen in their bracket since multiple +hydrogens would make them not chiral.

+

Example:

+
C[C@H2]F
+
+
+
+

Note

+

This is a read-only format.

+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/STL_3D-printing_format.html b/docs/FileFormats/STL_3D-printing_format.html new file mode 100644 index 00000000..ede2616e --- /dev/null +++ b/docs/FileFormats/STL_3D-printing_format.html @@ -0,0 +1,599 @@ + + + + + + + + + + + STL 3D-printing format (stl) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

STL 3D-printing format (stl)#

+

The STereoLithography format developed by 3D Systems

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-p <radius>
+

radius for probe particle (default 0.0 A)

+
+
-s <scale>
+

scale-factor for VDW radius (default 1.0 A)

+
+
-c
+

add CPK colours

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/SVG_2D_depiction.html b/docs/FileFormats/SVG_2D_depiction.html new file mode 100644 index 00000000..30f6d029 --- /dev/null +++ b/docs/FileFormats/SVG_2D_depiction.html @@ -0,0 +1,741 @@ + + + + + + + + + + + SVG 2D depiction (svg) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

SVG 2D depiction (svg)#

+

Scalable Vector Graphics 2D rendering of molecular structure.

+

When called from commandline or GUI or otherwise via Convert(), +single molecules are displayed at a fixed scale, as in normal diagrams, +but multiple molecules are displayed in a table which expands to fill +the containing element, such as a browser window. +When WriteMolecule() is called directly, without going through +WriteChemObject, e.g. via OBConversion::Write(), a fixed size image by +default 200 x 200px containing a single molecule is written. The size +can be specified by the P output option.

+

Multiple molecules are displayed in a grid of dimensions specified by +the -xr and -xc options (number of rows and columns respectively +and --rows, --cols with babel). +When displayed in most modern browsers, like Firefox, there is +javascript support for zooming (with the mouse wheel) +and panning (by dragging with the left mouse button).

+

If both -xr and -xc are specified, they define the maximum number of +molecules that are displayed. +If only one of them is displayed, then the other is calculated so that +ALL the molecules are displayed. +If neither are specified, all the molecules are output in an +approximately square table.

+

By default, 2D atom coordinates are generated (using gen2D) unless they +are already present. This can be slow with a large number of molecules. +(3D coordinates are ignored.) Include --gen2D explicitly if you wish +any existing 2D coordinates to be recalculated.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-u
+

no element-specific atom coloring

+

Use this option to produce a black and white diagram

+
+
-U
+

do not use internally-specified color

+

e.g. atom color read from cml or generated by internal code

+
+
-b <color>
+

background color, default white

+

e.g -xb yellow or -xb #88ff00 -xb none is transparent. +Just -xb is black with white bonds. +The atom symbol colors work with black and white backgrounds, +but may not with other colors.

+
+
-B <color>
+

bond color, default black

+

e.g -xB yellow or -xB #88ff00

+
+
-C
+

do not draw terminal C (and attached H) explicitly

+

The default is to draw all hetero atoms and terminal C explicitly, +together with their attched hydrogens.

+
+
-a
+

draw all carbon atoms

+

So propane would display as H3C-CH2-CH3

+
+
-d
+

do not display molecule name

+
+
-s
+

use asymmetric double bonds

+
+
-t
+

use thicker lines

+
+
-e
+

embed molecule as CML

+

OpenBabel can read the resulting svg file as a cml file.

+
+
-p <num>
+

px Scale to bond length(single mol only)

+
+
-P <num>
+

px Single mol in defined size image

+

The General option –px # is an alternative to the above.

+
+
-c <num>
+

number of columns in table

+
+
-c
+

ols<num> number of columns in table(not displayed in GUI)

+
+
-r <num>
+

number of rows in table

+
+
-r
+

ows<num> number of rows in table(not displayed in GUI)

+
+
-N <num>
+

max number objects to be output

+
+
-l
+

draw grid lines

+
+
-h <condition>
+

highlight mol if condition is met

+

The condition can use descriptors and properties, +See documentation on --filter option for details. +To highlight in a particular color, follow the condition +by a color.

+
+
-i
+

add index to each atom

+

These indices are those in sd or mol files and correspond to the +order of atoms in a SMILES string.

+
+
-j
+

do not embed javascript

+

Javascript is not usually embedded if there is only one molecule, +but it is if the rows and columns have been specified as 1: -xr1 -xc1

+
+
-x
+

omit XML declaration (not displayed in GUI)

+

Useful if the output is to be embedded in another xml file.

+
+
-X
+

All atoms are explicitly declared

+

Useful if we don’t want any extra hydrogens drawn to fill the valence.

+
+
-A
+

display aliases, if present

+

This applies to structures which have an alternative, usually +shorter, representation already present. This might have been input +from an A or S superatom entry in an sd or mol file, or can be +generated using the –genalias option. For example:

+
obabel -:"c1cc(C=O)ccc1C(=O)O" -O out.svg
+       --genalias -xA
+
+
+

would add a aliases COOH and CHO to represent the carboxyl and +aldehyde groups and would display them as such in the svg diagram. +The aliases which are recognized are in data/superatom.txt, which +can be edited.

+
+
-S
+

Ball and stick depiction of molecules

+

Depicts the molecules as balls and sticks instead of the +normal line style.

+
+
+
+
+

Comments#

+

If the input molecule(s) contain explicit hydrogen, you could consider +improving the appearance of the diagram by adding an option -d to make +it implicit. Hydrogen on hetero atoms and on explicitly drawn C is +always shown. +For example, if input.smi had 10 molecules:

+
obabel input.smi -O out.svg -xb -xC -xe
+
+
+

would produce a svg file with a black background, with no explicit +terminal carbon, and with an embedded cml representation of each +molecule. The structures would be in two rows of four and one row +of two.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ShelX_format.html b/docs/FileFormats/ShelX_format.html new file mode 100644 index 00000000..b3dc240c --- /dev/null +++ b/docs/FileFormats/ShelX_format.html @@ -0,0 +1,597 @@ + + + + + + + + + + + ShelX format (ins, res) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ShelX format (ins, res)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Sybyl_Mol2_format.html b/docs/FileFormats/Sybyl_Mol2_format.html new file mode 100644 index 00000000..a5b21869 --- /dev/null +++ b/docs/FileFormats/Sybyl_Mol2_format.html @@ -0,0 +1,607 @@ + + + + + + + + + + + Sybyl Mol2 format (ml2, mol2, sy2) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Sybyl Mol2 format (ml2, mol2, sy2)#

+
+

Read Options#

+
+
-c
+

Read UCSF Dock scores saved in comments preceding molecules

+
+
+
+
+

Write Options#

+
+
-l
+

Output ignores residue information (only ligands)

+
+
-c
+

Write UCSF Dock scores saved in comments preceding molecules

+
+
-u
+

Do not write formal charge information in UNITY records

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/The_LAMMPS_data_format.html b/docs/FileFormats/The_LAMMPS_data_format.html new file mode 100644 index 00000000..1993cf13 --- /dev/null +++ b/docs/FileFormats/The_LAMMPS_data_format.html @@ -0,0 +1,610 @@ + + + + + + + + + + + The LAMMPS data format (lmpdat) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

The LAMMPS data format (lmpdat)#

+

LAMMPS is a classical molecular dynamics code, and an acronym for +Large-scale Atomic/Molecular Massively Parallel Simulator.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-q <water-model>
+

Set atomic charges for water.

+

There are two options: SPC (default) or SPCE

+
+
-d <length>
+

Set the length of the boundary box around the molecule.

+

The default is to make a cube around the molecule +adding 50% to the most positive and negative +cartesian coordinate.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Thermo_format.html b/docs/FileFormats/Thermo_format.html new file mode 100644 index 00000000..0d871754 --- /dev/null +++ b/docs/FileFormats/Thermo_format.html @@ -0,0 +1,586 @@ + + + + + + + + + + + Thermo format (tdd, therm) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Thermo format (tdd, therm)#

+

Reads and writes old-style NASA polynomials in original fixed format

+
+

Read Options#

+
+
-e
+

Terminate on “END”

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Tinker_XYZ_format.html b/docs/FileFormats/Tinker_XYZ_format.html new file mode 100644 index 00000000..48885782 --- /dev/null +++ b/docs/FileFormats/Tinker_XYZ_format.html @@ -0,0 +1,616 @@ + + + + + + + + + + + Tinker XYZ format (txyz) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Tinker XYZ format (txyz)#

+

The cartesian XYZ file format used by the molecular mechanics package TINKER.

+

By default, the MM2 atom types are used for writing files but MM3 atom types +are provided as an option. Another option provides the ability to take the +atom type from the atom class (e.g. as used in SMILES, or set via the API).

+
+

Read Options#

+
+
-s
+

Generate single bonds only

+
+
+
+
+

Write Options#

+
+
-m
+

Write an input file for the CNDO/INDO program.

+
+
-c
+

Write atom types using custom atom classes, if available

+
+
-3
+

Write atom types for the MM3 forcefield.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Title_format.html b/docs/FileFormats/Title_format.html new file mode 100644 index 00000000..69c37ae0 --- /dev/null +++ b/docs/FileFormats/Title_format.html @@ -0,0 +1,578 @@ + + + + + + + + + + + Title format (txt) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Title format (txt)#

+

Displays and reads molecule titles

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/TurboMole_Coordinate_format.html b/docs/FileFormats/TurboMole_Coordinate_format.html new file mode 100644 index 00000000..f018b4f5 --- /dev/null +++ b/docs/FileFormats/TurboMole_Coordinate_format.html @@ -0,0 +1,648 @@ + + + + + + + + + + + TurboMole Coordinate format (tmol) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

TurboMole Coordinate format (tmol)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
-a
+

Input in Angstroms

+
+
+
+
+

Write Options#

+
+
-a
+

Output Angstroms

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Turbomole_AOFORCE_output_format.html b/docs/FileFormats/Turbomole_AOFORCE_output_format.html new file mode 100644 index 00000000..649c7b00 --- /dev/null +++ b/docs/FileFormats/Turbomole_AOFORCE_output_format.html @@ -0,0 +1,619 @@ + + + + + + + + + + + Turbomole AOFORCE output format (aoforce) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Turbomole AOFORCE output format (aoforce)#

+

Read vibrational frequencies and intensities

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/UniChem_XYZ_format.html b/docs/FileFormats/UniChem_XYZ_format.html new file mode 100644 index 00000000..4a7296a7 --- /dev/null +++ b/docs/FileFormats/UniChem_XYZ_format.html @@ -0,0 +1,598 @@ + + + + + + + + + + + UniChem XYZ format (unixyz) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

UniChem XYZ format (unixyz)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Utility_Formats.html b/docs/FileFormats/Utility_Formats.html new file mode 100644 index 00000000..dd4cf0b2 --- /dev/null +++ b/docs/FileFormats/Utility_Formats.html @@ -0,0 +1,607 @@ + + + + + + + + + + + Utility formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/VASP_format.html b/docs/FileFormats/VASP_format.html new file mode 100644 index 00000000..f838fa8e --- /dev/null +++ b/docs/FileFormats/VASP_format.html @@ -0,0 +1,666 @@ + + + + + + + + + + + VASP format (CONTCAR, POSCAR, VASP) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

VASP format (CONTCAR, POSCAR, VASP)#

+

Reads in data from POSCAR and CONTCAR to obtain information from VASP calculations.

+

Due to limitations in Open Babel’s file handling, reading in VASP +files can be a bit tricky; the client that is using Open Babel must +use OBConversion::ReadFile() to begin the conversion. This change is +usually trivial. Also, the complete path to the CONTCAR/POSCAR file +must be provided, otherwise the other files needed will not be +found.

+

Both VASP 4.x and 5.x POSCAR formats are supported.

+

By default, atoms are written out in the order they are present in the input +molecule. To sort by atomic number specify -xw. To specify the sort +order, use the -xz option.

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+

Write Options#

+
+
-w
+

Sort atoms by atomic number

+
+
-z <list of atoms>
+

Specify the order to write out atoms

+

‘atom1 atom2 …’: atom1 first, atom2 second, etc. The remaining +atoms are written in the default order or (if -xw is specified) +in order of atomic number.

+
+
-4
+

Write a POSCAR using the VASP 4.x specification.

+

The default is to use the VASP 5.x specification.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ViewMol_format.html b/docs/FileFormats/ViewMol_format.html new file mode 100644 index 00000000..99b8e0d2 --- /dev/null +++ b/docs/FileFormats/ViewMol_format.html @@ -0,0 +1,598 @@ + + + + + + + + + + + ViewMol format (vmol) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ViewMol format (vmol)#

+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Volume_data_Formats.html b/docs/FileFormats/Volume_data_Formats.html new file mode 100644 index 00000000..82778957 --- /dev/null +++ b/docs/FileFormats/Volume_data_Formats.html @@ -0,0 +1,585 @@ + + + + + + + + + + + Volume data formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/Wiswesser_Line_Notation.html b/docs/FileFormats/Wiswesser_Line_Notation.html new file mode 100644 index 00000000..becece25 --- /dev/null +++ b/docs/FileFormats/Wiswesser_Line_Notation.html @@ -0,0 +1,642 @@ + + + + + + + + + + + Wiswesser Line Notation (wln) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Wiswesser Line Notation (wln)#

+

A chemical line notation developed by Wiswesser

+

WLN was invented in 1949, by William J. Wiswesser, as one of the first attempts +to codify chemical structure as a line notation, enabling collation on punched +cards using automatic tabulating machines and early electronic computers. WLN +was a forerunner to the SMILES notation used in modern cheminformatics systems, +which attempted to simplify the complex rules used in WLN encoding (at the +expense of brevity) to come up with an algorithmic system more suitable for +implementation on computers, where historically WLN was typically encoded +by hand by trained registrars.

+

WLN encoding makes use of uppercase letters, digits, spaces and punctuation:

+
    +
  • E Bromine atom

  • +
  • F Fluorine atom

  • +
  • G Chlorine atom

  • +
  • H Hydrogen atom

  • +
  • I Iodine atom

  • +
  • Q Hydroxyl group, -OH

  • +
  • R Benzene ring

  • +
  • S Sulfur atom

  • +
  • U Double bond

  • +
  • UU Triple bond

  • +
  • V Carbonyl, -C(=O)-

  • +
  • C Unbranched carbon multiply bonded to non-carbon atom

  • +
  • K Nitrogen atom bonded to more than three other atoms

  • +
  • L First symbol of a carbocyclic ring notation

  • +
  • M Imino or imido -NH-group

  • +
  • N Nitrogen atom, hydrogen free, bonded to fewer than 4 atoms

  • +
  • O Oxygen atom, hydrogen-free

  • +
  • T First symbol of a heterocyclic ring notation

  • +
  • W Non-linear dioxo group, as in -NO2 or -SO2-

  • +
  • X Carbon attached to four atoms other than hydrogen

  • +
  • Y Carbon attached to three atoms other then hydrogen

  • +
  • Z Amino and amido NH2 group

  • +
  • <digit> Digits ‘1’ to ‘9’ denote unbranched alkyl chains

  • +
  • & Sidechain terminator or, after a space, a component separator

  • +
+

For a more complete description of the grammar see Smith’s book [1], which more +accurately reflects the WLN commonly encountered than Wiswesser’s book [2]. +Additional WLN dialects include inorganic salts, and methyl contractions.

+

Here are some examples of WLN strings along with a corresponding SMILES string:

+
    +
  • WN3 [O-][N+](=O)CCC

  • +
  • G1UU1G ClC#CCl

  • +
  • VH3 O=CCCC

  • +
  • NCCN N#CC#N

  • +
  • ZYZUM NC(=N)N

  • +
  • QY CC(C)O

  • +
  • OV1 &-NA- CC(=O)[O-].[Na+]

  • +
  • RM1R c1ccccc1NCc2ccccc2

  • +
  • T56 BMJ B D - DT6N CNJ BMR BO1 DN1 & 2N1 & 1 EMV1U1 (osimertinib) +Cn1cc(c2c1cccc2)c3ccnc(n3)Nc4cc(c(cc4OC)N(C)CCN(C)C)NC(=O)C=C

  • +
+

This reader was contributed by Roger Sayle (NextMove Software). The text of +this description was taken from his Bio-IT World poster [3]. Note that not +all of WLN is currently supported; however, about 76% of the WLN strings +found in PubChem can be interpreted.

+
    +
  1. Elbert G. Smith, “The Wiswesser Line-Formula Chemical Notation”, +McGraw-Hill Book Company publishers, 1968.

  2. +
  3. William J. Wiswesser, “A Line-Formula Chemical Notation”, Thomas Crowell +Company publishers, 1954.

  4. +
  5. Roger Sayle, Noel O’Boyle, Greg Landrum, Roman Affentranger. “Open +sourcing a Wiswesser Line Notation (WLN) parser to facilitate electronic +lab notebook (ELN) record transfer using the Pistoia Alliance’s UDM +(Unified Data Model) standard.” BioIT World. Apr 2019. +https://www.nextmovesoftware.com/posters/Sayle_WisswesserLineNotation_BioIT_201904.pdf

  6. +
+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/XCrySDen_Structure_Format.html b/docs/FileFormats/XCrySDen_Structure_Format.html new file mode 100644 index 00000000..81b233eb --- /dev/null +++ b/docs/FileFormats/XCrySDen_Structure_Format.html @@ -0,0 +1,602 @@ + + + + + + + + + + + XCrySDen Structure Format (axsf, xsf) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

XCrySDen Structure Format (axsf, xsf)#

+
+

Note

+

This is a read-only format.

+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/XED_format.html b/docs/FileFormats/XED_format.html new file mode 100644 index 00000000..8a524557 --- /dev/null +++ b/docs/FileFormats/XED_format.html @@ -0,0 +1,573 @@ + + + + + + + + + + + XED format (xed) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

XED format (xed)#

+
+

Note

+

This is a write-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/XTC_format.html b/docs/FileFormats/XTC_format.html new file mode 100644 index 00000000..5acb977f --- /dev/null +++ b/docs/FileFormats/XTC_format.html @@ -0,0 +1,583 @@ + + + + + + + + + + + XTC format (xtc) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

XTC format (xtc)#

+

A portable format for trajectories (gromacs)

+
+

Note

+

This is a read-only format.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/XYZ_cartesian_coordinates_format.html b/docs/FileFormats/XYZ_cartesian_coordinates_format.html new file mode 100644 index 00000000..b73c8beb --- /dev/null +++ b/docs/FileFormats/XYZ_cartesian_coordinates_format.html @@ -0,0 +1,636 @@ + + + + + + + + + + + XYZ cartesian coordinates format (xyz) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

XYZ cartesian coordinates format (xyz)#

+

A generic coordinate format

+

The “XYZ” chemical file format is widely supported by many programs, although no +formal specification has been published. Consequently, Open Babel attempts to be +extremely flexible in parsing XYZ format files. Similar formats include Tinker XYZ +and UniChem XYZ which differ slightly in the format of the files. (Notably, UniChem XYZ +uses the atomic number rather than element symbol for the first column.)

+
    +
  • Line one of the file contains the number of atoms in the file.

  • +
  • Line two of the file contains a title, comment, or filename.

  • +
+

Any remaining lines are parsed for atom information. Lines start with the element +symbol, followed by X, Y, and Z coordinates in angstroms separated by whitespace.

+

Multiple molecules / frames can be contained within one file.

+

On output, the first line written is the number of atoms in the molecule +(warning - the number of digits is limited to three for some programs, +e.g. Maestro). Line two is the title of the molecule or the filename if +no title is defined. Remaining lines define the atoms in the file. The +first column is the atomic symbol (right-aligned on the third character), +followed by the XYZ coordinates in “10.5” format, in angstroms. This means +that all coordinates are printed with five decimal places.

+

Example:

+
12
+benzene example
+  C        0.00000        1.40272        0.00000
+  H        0.00000        2.49029        0.00000
+  C       -1.21479        0.70136        0.00000
+  H       -2.15666        1.24515        0.00000
+  C       -1.21479       -0.70136        0.00000
+  H       -2.15666       -1.24515        0.00000
+  C        0.00000       -1.40272        0.00000
+  H        0.00000       -2.49029        0.00000
+  C        1.21479       -0.70136        0.00000
+  H        2.15666       -1.24515        0.00000
+  C        1.21479        0.70136        0.00000
+  H        2.15666        1.24515        0.00000
+
+
+
+

Read Options#

+
+
-s
+

Output single bonds only

+
+
-b
+

Disable bonding entirely

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/YASARA.org_YOB_format.html b/docs/FileFormats/YASARA.org_YOB_format.html new file mode 100644 index 00000000..53d2ad26 --- /dev/null +++ b/docs/FileFormats/YASARA.org_YOB_format.html @@ -0,0 +1,577 @@ + + + + + + + + + + + YASARA.org YOB format (yob) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

YASARA.org YOB format (yob)#

+

The native YASARA format.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/FileFormats/ZINDO_input_format.html b/docs/FileFormats/ZINDO_input_format.html new file mode 100644 index 00000000..4685d838 --- /dev/null +++ b/docs/FileFormats/ZINDO_input_format.html @@ -0,0 +1,638 @@ + + + + + + + + + + + ZINDO input format (zin) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

ZINDO input format (zin)#

+

The input format for the semiempirical quantum-mechanics program ZINDO.

+
+

Note

+

This is a write-only format.

+
+
+

Write Options#

+
+
-c
+

Write an input file for the CNDO/INDO program.

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Fingerprints/fingerprints.html b/docs/Fingerprints/fingerprints.html new file mode 100644 index 00000000..7e4eb073 --- /dev/null +++ b/docs/Fingerprints/fingerprints.html @@ -0,0 +1,774 @@ + + + + + + + + + + + Fingerprint format — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Fingerprint format#

+

The Fingerprint format (fpt) is a utility file format that provides access to a number of substructure-based fingerprints, and that enables the user to carry out similarity and substructure searching. You can see the available fingerprints using the following command:

+
$ babel -L fingerprints
+FP2    Indexes linear fragments up to 7 atoms.
+FP3    SMARTS patterns specified in the file patterns.txt
+FP4    SMARTS patterns specified in the file SMARTS_InteLigand.txt
+MACCS    SMARTS patterns specified in the file MACCS.txt
+
+
+

At present there are four types of fingerprints:

+
    +
  • FP2, a path-based fingerprint which indexes small molecule fragments based on linear segments of up to 7 atoms (somewhat similar to the Daylight fingerprints):

    +
    +

    A molecule structure is analysed to identify linear fragments of length from 1-7 atoms. Single atom fragments of C, N, and O are ignored. A fragment is terminated when the atoms form a ring.

    +

    For each of these fragments the atoms, bonding and whether they constitute a complete ring is recorded and saved in a set so that there is only one of each fragment type. Chemically identical versions, (i.e. ones with the atoms listed in reverse order and rings listed starting at different atoms) are identified and only a single canonical fragment is retained.

    +

    Each remaining fragment is assigned a hash number from 0 to 1020 which is used to set a bit in a 1024 bit vector

    +
    +
  • +
  • FP3 uses a series of SMARTS queries stored in patterns.txt

  • +
  • FP4 uses a series of SMARTS queries stored in SMARTS_InteLigand.txt

  • +
  • MACCS uses the SMARTS patterns in MACCS.txt

  • +
+
+

Note

+

Note that you can tailor the latter three fingerprints to your own needs by adding your own SMARTS queries to these files. On UNIX and Mac systems, these files are frequently found in /usr/local/share/openbabel under a directory for each version of Open Babel.

+
+
+

See also

+

The sections on the fingerprint and fastsearch formats contain additional detail.

+
+
+

Similarity searching#

+
+

Small datasets#

+

For relatively small datasets (<10,000’s) it is possible to do similarity searches without the need to build a similarity index, however larger datasets (up to a few million) can be searched rapidly once a fastsearch index has been built.

+

On small datasets these fingerprints can be used in a variety of ways. The following command gives you the Tanimoto coefficient between a SMILES string in mysmiles.smi and all the molecules in mymols.sdf:

+
babel  mysmiles.smi  mymols.sdf -ofpt
+
+MOL_00000067   Tanimoto from first mol = 0.0888889
+MOL_00000083   Tanimoto from first mol = 0.0869565
+MOL_00000105   Tanimoto from first mol = 0.0888889
+MOL_00000296   Tanimoto from first mol = 0.0714286
+MOL_00000320   Tanimoto from first mol = 0.0888889
+MOL_00000328   Tanimoto from first mol = 0.0851064
+MOL_00000338   Tanimoto from first mol = 0.0869565
+MOL_00000354   Tanimoto from first mol = 0.0888889
+MOL_00000378   Tanimoto from first mol = 0.0816327
+MOL_00000391   Tanimoto from first mol = 0.0816327
+11 molecules converted
+
+
+

The default fingerprint used is the FP2 fingerprint. You change the fingerprint using the f output option as follows:

+
babel mymols.sdf -ofpt -xfFP3
+
+
+

The -s option of babel is used to filter by SMARTS string. If you wanted to know the similarity only to the substituted bromobenzenes in mymols.sdf then you might combine commands like this (note: if the query molecule does not match the SMARTS string this will not work as expected, as the first molecule in the database that matches the SMARTS string will instead be used as the query):

+
babel mysmiles.smi mymols.sdf -ofpt -s c1ccccc1Br
+
+MOL_00000067   Tanimoto from first mol = 0.0888889
+MOL_00000083   Tanimoto from first mol = 0.0869565
+MOL_00000105   Tanimoto from first mol = 0.0888889
+
+
+

If you don’t specify a query file, babel will just use the first molecule in the database as the query:

+
babel mymols.sdf  -ofpt
+
+MOL_00000067
+MOL_00000083   Tanimoto from MOL_00000067 = 0.810811
+MOL_00000105   Tanimoto from MOL_00000067 = 0.833333
+MOL_00000296   Tanimoto from MOL_00000067 = 0.425926
+MOL_00000320   Tanimoto from MOL_00000067 = 0.534884
+MOL_00000328   Tanimoto from MOL_00000067 = 0.511111
+MOL_00000338   Tanimoto from MOL_00000067 = 0.522727
+MOL_00000354   Tanimoto from MOL_00000067 = 0.534884
+MOL_00000378   Tanimoto from MOL_00000067 = 0.489362
+MOL_00000391   Tanimoto from MOL_00000067 = 0.489362
+10 molecules converted
+
+
+
+
+

Large datasets#

+

On larger datasets it is necessary to first build a fastsearch index. This is a new file that stores a database of fingerprints for the files indexed. You will still need to keep both the new .fs fastsearch index and the original files. However, the new index will allow significantly faster searching and similarity comparisons. The index is created with the following command:

+
babel mymols.sdf -ofs
+
+
+

This builds mymols.fs with the default fingerprint (unfolded). The following command uses the index to find the 5 most similar molecules to the molecule in query.mol:

+
babel mymols.fs results.sdf -squery.mol -at5
+
+
+

or to get the matches with Tanimoto>0.6 to 1,2-dicyanobenzene:

+
babel mymols.fs results.sdf -sN#Cc1ccccc1C#N -at0.6
+
+
+
+
+
+

Substructure searching#

+
+

Small datasets#

+

This command will find all molecules containing 1,2-dicyanobenzene and return the results as SMILES strings:

+
babel mymols.sdf -sN#Cc1ccccc1C#N results.smi
+
+
+

If all you want output are the molecule names then adding -xt will return just the molecule names:

+
babel mymols.sdf -sN#Cc1ccccc1C#N results.smi -xt
+
+
+

The parameter of the -s option in these examples is actually SMARTS, which allows a richer matching specification, if required. It does mean that the aromaticity of atoms and bonds is significant; use [#6] rather than C to match both aliphatic and aromatic carbon.

+

The -s option’s parameter can also be a file name with an extension. The file must contain a molecule, which means only substructure matching is possible (rather than full SMARTS). The matching is also slightly more relaxed with respect to aromaticity.

+
+
+

Large datasets#

+

First of all, you need to create a fastsearch index (see above). The index is created with the following command:

+
babel mymols.sdf -ofs
+
+
+

Substructure searching is as for small datasets, except that the fastsearch index is used instead of the original file. This command will find all molecules containing 1,2-dicyanobenzene and return the results as SMILES strings:

+
babel mymols.fs -ifs -sN#Cc1ccccc1C#N results.smi
+
+
+

If all you want output are the molecule names then adding -xt will return just the molecule names:

+
babel mymols.fs -ifs -sN#Cc1ccccc1C#N results.smi -xt
+
+
+
+
+
+

Case study: Search ChEMBLdb#

+

This case study uses a combination of the techniques described above for similarity searching using large databases and using small databases. Note that we are using the default fingerprint for all of these analyses. The default fingerprint is FP2, a path-based fingerprint (somewhat similar to the Daylight fingerprints).

+
    +
  1. Download Version 2 of ChEMBLdb from ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/.

  2. +
  3. After unzipping it, make a fastsearch index (this took 18 minutes on my machine for the 500K+ molecules):

    +
    babel chembl_02.sdf -ofs
    +
    +
    +
  4. +
  5. Let’s use the first molecule in the sdf file as a query. Using Notepad (or on Linux, head -79 chembl_02.sdf) extract the first molecule and save it as first.sdf. Note that the molecules in the ChEMBL sdf do not have titles; instead, their IDs are stored in the “chebi_id” property field.

  6. +
  7. This first molecule is 100183. Check its ChEMBL page. It’s pretty weird, but is there anything similar in ChEMBLdb? Let’s find the 5 most similar molecules:

    +
    babel chembl_02.fs mostsim.sdf -s first.sdf -at5
    +
    +
    +
  8. +
+
    +
  1. The results are stored in mostsim.sdf, but how similar are these molecules to the query?:

    +
    babel first.sdf mostsim.sdf -ofpt
    +>
    +>   Tanimoto from first mol = 1
    +Possible superstructure of first mol
    +>   Tanimoto from first mol = 0.986301
    +>   Tanimoto from first mol = 0.924051
    +Possible superstructure of first mol
    +>   Tanimoto from first mol = 0.869048
    +Possible superstructure of first mol
    +>   Tanimoto from first mol = 0.857143
    +6 molecules converted
    +76 audit log messages
    +
    +
    +
  2. +
  3. That’s all very well, but it would be nice to show the ChEBI IDs. Let’s set the title field of mostsim.sdf to the content of the “chebi_id” property field, and repeat step 5:

    +
    babel mostsim.sdf mostsim_withtitle.sdf --append "chebi_id"
    +babel first.sdf mostsim_withtitle.sdf -ofpt
    +>
    +>100183   Tanimoto from first mol = 1
    +Possible superstructure of first mol
    +>124893   Tanimoto from first mol = 0.986301
    +>206983   Tanimoto from first mol = 0.924051
    +Possible superstructure of first mol
    +>207022   Tanimoto from first mol = 0.869048
    +Possible superstructure of first mol
    +>607087   Tanimoto from first mol = 0.857143
    +6 molecules converted
    +76 audit log messages
    +
    +
    +
  4. +
  5. Here are the ChEMBL pages for these molecules: 100183, 124893, 206983, 207022, 607087. I think it is fair to say that they are pretty similar. In particular, the output states that 206983 and 207022 are possible superstructures of the query molecule, and that is indeed true.

  6. +
+
    +
  1. How many of the molecules in the dataset are superstructures of the molecule in first.sdf? To do this and to visualize the large numbers of molecules produced, we can output to SVG format (see SVG 2D depiction (svg)):

    +
    obabel chembl_02.fs  -O out.svg  -s first.sdf
    +
    +
    +
  2. +
+
+

Note that obabel has been used here because of its more flexible option handling.

+

This command does a substructure search and puts the 47 matching structures in the file out.svg. This can be viewed in a browser like Firefox, Opera or Chrome (but not Internet Explorer). The display will give an overall impression of the set of molecules but details can be seen by zooming in with the mousewheel and panning by dragging with a mouse button depressed.

+
+
    +
  1. The substructure that is being matched can be highlighted in the output molecules by adding another parameter to the -s option. Just for variety, the display is also changed to a black background, ‘uncolored’ (no element-specific coloring), and terminal carbon not shown explicitly. (Just refresh your browser to see the modified display.)

    +
    obabel chembl_02.fs  -O out.svg  -s first.sdf green  -xb -xu -xC
    +
    +
    +
  2. +
+
+

This highlighting option also works when the -s option is used without fastsearch on small datasets.

+
+
    +
  1. The substructure search here has two stages. The indexed fingerprint search quickly produces 62 matches from the 500K+ molecules in the dataset. Each of these is then checked by a slow detailed isomorphism check. There are 15 false positives from the fingerprint stage. These are of no significance, but you can see them using:

    +
    obabel chembl_02.fs  -O out.svg  -s ~first.sdf
    +
    +
    +
  2. +
+
+

The fingerprint search is unaffected but the selection in the second stage is inverted.

+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Fingerprints/intro.html b/docs/Fingerprints/intro.html new file mode 100644 index 00000000..e2320abd --- /dev/null +++ b/docs/Fingerprints/intro.html @@ -0,0 +1,583 @@ + + + + + + + + + + + Molecular fingerprints and similarity searching — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Molecular fingerprints and similarity searching#

+

Molecular fingerprints are a way of encoding the structure of a molecule. The most common type of fingerprint is a series of binary digits (bits) that represent the presence or absence of particular substructures in the molecule. Comparing fingerprints allows you to determine the similarity between two molecules, to find matches to a query substructure, etc.

+

Open Babel provides several fingerprints of different types:

+ +

The next two sections describe the Fingerprint format and Spectrophores in depth. For the others, see the relevant sections listed above.

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Fingerprints/spectrophore.html b/docs/Fingerprints/spectrophore.html new file mode 100644 index 00000000..3050fbf3 --- /dev/null +++ b/docs/Fingerprints/spectrophore.html @@ -0,0 +1,887 @@ + + + + + + + + + + + Spectrophores™ — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Spectrophores™#

+
+

Introduction#

+

Spectrophores[1] are one-dimensional descriptors generated from the property +fields surrounding the molecules. This technology allows the accurate description +of molecules in terms of their surface properties or fields. Comparison of +molecules’ property fields provides a robust structure-independent method of +aligning actives from different chemical classes. When applied to molecules such +as ligands and drugs, Spectrophores can be used as powerful molecular +descriptors in the fields of chemoinformatics, virtual screening, and QSAR +modeling.

+ +

The computation of Spectrophores is independent of the position and +orientation of the molecule and this enables easy and fast comparison of +Spectrophores between different molecules. Molecules having similar +three-dimensional properties and shapes always yield similar Spectrophores. +A Spectrophore is calculated by surrounding the three-dimensional +conformation of the molecule by a three-dimensional arrangement of points, +followed by calculating the interaction between each of the atom properties and +the surrounding the points. The three-dimensional arrangement of the points +surrounding the molecule can be regarded as an ‘artificial’ cage or receptor, +and the interaction calculated between the molecule and the cage can be regarded +as an artificial representation of an affinity value between molecule and cage. +Because the calculated interaction is dependent on the relative orientation of +the molecule within the cage, the molecule is rotated in discrete angles and the +most favorable interaction value is kept as final result. The angular stepsize +at which the molecule is rotated along its three axis can be specified by the +user and influences the accuracy of the method.

+

The Spectrophore code was developed by Silicos NV, and donated to the OpenBabel project in July 2010 (see sidebar for information on commercial support). Spectrophores can be generated either using the command-line application obspectrophore (see next section) or through the API (OBSpectrophore, as described in the :obapi:`API documentation <OBSpectrophore>`).

+
+
+

obspectrophore#

+

Usage

+

obspectrophore -i <input file> [options]

+

Parameter details

+
+
-i <input file>
+

Specify the input file

+

Spectrophores will be calculated for each molecule in the input file. +The filetype is automatically detected from the file extension.

+
+
-n <type>
+

The type of normalization that should be performed

+

Valid values are (without quotes):

+
+
    +
  • No (default)

  • +
  • ZeroMean

  • +
  • UnitStd

  • +
  • ZeroMeanAndUnitStd

  • +
+
+
+
-a <accuracy>
+

The required accuracy expressed as the angular stepsize

+

Only the following discrete values are allowed: 1, 2, 5, 10, 15, 20 (default), 30, 36, 45, 60

+
+
-s <type>
+

The kind of cages that should be used

+

The cage type is specified in terms of +the underlying pointgroup: P1 or P-1. Valid values are (without quotes):

+
+
    +
  • No (default)

  • +
  • Unique

  • +
  • Mirror

  • +
  • All

  • +
+
+
+
-r <resolution>
+

The required resolution expressed as a real positive number

+

The default value is 3.0 Angstrom. Negative values or a value of +0 generates an error message.

+
+
-h
+

Displays help

+
+
+
+
+

Implementation#

+
+

Atomic properties#

+

The calculation of a Spectrophore™ starts by calculating the atomic +contributions of each property from which one wants to calculate a +Spectrophore. In the current implementation, four atomic properties are +converted into a Spectrophore; these four properties include the atomic +partial charges, the atomic lipophilicities, the atomic shape deviations and the +atomic electrophilicities. The atomic partial charges and atomic electrophilicity +properties are calculated using the electronegativity equalisation method (EEM) +as described by Bultinck and coworkers [bll2002] [blc2003]. +Atomic lipophilic potential +parameters are calculated using a rule-based method. Finally, the atomic shape +deviation is generated by calculating, for each atom, the atom’s deviation from +the average molecular radius. This is done in a four step process:

+
    +
  • The molecular center of geometry (COG) is calculated

  • +
  • The distances between each atom and the molecular COG are calculated

  • +
  • The average molecular radius is calculated by averaging all the atomic +distances

  • +
  • The distances between each atom and the COG are then divided by the average +molecular radius and centered on zero

  • +
+
+
+

Interaction between the atoms and cage points#

+

Following the calculation of all required atomic properties, the next step in +the calculation of a Spectrophore consists of determining the total +interaction value V(c,p) between each of the atomic contributions of +property p with a set of interaction points on an artificial cage c +surrounding the molecular conformation.

+
+../../_images/spectrophore_cage.png +
+

Schematic representation of a molecule surrounded by the artifical cage#

+
+
+

For this purpose, each of these +interaction points i on cage c is assigned a value P(c,i) +which is either +1 or -1, with the constraint that the sum of all interaction +points on a particular cage should be zero. In a typical Spectrophore +calculation, a cage is represented as a rectangular box encompassing the +molecular conformation in all three dimensions, with the centers of the box +edges being the interaction points. Such a configuration gives twelve +interaction points per cage, and, in the case of a non-stereospecific +distribution of the interaction points, leads to 12 different cages. Although +there are no particular requirements as to the dimensions of the rectangular +cage, the distance between the interaction points and the geometrical extremes +of the molecule should be such that a meaningful interaction value between each +cage point and the molecular entity can be calculated. In this respect, the +default dimensions of the cage are constantly adjusted to enclose the molecule +at a minimum distance of 3 A along all dimensions. This cage size can be +modified by the user and influences the resolution of the Spectrophore.

+

The total interaction value V(c,p) between the atomic contribution values +A(j,p) of property p for a given molecular conformation and the +cage interaction values P(c,i) for a given cage c is calculated +according a standard interaction energy equation. It takes into account the +Euclidean distance between each atom and each cage point. This total interaction +V(c,p) for a given property p and cage c for a given +molecular conformation is minimized by sampling the molecular orientation along +the three axis in angular steps and the calculation of the interaction value for +each orientation within the cage.

+

The final total interaction V(c,p) for +a given cage c and property p corresponds to the lowest +interaction value obtained this way, and corresponds to the c’th value in +the one-dimensional Spectrophore vector calculated for molecular property +p. As a result, a Spectrophore is organized as a vector of minimized +interaction values V, each of these organized in order of cages and +property values. Since for a typical Spectrophore implementation twelve +different cages are used, the total length of a Spectrophore vector equals +to 12 times the number of properties. Since four different properties are used +in the current implementation (electrostatic, lipophilic, electrophilic +potentials, and an additional shape index as described before), this leads to a +total Spectrophore length of 48 real values per molecular conformation.

+

Since Spectrophore descriptors are dependent on the actual +three-dimensional conformation of the molecule, a typical analysis includes the +calculation of Spectrophores from a reasonable set of different +conformations. It is then up to the user to decide on the most optimal strategy +for processing the different Spectrophore vectors. In a typical virtual +screening application, calculating the average Spectrophore vector from all +conformations of a single molecule may be a good strategy; other applications +have benefit from calculating a weighted average or the minimal values. +For each molecule in the input file, a Spectrophore is calculated and +printed to standard output as a vector of 48 numbers (in the case of a +non-stereospecific Spectrophore. The 48 doubles are organised into 4 sets +of 12 doubles each:

+
    +
  • numbers 01-11: Spectrophore values calculated from the atomic partial charges;

  • +
  • numbers 13-24: Spectrophore values calculated from the atomic lipophilicity properties;

  • +
  • numbers 25-36: Spectrophore values calculated from the atomic shape deviations;

  • +
  • numbers 37-48: Spectrophore values calculated from the atomic electrophilicity properties;

  • +
+
+
+
+

Choice of Parameters#

+
+

Accuracy#

+

As already mentioned, the total interaction between cage and molecule for a +given property is minimized by sampling the molecular orientation in angular +steps of a certain magnitude. As a typical angular step size, 20 degrees was found to +be the best compromise between accuracy and computer speed. Larger steps sizes +are faster to calculate but have the risk of missing the global interaction +energy minimum, while smaller angular steps sizes do sample the rotational space +more thoroughly but at a significant computational cost. The accuracy can be +specified by the user using the -a option.

+
+
+

Resolution#

+

Spectrophores capture information about the property fields surrounding the +molecule, and the amount of detail that needs to be captured can be regulated by +the user. This is done by altering the minimal distance between the molecule and +the surrounding cage. The resolution can be specified by the user with the +-r option. The default distance along all dimensions is 3.0 Angstrom. +The larger the distance, the lower the resolution.

+

With a higher resolution, +more details of the property fields surrounding the molecule are contained by +the Spectrophore. On the other hand, low resolution settings may lead to a more +general representation of the property fields, with little or no emphasis on +small local variations within the fields. Using a low resolution can be the +method of choice during the initial virtual screening experiments in order to get +an initial, but not so discriminative, first selection. This initial selection +can then further be refined during subsequent virtual screening steps using a +higher resolution. In this setting, small local differences in the fields between +pairs of molecules will be picked up much more easily.

+

The absolute values of the individual Spectrophore data points are dependent +on the used resolution. Low resolution values lead to small values of the +calculated individual Spectrophore data points, while high resolutions will +lead to larger data values. It is therefore only meaningful to compare only +Spectrophores that have been generated using the same resolution settings or +after some kind of normalization is performed. +Computation time is not influenced by the specified resolution and hence +is identical for all different resolution settings.

+
+
+

Stereospecificity#

+

Some of the cages that are used to calculated Spectrophores have a +stereospecific distribution of the interaction points. The resulting +interaction values resulting from these cages are therefore sensitive to the +enantiomeric configuration of the molecule within the cage. The fact that both +stereoselective as well as stereo non-selective cages can be used makes it +possible to include or exclude stereospecificity in the virtual screening +search. Depending on the desired output, the stereospecificity of +Spectrophores can be specified by the user using the -s option:

+
    +
  • +
    No stereospecificity (default):

    Spectrophores are generated using cages +that are not stereospecific. For most applications, these Spectrophores +will suffice.

    +
    +
    +
  • +
  • +
    Unique stereospecificity:

    Spectrophores are generated using unique +stereospecific cages.

    +
    +
    +
  • +
  • +
    Mirror stereospecificity:

    Mirror stereospecific Spectrophores are +Spectrophores resulting from the mirror enantiomeric form of the input +molecules.

    +
    +
    +
  • +
+

The differences between the corresponding data points of unique and mirror +stereospecific Spectrophores are very small and require very long +calculation times to obtain a sufficiently high quality level. This increased +quality level is triggered by the accuracy setting and will result in +calculation times being increased by at least a factor of 100. As a consequence, it +is recommended to apply this increased accuracy only in combination with a +limited number of molecules, and when the small differences between the +stereospecific Spectrophores are really critical. However, for the vast +majority of virtual screening applications, this increased accuracy is not +required as long as it is not the intention to draw conclusions about +differences in the underlying molecular stereoselectivity. Non-stereospecific +Spectrophores will therefore suffice for most applications.

+
+
+

Normalisation#

+

It may sometimes be desired to focus on the relative differences between the +Spectrophore data points rather than focussing on the absolute differences. +In these cases, normalization of Spectrophores may be required. The current +implementation offers with the -n option the possibility to normalize in four +different ways:

+
    +
  • No normalization (default)

  • +
  • Normalization towards zero mean

  • +
  • Normalization towards standard deviation

  • +
  • Normalization towards zero mean and unit standard deviation

  • +
+

In all these cases, normalization is performed on a ‘per-property’ basis, which +means that the data points belonging to the same property set are treated as a +single set and that normalization is only performed on the data points within +each of these sets and not across all data points.

+

Normalization may be important when comparing the Spectrophores of charged +molecules with those of neutral molecules. For molecules carrying a global +positive charge, the resulting Spectrophore data points of the charge and +electrophilicity properties will both be shifted in absolute value compared to +the corresponding data points of the respective neutral species. Normalization +of the Spectrophores removes the original magnitude differences for the data +points corresponding to the charge and electrophilicity properties of charged +and neutral species. Therefore, if the emphasis of the virtual screening +consists of the identification of molecules with similar property fields without +taking into account differences in absolute charge, then Spectrophores +should be normalized towards zero mean. However, if absolute charge differences +should be taken into account to differentiate between molecules, unnormalized +Spectrophores are recommended.

+
+
+[bll2002] +

P. Bultinck, W. Langenaeker, P. Lahorte, F. De Proft, P. +Geerlings, C. Van Alsenoy, and J. P. Tollenaere. +The Electronegativity Equalization Method II: Applicability of Different Atomic Charge Schemes. +J. Phys. Chem. A 2002, 106, 7895-7901. +[Link]

+
+
+[blc2003] +

Patrick Bultinck, Wilfried Langenaeker, Ramon Carbó-Dorca, and Jan P. Tollenaere. +Fast Calculation of Quantum Chemical Molecular Descriptors from the Electronegativity Equalization Method. +J. Chem. Inf. Comput. Sci. 2003, 43, 422-428. +[Link]

+
+
+

Footnotes

+ +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Forcefields/Overview.html b/docs/Forcefields/Overview.html new file mode 100644 index 00000000..c2ac3ae5 --- /dev/null +++ b/docs/Forcefields/Overview.html @@ -0,0 +1,573 @@ + + + + + + + + + + + Molecular Mechanics and Force Fields — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Molecular Mechanics and Force Fields#

+

Used by a number of features, such as 3D coordinate generation, +conformer searching, etc., Open Babel provides support for a variety +of all-atom molecular mechanics force fields. The key idea is to use +classical mechanics to rapidly simulate molecular systems.

+

Each force field method is parameterized for a set of possible +molecules (e.g., proteins, organic molecules, etc.), building in +assumptions about how various aspects of the molecules contribute to +the overall potential energy.

+

The total potential energy of the system is usually given as a sum of +multiple components, including some or all of (but not limited to):

+
+
    +
  • Bond stretching

  • +
  • Angle bending

  • +
  • Dihedral torsions

  • +
  • Out-of-plane bending

  • +
  • Van der Waals repulsion

  • +
  • Atomic partial charges (electrostatic)

  • +
+
+

Open Babel supports several force field methods. In general, we +recommend use of either the Generalized Amber Force Field (gaff) or +MMFF94 Force Field (mmff94) for organic molecules, and the +Universal Force Field (uff) for other types of molecules.

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Forcefields/gaff.html b/docs/Forcefields/gaff.html new file mode 100644 index 00000000..9381aaf7 --- /dev/null +++ b/docs/Forcefields/gaff.html @@ -0,0 +1,566 @@ + + + + + + + + + + + Generalized Amber Force Field (gaff) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Generalized Amber Force Field (gaff)#

+

The AMBER force field (or more +accurately, family of force fields used with the AMBER software are designed mainly for biomolecules (i.e., +proteins, DNA, RNA, carbohydrates, etc.).

+

A general set of parameters for small organic molecules to allow +simulations of drugs and small molecule ligands in conjugtion with +biomolecules is provided by GAFF. Parameters exist for +almost all molecules made of C, N, O, H, S, P, F, Cl, Br, and I, and +are compatible with the AMBER functional forms.

+

Typically, GAFF expects partial charges assigned using quantum +chemistry (i.e., HF/6-31G* RESP charges or AM1-BCC). The Open Babel +implementation can use other partial charges as available, although +with lower resulting accuracy.

+

In general, GAFF is expected to provide accuracy (in terms of geometry +and energies) on par or better than the MMFF94 Force Field (mmff94).

+
+

Note

+

If you use GAFF, you should cite the appropriate paper: +Wang, J., Wolf, R. M.; Caldwell, J. W.;Kollman, P. A.; +Case, D. A. “Development and testing of a general AMBER +force field”. Journal of Computational Chemistry, 2004 +v. 25, 1157-1174.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Forcefields/ghemical.html b/docs/Forcefields/ghemical.html new file mode 100644 index 00000000..f28ef073 --- /dev/null +++ b/docs/Forcefields/ghemical.html @@ -0,0 +1,552 @@ + + + + + + + + + + + Ghemical Force Field (ghemical) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Ghemical Force Field (ghemical)#

+

The Ghemical force field matches an existing open source package, +which provided a force field for geometry optimization and molecular +dynamics similar to the Tripos-5.2 force field method (which is +proprietary). It performs acceptably on providing geometries of +organic-like molecules.

+

We recommend use of either the Generalized Amber Force Field (gaff) or +MMFF94 Force Field (mmff94) for organic molecules, and the +Universal Force Field (uff) for other types of molecules.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Forcefields/mmff94.html b/docs/Forcefields/mmff94.html new file mode 100644 index 00000000..30e612f6 --- /dev/null +++ b/docs/Forcefields/mmff94.html @@ -0,0 +1,590 @@ + + + + + + + + + + + MMFF94 Force Field (mmff94) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

MMFF94 Force Field (mmff94)#

+

The MMFF94 force field (and the related MMFF94s) were developed by +Merck and are sometimes called the Merck Molecular Force Field, +although MMFF94 is no longer considered an acronym.

+

The method provides good accuracy across a range of organic and +drug-like molecules. The core parameterization was provided by +high-quality quantum calculations, rather than experimental data, +across ~500 test molecular systems.

+

The method includes parameters for a wide range of atom types +including the following common organic elements: C, H, N, O, F, Si, P, +S, Cl, Br, and I. It also supports the following common ions: Fe+2, Fe+3, F-, Cl-, Br-, Li+, Na+, K+, Zn+2, Ca+2, Cu+1, Cu+2, +and Mg+2. The Open Babel implementation should +automatically perform atom typing and recognize these elements.

+

MMFF94 performs well at optimizing geometries, bond lengths, angles, +etc. and includes electrostatic and hydrogen-bonding effects.

+
+

Note

+

If you use MMFF94 you should cite the appropriate papers:

+
    +
  1. Thomas A. Halgren, J. Comput. Chem., 17, 490-519 (1996).

  2. +
  3. Thomas A. Halgren, J. Comput. Chem., 17, 520-552 (1996).

  4. +
  5. Thomas A. Halgren, J. Comput. Chem., 17, 553-586 (1996).

  6. +
  7. Thomas A. Halgren and Robert B. Nachbar, J. Comput. Chem., 17, 587-615 (1996).

  8. +
  9. Thomas A. Halgren, J. Comput. Chem., 17, 616-641 (1996).

  10. +
+
+

Some experiments and most theoretical calculations show significant +pyramidal “puckering” at nitrogens in isolated structures. The MMFF94s +(static) variant has slightly different out-of-plane bending and +dihedral torsion parameters to planarize certain types of delocalized +trigonal N atoms, such as aromatic aniline. This provides a better +match to the time-average molecular geometry in solution or crystal +structures.

+

If you are comparing force-field optimized molecules to crystal +structure geometries, we recommend using the MMFF94s variant for this +reason. All other parameters are identical.

+

However, if you are perfoming “docking” simulations, consideration of +active solution conformations, or other types of computational +studies, we recommend using the MMFF94 variant, since one form or +another of the N geometry will predominate.

+
+

Note

+

If you use MMFF94s, you should also cite the following paper that details that method:

+
    +
  1. Thomas A. Halgren, J. Comput. Chem., 20, 720-729 (1999).

  2. +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Forcefields/uff.html b/docs/Forcefields/uff.html new file mode 100644 index 00000000..0e7b8cf6 --- /dev/null +++ b/docs/Forcefields/uff.html @@ -0,0 +1,562 @@ + + + + + + + + + + + Universal Force Field (uff) — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Universal Force Field (uff)#

+

One problem with traditional force fields is a limited set of elements +and atom types. The Universal Force Field (UFF) was developed to +provide a set of rules and procedures for producing appropriate +parameters across the entire periodic table.

+

While some implementations of UFF use the QEq partial charge model, +the original manuscript and authors of UFF determined the +parameterization without an electrostatic model. Consequently, by +default the Open Babel implementation does not use electrostatic +interactions.

+
+

Note

+

If you use UFF, you should cite the appropriate paper:

+

Rappe, A. K.; Casewit, C. J.; Colwell, K. S.; +Goddard, W. A. III; Skiff, W. M.; “UFF, a full periodic +table force field for molecular mechanics and molecular +dynamics simulations.” J Am Chem Soc, 1992 v. 114, +10024-10039.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/GUI/GUI.html b/docs/GUI/GUI.html new file mode 100644 index 00000000..df0f81f1 --- /dev/null +++ b/docs/GUI/GUI.html @@ -0,0 +1,691 @@ + + + + + + + + + + + The Open Babel GUI — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

The Open Babel GUI#

+

The obabel command line program converts chemical objects (currently molecules or reactions) from one file format to another. The Open Babel graphical user interface (GUI) is an +alternative to using the command line and has the same capabilities. Since Open Babel 2.3, the GUI is available cross-platform on Windows, Linux and MacOSX. On Windows, you can find it in the Start Menu in the Open Babel folder; on Linux and MacOSX, the GUI can be started with the obgui command.

+

Since the functionality of the GUI mirrors that of obabel, you should consult the previous chapter to learn about available features and how to use them. This chapter describes the general use of the GUI and then focuses on features that are specific to the GUI.

+
+

Basic operation#

+

Although the GUI presents many options, the basic operation is straightforward:

+
    +
  • Select the type of the type of the input file from the dropdown list.

  • +
  • Click the “” button and select the file. Its contents are displayed in the textbox below.

  • +
  • Choose the output format and file in a similar way. You can merely display the output without saving it by not selecting an output file or by checking “Output below only..”.

  • +
  • Click the “Convert” button.

  • +
+

The message window below the button gives the number of molecules +converted, and the contents of the output file are displayed.

+

By default, all the molecules in an input file are converted if the +output format allows multiple molecules.

+
+../../_images/ScreenshotOfGui-BioLinux6.0-Ubuntu10.04deriv.png +
+

Screenshot of GUI running on BioLinux 6.0, an Ubuntu derivative#

+
+
+
+
+

Options#

+

The options in the middle are those appropriate for the type of +chemical object being converted (molecule or reaction) and the +input and output formats. They are derived from the description +text that is displayed with the -Hxxx option in the command line +interface and with the “Format info” buttons here. You can switch +off the display of any of the various types of option using the +View menu if the screen is getting too cluttered.

+
+
+

Multiple input files#

+

You can select multiple input files in the input file dialog in the +normal way (for example, using the Control key in Windows). In the input +filename box, each filename is displayed relative to the path shown +just above the box, which is the path of the first file. You can +display any of the files by moving the highlight with Tab/Shift +Tab, Page Up/Down, the mouse wheel, or by double clicking.

+

Selecting one or more new file names normally removes those already +present, but they can instead be appended by holding the Control +key down when leaving the file selection dialog.

+

Files can be also be dragged and dropped (e.g. from Windows +Explorer), adding the file when the Control key is pressed, +replacing the existing files when it is not.

+

Normally each file is converted according to its extension and the +input files do not have to be all the same, but if you want to use +non-standard file names set the checkbox “Use this format for all +input files…

+

If you want to combine multiple molecules (from one or more files) +into a single molecule with disconnected parts, use option “Join +all input molecules…

+
+
+

Wildcards in filenames#

+

When input filenames are typed in directly, any of them can +contain the wildcard characters * and ?. Typing Enter will replace +these by a list of the matching files. The wildcarded names can be +restored by typing Enter while holding down the Shift key. The +original or the expanded versions will behave the same when the +“Convert” button is pressed.

+

By including the wildcard * in both the input and output +filenames you can carry out batch conversion. Suppose there were +files first.smi, second.smi, third.smi. Using *.smi as the input +filename and *.mol as the output filename would produce three +files first.mol, second.mol and third.mol. If the output filename +was NEW_*.mol, then the output files would be NEW_first.mol, etc.

+
+
+

Local input#

+

By checking the “Input below…” checkbox you can type the input +text directly. The text box changes colour to remind you that it is +this text and not the contents of any files that will be +converted.

+
+
+

Output file#

+

The output file name can be fully specified with a path, but if it +is not, then it is considered to be relative to the input file +path.

+
+
+

Graphical display#

+

The chemical structures being converted can be displayed (as SVG) +in an external program. By default this is Firefox but it can be +changed from an item on the View menu (for instance, Opera and +Chrome work fine). When “Display in firefox” (under the output file +name) is checked, the structures will be shown in a new Firefox +tab. With multiple molecules the display can be zoomed (mousewheel) +and panned (dragging with mouse button depressed). Up to 100 +molecules are easily handled but with more the system may be slow +to manipulate. It may also be slow to generate, especially if 2D +atom coordinates have to be calculated (e.g.from SMILES). A new +Firefox tab is opened each time Convert is pressed.

+
+
+

Using a restricted set of formats#

+

It is likely that you will only be interested in a subset of the large range of formats handled by Open Babel. +You can restrict +the choice offered in the dropdown boxes, which makes routine +selection easier. Clicking “Select set of formats” on the View menu +allows the formats to be displayed to be selected. Subsequently, +clicking “Use restricted set of formats” on the View menu toggles +this facility on and off.

+

Using a restricted set overcomes an irritating bug in the Windows +version. In the file Open and Save dialogs the files displayed can +be filtered by the current format, All Chemical Formats, or All +Files. The All Chemical Formats filter will only display the first +30 possible formats (alphabetically). The All Files will indeed +display all files and the conversion processes are unaffected.

+
+
+

Other features#

+

Most of the interface parameters, such as the selected format and +the window size and position, are remembered between sessions.

+

Using the View menu, the input and output text boxes can be set not +to wrap the text. At present you have to restart the program for +this to take effect.

+

The message box at the top of the output text window receives +program output on error and audit logging, and some progress +reports. It can be expanded by dragging down the divider between +the windows.

+
+
+

Example files#

+

In the Windows distribution, there are three chemical files included to try out:

+
    +
  • serotonin.mol which has 3D atom coordinates

  • +
  • oxamide.cml which is 2D and has a large number of properties that will be seen when converting to SDF

  • +
  • FourSmallMols.cml which (unsurprisingly) contains four molecules with no atom coordinates and can be used to illustrate the handling of multiple molecules:

    +

    Setting the output format to SMI (which is easy to see), you can convert only the second and third molecules by entering 2 and 3 in the appropriate option boxes. Or convert only molecules with C-O single bonds by entering CO in the SMARTS option box.

    +
  • +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/GUITutorial/Conversion.html b/docs/GUITutorial/Conversion.html new file mode 100644 index 00000000..a289cba5 --- /dev/null +++ b/docs/GUITutorial/Conversion.html @@ -0,0 +1,623 @@ + + + + + + + + + + + Converting chemical file formats — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Converting chemical file formats#

+

The most common use of Open Babel is to convert chemical file formats. The following examples show how this is done.

+
+

File conversion#

+

Let’s convert a PDB file to MOL format:

+
    +
  • Create a folder on the Desktop called Work

  • +
  • Download the PDB file for insulin (4ins) from the Protein Data Bank and save it in the Work folder

  • +
  • Set the input file format to PDB and the input filename to the downloaded PDB file

  • +
+
+../../_images/inputfile.png +
+
    +
  • Set the output file format to MOL and the output filename to file:4ins.mol in the Work folder

  • +
+
+../../_images/outputfile.png +
+
    +
  • Now click CONVERT

  • +
+
+
+

Converting without files#

+

Rather than use input and output files, it is possible to paste the contents of a chemical file format into the input box, and see the results of the conversion in the output box.

+

Here we will try this with the SMILES format, and illustrate how stereochemistry is handled by SMILES:

+ +
    +
  • Choose the SMILES format as the input format

  • +
  • Tick the box Input below (ignore input file)

  • +
  • Copy and paste the following SMILES strings (and molecule titles) into the input box:

    +
    I/C=C/F I and F are trans
    +I/C=C\F I and F are cis
    +I[C@](Br)(Cl)F Anticlockwise from Iodine
    +I[C@@](Br)(Cl)F Clockwise from Iodine
    +
    +
    +
  • +
  • Choose the SMILES format as the output format

  • +
  • Tick the box for Output below only and Display in Firefox

  • +
+
+../../_images/outputfile_b.png +
+
    +
  • Click CONVERT.

  • +
+ +

In the resulting depiction, note that Open Babel only sets a single stereobond for a chiral centre. This is not ambiguous - it means that the stereobond is either above or below the plane, with the remaining three bonds the opposite site of the plane.

+
    +
  1. Can you figure out whether the depiction of the tetrahedral centre is consistent with the SMILES string?

  2. +
+
+

Note

+

Open Babel 2.3.2 introduces a twisted double bond to indicate unknown cis/trans stereochemistry (e.g. IC=CF). See here for more info.

+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/GUITutorial/Filtering.html b/docs/GUITutorial/Filtering.html new file mode 100644 index 00000000..9d7c6b4d --- /dev/null +++ b/docs/GUITutorial/Filtering.html @@ -0,0 +1,645 @@ + + + + + + + + + + + Filtering structures — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Filtering structures#

+

Setup

+

We are going to use a dataset of 16 benzodiazepines. These all share the following substructure (image from Wikipedia):

+
+../../_images/Benzodiazepine.png +
+
    +
  • Create a folder on the Desktop called Work and save benzodiazepines.sdf there

  • +
  • Set up a conversion from SDF to SMI and set benzodiazepines.sdf as the input file

  • +
  • Tick Display in Firefox

  • +
  • Click CONVERT

  • +
+

Remove duplicates

+

If you look carefully at the depictions of the first and last molecules (top left and bottom right) you will notice that they depict the same molecule.

+
    +
  1. Look at the SMILES strings for the first and last molecules. If the two molecules are actually the same, why are the two SMILES strings different? (Hint: try using CAN - canonical SMILES instead of SMI.)

  2. +
+

We can remove duplicates based on the InChI (for example):

+
    +
  • Tick the box beside remove duplicates by descriptor and enter inchi as the descriptor

  • +
+
+../../_images/removedups.png +
+
    +
  • Click CONVERT

  • +
+

Duplicates can be removed based on any of the available descriptors. The full list can be found in the menu under Plugins, descriptors.

+
    +
  1. Are any of the other descriptors useful for removing duplicates?

  2. +
+

Filtering by substructure

+
    +
  1. How many of the molecules contain the following substructure?

  2. +
+
+../../_images/benzoF.png +
+

The SMILES string for this molecule is c1ccccc1F. This is also a valid SMARTS string.

+
    +
  1. Use the SMARTSviewer at the ZBH Center for Bioinformatics, University of Hamburg, to verify the meaning of the SMARTS string c1ccccc1F.

  2. +
+ +

Let’s filter the molecules using this substructure:

+
    +
  • In the Options section, enter c1ccccc1F into the box labeled Convert only if match SMARTS or mols in file

  • +
  • Click CONVERT.

  • +
+
    +
  1. How many structures are matched?

  2. +
+
    +
  • Now find all those that are not matched by preceding the SMARTS filter with a tilde ~, i.e. ~c1ccccc1F.

  • +
  • Click CONVERT.

  • +
+
    +
  1. How many structures are not matched?

  2. +
+

Filter by descriptor

+ +

As discussed above, Open Babel provides several descriptors. Here we will focus on the molecular weight, MW.

+

To begin with, let’s show the molecular weights in the depiction:

+
    +
  • Clear the existing title by entering a single space into the box Add or replace molecule title

  • +
  • Set the title to the molecular weight by entering MW into the box Append properties or descriptors in list to title

  • +
  • Click CONVERT

  • +
+

You should see the molecular weight below each molecule in the depiction. Notice also that the SMILES output has the molecular weight beside each molecule. This could be useful for preparing a spreadsheet with the SMILES string and various calculated properties.

+

Now let’s sort by molecular weight:

+
    +
  • Enter MW into the box Sort by descriptor and click CONVERT

  • +
+

Finally, here’s how to filter based on molecular weight. Note that none of the preceding steps are necessary for the filter to work. We will convert all those molecules with molecular weights between 300 and 320 (in the following expression & signifies Boolean AND):

+
    +
  • Enter MW>300 & MW<320 into the box Filter convert only when tests are true and click CONVERT

  • +
+
+../../_images/FilterByMW.png +
+ +
    +
  1. If | (the pipe symbol, beside Z on the UK keyboard) signifies Boolean OR, how would you instead convert all those molecules that do not have molecular weights between 300 and 320?

  2. +
+
+

Note

+

Open Babel 2.3.2 allows specific substructures to be highlighted in a depiction. It also allows depictions to be aligned based on a substructure.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/GUITutorial/GUITutorial.html b/docs/GUITutorial/GUITutorial.html new file mode 100644 index 00000000..8b1af351 --- /dev/null +++ b/docs/GUITutorial/GUITutorial.html @@ -0,0 +1,553 @@ + + + + + + + + + + + Tutorial on using the GUI — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Tutorial on using the GUI#

+

This chapter gives step-by-step descriptions on how to use Open Babel’s graphical user interface (GUI) to carry out some common tasks. It may also be used as the basis of a practical on cheminformatics, and to this end several questions are interspersed with the tutorial text.

+

For more information on the GUI itself, see the previous chapter.

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/GUITutorial/Searching.html b/docs/GUITutorial/Searching.html new file mode 100644 index 00000000..fa472627 --- /dev/null +++ b/docs/GUITutorial/Searching.html @@ -0,0 +1,593 @@ + + + + + + + + + + + Substructure and similarity searching a large dataset — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Substructure and similarity searching a large dataset#

+

Open Babel provides a format called the fs -- fastsearch index which should be used when searching large datasets (like ChEMBL) for molecules similar to a particular query. There are faster ways of searching (like using a chemical database) but FastSearch is convenient, and should give reasonable performance for most people.

+

To demonstrate similarity searching, we will use the first 1000 molecules in the latest release of ChEMBL:

+
    +
  • Download the 2D SDF version of ChEMBL, chembl_nn.sdf.gz, from the ChEMBLdb download site and save in your Work folder. (Note: this is a gzipped file, but Open Babel will handle this without problems.)

  • +
  • Set up an SDF to SDF conversion, set chembl_nn.sdf.gz as the input file and 1000_chembl.sdf as the output file.

  • +
  • Only convert the first 1000 molecules by entering 1000 in the box End import at molecule # specified.

  • +
+
+../../_images/first1000.png +
+
    +
  • Click CONVERT

  • +
+

We can going to use the following structure for substructure and similarity searching. It can be represented by the SMILES string Nc1ccc(N)cc1.

+
+../../_images/1%2C4-diamino-phenyl.png +
+ +

Next, we will create a FastSearch index for this dataset of 1000 molecules:

+
    +
  • Convert 1000_chembl.sdf from SDF to FS format, with an output filename of 1000_chembl.fs

  • +
+

By using this FastSearch index, the speed of substructure and similarity searching is much improved. First of all, let’s do a substructure search:

+
    +
  • Set up a conversion from FS to SMILES with 1000_chembl.fs as the input file. Tick the box for Output below only and Display in Firefox

  • +
  • Enter Nc1ccc(N)cc1 into the box Convert only if match SMARTS or mol in file

  • +
  • Click CONVERT

  • +
+
    +
  1. How does the speed of the substructure search compare to if you used 1000_chembl.sdf as the input file instead?

  2. +
+

Next, let’s find the 5 most similar molecules to the same query. The Tanimoto coefficient of a path-based fingerprint is used as the measurement of similarity. This has a value from 0.0 to 1.0 (maximum similarity) and we will display the value below each molecule:

+
    +
  • Set up the FS to SMILES conversion as before, and again enter Nc1ccc(N)cc1 into the box Convert only if match SMARTS or mol in file

  • +
  • Enter 5 into the box Do similarity search: #mols or # as min Tanimoto

  • +
  • Tick the box Add Tanimoto coefficient to title in similarity search

  • +
  • Click CONVERT

  • +
+
+../../_images/similarity.png +
+
    +
  1. Look at the 5 most similar molecules. Can you tell why they were regarded as similar to the query?

  2. +
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Installation/install.html b/docs/Installation/install.html new file mode 100644 index 00000000..f61267c2 --- /dev/null +++ b/docs/Installation/install.html @@ -0,0 +1,800 @@ + + + + + + + + + + + Install Open Babel — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Install Open Babel#

+

Open Babel runs on Windows, Linux and MacOSX. You can either install a binary package (the easiest option) or compile Open Babel yourself (also easy, but much more geek cred).

+
+

Install a binary package#

+
+

Windows#

+

Open Babel is available as a binary installer for Windows, both 64-bit (preferred) or 32-bit (indicated by x86 in the filename). It includes several command-line tools as well as a graphical user interface (GUI). The latest version can be download from GitHub.

+

Advanced users may be interested in compiling Open Babel themselves (see Compiling Open Babel).

+
+
+

Linux#

+

Open Babel binary packages are available from many Linux distributions including Ubuntu, OpenSUSE and Fedora.

+

In general, we recommend using the latest release of Open Babel (currently openbabel-3-1-1). If this is not available for your Linux distribution, you should compile Open Babel yourself.

+
+
+
+

Compiling Open Babel#

+

Open Babel is written in C++. Compiling is the process of turning this C++ into instructions that the computer’s processor can understand, machine code.

+

Although pre-compiled (or “binary”) packages are available for several platforms, there are several reasons you might want to compile Open Babel yourself:

+
    +
  • The current release (openbabel-3-1-1) of Open Babel is not available for your platform. We recommend always using the latest release.

  • +
  • You want more control over the features available. For example, perhaps you want the Python bindings but these were not included in your distribution.

  • +
  • You want to use the latest development code.

  • +
  • You want to add a new feature. It is easy to add new formats or operations to Open Babel as it has a plugin architecture (see Adding plugins).

  • +
  • You just want to compile stuff yourself. We understand.

  • +
+

Open Babel can be compiled on Linux, MacOSX, BSDs and other Unixes, and also on Windows (with Cygwin, MinGW or MSVC).

+
+

Requirements#

+

To build Open Babel, you need the following:

+
    +
  • The source code for the latest release of Open Babel

  • +
  • A C++ compiler

    +
    +

    Open Babel is written in standards-compliant C++. The best-supported compilers are GCC 4 and MSVC++ 2008, but it also compiles with Clang and Intel Compiler 11.

    +
    +
  • +
  • CMake 2.8 or newer

    +
    +

    Open Babel uses CMake as its build system. CMake is an open source cross-platform build system from KitWare.

    +

    You need to install CMake 2.8 or newer. This is available as a binary package from the KitWare website; alternatively, it may be available through your package manager (on Linux). If necessary, you can also compile it yourself from the source code.

    +
    +
  • +
+

If you want to build the GUI (Graphical User Interface), you need the following in addition:

+
    +
  • wxWidgets 2.8 (or newer)

    +
    +

    Binary packages may be available through your package manager (wx-common, wx2.8-headers and libwxbase2.8-dev on Ubuntu) or from http://www.wxwidgets.org/downloads/. Otherwise, you could try compiling it yourself from the source code.

    +
    +
  • +
+

The following are optional when compiling Open Babel, but if not available some features will be missing:

+
    +
  • libxml2 development headers are required to read/write CML files and other XML formats (the libxml2-dev package in Ubuntu)

  • +
  • zlib development libraries are required to support reading gzipped files (the zlib1g-dev package in Ubuntu)

  • +
  • Eigen version 2 or newer is required if using the language bindings in the release. In addition, if it not present, some API classes (OBAlign, OBConformerSearch) and plugins (the QEq and QTPIE charge models, the --conformer and --align operations) will not be available.

    +

    Eigen may be available through your package manager (the libeigen2-dev package in Ubuntu). Alternatively, Eigen is available from http://eigen.tuxfamily.org. It doesn’t need to be compiled or installed. Just unzip it and specify its location when configuring cmake (see below) using -DEIGEN2_INCLUDE_DIR=whereever or -DEIGEN3_INCLUDE_DIR=wherever.

    +
  • +
  • Cairo development libraries are required to support PNG depiction (the libcairo2-dev package in Ubuntu)

  • +
  • If using GCC 3.x to compile (and not GCC 4.x), then the Boost headers are required for certain formats (CML, Chemkin, Chemdraw CDX, MDL RXN and RSMI)

  • +
+

If you want to use Open Babel using one of the supported language bindings, then the following notes may apply:

+
    +
  • You need the the Python development libraries to compile the Python bindings (package python-dev in Ubuntu)

  • +
  • You need the the Perl development libraries to compile the Perl bindings (package libperl-dev in Ubuntu)

  • +
+
+
+

Basic build procedure#

+

The basic build procedure is the same for all platforms and will be described first. After this, we will look at variations for particular platforms.

+
    +
  1. The recommended way to build Open Babel is to use a separate source and build directory; for example, openbabel-2.3.2 and build. The first step is to create these directories:

    +
    $ tar zxf openbabel-2.3.2.tar.gz   # (this creates openbabel-2.3.2)
    +$ mkdir build
    +
    +
    +
  2. +
  3. Now you need to run cmake to configure the build. The following will configure the build to use all of the default options:

    +
    $ cd build
    +$ cmake ../openbabel-2.3.2
    +
    +
    +
  4. +
  5. If you need to specify an option, use the -D switch to cmake. For example, the following line sets the value of CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE:

    +
    $ cmake ../openbabel-2.3.2 -DCMAKE_INSTALL_PREFIX=~/Tools -DCMAKE_BUILD_TYPE=DEBUG
    +
    +
    +

    We will discuss various possible options later.

    +
  6. +
  7. At this point, it would be a good idea to compile Open Babel:

    +
    $ make
    +
    +
    +

    Have a coffee while the magic happens. If you have a multi-processor machine and would prefer an expresso, try a parallel build instead:

    +
    $ make -j4    # parallel build across 4 processors
    +
    +
    +
  8. +
  9. And finally, as root (or using sudo) you should install it:

    +
    # make install
    +
    +
    +
  10. +
+
+
+

Local build#

+ +

By default, Open Babel is installed in /usr/local/ on a Unix-like system. This requires root access (or sudo). Even if you do have root access, you may not want to overwrite an existing installation or you may want to avoid conflicts with a version of Open Babel installed by your package manager.

+

The solution to all of these problems is to do a local install into a directory somewhere in your home folder. +An additional advantage of a local install is that if you ever want to uninstall it, all you need to do is delete the installation directory; removing the files from a global install is more work.

+
    +
  1. To configure cmake to install into ~/Tools/openbabel-install, for example, you would do the following:

    +
    $ cmake ../openbabel-2.3.2 -DCMAKE_INSTALL_PREFIX=~/Tools/openbabel-install
    +
    +
    +
  2. +
  3. Then you can run make and make install without needing root access:

    +
    $ make && make install
    +
    +
    +
  4. +
+
+
+

Compile the GUI#

+

The GUI is built using the wxWidgets toolkit. Assuming that you have already installed this (see Requirements above), you just need to configure cmake as follows:

+
$ cmake ../openbabel-2.3.2 -DBUILD_GUI=ON
+
+
+

When you run make and make install, the GUI will be automatically built and installed alongside the main Open Babel library and tools.

+
+
+

Compile language bindings#

+ +
    +
  1. When configuring CMake, include options such as -DPYTHON_BINDINGS=ON -DRUBY_BINDINGS=ON for whichever bindings you wish to build (valid names are PYTHON, CSHARP, PERL, JAVA or RUBY) or -DALL_BINDINGS=ON to build them all. The bindings will then be built and installed along with the rest of Open Babel. You should note any warning messages in the CMake output.

  2. +
  3. If CMake cannot find Java, you should set the value of the environment variable JAVA_HOME to the directory containing the Java bin and lib directories. For example, if you download the JDK from Sun and run the self-extracting .bin file, it creates a directory jdk1.6.0_21 (or similar); you should set JAVA_HOME to the full path to this directory.

  4. +
  5. If CMake cannot find the Perl libraries (which happens on Ubuntu 10.10, surprisingly), you need to configure CMake with something like -DPERL_LIBRARY=/usr/lib/libperl.so.5.10 -DPERL_INCLUDE_PATH=/usr/lib/perl/5.10.1/CORE.

  6. +
  7. If you are compiling the CSharp bindings, you should specify the CSharp compiler to use with something like -DCSHARP_EXECUTABLE=C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe.

  8. +
  9. When you run make install, all of the bindings will be installed to the same location as the Open Babel libraries (typically /usr/local/lib).

  10. +
  11. To prepare to use the bindings, add the install directory to the front of the appropriate environment variable: PYTHONPATH for Python, PERL5LIB for Perl, RUBYLIB for Ruby, CLASSPATH for Java, and MONO_PATH for Mono.

  12. +
+

For example, for Python:

+
$ cmake ../openbabel-2.3.2 -DPYTHON_BINDINGS=ON
+$ make
+# make install
+$ export PYTHONPATH=/usr/local/lib:$PYTHONPATH
+
+
+
+
+

Cygwin#

+

The basic build instructions up above work just fine so long as you use the CMake provided by Cygwin rather than a native Windows installation.

+

If you get an error about undefined reference to '_xmlFreeTextReader', you need to specify the location of the XML libraries with the -DLIBXML2_LIBRARIES option:

+
$ cmake ../openbabel-2.3.2 -DLIBXML2_LIBRARIES=/usr/lib/libxml2.dll.a
+
+
+

The language bindings don’t seem to work under Cygwin. If you can get them to work, let us know. Also remember that anything that uses Cygwin runs slower than a native build using MinGW or MSVC++, so if speed is an issue you might prefer to compile with MinGW or MSVC++.

+
+
+

MinGW#

+

Open Babel builds out of the box with MinGW. It’s an awkward system to set up though, so here are some step-by-step instructions…TODO

+
+
+

Windows (MSVC)#

+

The main Windows build used by Open Babel uses the Microsoft Visual C++ compiler (MSVC).

+
    +
  1. Set up the following environment variables:

    +
    +
      +
    1. Add the CMake bin directory to the PATH.

    2. +
    3. (Optional, see Requirements above) Set EIGEN2_INCLUDE_DIR to the location of the top level Eigen directory (if installed).

    4. +
    5. (Optional, required for GUI) Set WXWIN to the top level directory of wxWidgets (if installed).

    6. +
    +
    +
  2. +
  3. Install the Microsoft Visual C++ 2010 (or newer) compiler.

    +

    We use the Visual C++ 2010 (10.0) Express Edition (available for free).

    +
  4. +
+
    +
  1. Open a command prompt, and change directory to the windows-vc2008 subdirectory. To configure cmake, and generate the VC++ project files, run default_build.bat.

  2. +
  3. Double-click on windows-vc2008/build/openbabel.sln to start MSVC++. At the top of the window just below the menu bar, choose Release in the drop-down box.

  4. +
  5. On the left-hand side, right-click on the ALL_BUILD target, and choose Build.

  6. +
+
+
+

Troubleshooting build problems#

+

CMake caches some variables from run-to-run. How can I wipe the cache to start from scratch?

+

Delete CMakeCache.txt in the build directory. This is also a very useful file to look into if you have any problems.

+

How do I specify the location of the XML libraries?

+

CMake should find these automatically if they are installed system-wide. If you need to specify them, try using the -DLIBXML2_LIBRARIES=wherever option with CMake to specify the location of the DLL or SO file, and -DLIBXML2_INCLUDE_DIR=wherever to specify the location of the header files.

+

How do I specify the location of the ZLIB libraries?

+

CMake should find these automatically if they are installed system-wide. If you need to specify them, try using the -DZLIB_LIBRARY=wherever option with CMake to specify the location of the DLL or SO file, and -DZLIB_INCLUDE_DIR=wherever to specify the location of the header files.

+

What environment variables affect how Open Babel finds formats, plugins and libraries?

+
+
LD_LIBRARY_PATH - Used to find the location of the libopenbabel.so file.

You should set this if you get error messages about not being able to find libopenbabel.so.

+
+
BABEL_LIBDIR - Used to find plugins such as the file formats

If obabel -L formats does not list any file formats, then you need to set this environment variable to the directory where the file formats were installed, typically /usr/local/lib/openbabel/.

+
+
BABEL_DATADIR - Used to find the location of the data files used for fingerprints, forcefields, etc.

If you get errors about not being able to find some .txt files, then you should set this to the name of the folder containing files such as patterns.txt and MACCS.txt. These are typically installed to /usr/local/share/openbabel.

+
+
+
+
+

Advanced build options#

+

How do I control whether the tests are built?

+

The CMake option -DENABLE_TESTS=ON or OFF will look after this. To actually run the tests, use make tests.

+

How do I do a debug build?

+

-DCMAKE_BUILD_TYPE=Debug does a debug build (gcc -g). To revert to a regular build use -DCMAKE_BUILD_TYPE=Release.

+

How do I see what commands cmake is using to build?

+

Run Make as follows:

+
$ VERBOSE=1 make
+
+
+

How do I build one specific target?

+

Just specify the target when running Make. The following just builds the Python bindings:

+
$ make _openbabel
+
+
+

To speed things up, you can ask Make to ignore dependencies:

+
$ make _openbabel/fast
+
+
+

How do I create the SWIG bindings?

+

Use the -DRUN_SWIG=ON option with CMake. This requires SWIG 2.0 or newer. If the SWIG executable is not on the PATH, you will need to specify its location with -DSWIG_EXECUTABLE=wherever.

+

How do I build the Doxygen documentation?

+

Use the -DBUILD_DOCS=ON option with CMake. If the Doxygen executable is not on the PATH, you will need to specify its location with -DDOXYGEN_EXECUTABLE=wherever.

+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Introduction/faq.html b/docs/Introduction/faq.html new file mode 100644 index 00000000..316786f7 --- /dev/null +++ b/docs/Introduction/faq.html @@ -0,0 +1,633 @@ + + + + + + + + + + + Frequently Asked Questions — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Frequently Asked Questions#

+
+

General#

+

What is Open Babel?

+

Put simply, Open Babel is a free, open-source version of the Babel chemistry file translation program. Open Babel is a project designed to pick up where Babel left off, as a cross-platform program and library designed to interconvert between many file formats used in molecular modeling, computational chemistry, and many related areas.

+

Open Babel includes two components, a command-line utility and a C++ library. The command-line utility is intended to be used as a replacement for the original babel program, to translate between various chemical file formats. The C++ library includes all of the file-translation code as well as a wide variety of utilities to foster development of other open source scientific software.

+

How does this relate to BabelChat, BabelFish, Babel IM, etc. …?

+

It doesn’t. Not surprisingly, “babel” is used frequently in a lot of software names.

+

Is it Open Babel or OpenBabel?

+

Your choice. It’s probably easier to call it Open Babel since that’s what it is–an open version of Babel. But if you like one-word, mixed-case project names, then go for OpenBabel. In that case, the space is just too small to be printed.

+

How does this relate to the original Babel and OELib, the “next” Babel?

+

The original Babel was written by Pat Walters and Matt Stahl, based on the “convert” program by Ajay Shah, and is still a remarkable application. Both Pat and Matt have moved on to other work. The original Babel is hosted by Smog.com on a Babel homepage, by the Computational Chemistry List (CCL) and of course by Open Babel at SourceForge.net.

+

Along the way, the two original authors started a rewrite of Babel into C++ they called OBabel, which was never really publicly released. But Matt used some of these ideas in OELib, which was generously released under the GNU GPL by his employer, OpenEye Software, and the last known version of this OELib is still available from our file repository.

+

OpenEye decided that for their purposes OELib needed a rewrite (now called OEChem), but this would be closed-source to include some advanced algorithms. So the GPL’ed version of OELib would not be maintained. Instead, the free version of OELib was renamed and has become “Open Babel” with the blessing of Matt and other contributors.

+

Open Babel has evolved quite a lot since its birth in 2001.

+

What’s the latest version?

+

As of this writing, the latest version is Open Babel openbabel-3-1-1. This is a stable version suitable for widespread use and development.

+

Can I use Open Babel code in a personal project?

+

One common misconception about the GNU GPL license for Open Babel is that it requires users to release any code that uses the Open Babel library. This is completely untrue. There are no restrictions on use of Open Babel code for personal projects, regardless of where you work (academia, industry, … wherever).

+

However, if you intend on releasing a software package that uses Open Babel code, the GPL requires that your package be released under the GNU GPL license. The distinction is between use and distribution. See What’s in it for me to contribute? below for more on the licensing issues.

+

How do I cite Open Babel in a paper?

+

To support development of Open Babel, please cite:

+ +
+
+[obj2011] +

Noel M. O’Boyle, Michael Banck, Craig A. James, Chris Morley, Tim Vandermeersch, Geoffrey R. Hutchison +Open Babel: An open chemical toolbox. +J. Cheminf. 2011, 3, 33. +[Link]

+
+
+ +

The first is a paper describing Open Babel; and the second is one way to cite a software package at a particular URL. Obviously, you should include the version number of Open Babel you used, and the date you downloaded the software or installed Open Babel.

+
+
+

Features, Formats, Roadmap#

+

Why don’t you support file format X?

+

The file formats currently supported are some of the more common file formats and, admittedly, those we use in our work. If you’d like to see other file formats added, we need one of:

+
+
    +
  • documentation on the file format

  • +
  • working code to read the file format or translate it

  • +
  • example files in the new file format and in some other format

  • +
+
+

The latter obviously is the easiest with text file formats. Binary files take some time to reverse engineer without documentation or working code. Also consider pointing developers to this FAQ and the “What’s in it for me?” section.

+

When I convert from SMILES to MOL2/PDB/etc., why are all of the coordinates zero?

+

The SMILES format contains 2D information on the molecule. That is, it says which atoms are connected to which other atoms, and what type of bonds are present. MOL2, PDB and several other formats contain 3D coordinate information not present in the SMILES format. Since Open Babel does not attempt to generate 3D structure by default, all of the coordinates are set to zero. However, it is possible to generate 3D structure with the release of Open Babel 2.2.0 using the --gen3d option.

+

What sorts of features will be added in the future?

+

It’s an open project, so if features are suggested or donated, they’ll be considered as much as anything else on the drawing board. Some things are pretty clear from the roadmap.

+
+
+

What’s in it for me to contribute?#

+

What’s in it for my chemistry software company?

+

If your product is closed-source or otherwise incompatible with the GPL, you unfortunately cannot link directly to the code library. You can, however, distribute Open Babel in unmodified form with your products to use the command-line interface. This is fairly easy because the Open Babel babel program allow reading from the standard input and writing to the standard output (functioning as a POSIX pipe).

+

If you decide to distribute binaries, you should either offer users the source if they want, or point them to the Open Babel website. Note that if you modify the source, you obviously can’t point back to the Open Babel website – the GPL requires that you distribute the changed source. (Or you can convince us to incorporate the changes and point back to us.)

+

What’s not to like with this deal? You can have Open Babel translate foreign file formats for you and can point users at the website for distribution. You don’t need to write tons of code for all these formats and bug reports can be passed back to us.

+

Of course, there’s one catch. You’ll most likely need to add feature-rich support for your file formats. So if you contribute a small amount of code under the GPL to read/write your files, everything else is handled by Open Babel.

+

It’s a win-win for everyone. The community benefits by having feature-rich translation code and open file formats. Your company and its programs benefit by the ability to read just about every format imaginable. Users benefit by using the programs they need for the tasks they need.

+

What’s in it for me as an academic?

+

If you’re an academic developer, you certainly should read the previous answer too. It takes little work on your part to interface with Open Babel and you get a lot in return.

+

But even if you’re just an academic user, there’s a lot of reasons to contribute. Most of us deal with a variety of file formats in our work. So it’s useful to translate these cleanly. If a format isn’t currently supported by Open Babel, see above. If you find bugs please report them. Since it’s open source, you can patch the code yourself, recompile and have the problem fixed very quickly.

+

If you’re inclined to write code, the GPL is an excellent option for the academic. You’re the original copyright holder, so you can do whatever you want with the code, in addition to selling it. But if you’ve also licensed it under the GPL, no one can distribute it as proprietary (i.e., closed-source) software without your agreement. Fellow academics can use it directly, learn from it, improve it and contribute back to you. Isn’t that why many of us went into science?

+

Once licensed under the GPL, the code must remain free to interested parties. If someone modifies it, that code must still remain under the GPL, free for all.

+

What’s in it for an open-source software project?

+

Certainly the answers for closed-source software and academics also apply for you. Beyond that, if your code is compatible with the GPL, you can directly use Open Babel and all of the API. This is already happening with the Avogadro molecular editor, available under the GPL, and many others (see related projects). There’s a lot of code in Open Babel beyond file translation and more to come. Why reinvent the wheel?

+

Why is this covered under the GPL instead of license X?

+

The short answer is that OpenEye Scientific Software employs Matt Stahl, one of the authors of the original Babel. They released a library called OELib under the GPL that did many things that Babel did. Later they decided to release the next version of OELib as a closed-source project–their choice for their code. We took the version of OELib still under GPL and went from there.

+

If you’d like to see Open Babel licensed differently, we’d suggest asking OpenEye if they’d consider releasing the old code under a new license, e.g. the LGPL. At that point, we’d consider whether Open Babel should be relicensed or not. Obviously all copyright holders must agree to the new license.

+

It’s worth noting that since OpenEye is developing a closed-source library called OEChem and implies one reason for purchase is in closed-source development products. So we think it’s highly unlikely that OpenEye would allow Open Babel to become a competitor by relicensing under the LGPL.

+

Where can I read more about the GNU GPL?

+

The Free Software Foundation maintains a FAQ list about the GNU GPL. The FAQ attempts to address common questions in an easy-to-read (i.e., not in legal language) form.

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Introduction/goals.html b/docs/Introduction/goals.html new file mode 100644 index 00000000..19dabc3d --- /dev/null +++ b/docs/Introduction/goals.html @@ -0,0 +1,569 @@ + + + + + + + + + + + Goals of the Open Babel project — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Goals of the Open Babel project#

+

Open Babel is a project to facilitate the interconversion of chemical data from one format to another – including file formats of various types. This is important for the following reasons:

+
    +
  • Multiple programs are often required in realistic workflows. These may include databases, modeling or computational programs, visualization programs, etc.

  • +
  • Many programs have individual data formats, and/or support only a small subset of other file types.

  • +
  • Chemical representations often vary considerably:

    +
      +
    • Some programs are 2D. Some are 3D. Some use fractional k-space coordinates.

    • +
    • Some programs use bonds and atoms of discrete types. Others use only atoms and electrons.

    • +
    • Some programs use symmetric representations. Others do not.

    • +
    • Some programs specify all atoms. Others use “residues” or omit hydrogen atoms.

    • +
    +
  • +
  • Individual implementations of even standardized file formats are often buggy, incomplete or do not completely match published standards.

  • +
+

As a free, and open source project, Open Babel improves by way of helping others. It gains by way of its users, contributors, developers, related projects, and the general chemical community. We must continually strive to support these constituencies.

+

We gratefully accept contributions in many forms – from bug reports, complaints, and critiques, which help us improve what we do poorly, to feature suggestions, code contributions, and other efforts, which direct our future development.

+
    +
  • For end users, we seek to provide a range of utility, from simple (or complex) file interconversion, to indexing, databasing, and transforming chemical and molecular data.

  • +
  • For developers, we seek to provide an easy-to-use free and open source chemical library. This assists a variety of chemical software, from molecular viewers and visualization tools and editors to databases, property prediction tools, and in-house development.

  • +
+

To this end, we hope that our tools reflect several key points:

+
    +
  • As much chemical information and files should be read and understood by Open Babel. This means that we should always strive to support as many concepts as possible in a given file format, and support for additional file formats is beneficial to the community as a whole.

  • +
  • Releases should be made to be “as good as we can make it” each and every time.

  • +
  • Improving our code and our community to bring in additional contributions in many forms helps both developers and end-users alike. Making development easy for new contributors will result in better tools for users as well.

  • +
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Introduction/intro.html b/docs/Introduction/intro.html new file mode 100644 index 00000000..5a652c9c --- /dev/null +++ b/docs/Introduction/intro.html @@ -0,0 +1,553 @@ + + + + + + + + + + + Introduction — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Introduction/thanks.html b/docs/Introduction/thanks.html new file mode 100644 index 00000000..022f3b25 --- /dev/null +++ b/docs/Introduction/thanks.html @@ -0,0 +1,630 @@ + + + + + + + + + + + Thanks — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Thanks#

+

Open Babel would not be what it is without the help of a cast of many. We are fundamentally a community project and aim to offer open development, responsive to users and contributors alike.

+

In addition to contributors of all sorts, a variety of related projects keep us on our toes. We would also like to thank everyone who has cited Open Babel in academic and technical literature, posters, and presentations.

+

Credits (in alphabetical order)

+
    +
  • Rich Apodaca

  • +
  • Joshua Ballanco

  • +
  • Michael Banck

  • +
  • Ross Braithwaite

  • +
  • Daniil Bratashov

  • +
  • Francesco Bresciani

  • +
  • Jean Brefort

  • +
  • Alex Clark

  • +
  • Joe Corkery

  • +
  • Steve Constable

  • +
  • Donald Curtis

  • +
  • Andrew Dalke

  • +
  • Daen de Leon

  • +
  • Menno Deij

  • +
  • Christian Ehrlicher

  • +
  • Nick England

  • +
  • Vincent Favre-Nicolin

  • +
  • Maxim Fedorovsky

  • +
  • Fabien Fontaine

  • +
  • Malcolm Gillies

  • +
  • Richard Gillilan

  • +
  • Brian Goldman

  • +
  • Rajarshi Guha

  • +
  • Richard Hall

  • +
  • Bob Hanson

  • +
  • Marcus Hanwell

  • +
+
    +
  • Tommi Hassinen

  • +
  • Bryan Herger

  • +
  • David Hoekman

  • +
  • Geoffrey Hutchison

  • +
  • Benoît Jacob

  • +
  • Craig James

  • +
  • Mikael Johansson

  • +
  • Stefan Kebekus

  • +
  • Elmar Krieger

  • +
  • Erik Kruus

  • +
  • Daniel Leidert

  • +
  • Christian Laggner

  • +
  • Greg Landrum

  • +
  • Eugene Leitl

  • +
  • Teng Lin

  • +
  • Zhiguo Liu

  • +
  • Daniel Mansfield

  • +
  • David Mathog

  • +
  • Gerde Menche

  • +
  • Dominik Mierzejewski

  • +
  • Chris Morley

  • +
  • Paul Mortenson

  • +
  • Peter Murray-Rust

  • +
  • Carsten Niehaus

  • +
  • Anthony Nicholls

  • +
+
    +
  • Noel O’Boyle

  • +
  • Sergei Patchkovskii

  • +
  • Frank Peters

  • +
  • Steffen Reith

  • +
  • Louis Richard

  • +
  • Roger Sayle

  • +
  • Ernst-Georg Schmid

  • +
  • Ajay Shah

  • +
  • Kevin Shepherd

  • +
  • Sangwoo Shim

  • +
  • Andrew Smellie

  • +
  • Matt Sprague

  • +
  • Matt Stahl

  • +
  • Chris Swain

  • +
  • S Joshua Swamidass

  • +
  • Bob Tolbert

  • +
  • Sergey Trepalin

  • +
  • Tim Vandermeersch

  • +
  • Ugo Varetto

  • +
  • Martin Vogt

  • +
  • Izhar Wallach

  • +
  • Fredrik Wallner

  • +
  • Pat Walters

  • +
  • Pawel Wolinski

  • +
  • Joerg Kurt Wegner

  • +
+
+

There are probably many more who have contributed to Babel, OBabel, OELib or directly to Open Babel who are not listed here. Please help us keep this list updated. THANKS!

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/README.html b/docs/README.html new file mode 100644 index 00000000..a281746b --- /dev/null +++ b/docs/README.html @@ -0,0 +1,525 @@ + + + + + + + + + + + Open Babel user documentation — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel user documentation#

+

The Open Babel user documentation is generated from the text files in this project.

+

The source files have extension .rst, indicating reStructuredText, a simple markup language widely used in the Python community and becoming more generally popular due to Sphinx, the documentation system that we are using here.

+
+

Editing the docs#

+

Before editing the docs, you need to create a Github account and send me (baoilleach) the account name. Then I will add you to the list of ‘collaborators’.

+

Github provides previews of reST documentation, which makes it easy to edit the docs directly on the github website. Alternatively, you can check out the repository and edit it locally. Note that Windows users should set autocrlf=true as described in the Github tutorials.

+
+
+

Building the docs#

+

To build the docs yourself, you should install a recent version of Sphinx (works for me with 1.8.5):

+
    +
  1. Sphinx has several dependencies so it is most easily installed using Python’s package managers. I recommend that you create a virtualenv and install Sphinx within that:

    +
    $ virtualenv myenv
    +$ source myenv/bin/activate
    +(myenv) $ pip install Sphinx
    +
    +
    +
  2. +
  3. You also need to install the doxylink extension:

    +
    (myenv) $ pip install sphinxcontrib-doxylink
    +
    +
    +
  4. +
  5. To build the documentation, type make html or make latex.

  6. +
  7. To correct errors in the generated HTML and LaTeX, type python FixHTML.py.

  8. +
+
+
+

Automatic generation#

+

Within a few seconds, updated docs will be available at https://open-babel.readthedocs.io/en/latest/. Note that these docs are missing the links to the C++ documentation and to Pybel.

+

The complete docs are automatically generated once an hour (on the hour) from the latest source, and are available at http://openbabel.org/docs/dev.

+
+
+ + +
+ + + + + +
+ +
+
+
+ +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/index.html b/docs/ReleaseNotes/index.html new file mode 100644 index 00000000..bd065d60 --- /dev/null +++ b/docs/ReleaseNotes/index.html @@ -0,0 +1,644 @@ + + + + + + + + + + + Release Notes — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Release Notes#

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob1.100.0.html b/docs/ReleaseNotes/ob1.100.0.html new file mode 100644 index 00000000..e3d131d7 --- /dev/null +++ b/docs/ReleaseNotes/ob1.100.0.html @@ -0,0 +1,600 @@ + + + + + + + + + + + Open Babel 1.100.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 1.100.0#

+

Released on 2002-12-12.

+
+

What’s new from 1.99#

+
+
    +
  • Bond order typing is performed when importing from formats with no notion of +bonds (quantum chemistry programs, XYZ, etc.). -Now better conforms to the ISO +C++ standard, should compile on most modern C++ compilers.

  • +
  • Improved test suite, including “roundtrip” testing, ensuring more accurate translations.

  • +
  • Support for the Chemical Markup Language (CML) and other file formats. (see below)

  • +
  • Improved PDB support – should read PDB files more accurately and hew closer to the current PDB standard for export.

  • +
  • Improved Gaussian input generation.

  • +
  • Added support for the Chemical MIME standards, including command-line switches.

  • +
  • Added support for using the babel program as a pipe for a “translation filter” for other programs.

  • +
  • Can add hydrogen atoms based on pH.

  • +
  • Fixed a variety of memory leaks, sometimes causing other bugs.

  • +
  • Fixed a wide variety of bugs in various file formats.

  • +
  • Faster SMARTS matching and some overall speedups across the program.

  • +
  • API documentation using the Doxygen system.

  • +
  • Of course there are many other bug-fixes and improvements.

  • +
+
+
+
+

New File Formats#

+
+

-Import: NWChem Output +-Export: POV-Ray, NWChem Input +-Both: CML, ViewMol, Chem3D

+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob1.100.1.html b/docs/ReleaseNotes/ob1.100.1.html new file mode 100644 index 00000000..e0ec1c1c --- /dev/null +++ b/docs/ReleaseNotes/ob1.100.1.html @@ -0,0 +1,607 @@ + + + + + + + + + + + Open Babel 1.100.1 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 1.100.1#

+

Released on 2003-6-24.

+
+

What’s new from 1.100.0#

+
+
    +
  • Much better bond typing overall for files converted from formats +without bond information (e.g. XYZ, QM codes). Fixed some bugs in +1.100.1 and added additional improvments.

  • +
  • Support for the command-line “babel” program to convert some or +all structures in a file with multiple molecules. By default this +version will convert all molecules in a file. To change this, use +the -f and -l command-line options as documented in the man page.

  • +
  • Isotope support, including exact masses in the “report” file +format and SMILES data.

  • +
  • Updated API documentation.

  • +
  • Support for the Borland C++ compiler.

  • +
  • Fixed a variety of bugs in the PDB file format support, including +better bond typing.

  • +
  • Support for output of residue information in the Sybyl Mol2 file +format.

  • +
  • Some support for conversion of unit cell information, both in the +library and in some file formats (i.e. DMol3, Cacao).

  • +
  • Coordinates now use double-precision floating point libraries for +greater accuracy in conversions.

  • +
  • Fixed a variety of bugs uncovered in roundtrip testing.

  • +
  • Fixed a bug when attempting to perceive bond information on 2D +structures.

  • +
  • Fixed several rare bugs that could cause segmentation faults.

  • +
+
+
+
+

New File Formats#

+
+

-Import: ShelX +-Export: ZINDO input

+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob1.100.2.html b/docs/ReleaseNotes/ob1.100.2.html new file mode 100644 index 00000000..de50b235 --- /dev/null +++ b/docs/ReleaseNotes/ob1.100.2.html @@ -0,0 +1,610 @@ + + + + + + + + + + + Open Babel 1.100.2 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 1.100.2#

+

Released on 2004-02-22.

+
+

What’s new from 1.100.1#

+
+
    +
  • Shared library (version 0:0:0) built by default on POSIX systems +(e.g. Linux, BSD, Mac OS X…)

  • +
  • Fixed installation of header files. The headers in the math/ +subdirectory were not installed alongside the other headers.

  • +
  • Added tools/ directory with small examples of using libopenbabel: +* obgrep: Use SMARTS patterns to grep through multi-molecule files. +* obfit: Use SMARTS patterns to align molecules on substructures. +* obrotate: Rotate a torsional bond matching a SMARTS pattern.

  • +
  • Improved PDB support: uses HETATM records more appropriately, attempts to +determine chain/residue information if not available.

  • +
  • Fixed a variety of bugs in ShelX support.

  • +
  • Added support for handling atom and molecule spin multiplicity.

  • +
  • Updated documentation – not yet complete, but significantly improved.

  • +
  • Fixed major omissions in CML readers and writers. All versions of CML are now +supported (CML1/2 and array/nonArray). Also added *.bat +file for roundtripping between these formats for both 2- and 3-D data. +Fixed bugs in test/cmltest/cs2a.mol.cml.

  • +
  • Building and running the test-suite in a build-directory other than the +source-directory is now fully supported.

  • +
  • Support for the Intel C++ Compiler on GNU/Linux.

  • +
  • Miscellaneous fixes to make it easier to compile on non-POSIX machines.

  • +
+
+
+
+

New File Formats#

+
+
+
-Export: Chemtool

Chemical Resource Kit (CRK) 2D and 3D +Parallel Quantum Solutions (PQS)

+
+
-Import: CRK 2D and 3D

PQS

+
+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob1.99.html b/docs/ReleaseNotes/ob1.99.html new file mode 100644 index 00000000..9d1fd061 --- /dev/null +++ b/docs/ReleaseNotes/ob1.99.html @@ -0,0 +1,561 @@ + + + + + + + + + + + Open Babel 1.99 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 1.99#

+

Released on 2002-1-29.

+

The Open Babel team is pleased to announce the release of Open Babel 1.99, a first beta release for the 2.0 version of the free, open-source replacement for the Babel chemistry file translation program.

+

At the moment, the beta release is not a drop-in replacement for babel as some file formats are not implemented and bond orders are not calculated for QM file formats.

+

Open Babel includes two components, a command-line utility and a C++ library. The command-line utility is intended to be used as a replacement for the original babel program, to translate between various chemical file formats. The C++ library includes all of the file-translation code as well as a wide variety of utilities to foster development of other open source chemistry software.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob200.html b/docs/ReleaseNotes/ob200.html new file mode 100644 index 00000000..1d4fc753 --- /dev/null +++ b/docs/ReleaseNotes/ob200.html @@ -0,0 +1,690 @@ + + + + + + + + + + + Open Babel 2.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.0#

+

Released on 2005-11-26.

+
+

What’s new from 1.100.2#

+

This release represents Open Babel’s fourth “birthday” and a milestone for +a stable, flexible interface for developers and users alike.

+
    +
  • +
    New conversion framework. The new framework allows dynamic

    loading/unloading of file translator modules (i.e., shared +libraries, DLLs, DSO, etc.). More importantly, it facilitates adding +new formats, since each format is self-contained and no editing of +other files is required.

    +
    +
    +
  • +
  • Improved support for XML chemistry formats, including CML, PubChem XML,

  • +
  • +
    Support for fingerprinting and calculation of Tanimoto coefficients for

    similarity consideration. +(A flexible fingerprint framework is available for developers.)

    +
    +
    +
  • +
  • New support for Perl and Python “wrappers” of the Open Babel library.

  • +
  • +
    Many enhancements to the Open Babel API: See the Developers API Notes for

    more information. Some code will require updating, see the +Developer’s Migration Guide for details.

    +
    +
    +
  • +
  • +
    Support for automatically reading .gz compressed files.

    (e.g., 1abc.pdb.gz is uncompressed and treated as a PDB file) +Use of the -z flag creates gzip-compressed output files.

    +
    +
    +
  • +
  • Support for the new IUPAC InChI identifiers.

  • +
  • +
    Improved bond order typing, including flexible SMARTS matching in

    bondtyp.txt.

    +
    +
    +
  • +
  • +
    New Kekulization routine – improves aromaticity detection in aromatic amines

    like pyrroles, porphyrins, etc.

    +
    +
    +
  • +
  • +
    Improved support for radicals and spin multiplicity, including

    assignment of hydrogens to radicals.

    +
    +
    +
  • +
  • Improved support for 2D vs. 3D file formats.

  • +
  • +
    New error logging framework keeps an “audit log” of changes to files

    (hydrogen addition, bond order assignment) and different levels of +error reporting / debugging. +Use the “—errorlevel 4” flag to access this information.

    +
    +
    +
  • +
  • Improved atom typing and hydrogen addition rules.

  • +
  • +
    Improved obfit utility will output RMSD and find matches with the

    best RMSD.

    +
    +
    +
  • +
  • Updated isotope data from 2003 IUPAC standard.

  • +
  • +
    Updated elemental data from the Blue Obelisk Data Repository.

    (project started, in part, to validate the old Open Babel data)

    +
    +
    +
  • +
  • Improved z-matrix code (CartesianToInternal / InternalToCartesian).

  • +
  • Countless bug fixes.

  • +
+
+
+

New File Formats#

+
    +
  • +
    Import & Export:

    ChemDraw CT (Connection Table) +CML Reaction files +MDL Molfile V3000 +MDL Rxn files +Open Babel free-form fractional (crystallographic coordinates) +Open Babel fastsearch database format +Open Babel fingerprint formats +PCModel format +YASARA.org YOB format +Turbomole +Improved CML support +Improved Gaussian 98/03 support +Improved SMILES import / export

    +
    +
    +
  • +
  • +
    Import-Only:

    PubChem XML

    +
    +
    +
  • +
  • +
    Export-Only:

    MPQC input +Open Babel “copy” format (i.e., copy the raw input file) +Sybyl MPD descriptor format +IUPAC InChI descriptor

    +
    +
    +
  • +
  • +
    Changed formats:
      +
    • MMADS - eliminated

    • +
    • bin - OpenEye binary v 1, eliminated

    • +
    • GROMOS96 - changed from separate g96a & g96nm types to a +unified g96 type. Defaults to output Angstroms, Use -xn +to output nm.

    • +
    • Titles - eliminated – can be produced with SMILES -xt

    • +
    +
    +
    +
  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob201.html b/docs/ReleaseNotes/ob201.html new file mode 100644 index 00000000..fd2e7242 --- /dev/null +++ b/docs/ReleaseNotes/ob201.html @@ -0,0 +1,593 @@ + + + + + + + + + + + Open Babel 2.0.1 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.0.1#

+

Released on 2006-04-17.

+
+

What’s new from 2.0.0#

+
    +
  • Support for dynamic building on the Cygwin environment. This fixes a +long-standing problem that made Open Babel useless to Cygwin users.

  • +
  • Fixed a variety of memory leaks and improved overall memory use. +More work to reduce memory consumption is underway for the 2.1 release.

  • +
  • Improved Perl and Python scripting wrappers, including many +bug-fixes.

  • +
  • Fixes to the “make check” test suite, which should prevent problems +running before babel is installed.

  • +
  • Fixes compilation problems with AIX, Fedora Core 4, and the +newly-released GCC-4.1.

  • +
  • Fixed several reported compilation problems with Windows builds +using VisualC++.

  • +
  • Fixed several reported crashes.

  • +
  • Fixed problems with the Turbomole format, thanks to Mikael +Johansson.

  • +
  • Fixed a bug with PDB files with coordinates < -1000 Ang.

  • +
  • Improved support for the Sybyl mol2 format, thanks to Kevin Parkes.

  • +
  • Fixed a variety of typos in the API documentation.

  • +
  • Countless bug fixes.

  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob202.html b/docs/ReleaseNotes/ob202.html new file mode 100644 index 00000000..846154d6 --- /dev/null +++ b/docs/ReleaseNotes/ob202.html @@ -0,0 +1,584 @@ + + + + + + + + + + + Open Babel 2.0.2 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.0.2#

+

Released on 2006-07-24.

+
+

What’s new from 2.0.1#

+
    +
  • Substantial fixes to the SMILES and SMARTS parsing support, thanks +to a variety of bug reports.

  • +
  • A variety of fixes to aromaticity perception and Kekule form +assignment.

  • +
  • Fixed gzip support, broken in version 2.0.1 inadvertantly.

  • +
  • Output a warning when a multi-molecule files is converted to a +single-molecule format.

  • +
  • Better support for command-line tools such as obgrep on Cygwin.

  • +
  • Fixed a variety of crashes.

  • +
  • Countless other bug fixes.

  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob210.html b/docs/ReleaseNotes/ob210.html new file mode 100644 index 00000000..ed0002c2 --- /dev/null +++ b/docs/ReleaseNotes/ob210.html @@ -0,0 +1,661 @@ + + + + + + + + + + + Open Babel 2.1.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.1.0#

+

Released on 2007-04-07.

+
+

What’s new from 2.0.2#

+
    +
  • +
    Now handles molecules with >65536 atoms or bonds. Some PDB entries,

    in particular have such large molecular systems.

    +
    +
    +
  • +
  • +
    New features for molecular mechanics force fields, including energy

    evaluation and geometry optimization. Ultimately, this will enable +coordinate generation and refinement for SMILES and other formats. +(A flexible force field framework is available for developers.)

    +
    +
    +
  • +
  • Implementation of the open source Ghemical all atom force field.

  • +
  • +
    Framework for canonical atom numbering, including a new canonical

    SMILES format.

    +
    +
    +
  • +
  • New support for Ruby and Java interfaces to the Open Babel library.

  • +
  • Improved scripting interfaces through Perl and Python, including the new “pybel” +module with a more Python-like syntax.

  • +
  • +
    Automatically handles reading from text files with DOS or Mac OS 9

    line endings.

    +
    +
    +
  • +
  • +
    Many enhancements to the Open Babel API: See the Developers API Notes for

    more information.

    +
    +
    +
  • +
  • +
    New obenergy tool - evaluate the energy of a molecule using

    molecular mechanics.

    +
    +
    +
  • +
  • +
    New obminimize tool - optimize the geometry of structures using

    molecular mechanics.

    +
    +
    +
  • +
  • +
    Improved obprop tool - outputs a variety of molecular properties including

    Topological Polar Surface Area (TPSA), Molar Refractivity (MR), and logP.

    +
    +
    +
  • +
  • +
    The babel tool can now setting program keywords for some quantum mechanics

    formats from the command-line, including: GAMESS, Gaussian, Q-Chem, and +MOPAC. (This feature can also be accessed by developers and +expanded to other formats.)

    +
    +
    +
  • +
  • +
    New options for babel tool, including:

    -e for continuing after errors +-k for translating computational keywords (e.g., GAMESS, Gaussian, etc.) +–join to join all input molecules into a single output +–separate to separate disconnected fragments into separate molecular records +-C (combine mols in first file with others having the same name) +–property to add or replace a property (e.g., in an MDL SD file) +–title to add or replace the molecule title +–addtotitle to append text to the current molecule title +–addformula to append the molecular formula to the current title

    +
    +
    +
  • +
  • Many more bug fixes and small feature improvements.

  • +
+
+
+

New File Formats#

+
+
+
Import & Export:

Carine’s ASCII Crystal (ACR) +ChemDraw CDX & CDXML +Crystallographic Interchange Format (CIF) +Fasta Sequence +Thermo Format

+
+
Import:

Gaussian fchk +InChI

+
+
Export:

Open Babel MolReport +Titles

+
+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob211.html b/docs/ReleaseNotes/ob211.html new file mode 100644 index 00000000..45e40be1 --- /dev/null +++ b/docs/ReleaseNotes/ob211.html @@ -0,0 +1,619 @@ + + + + + + + + + + + Open Babel 2.1.1 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.1.1#

+

Released on 2007-07-07.

+
+

What’s new from 2.1.0#

+
    +
  • +
    Improved scripting support, including dictionary-support for

    OBGenericData in pybel, casting from OBUnitCell, etc. Improved +access to OBRings from OBMol.GetSSSR().

    +
    +
    +
  • +
  • +
    Added support for descriptors (e.g., PSA, logP) from scripting

    interfaces.

    +
    +
    +
  • +
  • +
    Added support for reading all PDB records (beyond current atom and

    bond connections). Records not handled directly by Open Babel are +added as key/value pairs through OBPairData.

    +
    +
    +
  • +
  • +
    Added a new configure flag –with-pkglibdir to allow Linux package

    distributors to define version-specific directories for file format +plugins.

    +
    +
    +
  • +
  • +
    Fixed a bug which would not output chirality information for

    canonical SMILES with 3D files.

    +
    +
    +
  • +
  • +
    Fixed problems with new line-ending code. Now correctly reads DOS

    and old Mac OS files with non-UNIX line endings.

    +
    +
    +
  • +
  • +
    Correctly rejects SMILES with incorrect ring closures. Thanks to

    Craig James for the report.

    +
    +
    +
  • +
  • Fixed a crash when output to canonical SMILES.

  • +
  • Fixed a crash when converting from SMILES to InChI.

  • +
  • Fixed a crash when reading some PDB files on Windows.

  • +
  • Fixed a crash when reading invalid MDL/SDF files.

  • +
  • Fixed a bug which made it impossible to read some GAMESS files.

  • +
  • Fixed a problem when reading ChemDraw CDX files on Mac OS X.

  • +
  • A large number of additional fixes, including some rare crashes.

  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob220.html b/docs/ReleaseNotes/ob220.html new file mode 100644 index 00000000..3855c84a --- /dev/null +++ b/docs/ReleaseNotes/ob220.html @@ -0,0 +1,658 @@ + + + + + + + + + + + Open Babel 2.2.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.2.0#

+

Released on 2008-07-04.

+
+

What’s new from 2.1.1#

+
    +
  • +
    New support for 3D coordinate generation using the OBBuilder class.

    Note that this code directly supports non-chiral compounds +Stereochemistry may or may not be supported in this release

    +
    +
    +
  • +
  • +
    Significantly faster force fields (up to 200x faster) and support

    for constrained optimization.

    +
    +
    +
  • +
  • New force fields, including complete UFF, MMFF94, and MMFF94s implementations.

  • +
  • Monte Carlo conformer search support, including a new obconformer tool.

  • +
  • Unified framework for plugin classes, including easy-to program file +formats, descriptors, filters, force fields, fingerprints, etc.

  • +
  • A new “descriptor” plugin framework for QSAR descriptors, etc. +Initial descriptors include hydrogen-bond donors, acceptors, +octanol/water partition, topological polar surface area, molar +refractivity, molecular weight, InChI, SMARTS, titles, Lipinski +Rule of Five, etc.

  • +
  • A new “filter” plugin framework for selecting molecules by title, +molecular weight, etc.

  • +
  • Facility to add new “ops”, commandline options or operations on the +conversion process as plugin code. +Initial operations include 3D coordinate generation, tautomer +standarization, and addition of polar hydrogens.

  • +
  • Code for integrating Open Babel and the BOOST graph library.

  • +
  • Improved scripting support, including new bindings for C# and +improved Java, Ruby, Python, and Perl bindings.

  • +
  • Space group support and thoroughly revised and improved CIF format.

  • +
  • Initial support for 3D point group symmetry perception.

  • +
  • Improved support for “grids” or “cubes” of molecular data, such as +from quantum mechanics programs. (See below for supported file +formats.)

  • +
  • Initial support for reading trajectories and animations.

  • +
  • Improved support for reaction formats, including CML, RXN, and +Reaction SMILES.

  • +
  • Improved residue handling in PDB and Mol2 formats.

  • +
  • Improved pH-dependent hydrogen addition.

  • +
  • +
    Latest released version of the InChI library, including use of the

    latest “preferred” options for InChI generation.

    +
    +
    +
  • +
  • Support for the cross-platform CMake build system.

  • +
  • +
    File format modules are now installed in a version-specific

    directory on unix, preventing problems between 2.2.x and 2.1.x (or +older) plugin libraries.

    +
    +
    +
  • +
  • +
    Framework to support “aliases” for group abbreviations, partially

    implemented for MDL formats.

    +
    +
    +
  • +
  • Many more bug fixes and small feature improvements.

  • +
+
+
+

New File Formats#

+
+
Import & Export:

Chemkin +Gaussian Cube +Gaussian Z-matrix +GROMACS xtc trajectories +MCDL +mmCIF +OpenDX cube (e.g., from APBS) +Reaction SMILES

+
+
Import only:

Accelrys/MSI Cerius II MSI text format +ADF output +ADF Tape41 ASCII data +GAMESS-UK input and output +Molden structure +PNG (for embedded chemical data) +PQR

+
+
Export only:

MSMS input +ADF input +InChI Keys

+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob221.html b/docs/ReleaseNotes/ob221.html new file mode 100644 index 00000000..5cb36dc8 --- /dev/null +++ b/docs/ReleaseNotes/ob221.html @@ -0,0 +1,596 @@ + + + + + + + + + + + Open Babel 2.2.1 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.2.1#

+

Released on 2009-03-01.

+
+

What’s new from 2.2.0#

+

This release represents a major bug-fix release and is a stable +upgrade, strongly recommended for all users of Open Babel. While there +may not be many new features, many crashes and other bugs have been +fixed since 2.2.0.

+
    +
  • Improved scripting interfaces, including Python 3 support and improved +Java and C# support.

  • +
  • Added support for MACCS fingerprints. Thanks to the RDKit project.

  • +
  • Many fixes and enhancements to the force field code. In particular, +the UFF force field implementation should handle many more molecules.

  • +
  • Improved 3D coordinate generation, particularly with ring +fragments. You can give this a try with the obgen utility.

  • +
  • Fixed a variety of PDB import errors with atom types.

  • +
  • Added support for reading charges and radii from PQR file formats.

  • +
  • Added support for reading and writing unit cells in PDB formats.

  • +
  • New “output” file format for taking generic “.out”, “.log”, and +“.dat” files and reading with appropriate file type based on +contents. Currently works extremely well for quantum chemistry +packages.

  • +
  • Added improved error handling and reporting when unable to load file +formats.

  • +
  • Improved CIF file format support.

  • +
  • Many, many, many additional bug fixes and small enhancements.

  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob222.html b/docs/ReleaseNotes/ob222.html new file mode 100644 index 00000000..eff3fcb7 --- /dev/null +++ b/docs/ReleaseNotes/ob222.html @@ -0,0 +1,605 @@ + + + + + + + + + + + Open Babel 2.2.2 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.2.2#

+

Released on 2009-07-04.

+
+

What’s new from 2.2.1#

+

This release represents a major bug-fix release and is a stable +upgrade, strongly recommended for all users of Open Babel. While there +may not be many new features, many crashes and other bugs have been +fixed since 2.2.1.

+
    +
  • Upgraded to the new InChI 1.02 release to produce standardized InChI +and InChIKey output.

  • +
  • Fixed many stereochemistry errors when reading/writing SMILES. This +is part of a larger project which will be finished in the 2.3 +release.

  • +
  • Fixed compilation and installation on Cygwin and MinGW platforms.

  • +
  • Significantly improved aromaticity and Kekule bond assignment.

  • +
  • Improved 2D -> 3D coordinate generation

  • +
  • Improved coordinate generation using the –gen3d command-line +operation

  • +
  • Improved performance for coordinate generation.

  • +
  • New –fillUC command-line operation for babel.

  • +
  • Fixes to pH-dependent hydrogen addition.

  • +
  • Added support for reading vibrational data from Molden, Molpro, and +NWChem output files.

  • +
  • Updated atomic radii from recent theoretical calculations.

  • +
  • Fixed bug when reading gzip-compressed Mol2 or XML files.

  • +
  • Close files after an error. Fixes a bug with Pybel where files would +remain open.

  • +
  • Many more bug fixes and small feature improvements.

  • +
+
+
+

New File Formats#

+

Import & Export: +- Molpro input and output. +- VASP coordinate files (CONTCAR and POSCAR).

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob223.html b/docs/ReleaseNotes/ob223.html new file mode 100644 index 00000000..27970a61 --- /dev/null +++ b/docs/ReleaseNotes/ob223.html @@ -0,0 +1,582 @@ + + + + + + + + + + + Open Babel 2.2.3 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.2.3#

+

Released on 2009-07-31.

+
+

What’s new from 2.2.2#

+

This release represents an important bug-fix upgrade, strongly recommended +for all users of Open Babel.

+
    +
  • Fixed bug in fingerprints in 2.2.2, where the default fingerprint +format and bit length was changed inadvertently.

  • +
  • Fixed detection of shared_ptr in tr1/memory.

  • +
  • Fixed additional aromaticity / Kekule assignment bugs.

  • +
  • Fixed several bugs in the MMCIF format.

  • +
  • Additional bug fixes.

  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob230.html b/docs/ReleaseNotes/ob230.html new file mode 100644 index 00000000..546293f3 --- /dev/null +++ b/docs/ReleaseNotes/ob230.html @@ -0,0 +1,636 @@ + + + + + + + + + + + Open Babel 2.3.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.3.0#

+

Released on 2010-10-23.

+

This release represents a major update and should be a stable upgrade, +strongly recommended for all users of Open Babel. Highlights include a +completely rewritten stereochemistry engine, Spectrophore fingerprint +generation, 2D depiction, improved 3D coordinate generation, conformer +searching, and more. Many formats are improved or added, including +CIF, PDBQT, SVG, and more. Improved developer API and scripting +support and many, many bug fixes are also included.

+
+

What’s new from 2.2.3#

+
    +
  • Completely rewritten stereochemistry perception, including support +for tetrahedral, square planar, and higher-order stereochemistry.

  • +
  • Dramatically improved canonicalization algorithm (Note that in general, canonical SMILES have changed since the 2.2.x release.)

  • +
  • 2D depiction, including SVG vector graphics generation using code from MCDL.

  • +
  • New Spectrophore generation, contributed by Silicos NV.

  • +
  • New ChargeMethod API including support for partial charge assignment +from Gasteiger, MMFF94, QEq, QTPIE methods and plugin interface for +adding more.

  • +
  • Improved 3D coordinate generation.

  • +
  • New conformer generation framework, including support for diverse +conformer generation and genetic algorithm lowest-energy searching.

  • +
  • Improved user documentation.

  • +
  • Improved aromaticity / Kekule bond assignment.

  • +
  • Improved unit test suite using the CMake-based CTest program.

  • +
  • Improved support for crystallographic unit cells (e.g., in CIF format).

  • +
  • Improved UFF force field method, including hypervalent 5, 6, 7 and higher coordination numbers.

  • +
  • Support for the GAFF (Generalized Amber Force Field) method.

  • +
  • Support for reading geometry optimizations as multiple conformers +from Gaussian, GAMESS-US, and other quantum chemistry packages.

  • +
  • Support for reading molecular orbital energies from quantum chemistry formats.

  • +
  • Several memory leaks fixed.

  • +
  • Fixed many compiler warnings.

  • +
  • Fixed support for MinGW and Cygwin environments.

  • +
  • Fixed bugs with Gaussian 09 output files.

  • +
  • Latest released version of the InChI library (1.0.3) generating standard InChI.

  • +
  • Many more bug fixes and small feature improvements.

  • +
+
+
+

New Command-Line Operations#

+
    +
  • –canonical: Output atoms in canonical order for any file format (i.e., not just SMILES)

  • +
  • –conformer: Run a conformer search on the input molecules (has many options)

  • +
  • –gen2D: Generate a 2D depiction of the molecule

  • +
  • –partialcharge <model>: Use the partial charge model supplied to +generate charges (i.e., instead of default Gasteiger sigma model)

  • +
  • –sort <descriptor>: Sort molecules by a specified descriptor

  • +
  • –unique: Only output unique molecules (as determined by InChI generation)

  • +
+
+
+

New File Formats#

+

Import & Export: +- DL-POLY CONFIG +- FHIaims XYZ +- PDBQT

+

Import only: +- DL-POLY HISTORY +- GULP output +- PWscf output +- Text

+

Export only: +- MNA (Multilevel Neighborhoods of Atoms) +- SVG vector graphics

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob231.html b/docs/ReleaseNotes/ob231.html new file mode 100644 index 00000000..f22c159e --- /dev/null +++ b/docs/ReleaseNotes/ob231.html @@ -0,0 +1,614 @@ + + + + + + + + + + + Open Babel 2.3.1 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.3.1#

+

Released on 2011-10-14.

+

This release represents a major bug-fix release and is a stable upgrade, strongly recommended for all users of Open Babel. Many bugs and enhancements have been added since the 2.3.0 release.

+

After 10 years, we finally published a paper discussing Open Babel. Please consider citing this work if you publish work which used Open Babel: Noel M. O’Boyle , Michael Banck , Craig A. James , Chris Morley , Tim Vandermeersch and Geoffrey R. Hutchison. “Open Babel: An open chemical toolbox.” Journal of Cheminformatics 2011, 3:33. http://www.jcheminf.com/content/3/1/33

+
+

What’s new from 2.3.0#

+
    +
  • Better support for unknown stereochemistry, including a “wobbly” bond in 2D depiction.

  • +
  • Many fixes for rare bugs with stereochemical conversions, including unusual valences.

  • +
  • Significantly improved 2D depiction code, improving performance and cis/trans stereochemical accuracy

  • +
  • Added support for direct 2D depiction to PNG files using the Cairo library, if available.

  • +
  • PNG files from Open Babel contain molecular information and can be read to give the MDL Molfile.

  • +
  • SVG files with 2D depiction can now include a grid of molecules with embedded JavaScript to zoom and scroll.

  • +
  • Molecular formulas now include the total charge (e.g., HCO2-)

  • +
  • Added the EEM partial charge model from Bultinck, et. al.

  • +
  • Fixed problems with FastSearch databases larger than 4GB, now checking for large files.

  • +
  • Improved performance with force field minimization, particularly the UFF and GAFF methods.

  • +
  • Several MMFF94 atom typing bugs fixed.

  • +
  • Updated GAFF parameters from the AmberTools distribution.

  • +
  • Improvements in 3D coordinate generation, particularly more accurate sp3 bond angles

  • +
  • Fixed tests for auto-typing molecules with force fields when running through different isomers.

  • +
  • Improvements in scripting bindings, particularly Python, Ruby, and Java

  • +
  • Pybel now uses the built-in 2D depiction, and no longer needs OASA.

  • +
  • Added initial support for MM3 atom typing with the Tinker package

  • +
  • Significant bug fixes for the PDBQT format.

  • +
  • Reading FASTA files can now generate 3D coordinates for single-stranded DNA in addition to the default double-strand.

  • +
  • Support for reading/writing unit cell information from MOPAC files.

  • +
  • Support for re-numbering SMILES by specifying the first and last atoms with -xf and -xl flags.

  • +
  • Better support for InChI -> InChI key generation by direct conversion, rather than re-perception of the InChI.

  • +
  • Fix for rare stack overflow crash in SMARTS perception.

  • +
  • Improved UNIX man pages.

  • +
  • Many bug fixes and small enhancements

  • +
+
+
+

New File Formats#

+
    +
  • Import and Export:

  • +
+

** Gromacs GRO +* Import: +** ABINIT +** XCrySDen XSF +* Export: +** InChI Key

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob240.html b/docs/ReleaseNotes/ob240.html new file mode 100644 index 00000000..9f7bcc49 --- /dev/null +++ b/docs/ReleaseNotes/ob240.html @@ -0,0 +1,681 @@ + + + + + + + + + + + Open Babel 2.4.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 2.4.0#

+

Released on 2016-09-21.

+

Note that this release deprecates the babel executable in favor of obabel. A future release will remove babel entirely. For information on the differences, please see http://openbabel.org/docs/current/Command-line_tools/babel.html.

+
+

New file formats#

+
    +
  • DALTON output files (read only) and DALTON input files (read/write) (Casper Steinmann)

  • +
  • JSON format used by ChemDoodle (read/write) (Matt Swain)

  • +
  • JSON format used by PubChem (read/write) (Matt Swain)

  • +
  • LPMD’s atomic configuration file (read/write) (Joaquin Peralta)

  • +
  • The format used by the CONTFF and POSFF files in MDFF (read/write) (Kirill Okhotnikov)

  • +
  • ORCA output files (read only) and ORCA input files (write only) (Dagmar Lenk)

  • +
  • ORCA-AICCM’s extended XYZ format (read/write) (Dagmar Lenk)

  • +
  • Painter format for custom 2D depictions (write only) (Noel O’Boyle)

  • +
  • Siesta output files (read only) (Patrick Avery)

  • +
  • Smiley parser for parsing SMILES according to the OpenSMILES specification (read only) (Tim Vandermeersch)

  • +
  • STL 3D-printing format (write only) (Matt Harvey)

  • +
  • Turbomole AOFORCE output (read only) (Mathias Laurin)

  • +
  • A representation of the VDW surface as a point cloud (write only) (Matt Harvey)

  • +
+
+
+

New file format capabilities and options#

+
    +
  • AutoDock PDBQT: Options to preserve hydrogens and/or atom names (Matt Harvey)

  • +
  • CAR: Improved space group support in .car files (kartlee)

  • +
  • CDXML: Read/write isotopes (Roger Sayle)

  • +
  • CIF: Extract charges (Kirill Okhotnikov)

  • +
  • CIF: Improved support for space-groups and symmetries (Alexandr Fonari)

  • +
  • DL_Poly: Cell information is now read (Kirill Okhotnikov)

  • +
  • Gaussian FCHK: Parse alpha and beta orbitals (Geoff Hutchison)

  • +
  • Gaussian out: Extract true enthalpy of formation, quadrupole, polarizability tensor, electrostatic potential fitting points and potential values, and more (David van der Spoel)

  • +
  • MDL Mol: Read in atom class information by default and optionally write it out (Roger Sayle)

  • +
  • MDL Mol: Support added for ZBO, ZCH and HYD extensions (Matt Swain)

  • +
  • MDL Mol: Implement the MDL valence model on reading (Roger Sayle)

  • +
  • MDL SDF: Option to write out an ASCII depiction as a property (Noel O’Boyle)

  • +
  • mmCIF: Improved mmCIF reading (Patrick Fuller)

  • +
  • mmCIF: Support for atom occupancy and atom_type (Kirill Okhotnikov)

  • +
  • Mol2: Option to read UCSF Dock scores (Maciej Wójcikowski)

  • +
  • MOPAC: Read z-matrix data and parse (and prefer) ESP charges (Geoff Hutchison)

  • +
  • NWChem: Support sequential calculations by optionally overwriting earlier ones (Dmitriy Fomichev)

  • +
  • NWChem: Extract info on MEP(IRC), NEB and quadrupole moments (Dmitriy Fomichev)

  • +
  • PDB: Read/write PDB insertion codes (Steffen Möller)

  • +
  • PNG: Options to crop the margin, and control the background and bond colors (Fredrik Wallner)

  • +
  • PQR: Use a stored atom radius (if present) in preference to the generic element radius (Zhixiong Zhao)

  • +
  • PWSCF: Extend parsing of lattice vectors (David Lonie)

  • +
  • PWSCF: Support newer versions, and the ‘alat’ term (Patrick Avery)

  • +
  • SVG: Option to avoid addition of hydrogens to fill valence (Lee-Ping)

  • +
  • SVG: Option to draw as ball-and-stick (Jean-Noël Avila)

  • +
  • VASP: Vibration intensities are calculated (Christian Neiss, Mathias Laurin)

  • +
  • VASP: Custom atom element sorting on writing (Kirill Okhotnikov)

  • +
+
+
+

Other new features and improvements#

+
    +
  • 2D layout: Improved the choice of which bonds to designate as hash/wedge bonds around a stereo center (Craig James)

  • +
  • 3D builder: Use bond length corrections based on bond order from Pyykko and Atsumi (https://doi.org/10.1002/chem.200901472) (Geoff Hutchison)

  • +
  • 3D generation: “–gen3d”, allow user to specify the desired speed/quality (Geoff Hutchison)

  • +
  • Aromaticity: Improved detection (Geoff Hutchison)

  • +
  • Canonicalisation: Changed behaviour for multi-molecule SMILES. Now each molecule is canonicalized individually and then sorted. (Geoff Hutchison/Tim Vandermeersch)

  • +
  • Charge models: “–print” writes the partial charges to standard output after calculation (Geoff Hutchison)

  • +
  • Conformations: Confab, the systematic conformation generator, has been incorporated into Open Babel (David Hall/Noel O’Boyle)

  • +
  • Conformations: Initial support for ring rotamer sampling (Geoff Hutchison)

  • +
  • Conformer searching: Performance improvement by avoiding gradient calculation and optimising the default parameters (Geoff Hutchison)

  • +
  • EEM charge model: Extend to use additional params from https://doi.org/10.1186/s13321-015-0107-1 (Tomáš Raček)

  • +
  • FillUnitCell operation: Improved behavior (Patrick Fuller)

  • +
  • Find duplicates: The “–duplicate” option can now return duplicates instead of just removing them (Chris Morley)

  • +
  • GAFF forcefield: Atom types updated to match Wang et al. J. Comp. Chem. 2004, 25, 1157 (Mohammad Ghahremanpour)

  • +
  • New charge model: EQeq crystal charge equilibration method (a speed-optimized crystal-focused charge estimator, http://pubs.acs.org/doi/abs/10.1021/jz3008485) (David Lonie)

  • +
  • New charge model: “fromfile” reads partial charges from a named file (Matt Harvey)

  • +
  • New conversion operation: “changecell”, for changing cell dimensions (Kirill Okhotnikov)

  • +
  • New command-line utility: “obthermo”, for extracting thermochemistry data from QM calculations (David van der Spoel)

  • +
  • New fingerprint: ECFP (Geoff Hutchison/Noel O’Boyle/Roger Sayle)

  • +
  • OBConversion: Improvements and API changes to deal with a long-standing memory leak (David Koes)

  • +
  • OBAtom::IsHBondAcceptor(): Definition updated to take into account the atom environment (Stefano Forli)

  • +
  • Performance: Faster ring-finding algorithm (Roger Sayle)

  • +
  • Performance: Faster fingerprint similarity calculations if compiled with -DOPTIMIZE_NATIVE=ON (Noel O’Boyle/Jeff Janes)

  • +
  • SMARTS matching: The “-s” option now accepts an integer specifying the number of matches required (Chris Morley)

  • +
  • UFF: Update to use traditional Rappe angle potential (Geoff Hutchison)

  • +
+
+
+

Language bindings#

+
    +
  • Bindings: Support compiling only the bindings against system libopenbabel (Reinis Danne)

  • +
  • Java bindings: Add example Scala program using the Java bindings (Reinis Danne)

  • +
  • New bindings: PHP (Maciej Wójcikowski)

  • +
  • PHP bindings: BaPHPel, a simplified interface (Maciej Wójcikowski)

  • +
  • Python bindings: Add 3D depiction support for Jupyter notebook (Patrick Fuller)

  • +
  • Python bindings, Pybel: calccharges() and convertdbonds() added (Patrick Fuller, Björn Grüning)

  • +
  • Python bindings, Pybel: compress output if filename ends with .gz (Maciej Wójcikowski)

  • +
  • Python bindings, Pybel: Residue support (Maciej Wójcikowski)

  • +
+
+
+

Development/Build/Install Improvements#

+
    +
  • Version control: move to git and GitHub from subversion and SourceForge

  • +
  • Continuous integration: Travis for Linux builds and Appveyor for Windows builds (David Lonie and Noel O’Boyle)

  • +
  • Python installer: Improvements to the Python setup.py installer and “pip install openbabel” (David Hall, Matt Swain, Joshua Swamidass)

  • +
  • Compilation speedup: Speed up compilation by combining the tests (Noel O’Boyle)

  • +
  • MacOSX: Support compiling with libc++ on MacOSX (Matt Swain)

  • +
+
+
+

Cast of contributors#

+

Alexandr Fonari, Anders Steen Christensen, Andreas Kempe, arkose, Benoit Leblanc, Björn Grüning, Casper Steinmann, Chris Morley, Christoph Willing, Craig James, Dagmar Lenk, David Hall, David Koes, David Lonie, David van der Spoel, Dmitriy Fomichev, Fulvio Ciriaco, Fredrik Wallner, Geoff Hutchison, Heiko Becker, Itay Zandbank, Jean-Noel Avila, Jeff Janes, Joaquin Peralta, Joshua Swamidass, Julien Nabet, Karol Langner, Karthik Rajagopalan, Katsuhiko Nishimra, Kevin Horan, Kirill Okhotnikov, Lee-Ping, Matt Harvey, Maciej Wójcikowski, Marcus Hanwell, Mathias Laurin, Matt Swain, Mohamad Mohebifar, Mohammad Ghahremanpour, Noel O’Boyle, Patrick Avery, Patrick Fuller, Paul van Maaren, Peng Bai, Philipp Thiel, Reinis Danne, Ronald Cohen, Scott McKechnie, Stefano Forli, Steve Roughley, Steffen Moeller, Tim Vandermeersch, Tomas Racek, Tomáš Trnka, Tor Colvin, Torsten Sachse, Yi-Shu Tu, Zhixiong Zhao

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob300.html b/docs/ReleaseNotes/ob300.html new file mode 100644 index 00000000..07a1c972 --- /dev/null +++ b/docs/ReleaseNotes/ob300.html @@ -0,0 +1,862 @@ + + + + + + + + + + + Open Babel 3.0.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 3.0.0#

+

Released on 2019-10-10.

+

This is a major release. It fixes some long-standing issues affecting performance in terms of chemical accuracy and speed, and all users are recommended to upgrade. It also removes deprecated components and breaks the API in a few places. For information on migrating from the previous version, please see Updating to Open Babel 3.0 from 2.x.

+
+

Notable changes#

+
    +
  • The babel program has been removed, and the replacement obabel should be used instead. The obabel program fixes some flaws with the original babel (not least that the user could accidentally overwrite an input file) and so has been preferred for many years.

  • +
  • The Python bindings are now accessed via “from openbabel import pybel” or “from openbabel import openbabel”.

  • +
  • Under the hood, the code for handling implicit hydrogens and kekulization has been entirely replaced in order to address problems with the original approach that had resulted in multiple bug reports over the years. As well as being accurate, the new approach is much faster.

  • +
  • The speed of reading and writing SMILES has been improved by more than 50-fold.

  • +
  • A faster and more accurate fragment-based 3D coordinate generation code has been added, part of Google Summer of Code 2018 and 2019, detailed in *J. Cheminf.* (2019) **11**, Art. 49.<https://doi.org/10.1186/s13321-019-0372-5>

  • +
  • New functionality in the API:

    +
      +
    • A new class for managing reactions stored as OBMols (OBReactionFacade)

    • +
    • A new method to copy part of an OBMol into a new OBMol (OBMol::CopySubstructure)

    • +
    +
  • +
+
+
+

New file formats#

+
    +
  • Add basic support for RInChI (Reaction InChI) (by baoilleach, PR#1667)

  • +
  • Added basic ADF Band and ADF DFTB readers (by psavery, PR#1793)

  • +
  • Add support for COF format (Culgi object file) plus tests (by pbecherer, PR#1944)

  • +
  • Add maeparser support to openbabel (by lorton, PR#1993)

  • +
+
+
+

New file format capabilities and options#

+
    +
  • Improve svg ball and stick (by ghutchis, PR#360)

  • +
  • Add an option to the canonical SMILES format to specify the timeout. (by timvdm, PR#386)

  • +
  • Allow to set space group origin in PDB CRYST1 section (by afonari, PR#1558)

  • +
  • Parse _space_group_symop_operation_xyz in mmcif (by afonari, PR#1578)

  • +
  • Improve performance of SMILES parser (by baoilleach, PR#1589)

  • +
  • Handle undervalent atoms and radicals in Mol files and Smiles (by baoilleach, PR#1626)

  • +
  • Add support for agents to RXN file format (by baoilleach, PR#1656)

  • +
  • Allow RSMI format to read partial reactions (by baoilleach, PR#1660)

  • +
  • Add support for %(NNN) notation for SMILES ring closures (by baoilleach, PR#1677)

  • +
  • By default, don’t perceive stereo when reading SMILES, but have the option (by baoilleach, PR#1696)

  • +
  • Speed up the SMILES writer (by baoilleach, PR#1699)

  • +
  • Faster SMILES: Replace std::endl by “n” (by baoilleach, PR#1706)

  • +
  • Speed up SMILES writer by replacement of SSSR in SMILES writer with a bounded BFS (by baoilleach, PR#1715)

  • +
  • Speed up SMILES reading: don’t pre-scan the SMILES string for illegal characters (by baoilleach, PR#1716)

  • +
  • Minor speedup in SMILES: avoid repeated calls to IsOption by caching some options (by baoilleach, PR#1718)

  • +
  • Read reaction map from ChemDraw CDX files (by CamAnNguyen, PR#1720)

  • +
  • Two minor SMILES speed improvements (by baoilleach, PR#1725)

  • +
  • Speed up SMILES reading: Moved more inside the switch statement for SMILES parsing (by baoilleach, PR#1727)

  • +
  • Speed up SMILES reading: In the SMILES reader, avoid allocating a BUFSIZE buffer, and the associated string copy (by baoilleach, PR#1728)

  • +
  • Speed up SMILES writing: Make generation of the SMILES atom order vector optional (by baoilleach, PR#1712)

  • +
  • Add support for using atom classes as Tinker atom types. (by ghutchis, PR#1734)

  • +
  • Gaussformat reading electrostatic potentials (by mmghahremanpour, PR#1748)

  • +
  • Reading Exact Polairzability from Gaussian log file (by mmghahremanpour, PR#1751)

  • +
  • Gaussformat reading multiple charge models (by mmghahremanpour, PR#1752)

  • +
  • Write atom occupancy (if present) to PDB (by afonari, PR#1799)

  • +
  • Update reaction support in ChemDraw (by baoilleach, PR#1878)

  • +
  • ADF DFTB: Add new detection string for ADF 2018 (by psavery, PR#1888)

  • +
  • Update Gaussian format (by e-kwsm, PR#1969)

  • +
  • Update URLs of specification of gromacs (by e-kwsm, PR#1974)

  • +
  • Update URL of specification of MDL MOL (by e-kwsm, PR#1980)

  • +
  • Add SMILES support for elements specified by 3-digit number, e.g. [#101] (by baoilleach, PR#1997)

  • +
+
+
+

Other new features and improvements#

+
    +
  • Include original when there are zero rotatable bonds in confab (by cowsandmilk, PR#370)

  • +
  • Improve thread safety for global objects (by baoilleach, PR#381)

  • +
  • Change the OBAromTyper from using SMARTS patterns to a switch statement (rebased) (by baoilleach, PR#1545)

  • +
  • Keep count of implicit hydrogens instead of inferring them (by baoilleach, PR#1576)

  • +
  • Obthermo update patch (by mmghahremanpour, PR#1598)

  • +
  • Improve performance of element handling (by baoilleach, PR#1601)

  • +
  • Implement the Daylight aromaticity model as described by John Mayfield (by baoilleach, PR#1638)

  • +
  • Allow multiple agents in OBReaction (by baoilleach, PR#1640)

  • +
  • Clarify python examples (by theavey, PR#1657)

  • +
  • Add support for wrapping GetRGB() call to return r, g, b params. (by ghutchis, PR#1670)

  • +
  • Adding missing manpages (by merkys, PR#1678)

  • +
  • Expose obfunctions api through python bindings (by cstein, PR#1697)

  • +
  • Avoid logging messages that are taking time (by baoilleach, PR#1714)

  • +
  • warning/error messages for fastindex when the structure file is compressed (by adalke, PR#1733)

  • +
  • Refactor atom class to being data on an atom rather than on a molecule (by baoilleach, PR#1741)

  • +
  • Add Molecule.make2D function (by eloyfelix, PR#1765)

  • +
  • Change the behavior of OBMol.Separate so that it preserves atom order (by baoilleach, PR#1773)

  • +
  • When calling OBMol.Separate, preserve whether aromaticity has been perceived (by baoilleach, PR#1800)

  • +
  • Add OBMol::CopySubstructure (by baoilleach, PR#1811)

  • +
  • Add OBMol::SetChainsPerceived(false) (by baoilleach, PR#1813)

  • +
  • Add stereo + obfunctions + kekulize to ruby binding (by CamAnNguyen, PR#1824)

  • +
  • Generate useful error messages if plugins can’t be found. (by dkoes, PR#1826)

  • +
  • Allow public access to retrieve gradients (by ghutchis, PR#1833)

  • +
  • Re-enable vector.clear() to allow wrapped std::vectors to be reused (by baoilleach, PR#1834)

  • +
  • Implement reaction handling as part of OBMol (by baoilleach, PR#1836)

  • +
  • Added rotors as a descriptor/filter. (by ghutchis, PR#1846)

  • +
  • Keep aromaticity in EndModify() (by baoilleach, PR#1847)

  • +
  • Fragment-based coordinate generation (by n-yoshikawa, PR#1850)

  • +
  • Rebuild OBMM tool for interactive MM optimization (by ghutchis, PR#1873)

  • +
  • Update fragment based builder (by n-yoshikawa, PR#1931)

  • +
  • Refactor python bindings so that openbabel.py and pybel.py are within an openbabel folder (by baoilleach, PR#1946)

  • +
  • Tidy setting/unsetting of molecule perception flags (by baoilleach, PR#1951)

  • +
  • Remove outdated stereo code (by baoilleach, PR#1967)

  • +
  • Remove OBBond::GetBO() and SetBO() (by baoilleach, PR#1953)

  • +
  • Remove OBRandom from the public API (by baoilleach, PR#1954)

  • +
  • Remove miscellanous headers from mol.h, atom.h and bond.h (by baoilleach, PR#1958)

  • +
  • enhancements to obrms to support optimization of pose alignment (by dkoes, PR#1961)

  • +
  • Remove GetGenericValueDef from OBGenericData (by baoilleach, PR#1964)

  • +
  • Remove low-hanging deprecated methods (by baoilleach, PR#1968)

  • +
  • Improve python script (by e-kwsm, PR#1970)

  • +
  • Make pybel.Outputfile compatible with with statment (by yishutu, PR#1971)

  • +
  • Obrms enhancement (by dkoes, PR#1978)

  • +
  • Move to a single function for setting/unsetting bond and atom flags (by baoilleach, PR#1965)

  • +
  • Rename/add valence and degree methods (by baoilleach, PR#1975)

  • +
  • Do not stoke around the (svg) text (by Artoria2e5, PR#2012)

  • +
  • Add a warning message when both -p and -h options are set (by yishutu, PR#2031)

  • +
  • “Bye bye babel” - remove the babel binary (by baoilleach, PR#1976)

  • +
  • Add force field support for dielectric constants in charge terms. (by ghutchis, PR#2022)

  • +
+
+
+

Development/Build/Install Improvements#

+
    +
  • Change default build type to RELEASE and add -O3 switch (by baoilleach, PR#352)

  • +
  • Add a default issue template for Open Babel - Suggestions welcome (by ghutchis, PR#383)

  • +
  • Compile position independent code for shared libraries. (by susilehtola, PR#1575)

  • +
  • Introduce std:isnan for older versions of MSVC (by mwojcikowski, PR#1586)

  • +
  • Prepend to LD_LIBRARY_PATH instead of overwrite (by barrymoo, PR#1588)

  • +
  • Changes needed to compile with C++17 (by arkose, PR#1619)

  • +
  • Compiler version parsing and comparison from CMake 2.8 (by cowsandmilk, PR#1630)

  • +
  • Create CODE_OF_CONDUCT.md (by ghutchis, PR#1671)

  • +
  • Clarify option needed to generate SWIG bindings. (by jeffjanes, PR#1686)

  • +
  • Correct spelling of file name for Perl bindings (by jeffjanes, PR#1687)

  • +
  • In the Python bindings, avoid adding methods from the iterated object to the iterator itself (by baoilleach, PR#1729)

  • +
  • Ensure portability to ARM platforms (by baoilleach, PR#1744)

  • +
  • Switch to rapidjson library for JSON parsing/writing (by mcs07, PR#1776)

  • +
  • Fix linking of python bindings on Mac (by mcs07, PR#1807)

  • +
  • Using pillow instead of PIL (by hille721, PR#1822)

  • +
  • Ignore compile warnings on inchi directory. (by ghutchis, PR#1864)

  • +
  • Compile project in Cygwin without xtcformat (by bbucior, PR#1894)

  • +
  • Hyperlink DOIs to preferred resolver (by katrinleinweber, PR#1909)

  • +
  • For Travis builds, include output for build failures (by baoilleach, PR#1959)

  • +
  • Add __init__.py to gitignore (by yishutu, PR#1972)

  • +
  • Ignore in-source installation (by RMeli, PR#2027)

  • +
  • Add a GitHub funding link to the open collective page. (by ghutchis, PR#2042)

  • +
+
+
+

Bug Fixes#

+
    +
  • Fix for missing ZLIB on win32 (by philthiel, PR#357)

  • +
  • Depict headers were missing in the installation (by tgaudin, PR#359)

  • +
  • Avoid IndexError for plugins with empty names (by langner, PR#361)

  • +
  • Fixed a few errors in space-groups.txt (by psavery, PR#367)

  • +
  • SF #909 - Fix segfault when ReadMolecule() called with PubChem document but file extension was generic .xml (by derekharmon, PR#369)

  • +
  • Preserve triple bond when reading SMILES with a triple bond in an aromatic ring (by baoilleach, PR#371)

  • +
  • Fix bug #368: Python3.6 openbabel: No module named ‘DLFCN’ (by hseara, PR#372)

  • +
  • Fastsearch 64 fix (by dkoes, PR#1546)

  • +
  • Don’t try to install aromatic.txt as it is no longer present (by baoilleach, PR#1547)

  • +
  • Make sure to add conformers after performing bond perception. (by ghutchis, PR#1549)

  • +
  • Set default coordinates before doing bond perception. (by ghutchis, PR#1550)

  • +
  • Ignore some non-functioning python SWIG bindings. (by djhogan, PR#1554)

  • +
  • Remove delete statement. (by djhogan, PR#1556)

  • +
  • Link libinchi with math library (by nsoranzo, PR#1564)

  • +
  • Fix segfault in OBMol::GetSpacedFormula (by bbucior, PR#1565)

  • +
  • Fix regression + minor cppcheck report (by serval2412, PR#1567)

  • +
  • Convert tabs to spaces in testpdbformat.py (by adamjstewart, PR#1568)

  • +
  • cppcheck: Condition ‘1==0’ is always false (by serval2412, PR#1572)

  • +
  • UFF: Fix conversion constant (by aandi, PR#1579)

  • +
  • Remove the change in resonance structure from the vinylogous carboxylic acid pH model (by kyle-roberts-arzeda, PR#1580)

  • +
  • Fix wedge/hash in cyclopropyl (by fredrikw, PR#1582)

  • +
  • Fix multifragment depiction (by fredrikw, PR#1585)

  • +
  • Fix wrong spin multiplicity assignment (by nakatamaho, PR#1592)

  • +
  • Change silicon to correct MM3 atom type (by keipertk, PR#1593)

  • +
  • Fix pubchem JSON handling of enum types as ints (by mcs07, PR#1596)

  • +
  • Correct MM3 carboxyl oxygen atom type definition (by keipertk, PR#1599)

  • +
  • Fix for calculating implicit H count when reading SMILES (by baoilleach, PR#1606)

  • +
  • Fix some small misspellings in the csharp bindings (by cmanion, PR#1608)

  • +
  • Tweak the handling of implicit Hs when reading SMILES (by baoilleach, PR#1609)

  • +
  • Fix underflow causing a noticeable delay when e.g. writing a molfile (by baoilleach, PR#1610)

  • +
  • Fix install regression with element data (by bbucior, PR#1617)

  • +
  • Added some missing formats to the static build (by psavery, PR#1622)

  • +
  • In SiestaFormat, print warnings to cerr (by psavery, PR#1623)

  • +
  • For SIESTA format, use obErrorLog instead of cerr (by psavery, PR#1627)

  • +
  • Correct the spelling of the Frerejacque number in a comment (by baoilleach, PR#1629)

  • +
  • Lowercase second element letter in PDB and test (by cowsandmilk, PR#1631)

  • +
  • Remove erroneous -1 in switch statement (by baoilleach, PR#1632)

  • +
  • Make sure to handle molecular total charge by default for keywords (by ghutchis, PR#1634)

  • +
  • Added fix for OBMolAtomBFSIter in Python3 (by oititov, PR#1637)

  • +
  • space-groups.txt: correct Hall symbol for C -4 2 b (by wojdyr, PR#1645)

  • +
  • Reset path to empty in kekulization code (potential segfault) (by baoilleach, PR#1650)

  • +
  • Correct handling of stereo when writing InChIs (by baoilleach, PR#1652)

  • +
  • ECFP Fixup (by johnmay, PR#1653)

  • +
  • Fix “folding” for fingerprints to larger bit sizes - #1654. (by ghutchis, PR#1658)

  • +
  • Fix reading atom symbols from XSF file (by sencer, PR#1663)

  • +
  • Minor fixes in the nwchem format reader (by xomachine, PR#1666)

  • +
  • use isinstance to test if filename is bytes (by cowsandmilk, PR#1673)

  • +
  • Fix bug found due to MSVC warning (by baoilleach, PR#1674)

  • +
  • Fix MSVC warning about unused variable (by baoilleach, PR#1675)

  • +
  • Correct handling of atom maps (by baoilleach, PR#1698)

  • +
  • Fix #1701 - a GCC compiler error (by baoilleach, PR#1704)

  • +
  • Remove some audit messages (by baoilleach, PR#1707)

  • +
  • Fix bug when copying stereo during obmol += obmolB (by baoilleach, PR#1719)

  • +
  • Fix uninitialized read in kekulize.cpp found by Dr Memory. (by baoilleach, PR#1721)

  • +
  • Fixes for ring closure parsing (by baoilleach, PR#1723)

  • +
  • Make sure that OBAtom::IsInRing always triggers ring perception if not set as perceived (by baoilleach, PR#1724)

  • +
  • Fix code error found from @baoilleach compiler warnings (by ghutchis, PR#1736)

  • +
  • Fix Python3 compatibility (by ghutchis, PR#1737)

  • +
  • Fix ChemDraw CDX incremental value (by CamAnNguyen, PR#1743)

  • +
  • Fix error in VASPformat found by static code analysis (by baoilleach, PR#1745)

  • +
  • Fix for 1731. Store atom classes in CML atomids by appending _ATOMCLASS. (by baoilleach, PR#1746)

  • +
  • Fix GCC warnings (by baoilleach, PR#1747)

  • +
  • Fix warning in fastsearch substructure fingerprint screen (by baoilleach, PR#1749)

  • +
  • Fix #1684 - string comparison does not work with numeric sd titles (by cowsandmilk, PR#1750)

  • +
  • Fixing minor things for reading ESP from log files (by mmghahremanpour, PR#1753)

  • +
  • Fix #1569 - OB 2.4.1 loses the second molecule in a HIN file (by yishutu, PR#1755)

  • +
  • Fix TESTDIR definition to allow space in path (by mcs07, PR#1757)

  • +
  • Fix regression. Ensure that asterisk is unbracketed when writing a SMILES string (by baoilleach, PR#1759)

  • +
  • Fix MSVC warning about type conversion (by baoilleach, PR#1762)

  • +
  • Fix SMILES parsing fuzz test failures from AFL (by baoilleach, PR#1770)

  • +
  • Fix warning about size_t versus int cast (by baoilleach, PR#1771)

  • +
  • A small improvement of a bugfix solving segfault when reading GAMESS output with vibrations (by boryszef, PR#1772)

  • +
  • In the Python bindings, reset the DL open flags after importing _openbabel (by baoilleach, PR#1775)

  • +
  • fix cdxml stereo bonds (by JasonYCHuang, PR#1777)

  • +
  • Install obabel target if using static build (by torcolvin, PR#1779)

  • +
  • Fix #1769 by correctly handling the mass difference field in MDL mol files (by baoilleach, PR#1784)

  • +
  • Kekulize hypervalent aromatic N and S (by baoilleach, PR#1787)

  • +
  • Pdbqt fix (by dkoes, PR#1790)

  • +
  • Raise a warning when coordinate is NaN (by n-yoshikawa, PR#1792)

  • +
  • Use the InChI values for the average atomic mass when reading/writing isotopes (by baoilleach, PR#1795)

  • +
  • Fix compile failure after recent Molden commit (by baoilleach, PR#1796)

  • +
  • Fix segfault due to running off the start of an iterator in PDBQT format (by baoilleach, PR#1797)

  • +
  • Fix#1768: Segfault upon reading GAMESS outputs of DFTB3 calculations (by serval2412, PR#1798)

  • +
  • Always ensure hybridization (by ghutchis, PR#1801)

  • +
  • Fix #1786 by changing the return value of OBResidue::GetNum() (by baoilleach, PR#1804)

  • +
  • Apply fixes from Benoit Leblanc to address int/double type warnings. (by baoilleach, PR#1806)

  • +
  • Fix#1607: check dynamic cast return (by serval2412, PR#1815)

  • +
  • Fixes #1282: check format input is provided (by serval2412, PR#1818)

  • +
  • Fix#1331: avoid crash with Q-Chem fragment (by serval2412, PR#1820)

  • +
  • Set default to read CIFs with specified coordinates, no wrapping. (by ghutchis, PR#1823)

  • +
  • Fix#1056: remove a debug output (by serval2412, PR#1825)

  • +
  • Get ECFP working (by baoilleach, PR#1829)

  • +
  • Fix cdxml upside down format (by JasonYCHuang, PR#1831)

  • +
  • Fix to CopySubstructure found when running over ChEMBL (by baoilleach, PR#1832)

  • +
  • Fix#192: parse and use ‘-a’ flag for obrotate (by serval2412, PR#1835)

  • +
  • Ensure carbonyl groups are checked at both 0 and 180. (by ghutchis, PR#1845)

  • +
  • Ensure that the check for OBBond::IsInRing obeys the OBMol perception flags (by baoilleach, PR#1848)

  • +
  • Simplify/fix behavior of OBAtom::GetResidue so that it behaves like other lazy properties (by baoilleach, PR#1849)

  • +
  • Fixes #1851: check some limits when converting smi to sdf using –gen2D (by serval2412, PR#1852)

  • +
  • Modify cleaning blank line behaviors (by yishutu, PR#1855)

  • +
  • Ring membership of atoms and bonds was not being reset during perception (by baoilleach, PR#1856)

  • +
  • Update qeq.txt (by mkrykunov, PR#1882)

  • +
  • Support lone pair stereo on nitrogen as well as sulfur (by baoilleach, PR#1885)

  • +
  • Changed indexing of fragments, should fix #1889 (by fredrikw, PR#1890)

  • +
  • Avoid out-of-range access in OBMolBondBFSIter (by baoilleach, PR#1892)

  • +
  • Fix OBChemTsfm wrapping of implicit H counts (by baoilleach, PR#1896)

  • +
  • Updated the coordinate generation from templates. (by fredrikw, PR#1902)

  • +
  • Fix incorrect use of memcpy. (by sunoru, PR#1908)

  • +
  • Add SetChainsPerceived() after EndModify() in formats that add residues (by baoilleach, PR#1914)

  • +
  • define isfinite removed. (by orex, PR#1928)

  • +
  • Teach the isomorphism mapper to respect atom identity (by johnmay, PR#1939)

  • +
  • Fix memory leak in OBSmartsPattern::Init() (by n-yoshikawa, PR#1945)

  • +
  • Address CMake build warning about policy CMP0005 being set to OLD (by baoilleach, PR#1948)

  • +
  • Fix clang warning about in-class init of a non-static data member (by baoilleach, PR#1949)

  • +
  • Update bindings for changes to headers (by baoilleach, PR#1963)

  • +
  • Fix randomly failing Python gradient test (by baoilleach, PR#1966)

  • +
  • Exit with non-zero if an error occurs (by e-kwsm, PR#1973)

  • +
  • Avoid non-finite bond vectors (by dkoes, PR#1981)

  • +
  • Include babelconfig in vector3.h (by dkoes, PR#1985)

  • +
  • Fix #1987: CMake failing at FindRapidJSON (by RMeli, PR#1988)

  • +
  • fpsformat.cpp: compile bugfix header added. (by orex, PR#1991)

  • +
  • Address Ubuntu bug in defining python install dir (by dkoes, PR#1992)

  • +
  • PDB and PDBQT Insertion Code Fixes (by RMeli, PR#1998)

  • +
  • Make pybel compatible with #1975 (by yishutu, PR#2005)

  • +
  • H vector fix (by dkoes, PR#2010)

  • +
  • Change forcefield.cpp so that steepest descent and conjugate gradient update maxgrad (by PeaWagon, PR#2017)

  • +
  • Update coordinates in the fast option of obabel (by n-yoshikawa, PR#2026)

  • +
  • Update the CSharp bindings (by baoilleach, PR#2032)

  • +
  • Don’t make kekule SMILES the default in the GUI (by baoilleach, PR#2039)

  • +
  • Bumping the major version requires more changes throughout the library. (by baoilleach, PR#2036)

  • +
  • Fix reading of uninitialized data. (by dkoes, PR#2038)

  • +
  • Remove minor version from some names (by baoilleach, PR#2040)

  • +
  • Fixed alias expansion for files with multiple aliases (by fredrikw, PR#2035)

  • +
  • Update doc (by e-kwsm, PR#1979)

  • +
  • Fix compilation with GCC 4.8 (standard compiler on CentOS 7.5) (by baoilleach, PR#2047)

  • +
  • Some tests (by dkoes, PR#2008)

  • +
+
+
+

Cast of contributors#

+

aandi, adalke (Andrew Dalke), adamjstewart (Adam J. Stewart), afonari (Alexandr Fonari), artoria2e5 (Mingye Wang), baoilleach (Noel O’Boyle), barrymoo (Barry Moore), bbucior (Ben Bucior), boryszef (Borys Szefczyk), camannguyen (An Nguyen), cmanion (Charles A. Manion), cowsandmilk (David Hall), cstein (Casper Steinmann), derekharmon (Derek Harmon), djhogan (Daniel Hogan), dkoes (David Koes), e-kwsm (Eisuke Kawashima), eloyfelix (Eloy Felix), fredrikw (Fredrik Wallner), ghutchis (Geoff Hutchison), hille721 (Christoph Hille), hseara (Hector Martinez-Seara), jasonychuang (Jason Huang), jeffjanes (Jeff Janes), johnmay (John Mayfield), katrinleinweber (Katrin Leinweber), keipertk (Kristopher Keipert), kyle-roberts-arzeda, langner (Karol M. Langner), lorton (Pat Lorton), mcs07 (Matt Swain), merkys (Andrius Merkys), mkrykunov, mmghahremanpour (Mohammad Ghahremanpour), mwojcikowski (Maciej Wójcikowski), n-yoshikawa (Naruki Yoshikawa), nakatamaho (Nakata Maho), nsoranzo (Nicola Soranzo), oititov (Titov Oleg), orex (Kirill Okhotnikov), pbecherer (Paul Becherer), peawagon (Jen), philthiel (Philipp Thiel), psavery (Patrick Avery), rmeli (Rocco Meli), serval2412 (Julien Nabet), sunoru, susilehtola (Susi Lehtola), tgaudin (Théophile Gaudin), theavey (Thomas Heavey), timvdm (Tim Vandermeersch), torcolvin (Tor Colvin), wojdyr (Marcin Wojdyr), xomachine (Dmitriy Fomichev), yishutu (Yi-Shu Tu)

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/ReleaseNotes/ob310.html b/docs/ReleaseNotes/ob310.html new file mode 100644 index 00000000..efb05cdf --- /dev/null +++ b/docs/ReleaseNotes/ob310.html @@ -0,0 +1,577 @@ + + + + + + + + + + + Open Babel 3.1.0 — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Open Babel 3.1.0#

+

Released on 2020-05-05.

+

This version represents additional API and is backwards-compatible with the 3.0 release.

+
+

New features and improvements#

+
    +
  • New file format: Wiswesser Line Notation reader from Roger Sayle (by baoilleach, PR#2084)

  • +
  • New option: Add the –neutralize operation to convert charged atoms to neutral (by baoilleach, PR#2109)

  • +
  • New functionality: Support for periodic boundary conditions. See additional option -p for MMCIF format, and write option ‘g’ for CIF. (by bbucior, PR#1853)

  • +
  • New functionality: Add distance geometry method (xxby n-yoshikawa, PR#1875)

  • +
  • New option: Add -noh to –minimize to allow minimizing without adding explicit hydrogens (by ghutchis, PR#2184)

  • +
  • Update GAS CONSTANT to 2018 CODATA recommended value (by e-kwsm, PR#2045)

  • +
  • Support #0 in SMARTS so that asterisks can be matched (by baoilleach, PR#2079)

  • +
  • Bring back support for lowercase elements and D/T in GetAtomicNum(). (by baoilleach, PR#2100)

  • +
  • Change docstrings of add/delete hydrogens to better reflect their functionality (by baoilleach, PR#2110)

  • +
  • Support kekulization of aromatic sulfoxides (by baoilleach, PR#2121)

  • +
  • Enable casting to StereoBase in the Python bindings (by baoilleach, PR#2124)

  • +
  • OBBuilder: Add error message for ring/rigid fragments with all zero coords. (by timvdm, PR#2149)

  • +
  • R script updates (by khoran, PR#2145)

  • +
  • Be more strict when parsing charges in SMILES (by baoilleach, PR#2132)

  • +
  • Improve tools/obconformer.cpp (by e-kwsm, PR#2154)

  • +
  • OBAtom::IsElement() implemention, make OBElements::Element enum (by dkoes, PR#1754)

  • +
+
+
+

Development/Build/Install improvements#

+
    +
  • Avoid using namespace in headers (by e-kwsm, PR#2055)

  • +
  • Remove babel doc (by e-kwsm, PR#2057)

  • +
  • Do not hard-code Open Babel major version for include directory (by e-kwsm, PR#2059)

  • +
  • Patched to build on NetBSD (by voidpin, PR#2093)

  • +
  • Update download link (by njzjz, PR#2094)

  • +
  • Fix GitHub ISSUE_TEMPLATE (by RMeli, PR#2082)

  • +
  • Define OpenBabel3_LIBRARY (by dkoes, PR#2086)

  • +
  • Initial GitHub action - misspell-fixer (by ghutchis, PR#2163)

  • +
  • Use latest checkout action - more efficient (by ghutchis, PR#2172)

  • +
  • Initial CMake GitHub Action (by ghutchis, PR#2165)

  • +
  • Add a template to use with the release drafter GH app (by ghutchis, PR#2182)

  • +
  • Pin maeparser version to 1.2.3 - should fix #2180 (by ghutchis, PR#2185)

  • +
  • Workaround for SWIG 4.0.1 Java source code problem (by baoilleach, PR#2186)

  • +
  • Add a build for bindings (eventually will generate source tar) (by ghutchis, PR#2183)

  • +
  • Fix build on illumos (by wiedi, PR#2187)

  • +
  • Update the WLN docs to have the correct syntax for .rst (by baoilleach, PR#2188)

  • +
  • Rename EXTERN to OB_EXTERN to prevent clashes in other headers (by ghutchis, PR#2189)

  • +
  • Re-enable Ruby bindings (by ghutchis, PR#2193)

  • +
+
+
+

Bug fixes#

+
    +
  • Fix CMake error with R and C# bindings (by ghutchis, PR#2051)

  • +
  • Rename MAESTRO extensions from uppercase to lowercase (by baoilleach, PR#2053)

  • +
  • Fix file format docstrings that were causing problems with Sphinx or GUI (by baoilleach, PR#2054)

  • +
  • Fix BUILD_SHARED=OFF (by dkoes, PR#2056)

  • +
  • Fix import of openbabel (by e-kwsm, PR#2058)

  • +
  • Update for Open Babel 3 (by e-kwsm, PR#2060)

  • +
  • Fix maeparser compile error with some Boost configs (by fredrikw, PR#2076)

  • +
  • Find or build maeparser &amp; coordgen libraries (by ricrogz, PR#2064)

  • +
  • Fix issue #2095, caused by incorrect application of protonated SMARTS (by au1985, PR#2102)

  • +
  • Fix issue #1794, UFF atom typing for deuterium (by ghutchis, PR#2114)

  • +
  • Fix segfault on SMI to InChI conversion when using “-d” (by timvdm, PR#2115)

  • +
  • Correct the path to the openbabel-python.cpp (by baoilleach, PR#2119)

  • +
  • Remove fragments with zero coordinates - fixes #2144. (by ghutchis, PR#2150)

  • +
  • Fix issue #2125 - Zero occupancy in cif file treated as 1.0. (by orex, PR#2136)

  • +
  • Fix #2071 - obrms parser segmentation fault (by e-kwsm, PR#2073)

  • +
  • Fix #2098 - OBDistanceGeometry is unavailable to users (by n-yoshikawa, PR#2105)

  • +
  • Set MAEPARSER_BUILD_SHARED_LIBS (fix #2089) (by e-kwsm, PR#2155)

  • +
  • Fix the import of Tkinter in Python 3+ (by mrakitin, PR#2157)

  • +
  • Fix for segault (with regression test) (by dkoes, PR#2162)

  • +
  • Follow-up with missing spelling fixes from #2163 (by mrakitin, PR#2166)

  • +
  • Prefer std::fabs resolves build problem on mac-current (by ghutchis, PR#2168)

  • +
  • Fix distance geometry stereo issues (by timvdm, PR#2158)

  • +
  • Merge of “Improve OBConversion::WriteString() and WriteFile() initialization” (adalke) #1923 (by baoilleach, PR#2176)

  • +
  • Fix output format in the cifformat writer (by afonari, PR#2170)

  • +
  • Fix the cif write test (i.e. modified format) (by ghutchis, PR#2177)

  • +
  • Fix tautomer code (by timvdm, PR#2171)

  • +
+
+
+

Cast of contributors#

+

adalke (Andrew Dalke), afonari (Alexandr Fonari), au1985 (Alex Ustinov), baoilleach (Noel O’Boyle), bbucior (Ben +Bucior), dkoes (David Koes), e-kwsm (Eisuke Kawashima), fredrikw (Fredrik +Wallner), ghutchis (Geoff Hutchison), Kamil Rytarowski, khoran (Kevin Horan), mrakitin (Maksim Rakitin), n-yoshikawa (Naruki Yoshikawa), njzjz (Jinzhe Zeng), orex (Kirill Okhotnikov), ricrogz (Ric), rmeli (Rocco Meli), Roger Sayle, timvdm (Tim Vandermeersch), voidpin (pin), wiedi (Sebastian Wiedenroth)

+
+
+ + +
+ + + + + +
+ +
+
+
+ +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/Stereochemistry/stereo.html b/docs/Stereochemistry/stereo.html new file mode 100644 index 00000000..29594c81 --- /dev/null +++ b/docs/Stereochemistry/stereo.html @@ -0,0 +1,716 @@ + + + + + + + + + + + Stereochemistry — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Stereochemistry#

+

Open Babel stores stereochemistry as the relative arrangement of a set of atoms in space. For example, for a tetrahedral stereocenter, we store information like “looking from atom 2, atoms 4, 5 and 6 are arranged clockwise around atom 3”. This section describes how a user can work with or manipulate this information. This might be useful to invert a particular center, replace a substituent at a stereocenter, enumerate stereoisomers or determine the number of unspecified stereocenters.

+

Although Open Babel has data structures to support a variety of forms of stereochemistry, currently little use is made of any stereochemistry other than tetrahedral and cis/trans (and square planar to a certain degree).

+

We will look first of all at how stereochemistry information is stored, accessed, and modified. Then we describe how this information is deduced from the chemical structure. This chapter should be read in combination with the API documentation (see the Stereochemistry overview page found under “Modules”).

+
+

Accessing stereochemistry information#

+

Each record of stereochemistry information around an atom or bond is stored as StereoData associated with the OBMol. First of all, let’s look at direct access to the StereoData. The following code counts the number of tetrahedral centers with specified stereochemistry, as well as the number of double bonds with specified cis/trans stereochemistry:

+
num_cistrans = 0
+num_tetra = 0
+
+mol = pybel.readstring("smi", "F/C=C/C[C@@H](Cl)Br")
+m = mol.OBMol
+
+for genericdata in m.GetAllData(ob.StereoData):
+    stereodata = ob.toStereoBase(genericdata)
+    stereotype = stereodata.GetType()
+
+    if stereotype == ob.OBStereo.CisTrans:
+        cistrans = ob.toCisTransStereo(stereodata)
+        if cistrans.IsSpecified():
+            num_cistrans += 1
+
+    elif stereotype == ob.OBStereo.Tetrahedral:
+        tetra = ob.toTetrahedralStereo(stereodata)
+        if tetra.IsSpecified():
+            num_tetra += 1
+
+
+ +

The code above is quite verbose, and requires iteration through all of the stereo data. To make it simpler to access stereo data for a particular atom or bond, a facade class OBStereoFacade can instead be used, which provides convenience functions for these operations:

+
num_cistrans = 0
+num_tetra = 0
+
+mol = pybel.readstring("smi", "F/C=C/C[C@@H](Cl)Br")
+m = mol.OBMol
+
+facade = ob.OBStereoFacade(m)
+
+for atom in ob.OBMolAtomIter(m):
+    mid = atom.GetId()
+    if facade.HasTetrahedralStereo(mid):
+        tetra = facade.GetTetrahedralStereo(mid)
+        if tetra.IsSpecified():
+            num_tetra += 1
+
+for bond in ob.OBMolBondIter(m):
+    mid = bond.GetId()
+    if facade.HasCisTransStereo(mid):
+        cistrans = facade.GetCisTransStereo(mid)
+        if cistrans.IsSpecified():
+            num_cistrans += 1
+
+
+

Note that every time you create a new OBStereoFacade, a certain amount of work is done building up the correspondance between atoms/bonds and stereo data. For this reason, a single OBStereoFacade should be created for a molecule and reused.

+
+
+

The Config() object#

+

The description of the stereochemical configuration is accessed via a Config() object associated with each StereoData. The contents of this object will be different depending on the specific type of stereochemistry, e.g. OBCisTransStereo::Config (OBCisTransConfig from Python) records the begin and end Ids of the associated bond, the Ids of the attached atoms, the spatial relationship of those atoms, and whether stereo is specified.

+

Let’s read the SMILES string F[C@@](Cl)(Br)I and access the stereo. When we read this SMILES string, the tetrahedral center will be the second atom, that with Idx 2.:

+
smi = "F[C@@](Cl)(Br)I"
+mol = pybel.readstring("smi", smi).OBMol
+secondatom = mol.GetAtom(2)
+atomid = secondatom.GetId()
+
+stereofacade = ob.OBStereoFacade(mol)
+print("Does this atom have tet stereo info?", stereofacade.HasTetrahedralStereo(atomid))
+tetstereo = stereofacade.GetTetrahedralStereo(atomid)
+config = tetstereo.GetConfig()
+print("The stereocenter is at atom Id {}".format(config.center))
+print("Is the configuration specified? {}".format("Yes" if config.specified else "No"))
+print("Looking from atom Id {0}, the atoms Ids {1} are arranged clockwise".format(config.from_or_towards, config.refs))
+
+
+

Which prints:

+
Does this atom have tet stereo info? True
+The stereocenter is at atom Id 1
+Is the configuration specified? Yes
+Looking from atom Id 0, the atoms Ids (2, 3, 4) are arranged clockwise
+
+
+

How do I know that I’m looking from atom Id 0, and that the atom Ids are arranged clockwise? From the documentation for OBTetrahedralStereo::GetConfig, which states that this is the default. You may be used to thinking “How are these atoms arranged looking from here?”. With GetConfig(), you are instead making the request “Give me the atoms in clockwise order looking from here”. It follows from this that you should never need to test the value of the winding, the direction, or the from/towards atom; you provide these, and their values will be whatever you provided. For example, you could instead ask for the anticlockwise arrangement of atoms looking towards the atom with Id 0:

+
configB = tetstereo.GetConfig(0, ob.OBStereo.AntiClockwise, ob.OBStereo.ViewTowards)
+print("Looking towards atom Id {0}, the atoms Ids {1} are arranged anticlockwise".format(config.from_or_towards, config.refs))
+
+
+

Which prints:

+
Looking towards atom Id 0, the atoms Ids (2, 3, 4) are arranged anticlockwise
+
+
+

To check whether two Configs represent the same stereo configuration, use the equality operator:

+
assert config == configB
+
+
+

It should be noted that the Config objects returned by GetConfig() are copies of the stereo configuration. That is, modifying them has no affect on the stereochemistry of the molecule (see the next section). As a result, it is straightforward to keep a copy of the stereo configuration, modify the molecule, and then check whether the modification has altered the stereochemistry using the equality operator of the Config.

+
+
+

Modifying the stereochemistry#

+

We discuss below the interaction between 2D and 3D structural information and how stereochemistry is perceived. For now, let’s avoid these issues by using a 0D structure and modifying its stereochemistry:

+
from openbabel import pybel
+ob = pybel.ob
+
+mol = pybel.readstring("smi", "C[C@@H](Cl)F")
+print(mol.write("smi", opt={"nonewline": True}))
+
+# Invert the stereo
+m = mol.OBMol
+facade = ob.OBStereoFacade(m)
+tetstereo = facade.GetTetrahedralStereo(m.GetAtom(2).GetId())
+config = tetstereo.GetConfig()
+config.winding = ob.OBStereo.AntiClockwise
+tetstereo.SetConfig(config)
+print(mol.write("smi", opt={"nonewline": True}))
+
+config.specified = False
+tetstereo.SetConfig(config)
+print(mol.write("smi", opt={"nonewline": True}))
+
+
+

which prints:

+
C[C@@H](Cl)F
+C[C@H](Cl)F
+CC(Cl)F
+
+
+

How did I know that setting the relative arrangement to anti-clockwise would invert the stereo? Again, as described above, by default GetConfig() returns the atoms in clockwise order. Another way to invert the stereo would be to swap two of the refs, or to set the direction from ‘from’ to ‘towards’.

+
+
+

Stereo perception#

+

Until now we have not mentioned where this stereo information came from; we have read a SMILES string and somehow the resulting molecule has stereo data associated with it.

+

Stereo perception is the identification of stereo centers from the molecule and its associated data, which may include 3D coordinates, stereobonds and existing stereo data. Passing an OBMol to the global function PerceiveStereo triggers stereo perception, and sets a flag marking stereo as perceived (OBMol::SetChiralityPerceived(true)). If, in the first place, stereo was already marked as perceived then stereo perception is not performed. Any operations that require stereo information should call PerceiveStereo before accessing stereo information.

+

Behind the scenes, the code for stereo perception is quite different depending on the dimensionality (OBMol::GetDimension()) of the molecule.

+

3D structures

+

Perhaps the most straightforward is when the structure has 3D coordinates. In this case, a symmetry analysis identifies stereogenic centers whose stereoconfigurations are then perceived from the coordinates. Some file formats such as the MOL file allow atoms and double bonds to be marked as have unspecified stereochemistry, and this information is applied to the detected stereocenters. For the specific case of the MOL file, the flag in the atom block that marks this is ignored by default (as required by the specification) but an option (s) is provided to read it:

+
$ obabel -:"I/C=C/C[C@@](Br)(Cl)F" --gen3d -omol | obabel -imol -osmi
+I/C=C/C[C@@](Br)(Cl)F
+$ obabel -:"IC=CCC(Br)(Cl)F" --gen3d -omol | obabel -imol -osmi
+IC=CC[C@@](Br)(Cl)F
+$ obabel -:"IC=CCC(Br)(Cl)F" --gen3d -omol | obabel -imol -as -osmi
+IC=CCC(Br)(Cl)F
+
+
+

As just described, the flow of information is from the 3D coordinates to Open Babel’s internal record of stereo centers, and this flow is triggered by calling stereo perception (which does nothing if the stereo is marked as already perceived). It follows from this that altering the coordinates after stereo perception (e.g. by reflecting through an axis, thereby inverting chirality) has no affect on the internal stereo data. If operations are performed on the molecule that require stereo is be reperceived, then OBMol::SetChiralityPerceived(false) should be called.

+

It should also be clear from the discussion above that changing the stereo data (e.g. using SetConfig() to invert a tetrahedral stereocenter) has no affect on the molecule’s coordinates (though it may affect downstream processing, such as the information written to a SMILES string). If this is needed, the user will have to manipulate the coordinates themselves, or generate coordinates for the whole molecule using the associated library functions (e.g. the --gen3d operation).

+

2D structures

+

2D structures represent a depiction of a molecule, where stereochemistry is usually indicated by wedge or hash bonds. It is sometimes indicated by adopting particular conventions (e.g. the Fischer or Haworth projection of monosaccharides). It should be noted that Open Babel does not support any of these conventions, nor does it support the use of wedge or hash bonds for perspective drawing (e.g. where a thick bond is supported by two wedges). This may change in future, of course, but it’s worth noting that Open Babel is not the only toolkit with these limitations and so what you think you are storing in your database may not be what the ‘computer’ thinks it is.

+

Stereo centers are identified based on a symmetry analysis, and their configuration inferred either from the geometry (for cis/trans bonds) or from bonds marked as wedge/hash (tetrahedral centers). File format readers record information about which bonds were marked as wedges or hashes and this can be accessed with OBBond:IsWedge/IsHash, where the Begin atom of the bond is considered the origin of the wedge/hash. Similar to the situation with 3D perception, changing a bond from a wedge to a hash (or vice versa) has no affect on the stereo objects once stereo has been perceived, but triggering reperception will regenerate the desired stereo data.

+

It should also be noted that the file writers regenerate the wedges or hashes from the stereo data at the point of writing; in other words, the particular location of the wedge/hash (or even whether it is present) may change on writing. This was done to ensure that the written structure accurately represents Open Babel’s internal view of the molecule; passing wedges/hashes through unchanged may not represent this (consider the case where a wedge bond is attached to a tetrahedral center which cannot be a stereocenter).

+

0D structures

+

A SMILES string is sometimes referred to as describing a 0.5D structure, as it can describe the relative arrangement of atoms around stereocenters. The SMILES reader simply reads and records this information as stereo data, and then the molecule is marked as having stereo perceived (unless the S option is passed - see below).

+

Being able to skip the symmetry analysis associated with stereo perception means that SMILES strings can be read quickly - a useful feature if dealing with millions of molecules. However, if you wish to identify additional stereocenters whose stereo configuration is unspecified, or if the SMILES strings come from an untrusted source and stereo may have been incorrectly specified (e.g. on a tetrahedral center with two groups the same), then you may wish to trigger perception.

+

Without any additional information, stereo cannot be perceived from a structure that has neither 2D nor 3D coordinates. Triggering stereo perception on such a structure will generate stereo data if stereogenic centers are present, but their configuration will be marked as unspecified. However, where existing stereo data is present (e.g. after reading a SMILES string), that data will be retained if the stereocenter is identified by the perception routine as a true stereocenter. This can be illustrated using the S option to the SMILES reader, which tells it not to mark the stereo as perceived on reading; as a result, reperception will occur if triggered by a writer yielding different results in the case of an erroneously specified stereocenter:

+
$ obabel -:"F[C@@](F)(F)[C@@H](I)Br" -osmi
+F[C@@](F)(F)[C@@H](I)Br
+$ obabel -:"F[C@@](F)(F)[C@@H](I)Br" -aS -osmi
+FC(F)(F)[C@@H](I)Br
+
+
+
+
+

Miscellaneous stereo functions in the API#

+
    +
  • OBAtom::IsChiral - this is a convenience function that checks whether there is any tetrahedral stereo data associated with a particular atom. OBStereoFacade should be used in preference to this.

  • +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/CSharp.html b/docs/UseTheLibrary/CSharp.html new file mode 100644 index 00000000..aca6126e --- /dev/null +++ b/docs/UseTheLibrary/CSharp.html @@ -0,0 +1,689 @@ + + + + + + + + + + + CSharp and OBDotNet — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

CSharp and OBDotNet#

+

OBDotNet is a compiled assembly that allows Open Babel to be used from the various .NET languages (e.g. Visual Basic, C#, IronPython, IronRuby, and J#) on Windows, Linux and MacOSX. The current version is OBDotNet 0.4.

+
+

Installation#

+
+

Windows#

+

The OBDotNet.dll assembly provided on Windows was compiled using the .NET framework v3.5 for the x86 platform. To use it, you will need to compile your code using .NET v3.5 or newer and you will also need to target x86 (/platform:x86).

+

The following instructions describe how to compile a simple C# program that uses OBDotNet:

+
+
    +
  1. First you need to download and install the OpenBabelGUI version 2.3.2

  2. +
  3. Next create an example CSharp program that uses the Open Babel API (see below for one or use this link). Let’s call this example.cs.

  4. +
  5. Copy OBDotNet.dll from the Open Babel installation into the same folder as example.cs.

  6. +
  7. Open a command prompt at the location of example.cs and compile it as follows:

    +
    C:\Work> C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
    +                           /reference:OBDotNet.dll /platform:x86 example.cs
    +
    +
    +
  8. +
  9. Run the created executable, example.exe, to discover the molecule weight of propane:

    +
    C:\Work> example.exe
    +44.09562
    +
    +
    +
  10. +
+
+

If you prefer to use the MSVC# GUI, note that the Express edition does not have the option to choose x86 as a target. This will be a problem if you are using a 64-bit operating system. There’s some information at Coffee Driven Development on how to get around this.

+
+
+

MacOSX and Linux#

+

On Linux and MacOSX you need to use Mono, the open source implementation of the .NET framework, to compile the bindings. The following instructions describe how to compile and use these bindings:

+
+
    +
  1. OBDotNet.dll is included in the Open Babel source distribution in scripts/csharp. To compile a CSharp application that uses this (e.g. the example program shown below), use a command similar to the following:

    +
    gmcs example.cs /reference:../openbabel-2.3.2/scripts/csharp/OBDotNet.dll
    +
    +
    +
  2. +
  3. To run this on MacOSX or Linux you need to compile the CSharp bindings as described in the section Compile language bindings. This creates lib/libopenbabel_csharp.so in the build directory.

  4. +
  5. Add the location of OBDotNet.dll to the environment variable MONO_PATH. Add the location of libopenbabel_csharp.so to the environment variable LD_LIBRARY_PATH. Additionally, if you have not installed Open Babel globally you should set BABEL_LIBDIR to the location of the Open Babel library and BABEL_DATADIR to the data directory.

  6. +
  7. Run example.exe:

    +
    $ ./example.exe
    +44.09562
    +
    +
    +
  8. +
+
+
+
+
+

OBDotNet API#

+

The API is almost identical to the Open Babel C++ API. Differences are described here.

+

Using iterators

+

In OBDotNet, iterators are provided as methods of the relevant class. The full list is as follows:

+ +

Such iterators are used as follows:

+
foreach (OBAtom atom in myobmol.Atoms())
+    System.Console.WriteLine(atom.GetAtomType());
+
+
+

Other iterators in the C++ API not listed above can still be used through their IEnumerator methods.

+

Handling OBGenericData

+

To cast :obapi:`OBGenericData` to a specific subclass, you should use the .Downcast <T> method, where T is a subclass of OBGenericData.

+

Open Babel Constants

+

Open Babel constants are available in the class openbabelcsharp.

+
+
+

Examples#

+

The following sections show how the same example application would be programmed in C#, Visual Basic and IronPython. The programs print out the molecular weight of propane (represented by the SMILES string “CCC”).

+

C#

+
using System;
+using OpenBabel;
+
+namespace MyConsoleApplication
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            OBConversion obconv = new OBConversion();
+            obconv.SetInFormat("smi");
+            OBMol mol = new OBMol();
+            obconv.ReadString(mol, "CCC");
+            System.Console.WriteLine(mol.GetMolWt());
+        }
+    }
+}
+
+
+

Visual Basic

+
Imports OpenBabel
+
+Module Module1
+
+    Sub Main()
+        Dim OBConv As New OBConversion()
+        Dim Mol As New OBMol()
+
+        OBConv.SetInFormat("smi")
+        OBConv.ReadString(Mol, "CCC")
+        System.Console.Write("The molecular weight of propane is " & Mol.GetMolWt())
+    End Sub
+
+End Module
+
+
+

IronPython

+
import clr
+clr.AddReference("OBDotNet.dll")
+
+import OpenBabel as ob
+
+conv = ob.OBConversion()
+conv.SetInFormat("smi")
+mol = ob.OBMol()
+conv.ReadString(mol, "CCC")
+print(mol.GetMolWt())
+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/CppAPI.html b/docs/UseTheLibrary/CppAPI.html new file mode 100644 index 00000000..bded4e0f --- /dev/null +++ b/docs/UseTheLibrary/CppAPI.html @@ -0,0 +1,562 @@ + + + + + + + + + + + The Open Babel API — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

The Open Babel API#

+

The API (Application Programming Interface) is the set of classes, methods and variables that a programming library provides to the user. The Open Babel API is implemented in C++, but the same set of classes, methods and variables are accessed through the various language bindings.

+

The API documentation is automatically generated from the source code using the Doxygen tool. The following links point to the various versions of the documentation:

+ +

The Open Babel toolkit uses a version numbering that indicates how the API has changed over time:

+
    +
  • Bug fix releases (e.g., 2.0.0, vs. 2.0.1) do not change API at all.

  • +
  • Minor versions (e.g., 2.0 vs. 2.1) will add function calls, but will be otherwise backwards-compatible.

  • +
  • Major versions (e.g. 2 vs 3) are not backwards-compatible, and have changes in the API.

  • +
+

Overall, our goal is for the Open Babel API to remain stable over as long a period as possible. This means that users can be confident that their code will continue to work despite the release of new versions with additional features, file formats and bug fixes. For example, at the time of writing we have been on the version 2 series for almost five years (since November 2005). In other words, a program written using Open Babel almost five years ago still works with the latest release.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/CppExamples.html b/docs/UseTheLibrary/CppExamples.html new file mode 100644 index 00000000..cba5a96d --- /dev/null +++ b/docs/UseTheLibrary/CppExamples.html @@ -0,0 +1,721 @@ + + + + + + + + + + + C++ — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

C++#

+
+

Quickstart example#

+

Here’s an example C++ program that uses the Open Babel toolkit to convert between two chemical file formats:

+
#include <iostream>
+#include <openbabel/obconversion.h>
+using namespace std;
+
+int main(int argc,char **argv)
+{
+  if(argc<3)
+  {
+    cout << "Usage: ProgrameName InputFileName OutputFileName\n";
+    return 1;
+  }
+
+  ifstream ifs(argv[1]);
+  if(!ifs)
+  {
+    cout << "Cannot open input file\n";
+    return 1;
+  }
+  ofstream ofs(argv[2]);
+  if(!ofs)
+  {
+    cout << "Cannot open output file\n";
+    return 1;
+  }
+  OpenBabel::OBConversion conv(&ifs, &ofs);
+  if(!conv.SetInAndOutFormats("CML","MOL"))
+  {
+    cout << "Formats not available\n";
+    return 1;
+  }
+  int n = conv.Convert();
+  cout << n << " molecules converted\n";
+
+  return 0;
+}
+
+
+

Next, we’ll look at how to compile this.

+
+
+

How to compile against the Open Babel library#

+
+

Using Makefiles#

+

The following Makefile can be used to compile the above example, assuming that it’s saved as example.cpp. You need to have already installed Open Babel somewhere. If the include files or the library are not automatically found when running make, you can specify the location as shown by the commented out statements in CFLAGS and LDFLAGS below.

+
CC = g++
+CFLAGS = -c # -I /home/user/Tools/openbabel/install/include/openbabel-2.0
+LDFLAGS = -lopenbabel # -L /home/user/Tools/openbabel/install/lib
+
+all: example
+
+example: example.o
+      $(CC) $(LDFLAGS) example.o -o example
+
+example.o: example.cpp
+      $(CC) $(CFLAGS) $(LDFLAGS) example.cpp
+
+clean:
+      rm -rf example.o example
+
+
+
+
+

Using CMake#

+

Rather than create a Makefile yourself, you can get CMake to do it for you. The nice thing about using CMake is that it can generate not only Makefiles, but also project files for MSVC++, KDevelop and Eclipse (among others). The following CMakeLists.txt can be used to generate any of these. The commented out lines can be used to specify the location of the Open Babel library and include files if necessary.

+
cmake_minimum_required(VERSION 2.6)
+add_executable(example example.cpp)
+target_link_libraries(example openbabel)
+# target_link_libraries(example /home/user/Tools/openbabel/install/lib/libopenbabel.so)
+# include_directories(/home/user/Tools/openbabel/install/include/openbabel-2.0)
+
+
+
+
+
+

Further examples#

+
+

Output Molecular Weight for a Multi-Molecule SDF File#

+

Let’s say we want to print out the molecular weights of every molecule in an SD file. Why? Well, we might want to plot a histogram of the distribution, or see whether the average of the distribution is significantly different (in the statistical sense) compared to another SD file.

+
#include <iostream>
+
+#include <openbabel/obconversion.h>
+#include <openbabel/mol.h>
+
+int main(int argc,char **argv)
+{
+  OBConversion obconversion;
+  obconversion.SetInFormat("sdf");
+  OBMol mol;
+
+  bool notatend = obconversion.ReadFile(&mol,"../xsaa.sdf");
+  while (notatend)
+  {
+    std::cout << "Molecular Weight: " << mol.GetMolWt() << std::endl;
+
+    mol.Clear();
+    notatend = obconversion.Read(&mol);
+  }
+
+  return(0);
+}
+
+
+
+
+

Properties from SMARTS Matches#

+

Let’s say that we want to get the average bond length or dihedral angle over particular types of atoms in a large molecule. So we’ll use SMARTS to match a set of atoms and loop through the matches. The following example does this for sulfur-carbon-carbon-sulfur dihedral angles in a polymer and the carbon-carbon bond lengths between the monomer units:

+
OBMol obMol;
+OBBond *b1;
+OBConversion obConversion;
+OBFormat *inFormat;
+OBSmartsPattern smarts;
+smarts.Init("[#16D2r5][#6D3r5][#6D3r5][#16D2r5]");
+
+string filename;
+vector< vector <int> > maplist;
+vector< vector <int> >::iterator matches;
+double dihedral, bondLength;
+
+for (int i = 1; i < argc; i++)
+  {
+    obMol.Clear();
+    filename = argv[i];
+    inFormat = obConversion.FormatFromExt(filename.c_str());
+    obConversion.SetInFormat(inFormat);
+    obConversion.ReadFile(&obMol, filename);
+
+    if (smarts.Match(obMol))
+      {
+        dihedral = 0.0;
+        bondLength = 0.0;
+        maplist = smarts.GetUMapList();
+        for (matches = maplist.begin(); matches != maplist.end(); matches++)
+          {
+            dihedral += fabs(obMol.GetTorsion((*matches)[0],
+                                              (*matches)[1],
+                                              (*matches)[2],
+                                              (*matches)[3]));
+            b1 = obMol.GetBond((*matches)[1], (*matches)[2]);
+            bondLength += b1->GetLength();
+          }
+        cout << filename << ": Average Dihedral " << dihedral / maplist.size()
+             << " Average Bond Length " << bondLength / maplist.size()
+             << " over " << maplist.size() <<  " matches\n";
+      }
+  }
+
+
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/Java.html b/docs/UseTheLibrary/Java.html new file mode 100644 index 00000000..78d744b4 --- /dev/null +++ b/docs/UseTheLibrary/Java.html @@ -0,0 +1,685 @@ + + + + + + + + + + + Java — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Java#

+

The openbabel.jar file in the Open Babel distribution allows you to use the Open Babel C++ library from Java or any of the other JVM languages (Jython, JRuby, BeanShell, etc.).

+
+

Quickstart Example#

+

Let’s begin by looking at an example program that uses Open Babel. The following program carries out file format conversion, iteration over atoms and SMARTS pattern matching:

+
import org.openbabel.*;
+
+public class Test {
+
+   public static void main(String[] args) {
+       // Initialise
+       System.loadLibrary("openbabel_java");
+
+       // Read molecule from SMILES string
+       OBConversion conv = new OBConversion();
+       OBMol mol = new OBMol();
+       conv.SetInFormat("smi");
+       conv.ReadString(mol, "C(Cl)(=O)CCC(=O)Cl");
+
+       // Print out some general information
+       conv.SetOutFormat("can");
+       System.out.print("Canonical SMILES: " +
+         conv.WriteString(mol));
+       System.out.println("The molecular weight is "
+         + mol.GetMolWt());
+       for(OBAtom atom : new OBMolAtomIter(mol))
+           System.out.println("Atom " + atom.GetIdx()
+             + ": atomic number = " + atom.GetAtomicNum()
+             + ", hybridisation = " + atom.GetHyb());
+
+       // What are the indices of the carbon atoms
+       // of the acid chloride groups?
+       OBSmartsPattern acidpattern = new OBSmartsPattern();
+       acidpattern.Init("C(=O)Cl");
+       acidpattern.Match(mol);
+
+       vectorvInt matches = acidpattern.GetUMapList();
+       System.out.println("There are " + matches.size() +
+                          " acid chloride groups");
+       System.out.print("Their C atoms have indices: ");
+       for(int i=0; i<matches.size(); i++)
+           System.out.print(matches.get(i).get(0) + " ");
+   }
+}
+
+
+

Output:

+
Canonical SMILES: ClC(=O)CCC(=O)Cl
+The molecular weight is 154.9793599
+Atom 1: atomic number = 6, hybridisation = 2
+Atom 2: atomic number = 17, hybridisation = 0
+Atom 3: atomic number = 8, hybridisation = 2
+Atom 4: atomic number = 6, hybridisation = 3
+Atom 5: atomic number = 6, hybridisation = 3
+Atom 6: atomic number = 6, hybridisation = 2
+Atom 7: atomic number = 8, hybridisation = 2
+Atom 8: atomic number = 17, hybridisation = 0
+There are 2 acid chloride groups
+Their C atoms have indices: 1 6
+
+
+
+
+

Installation#

+
+

Windows#

+

openbabel.jar is installed along with the OpenBabelGUI on Windows, typically in C:/Program Files (x86)/OpenBabel-2.3.2. As an example of how to use openbabel.jar, download OBTest.java and compile and run it as follows:

+
C:\> set CLASSPATH=C:\Program Files (x86)\OpenBabel-2.3.2\openbabel.jar;.
+C:\> "C:\Program Files\Java\jdk1.5.0_16\bin\javac.exe" OBTest.java
+C:\> "C:\Program Files\Java\jdk1.5.0_16\bin\java.exe" OBTest
+Running OBTest...
+Benzene has 6 atoms.
+C:\>
+
+
+
+
+

MacOSX and Linux#

+

The following instructions describe how to compile and use these bindings on MacOSX and Linux:

+
+
    +
  1. openbabel.jar is included in the Open Babel source distribution in scripts/java. To compile a Java application that uses this (e.g. the example program shown above), use a command similar to the following:

    +
    javac Test.java -cp ../openbabel-2.3.2/scripts/java/openbabel.jar
    +
    +
    +
  2. +
  3. To run the resulting Test.class on MacOSX or Linux you first need to compile the Java bindings as described in the section Compile language bindings. This creates lib/libopenbabel_java.so in the build directory.

  4. +
  5. Add the location of openbabel.jar to the environment variable CLASSPATH, not forgetting to append the location of Test.class (typically “.”):

    +
    export CLASSPATH=/home/user/Tools/openbabel-2.3.2/scripts/java/openbabel.jar:.
    +
    +
    +
  6. +
  7. Add the location of libopenbabel_java.so to the environment variable LD_LIBRARY_PATH. Additionally, if you have not installed Open Babel globally you should set BABEL_LIBDIR to the location of the Open Babel library and BABEL_DATADIR to the data directory.

  8. +
  9. Now, run the example application. The output should be as shown above.

  10. +
+
+
+
+
+

API#

+

openbabel.jar provides direct access to the C++ Open Babel library from Java through the namespace org.openbabel. This binding is generated using the SWIG package and provides access to almost all of the Open Babel interfaces from Java, including the base classes :obapi:`OBMol`, :obapi:`OBAtom`, :obapi:`OBBond`, and :obapi:`OBResidue`, as well as the conversion framework :obapi:`OBConversion`.

+

Essentially any call in the C++ API is available to Java programs with very little difference in syntax. As a result, the principal documentation is the Open Babel C++ API documentation. A few differences exist, however:

+
    +
  • Global variables, global functions and constants in the C++ API can be found in org.openbabel.openbabel_java. The variables are accessible through get methods.

  • +
  • When accessing various types of :obapi:`OBGenericData`, you will need to cast them to the particular subclass using the global functions, toPairData, toUnitCell, etc.

  • +
  • The Java versions of the iterator classes in the C++ API (that is, all those classes ending in Iter) implement the Iterator and Iterable interfaces. This means that the following foreach loop is possible:

    +
    for(OBAtom atom : new OBMolAtomIter(mol)) {
    +    System.out.println(atom.GetAtomicNum());
    +}
    +
    +
    +
  • +
  • To facilitate use of the :obapi:`OBMolAtomBFSIter`, OBAtom has been extended to incorporate a CurrentDepth value, accessible through a get method:

    +
    for(OBAtom atom : new OBMolAtomBFSIter(mol)) {
    +    System.out.println(atom.GetCurrentDepth());
    +}
    +
    +
    +
  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/Perl.html b/docs/UseTheLibrary/Perl.html new file mode 100644 index 00000000..f64fd2c9 --- /dev/null +++ b/docs/UseTheLibrary/Perl.html @@ -0,0 +1,714 @@ + + + + + + + + + + + Perl — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Perl#

+
+

Installation#

+

The Perl bindings are available only on MacOSX and Linux. (We could not get them to work on Windows.) See Compile language bindings for information on how to configure CMake to compile and install the Perl bindings.

+
+
+

Using Chemistry::OpenBabel#

+

The Chemistry::OpenBabel module is designed to allow Perl scripts +to use the C++ Open Babel library. The bindings are generated using +the SWIG package and provides access to almost all of the Open +Babel interfaces via Perl, including the base classes OBMol, +OBAtom, OBBond, and OBResidue, as well as the conversion framework +OBConversion.

+ +

As such, essentially any call in the C++ API is available to Perl +access with very little difference in syntax. This guide is +designed to give examples of common Perl syntax for +Chemistry::OpenBabel and pointers to the appropriate sections of +the API documentation.

+

The example script below creates atoms and bonds one-by-one using +the OBMol, OBAtom, and OBBond classes.

+
#!/usr/bin/perl
+
+use Chemistry::OpenBabel;
+
+my $obMol = new Chemistry::OpenBabel::OBMol;
+
+$obMol->NewAtom();
+$numAtoms = $obMol->NumAtoms(); # now 1 atom
+
+my $atom1 = $obMol->GetAtom(1); # atoms indexed from 1
+$atom1->SetVector(0.0, 1.0, 2.0);
+$atom1->SetAtomicNum(6); # carbon atom
+
+$obMol->NewAtom();
+$obMol->AddBond(1, 2, 1); # bond between atoms 1 and 2 with bond order 1
+$numBonds = $obMol->NumBonds(); # now 1 bond
+
+$obMol->Clear();
+
+
+

More commonly, Open Babel can be used to read in molecules using +the OBConversion framework. The following script reads in molecular +information from a SMILES string, adds hydrogens, and writes +out an MDL file as a string.

+
#!/usr/bin/perl
+
+use Chemistry::OpenBabel;
+
+my $obMol = new Chemistry::OpenBabel::OBMol;
+my $obConversion = new Chemistry::OpenBabel::OBConversion;
+$obConversion->SetInAndOutFormats("smi", "mdl");
+$obConversion->ReadString($obMol, "C1=CC=CS1");
+
+$numAtoms = $obMol->NumAtoms(); # now 5 atoms
+
+$obMol->AddHydrogens();
+$numAtoms = $obMol->NumAtoms(); # now 9 atoms
+
+my $outMDL = $obConversion->WriteString($obMol);
+
+
+

The following script writes out a file using a filename, rather +than reading and writing to a Perl string.

+
#!/usr/bin/perl
+
+use Chemistry::OpenBabel;
+
+my $obMol = new Chemistry::OpenBabel::OBMol;
+my $obConversion = new Chemistry::OpenBabel::OBConversion;
+$obConversion->SetInAndOutFormats("pdb", "mol2");
+$obConversion->ReadFile($obMol, "1ABC.pdb");
+
+$obMol->AddHydrogens();
+
+print "# of atoms: $obMol->NumAtoms()";
+print "# of bonds: $obMol->NumBonds()";
+print "# of residues: $obMol->NumResidues()";
+
+$obConversion->WriteFile($obMol, "1abc.mol2");
+
+
+
+
+

Examples#

+
+

Output Molecular Weight for a Multi-Molecule SDF File#

+

Let’s say we want to print out the molecular weights of every molecule in an SD file. Why? Well, we might want to plot a histogram of the distribution, or see whether the average of the distribution is significantly different (in the statistical sense) compared to another SD file.

+
use Chemistry::OpenBabel;
+
+my $obconversion = new Chemistry::OpenBabel::OBConversion;
+$obconversion->SetInFormat("sdf");
+my $obmol = new Chemistry::OpenBabel::OBMol;
+
+my $notatend = $obconversion->ReadFile($obmol, "../xsaa.sdf");
+while ($notatend) {
+    print $obmol->GetMolWt(), "\n";
+    $obmol->Clear();
+    $notatend = $obconversion->Read($obmol);
+}
+
+
+
+
+

Add and Delete Atoms#

+

This script shows an example of deleting and modifying atoms to transform one structure to a related one. It operates on a set of substituted thiophenes, deletes the sulfur atom (note that R1 and R2 may contain sulfur, so the SMARTS pattern is designed to constrain to the ring sulfur), etc. The result is a substituted ethylene, as indicated in the diagrams.

+../../_images/Tutorial-Thiophene.png +../../_images/Tutorial-Transform.png +
use Chemistry::OpenBabel;
+
+my $obMol = new Chemistry::OpenBabel::OBMol;
+my $obConversion = new Chemistry::OpenBabel::OBConversion;
+my $filename = shift @ARGV;
+
+$obConversion->SetInAndOutFormats("xyz", "mol");
+$obConversion->ReadFile($obMol, $filename);
+
+for (1..$obMol->NumAtoms()) {
+    $atom = $obMol->GetAtom($_);
+    # look to see if this atom is a thiophene sulfur atom
+    if ($atom->MatchesSMARTS("[#16D2]([#6D3H1])[#6D3H1]")) {
+        $sulfurIdx = $atom->GetIdx();
+    # see if this atom is one of the carbon atoms bonded to a thiophene sulfur
+    } elsif ($atom->MatchesSMARTS("[#6D3H1]([#16D2][#6D3H1])[#6]") ) {
+        if ($c2Idx == 0) { $c2Idx = $atom->GetIdx(); }
+        else {$c5Idx = $atom->GetIdx(); }
+    }
+}
+
+# Get the actual atom objects -- indexing will change as atoms are added and deleted!
+$sulfurAtom = $obMol->GetAtom($sulfurIdx);
+$c2Atom = $obMol->GetAtom($c2Idx);
+$c5Atom = $obMol->GetAtom($c5Idx);
+
+$obMol->DeleteAtom($sulfurAtom);
+
+$obMol->DeleteHydrogens($c2Atom);
+$obMol->DeleteHydrogens($c5Atom);
+
+$c2Atom->SetAtomicNum(1);
+$c5Atom->SetAtomicNum(1);
+
+$obConversion->WriteFile($obMol, "$filename.mol");
+
+
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/Python.html b/docs/UseTheLibrary/Python.html new file mode 100644 index 00000000..6492d298 --- /dev/null +++ b/docs/UseTheLibrary/Python.html @@ -0,0 +1,592 @@ + + + + + + + + + + + Python — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/PythonDoc.html b/docs/UseTheLibrary/PythonDoc.html new file mode 100644 index 00000000..82b30f2d --- /dev/null +++ b/docs/UseTheLibrary/PythonDoc.html @@ -0,0 +1,788 @@ + + + + + + + + + + + The openbabel module — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

The openbabel module#

+

The openbabel module provides direct access to the C++ Open +Babel library from Python. This binding is generated using the SWIG +package and provides access to almost all of the Open Babel +interfaces via Python, including the base classes OBMol, OBAtom, +OBBond, and OBResidue, as well as the conversion framework +OBConversion. As such, essentially any call in the C++ API is +available to Python scripts with very little difference in syntax. +As a result, the principal documentation is the +C++ API documentation.

+
+

Examples#

+

Here we give some examples of common Python syntax for the +openbabel module and pointers to the appropriate sections of +the API documentation.

+

The example script below creates atoms and bonds one-by-one using +the +:obapi:`OBMol`, :obapi:`OBAtom`, and :obapi:`OBBond` classes.

+
from openbabel import openbabel
+
+mol = openbabel.OBMol()
+print(mol.NumAtoms()) #Should print 0 (atoms)
+
+a = mol.NewAtom()
+a.SetAtomicNum(6)   # carbon atom
+a.SetVector(0.0, 1.0, 2.0) # coordinates
+
+b = mol.NewAtom()
+mol.AddBond(1, 2, 1)   # atoms indexed from 1
+print(mol.NumAtoms()) #Should print 2 (atoms)
+print(mol.NumBonds()) Should print 1 (bond)
+
+mol.Clear();
+
+
+

More commonly, Open Babel can be used to read in molecules using +the :obapi:`OBConversion` +framework. The following script reads in molecular information (a +SMI file) from a string, adds hydrogens, and writes out an MDL file +as a string.

+
from openbabel import openbabel
+
+obConversion = openbabel.OBConversion()
+obConversion.SetInAndOutFormats("smi", "mdl")
+
+mol = openbabel.OBMol()
+obConversion.ReadString(mol, "C1=CC=CS1")
+
+print(mol.NumAtoms()) #Should print 5 (atoms)
+
+mol.AddHydrogens()
+print(mol.NumAtoms()) Should print 9 (atoms) after adding hydrogens
+
+outMDL = obConversion.WriteString(mol)
+
+
+

The following script writes out a file using a filename, rather +than reading and writing to a Python string.

+
from openbabel import openbabel
+
+obConversion = openbabel.OBConversion()
+obConversion.SetInAndOutFormats("pdb", "mol2")
+
+mol = openbabel.OBMol()
+obConversion.ReadFile(mol, "1ABC.pdb.gz")   # Open Babel will uncompress automatically
+
+mol.AddHydrogens()
+
+print(mol.NumAtoms())
+print(mol.NumBonds())
+print(mol.NumResidues())
+
+obConversion.WriteFile(mol, '1abc.mol2')
+
+
+
+
+

Using iterators#

+

A number of Open Babel toolkit classes provide iterators over +various objects; these classes are identifiable by the suffix +“Iter” in the +list of toolkit classes +in the API:

+
    +
  • OBAtomAtomIter +and +OBAtomBondIter +- given an OBAtom, iterate over all neighboring OBAtoms or OBBonds

  • +
  • OBMolAtomIter, +OBMolBondIter, +OBMolAngleIter, +OBMolTorsionIter, +OBMolRingIter +- given an OBMol, iterate over all OBAtoms, OBBonds, OBAngles, +OBTorsions or OBRings.

  • +
  • OBMolAtomBFSIter +- given an OBMol and the index of an atom, OBMolAtomBFSIter +iterates over all the neighbouring atoms in a breadth-first manner. +It differs from the other iterators in that it returns two values - +an OBAtom, and the ‘depth’ of the OBAtom in the breadth-first +search (this is useful, for example, when creating circular +fingerprints)

  • +
  • OBMolPairIter +- given an OBMol, iterate over all pairs of OBAtoms separated by +more than three bonds

  • +
  • OBResidueIter +- given an OBMol representing a protein, iterate over all +OBResidues

  • +
  • OBResidueAtomIter +- given an OBResidue, iterate over all OBAtoms

  • +
+

These iterator classes can be used using the typical Python syntax +for iterators:

+
for obatom in openbabel.OBMolAtomIter(obmol):
+    print(obatom.GetAtomicMass())
+
+
+

Note that OBMolTorsionIter returns atom IDs which are off by one. +That is, you need to add one to each ID to get the correct ID. +Also, if you add or remove atoms, you will need to delete the +existing TorsionData before using OBMolTorsionIter. This is done as +follows:

+
mol.DeleteData(openbabel.TorsionData)
+
+
+
+
+

Calling a method requiring an array of C doubles#

+

Some Open Babel toolkit methods, for example :obapi:`OBMol::Rotate() <OpenBabel::OBMol::Rotate>`, +require an array of doubles. It’s not possible to directly use a +list of floats when calling such a function from Python. Instead, +you need to first explicitly create a C array using the +double_array() function:

+
obMol.Rotate([1.0, -54.7, 3])
+# Error!
+myarray = openbabel.double_array([1.0, -54.7, 3])
+obMol.Rotate(myarray)
+# Works!
+
+
+
+
+

Accessing OBPairData, OBUnitCell and other OBGenericData#

+

If you want to access any subclass of OBGenericData (such as :obapi:`OBPairData` +or :obapi:`OBUnitCell`) +associated with a molecule, you need to ‘cast’ the :obapi:`OBGenericData` +returned by :obapi:`OBMol.GetData() <OpenBabel::OBMol::GetData>` using the toPairData(), toUnitCell() (etc.) +functions:

+
pairdata = [openbabel.toPairData(x) for x in obMol.GetData()
+            if x.GetDataType()==openbabel.PairData]
+print(pairdata[0].GetAttribute(), pairdata[0].GetValue())
+
+unitcell = openbabel.toUnitCell(obMol.GetData(openbabel.UnitCell))
+print(unitcell.GetAlpha(), unitcell.GetSpaceGroup())
+
+
+
+
+

Using FastSearch from Python#

+

Rather than use the :obapi:`FastSearch` class directly, it’s easiest to use the :obapi:`OpenInAndOutFiles() <OpenBabel::OBConversion::OpenInAndOutFiles>` method as follows:

+
>>> from openbabel import openbabel
+>>> conv=openbabel.OBConversion()
+>>> conv.OpenInAndOutFiles("1200mols.smi","index.fs")
+True
+>>> conv.SetInAndOutFormats("smi","fs")
+True
+>>> conv.Convert()
+This will prepare an index of 1200mols.smi and may take some time...
+It took 6 seconds
+1192
+>>> conv.CloseOutFile()
+>>> conv.OpenInAndOutFiles("index.fs","results.smi")
+True
+>>> conv.SetInAndOutFormats("fs","smi")
+True
+>>> conv.AddOption("s",conv.GENOPTIONS,"C=CC#N")
+>>> conv.Convert()
+10 candidates from fingerprint search phase
+1202
+>>> f=open("results.smi")
+>>> f.read()
+'OC(=O)C(=Cc1ccccc1)C#N\t298\nN#CC(=Cc1ccccc1)C#N\t490\nO=N(=O)c1cc(ccc1)C=C(C#N
+)C#N\t491\nClc1ccc(cc1)C=C(C#N)C#N\t492\nClc1ccc(c(c1)Cl)C=C(C#N)C#N\t493\nClc1c
+cc(cc1Cl)C=C(C#N)C#N\t494\nBrc1ccc(cc1)C=C(C#N)C#N\t532\nClc1ccccc1C=C(C#N)C#N\t
+542\nN#CC(=CC=Cc1occc1)C#N\t548\nCCOC(=O)C(C#N)=C(C)C\t1074\n'
+
+
+
+
+

Combining numpy with Open Babel#

+

If you are using the Python numerical extension, numpy, and you try +to pass values from a numpy array to Open Babel, it may not work +unless you convert the values to Python built-in types first:

+
import numpy
+from openbabel import openbabel
+
+mol = openbabel.OBMol()
+atom = mol.NewAtom()
+
+coord = numpy.array([1.2, 2.3, 4.6], "float32")
+atom.SetVector(coord[0], coord[1], coord[2])
+# Error
+
+atom.SetVector(float(coord[0]), float(coord[1]), float(coord[2]))
+# No error
+
+coord = numpy.array([1.2, 2.3, 4.6], "float64")
+atom.SetVector(coord[0], coord[1], coord[2])
+# No error either - not all numpy arrays will cause an error
+
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/PythonExamples.html b/docs/UseTheLibrary/PythonExamples.html new file mode 100644 index 00000000..01bbd83c --- /dev/null +++ b/docs/UseTheLibrary/PythonExamples.html @@ -0,0 +1,677 @@ + + + + + + + + + + + Examples — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Examples#

+
+

Output Molecular Weight for a Multi-Molecule SDF File#

+

Let’s say we want to print out the molecular weights of every +molecule in an SD file. Why? Well, we might want to plot a +histogram of the distribution, or see whether the average of the +distribution is significantly different (in the statistical sense) +compared to another SD file.

+

openbabel.py

+
from openbabel import openbabel as ob
+
+obconversion = ob.OBConversion()
+obconversion.SetInFormat("sdf")
+obmol = ob.OBMol()
+
+notatend = obconversion.ReadFile(obmol,"../xsaa.sdf")
+while notatend:
+    print(obmol.GetMolWt())
+    obmol = ob.OBMol()
+    notatend = obconversion.Read(obmol)
+
+
+

Pybel

+
from openbabel import pybel
+
+for molecule in pybel.readfile("sdf","../xsaa.sdf"):
+    print(molecule.molwt)
+
+
+
+
+

Find information on all of the atoms and bonds connected to a particular atom#

+

First of all, look at all of the classes in the Open Babel API that +end with “Iter”. You should use these whenever you need to do +something like iterate over all of the atoms or bonds connected to +a particular atom, iterate over all the atoms in a molecule, +iterate over all of the residues in a protein, and so on.

+

As an example, let’s say we want to find information on all of the +bond orders and atoms connected to a particular OBAtom called +‘obatom’. The idea is that we iterate over the neighbouring atoms +using OBAtomAtomIter, and then find the bond between the +neighbouring atom and ‘obatom’. Alternatively, we could have +iterated over the bonds (OBAtomBondIter), but we would need to look +at the indices of the two atoms at the ends of the bond to find out +which is the neighbouring atom:

+
for neighbour_atom in ob.OBAtomAtomIter(obatom):
+   print(neighbour_atom.GetAtomicNum())
+   bond = obatom.GetBond(neighbour_atom)
+   print(bond.GetBondOrder())
+
+
+
+
+

Examples from around the web#

+ +
+
+

Split an SDF file using the molecule titles#

+

The following was a request on the +CCL.net +list:

+
+

Hi all, Does anyone have a script to split an SDFfile into single +sdfs named after each after each individual molecule as specified +in first line of parent multi file?

+
+

The solution is simple…

+
from openbabel import pybel
+for mol in pybel.readfile("sdf", "bigmol.sdf"):
+   mol.write("sdf", "%s.sdf" % mol.title)
+
+
+
+
+

An implementation of RECAP#

+

TJ O’Donnell (of gNova) has written an +implementation of the RECAP fragmentation algorithm in 130 lines of +Python. The code is at [1].

+

TJ’s book, +“Design and Use of Relational Databases in Chemistry”, +also contains examples of Python code using Open Babel to create and +query molecular databases (see for example the link to Open Babel +code in the Appendix).

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/PythonInstall.html b/docs/UseTheLibrary/PythonInstall.html new file mode 100644 index 00000000..6f71961c --- /dev/null +++ b/docs/UseTheLibrary/PythonInstall.html @@ -0,0 +1,687 @@ + + + + + + + + + + + Install Python bindings — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Install Python bindings#

+
+

Windows#

+
+

Install the bindings#

+
    +
  1. First you need to download and install the main Open Babel executable +and library as described in Install a binary package.

  2. +
  3. Next, use pip to install the Python bindings:

    +
    pip install -U openbabel
    +
    +
    +
  4. +
+

Note: Python is available as either a 32-bit or 64-bit version. You need to install the corresponding version of Open Babel in step 1.

+
+
+

Install Pillow (optional)#

+

If you want to display 2D depictions using Pybel (rather than just write to +a file), you need to install the Pillow library:

+
pip install -U pillow
+
+
+
+
+

Test the installation#

+

Open a Windows command prompt, and type the following commands to +make sure that everything is installed okay. If you get an error +message, there’s something wrong and you should email the mailing +list with the output from these commands.

+
C:\Documents and Settings\Noel> obabel -V
+Open Babel 3.0.0 -- Oct  7 2019 -- 20:18:16
+
+C:\Documents and Settings\Noel> obabel -Hsdf
+sdf  MDL MOL format
+Reads and writes V2000 and V3000 versions
+
+Read Options, e.g. -as
+ s  determine chirality from atom parity flags
+...
+...
+
+C:\Documents and Settings\Noel> dir "%BABEL_DATADIR%"\mr.txt
+ Volume in drive C has no label.
+ Volume Serial Number is 68A3-3CC9
+
+ Directory of C:\Users\Noel\AppData\Roaming\OpenBabel-3.0.0\data
+
+06/10/2019  16:37             4,295 mr.txt
+               1 File(s)          4,295 bytes
+               0 Dir(s)  58,607,575,040 bytes free
+
+C:\Documents and Settings\Noel> py
+Python 2.7.16 (v2.7.16:413a49145e, Mar  4 2019, 01:37:19) [MSC v.1500 64
+bit (AMD64)] on win32
+Type "help", "copyright", "credits" or "license" for more information.
+>>> from openbabel import pybel
+>>> mol = pybel.readstring("smi", "CC(=O)Br")
+>>> mol.make3D()
+>>> print(mol.write("sdf"))
+
+ OpenBabel01010918183D
+
+  7  6  0  0  0  0  0  0  0  0999 V2000
+    1.0166   -0.0354   -0.0062 C   0  0  0  0  0
+    2.5200   -0.1269    0.0003 C   0  0  0  0  0
+    3.0871   -1.2168    0.0026 O   0  0  0  0  0
+    3.2979    1.4258    0.0015 Br  0  0  0  0  0
+    0.6684    1.0007    0.0052 H   0  0  0  0  0
+    0.6255   -0.5416    0.8803 H   0  0  0  0  0
+    0.6345   -0.5199   -0.9086 H   0  0  0  0  0
+  1  2  1  0  0  0
+  1  5  1  0  0  0
+  1  6  1  0  0  0
+  1  7  1  0  0  0
+  2  4  1  0  0  0
+  2  3  2  0  0  0
+M  END
+$$$$
+>>> mol.draw() # If you installed PIL, this will display its structure
+>>> (Hit CTRL+Z followed by Enter to exit)
+
+
+
+
+
+

Linux and MacOSX#

+

See Compile language bindings for information on how to configure CMake to compile the Python bindings. This can be done either globally or locally.

+

You may need to add the location of libopenbabel.so (on my system, the location is /usr/local/lib) to the environment variable LD_LIBRARY_PATH if you get the following error when you try to import the OpenBabel library at the Python prompt:

+
$ python
+>>> from openbabel import openbabel
+Traceback (most recent call last):
+  File "<stdin>", line 1, in
+  File "/usr/lib/python2.4/site-packages/openbabel.py", line 9, in
+   import _openbabel
+ImportError: libopenbabel.so.3: cannot open shared object file: No such file or directory
+
+
+
+

Install Pillow (optional)#

+

If you want to display 2D depictions using Pybel (rather than just write to +a file), you need the Pillow library, and the Python Tkinter library (part of the standard library). +These should be available through +your package manager, e.g. on Ubuntu, Pillow is provided by ‘python-pil’ and +‘python-pil.imagetk’, while Tkinter is provided by ‘python-tk’.

+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/PythonIntro.html b/docs/UseTheLibrary/PythonIntro.html new file mode 100644 index 00000000..dfb2792f --- /dev/null +++ b/docs/UseTheLibrary/PythonIntro.html @@ -0,0 +1,575 @@ + + + + + + + + + + + Introduction — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Introduction#

+

The Python interface to Open Babel is perhaps the most popular of the several languages that Open Babel supports. We provide two Python modules that can be used to access the functionality of Open Babel toolkit:

+
    +
  1. The openbabel module:

    +
    +

    This contains the standard Python bindings automatically generated using SWIG from the C++ API. See The openbabel module.

    +
    +
  2. +
  3. The Pybel module:

    +
    +

    This is a light-weight wrapper around the classes and methods in the openbabel module. Pybel provides more convenient and Pythonic ways to access the Open Babel toolkit. See Pybel.

    +
    +
  4. +
+

You don’t have to choose between them though - they can be used together.

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/Python_Pybel.html b/docs/UseTheLibrary/Python_Pybel.html new file mode 100644 index 00000000..61528de2 --- /dev/null +++ b/docs/UseTheLibrary/Python_Pybel.html @@ -0,0 +1,879 @@ + + + + + + + + + + + Pybel — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Pybel#

+

Pybel provides convenience functions and classes that make it +simpler to use the Open Babel libraries from Python, especially for +file input/output and for accessing the attributes of atoms and +molecules. The Atom and Molecule classes used by Pybel can be +converted to and from the OBAtom and OBMol used by the +openbabel module. These features are discussed in more detail +below.

+

The rationale and technical details behind Pybel are described in O’Boyle et al [omh2008]. To support further development of Pybel, please cite this paper if you use Pybel to obtain results for publication.

+

Information on the Pybel API can be found at the interactive Python +prompt using the help() function. The full API is also listed in +the next section (see Pybel API).

+

To use Pybel, use from openbabel import pybel.

+
+
+[omh2008] +

N.M. O’Boyle, C. Morley and G.R. Hutchison. +Pybel: a Python wrapper for the OpenBabel cheminformatics toolkit. +Chem. Cent. J. 2008, 2, 5. +[Link]

+
+
+
+

Atoms and Molecules#

+

A +Molecule +can be created in any of three ways:

+
    +
  1. From an :obapi:`OBMol`, using Molecule(myOBMol)

  2. +
  3. By reading from a file (see Input/Output +below)

  4. +
  5. By reading from a string (see Input/Output +below)

  6. +
+

An Atom +be created in two different ways:

+
    +
  1. From an :obapi:`OBAtom`, using Atom(myOBAtom)

  2. +
  3. By accessing the atoms attribute of a Molecule

  4. +
+ +

Molecules have the following attributes: atoms, charge, data, dim, +energy, exactmass, formula, molwt, spin, sssr, title +and unitcell (if crystal data). The atoms attribute provides a +list of the Atoms in a Molecule. The data attribute returns a +dictionary-like object for accessing and editing the data fields +associated with the molecule (technically, it’s a +MoleculeData +object, but you can use it like it’s a regular dictionary). The +unitcell attribute gives access to any unit cell data +associated with the molecule (see +:obapi:`OBUnitCell`). +The remaining attributes correspond directly to attributes of +OBMols: e.g. formula is equivalent to +:obapi:`OBMol::GetFormula() <OpenBabel::OBMol::GetFormula>`. For more information on what these +attributes are, please see the Open Babel C++ documentation for +:obapi:`OBMol`.

+

For example, let’s suppose we have an SD file containing descriptor +values in the data fields:

+
>>> mol = next(readfile("sdf", "calculatedprops.sdf")) # (readfile is described below)
+>>> print(mol.molwt)
+100.1
+>>> print(len(mol.atoms))
+16
+>>> print(mol.data.keys())
+{'Comment': 'Created by CDK', 'NSC': 1, 'Hydrogen Bond Donors': 3,
+ 'Surface Area': 342.43, .... }
+>>> print(mol.data['Hydrogen Bond Donors'])
+3
+>>> mol.data['Random Value'] = random.randint(0,1000) # Add a descriptor containing noise
+
+
+

Molecules have a write() +method that writes a representation of a Molecule to a file or to a +string. See Input/Output below. They also have +a calcfp() +method that calculates a molecular fingerprint. See Fingerprints +below.

+

The draw() +method of a Molecule generates 2D coordinates and a 2D depiction of +a molecule. It uses the +OASA library by Beda +Kosata to do this. The default +options are to show the image on the screen (show=True), not to +write to a file (filename=None), to calculate 2D coordinates +(usecoords=False) but not to store them (update=False).

+

The addh() +and removeh() +methods allow hydrogens to be added and removed.

+

If a molecule does not have 3D coordinates, they can be generated +using the make3D() +method. By default, this includes 50 steps of a geometry +optimisation using the MMFF94 forcefield. The list of available +forcefields is stored in the +forcefields +variable. To further optimise the structure, you can use the +localopt() +method, which by default carries out 500 steps of an optimisation +using MMFF94. Note that hydrogens need to be added before calling +localopt().

+

The calcdesc() +method of a Molecule returns a dictionary containing descriptor +values for LogP, Polar Surface Area (“TPSA”) and Molar Refractivity +(“MR”). A list of the available descriptors is contained in the +variable descs.

+

If only one or two descriptor values are required, you can specify +the names as follows: calcdesc(["LogP", "TPSA"]). Since the +data attribute of a Molecule is also a dictionary, you can +easily add the result of calcdesc() to an SD file (for example) +as follows:

+
mol = next(readfile("sdf", "without_desc.sdf"))
+descvalues = mol.calcdesc()
+# In Python, the update method of a dictionary allows you
+# to add the contents of one dictionary to another
+mol.data.update(descvalues)
+output = Outputfile("sdf", "with_desc.sdf")
+output.write(mol)
+output.close()
+
+
+

For convenience, a Molecule provides an iterator over its Atoms. +This is used as follows:

+
for atom in myMolecule:
+   # do something with atom
+
+
+

Atoms have the following attributes: atomicmass, atomicnum, +coords, exactmass, formalcharge, heavyvalence, +heterovalence, hyb, idx, implicitvalence, isotope, +partialcharge, spin, type, valence, vector. The .coords +attribute provides a tuple (x, y, z) of the atom’s coordinates. The +remaining attributes are as for the Get methods of +:obapi:`OBAtom`.

+
+
+

Input/Output#

+

One of the strengths of Open Babel is the number of chemical file +formats that it can handle (see Supported File Formats and Options). Pybel provides a dictionary of the +input and output formats in the variables informats +and outformats +where the keys are the three-letter codes for each format (e.g. +pdb) and the values are the descriptions (e.g. Protein Data Bank +format).

+

Pybel greatly simplifies the process of reading and writing +molecules to and from strings or files. There are two functions for +reading Molecules:

+
    +
  1. readstring() +reads a Molecule from a string

  2. +
  3. readfile() +provides an iterator over the Molecules in a file

  4. +
+

Here are some examples of their use. Note in particular the use of +next() to access the first (and possibly only) molecule in a +file:

+
>>> mymol = readstring("smi", "CCCC")
+>>> print(mymol.molwt)
+58
+>>> for mymol in readfile("sdf", "largeSDfile.sdf")
+... print(mymol.molwt)
+>>> singlemol = next(readfile("pdb", "1CRN.pdb"))
+
+
+

If a single molecule is to be written to a molecule or string, the +write() +method of the Molecule should be used:

+
    +
  1. mymol.write(format) returns a string

  2. +
  3. mymol.write(format, filename) writes the Molecule to a file. +An optional additional parameter, overwrite, should be set to +True if you wish to overwrite an existing file.

  4. +
+

For files containing multiple molecules, the +Outputfile +class should be used instead. This is initialised with a format and +filename (and optional overwrite parameter). To write a +Molecule to the file, the +write() +method of the Outputfile is called with the Molecule as a +parameter. When all molecules have been written, the +close() +method of the Outputfile should be called.

+

Here are some examples of output using the Pybel methods and +classes:

+
>>> print(mymol.write("smi"))
+'CCCC'
+>>> mymol.write("smi", "outputfile.txt")
+>>> largeSDfile = Outputfile("sdf", "multipleSD.sdf")
+>>> largeSDfile.write(mymol)
+>>> largeSDfile.write(myothermol)
+>>> largeSDfile.close()
+
+
+
+
+

Fingerprints#

+

A Fingerprint +can be created in either of two ways:

+
    +
  1. From a vector returned by the OpenBabel GetFingerprint() method, +using Fingerprint(myvector)

  2. +
  3. By calling the calcfp() +method of a Molecule

  4. +
+

The calcfp() method takes an optional argument, fptype, +which should be one of the fingerprint types supported by OpenBabel +(see Molecular fingerprints and similarity searching). The +list of supported fingerprints is stored in the variable +fps. +If unspecified, the default fingerprint (FP2) is calculated.

+

Once created, the Fingerprint has two attributes: fp gives the +original OpenBabel vector corresponding to the fingerprint, and +bits gives a list of the bits that are set.

+

The Tanimoto coefficient of two Fingerprints can be calculated +using the | operator.

+

Here is an example of its use:

+
>>> from openbabel import pybel
+>>> smiles = ['CCCC', 'CCCN']
+>>> mols = [pybel.readstring("smi", x) for x in smiles] # Create a list of two molecules
+>>> fps = [x.calcfp() for x in mols] # Calculate their fingerprints
+>>> print(fps[0].bits, fps[1].bits)
+[261, 385, 671] [83, 261, 349, 671, 907]
+>>> print(fps[0] | fps[1]) # Print the Tanimoto coefficient
+0.3333
+
+
+
+
+

SMARTS matching#

+

Pybel also provides a simplified API to the Open Babel SMARTS +pattern matcher. A +Smarts +object is created, and the +findall() +method is then used to return a list of the matches to a given +Molecule.

+

Here is an example of its use:

+
>>> mol = readstring("smi","CCN(CC)CC") # triethylamine
+>>> smarts = Smarts("[#6][#6]") # Matches an ethyl group
+>>> print(smarts.findall(mol))
+[(1, 2), (4, 5), (6, 7)]
+
+
+
+
+

Combining Pybel with openbabel.py#

+

It is easy to combine the ease of use of Pybel with the +comprehensive coverage of the Open Babel toolkit that +openbabel.py provides. Pybel is really a wrapper around +openbabel.py, with the result that the OBAtom and OBMol used by +openbabel.py can be interconverted to the Atom and Molecule used by +Pybel.

+

The following example shows how to read a molecule from a PDB file +using Pybel, and then how to use openbabel.py to add hydrogens. It +also illustrates how to find out information on what methods and +classes are available, while at the interactive Python prompt.

+
>>> from openbabel import pybel
+>>> mol = next(pybel.readfile("pdb", "1PYB"))
+>>> help(mol)
+Help on Molecule in module pybel object:
+...
+ |  Attributes:
+ |     atoms, charge, dim, energy, exactmass, flags, formula,
+ |     mod, molwt, spin, sssr, title.
+...
+ |  The original Open Babel molecule can be accessed using the attribute:
+ |     OBMol
+...
+>>> print(len(mol.atoms), mol.molwt)
+3430 49315.2
+>>> dir(mol.OBMol) # Show the list of methods provided by openbabel.py
+['AddAtom', 'AddBond', 'AddConformer', 'AddHydrogens', 'AddPolarHydrogens', ... ]
+>>> mol.OBMol.AddHydrogens()
+>>> print(len(mol.atoms), mol.molwt)
+7244 49406.0
+
+
+

The next example is an extension of one of the openbabel.py +examples at the top of this page. It shows how a molecule could be +created using openbabel.py, and then written to a file using +Pybel:

+
from openbabel import openbabel, pybel
+
+mol = openbabel.OBMol()
+a = mol.NewAtom()
+a.SetAtomicNum(6)   # carbon atom
+a.SetVector(0.0, 1.0, 2.0) # coordinates
+b = mol.NewAtom()
+mol.AddBond(1, 2, 1)   # atoms indexed from 1
+
+pybelmol = pybel.Molecule(mol)
+pybelmol.write("sdf", "outputfile.sdf")
+
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/Python_PybelAPI.html b/docs/UseTheLibrary/Python_PybelAPI.html new file mode 100644 index 00000000..8d55127a --- /dev/null +++ b/docs/UseTheLibrary/Python_PybelAPI.html @@ -0,0 +1,561 @@ + + + + + + + + + + + Pybel API — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Pybel API#

+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/Ruby.html b/docs/UseTheLibrary/Ruby.html new file mode 100644 index 00000000..3a432010 --- /dev/null +++ b/docs/UseTheLibrary/Ruby.html @@ -0,0 +1,565 @@ + + + + + + + + + + + Ruby — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Ruby#

+

As with the other language bindings, just follow the instructions at Compile language bindings to build the Ruby bindings.

+

Like any Ruby module, the Open Babel bindings can be used from a Ruby script or interactively using irb as follows:

+
$ irb
+irb(main):001:0> require 'openbabel'
+=> true
+irb(main):002:0> c=OpenBabel::OBConversion.new
+=> #<OpenBabel::OBConversion:0x2acedbadd020>
+irb(main):003:0> c.set_in_format 'smi'
+=> true
+irb(main):004:0> benzene=OpenBabel::OBMol.new
+=> #<OpenBabel::OBMol:0x2acedbacfa10>
+irb(main):005:0> c.read_string benzene, 'c1ccccc1'
+=> true
+irb(main):006:0> benzene.num_atoms
+=> 6
+
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/intro.html b/docs/UseTheLibrary/intro.html new file mode 100644 index 00000000..7b3fe39e --- /dev/null +++ b/docs/UseTheLibrary/intro.html @@ -0,0 +1,602 @@ + + + + + + + + + + + Write software using the Open Babel library — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Write software using the Open Babel library#

+

Behind the obabel command line program lies a complete cheminformatics toolkit, the Open Babel library. Using this library, you can write your own custom scripts and software for yourself or others.

+
+

Note

+

Any software that uses the Open Babel library must abide by terms of the GNU Public License version 2. This includes all of the supporting language bindings (for example, Python scripts) as well as C++ programs. To summarise, if you are considering distributing your software to other people, you must make your source code available to them on request.

+
+

Open Babel is a C++ library and can easily be used from C++. In addition it can be accessed from Python, Perl, Ruby, CSharp and Java. These are referred to as language bindings (the Python bindings, etc.) and they were automatically generated from the C++ library using SWIG. For Python we also provide a module (Pybel) that makes it easier to access features of the bindings.

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/UseTheLibrary/migration.html b/docs/UseTheLibrary/migration.html new file mode 100644 index 00000000..150fd6e5 --- /dev/null +++ b/docs/UseTheLibrary/migration.html @@ -0,0 +1,709 @@ + + + + + + + + + + + Updating to Open Babel 3.0 from 2.x — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Updating to Open Babel 3.0 from 2.x#

+

Open Babel 3.0 breaks the API in a number of cases, and introduces some new behavior behind-the-scenes. These changes were necessary to fix some long standing issues impacting chemical accuracy as well as performance.

+

Here we describe the main changes, and how to change existing code to adapt.

+
+

Removal of babel#

+

The babel executable has been removed, and obabel should be used instead. Essentially obabel is a modern version of babel with additional capabilities and a more standard interface. Typically the only change needed is to place -O before the output filename:

+
$ babel -ismi tmp.smi -omol out.mol
+$ obabel -ismi tmp.smi -omol -O out.mol
+
+
+

Specifically, the differences are as follows:

+
    +
  • obabel requires that the output file be specified with a -O option. This is closer to the normal Unix convention for commandline programs, and prevents users accidentally overwriting the input file.

  • +
  • obabel is more flexible when the user needs to specify parameter values on options. For instance, the --unique option can be used with or without a parameter (specifying the criteria used). With babel, this only works when the option is the last on the line; with obabel, no such restriction applies. Because of the original design of babel, it is not possible to add this capability in a backwards-compatible way.

  • +
  • obabel has a shortcut for entering SMILES strings. Precede the SMILES by -: and use in place of an input file. The SMILES string should be enclosed in quotation marks. For example:

    +
    obabel -:"O=C(O)c1ccccc1OC(=O)C" -ocan
    +
    +
    +

    More than one can be used, and a molecule title can be included if enclosed in quotes:

    +
    obabel -:"O=C(O)c1ccccc1OC(=O)C aspirin" -:"Oc1ccccc1C(=O)O salicylic acid"
    +       -ofpt
    +
    +
    +
  • +
  • obabel cannot use concatenated single-character options.

  • +
+
+
+

Python module#

+

In OB 3.x, both openbabel.py and pybel.py live within the openbabel module:

+
# OB 2.x
+import openbabel as ob
+import pybel
+
+# OB 3.0
+from openbabel import openbabel as ob
+from openbabel import pybel
+
+
+

While more verbose, the new arrangement is in line with standard practice and helps avoid conflict with a different Python project, PyBEL.

+
+ +
+

Atom classes#

+

In OB 2.x, atom class information was stored as part of an OBAtomClassData object attached to an OBMol and accessed via OBMol.GetData("Atom Class"). In OB 3.0, atom class information is instead stored as an OBPairInteger associated with an OBAtom and accessed via OBAtom.GetData("Atom Class"). In Python:

+
# OB 3.0
+data = myatom.GetData("Atom Class")
+atom_class = None
+if data is not None:
+     atom_class = ob.toPairInteger(data).GetGenericValue()
+
+
+
+
+

OBAtom valence and degree methods#

+

OB 2.x referred to the function that returned the explicit degree of an atom as GetValence(). This was confusing, at best. To find the explicit valence, the BOSum() method was required. OB 3.0 avoids this confusion by renaming methods associated with degree or valence:

+
    +
  • OBAtom::GetExplicitValence() (OB 2.x BOSum())

  • +
  • OBAtom::GetExplicitDegree() (OB 2.x GetValence())

  • +
  • OBAtom::GetHvyDegree() (OB 2.x GetHvyValence())

  • +
  • OBAtom::GetHeteroDegree() (OB 2.x GetHeteroValence())

  • +
+
+
+

Molecule, atom and bond flags#

+

The “Unset” methods for molecule, atom and bond flags have been removed. Instead, a value of false should be passed to the corresponding “Set” method. For example, OBMol::UnsetAromaticPerceived() in OB 2.x is now OBMol::SetAromaticPerceived(false).

+
+
+

Removal of deprecated methods#

+

Several deprecated methods have been removed. For the most part, an equivalent function with a different name is present in the API:

+
    +
  • OBBond::GetBO()/SetBO() removed. OBBond::GetBondOrder()/SetBondOrder() should be used instead.

  • +
  • OBAtom::GetCIdx() removed. OBAtom::GetCoordinateIdx() should be used instead.

  • +
  • OBBitVec::Empty() removed. OBBitVec::IsEmpty() should be used instead.

  • +
  • OBBitVec::BitIsOn() removed. OBBitVec::BitIsSet() should be used instead.

  • +
+
+
+

Handling of implicit hydrogens#

+

With OB 3.0, the number of implicit hydrogens is stored as a property of the atom. This value can be interrogated and set independently of any other property of the atom. This is how other mature cheminformatics toolkits handle implicit hydrogens. In contrast, in OB 2.x this was a derived property worked out from valence rules and some additional flags set on an atom to indicate non-standard valency.

+

From the point of view of the user, the advantage of the 2.x approach was that the user never needed to consider the implicit hydrogens; their count was calculated based on the explicit atoms (a behavior known as “floating valence”). The disadvantage was that it was difficult for the user to specify non-standard valencies, may have papered-over problems with the data, gave rise to subtle bugs which were not easily addressed and had poorer performance.

+

As an example of how the behavior has changed, let’s look at creating a bond. If we read the SMILES string C.C, create a bond between the two atoms and write out the SMILES string, we get different answers for OB 2.x (CC) versus OB 3.0 ([CH4][CH4]). OB 2.x just works out the count based on standard valence rules. With OB 3.0, there were four implicit hydrogens on each carbon before we made the bond, and there still are four - they didn’t go anywhere and weren’t automatically adjusted.

+

While this may seem like a major change, adapting code to handle the change should be straightforward: adding or removing a bond should be accompanied by incrementing or decrementing the implicit hydrogen count by the bond order. This also applies to deleting an atom, since this deletes any bonds connected to it. Note that care should be taken not to set the hydrogen count to a negative value when decrementing.

+
unsigned int bondorder = 1;
+mol->AddBond(1, 2, bondorder);
+OBAtom* start = mol->GetAtom(1);
+unsigned int hcount = start->GetImplicitHCount();
+start->SetImplicitHCount(bondorder >= hcount ? 0 : hcount - bondorder);
+OBAtom* end = mol->GetAtom(2);
+hcount = end->GetImplicitHCount();
+end->SetImplicitHCount(bondorder >= hcount ? 0 : hcount - bondorder);
+
+
+

For the particular case of creating a new atom, it is worth noting that the implicit hydrogen count defaults to zero and that users must set it themselves if necessary. To help with this situation a convenience function has been added to OBAtom that sets the implicit hydrogen count to be consistent with normal valence rules. TODO

+

Regarding specific API functions, the following have been removed:

+
    +
  • OBAtom::SetImplicitValence(), GetImplicitValence()

  • +
  • OBAtom::IncrementImplicitValence(), DecrementImplicitValence()

  • +
  • OBAtom::ForceNoH(), HasNoHForce(), ForceImplH(), HasImplHForced()

  • +
  • OBAtom::ImplicitHydrogenCount()

  • +
+

The following have been added:

+
    +
  • OBAtom::SetImplicitHCount(), GetImplicitHCount()

  • +
+
+
+

Handling of aromaticity#

+

Molecule modification no longer clears the aromaticity perception flag. If the user wishes to force reperception after modification, then they should call OBMol::SetAromaticPerceived(false).

+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/WritePlugins/AddFileFormat.html b/docs/WritePlugins/AddFileFormat.html new file mode 100644 index 00000000..87a23717 --- /dev/null +++ b/docs/WritePlugins/AddFileFormat.html @@ -0,0 +1,561 @@ + + + + + + + + + + + How to add a new file format — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

How to add a new file format#

+

Adding support for a new file format is a relatively easy process, particularly with Open Babel 2.3 and later. Here are several important steps to remember when developing a format translator:

+
+
    +
  1. Create a file for your format in src/formats/ or src/formats/xml/ (for XML-based formats). Ideally, this file is self-contained although several formats modules are compiled across multiple source code files.

  2. +
  3. Add the name of the new .cpp file to an appropriate place in src/formats/CMakeLists.txt. It will now be compiled as part of the build process.

  4. +
  5. Take a look at other file format code, particularly exampleformat.cpp, which contains a heavily-annotated description of writing a new format. XML formats need to take a different approach; see the code in xcmlformat.cpp or pubchemformat.cpp.

  6. +
  7. When reading in molecules (and thus performing a lot of molecular modifications) call :obapi:`OBMol::BeginModify() <OpenBabel::OBMol::BeginModify>` at the beginning and :obapi:`OBMol::EndModify() <OpenBabel::OBMol::EndModify>` at the end. This will ensure that perception routines do not run while you read in a molecule and are reset after your code finishes (see Lazy Evaluation).

  8. +
  9. Currently, lazy perception does not include connectivity and bond order assignment. If your format does not include bonds, make sure to call :obapi:`OBMol::ConnectTheDots() <OpenBabel::OBMol::ConnectTheDots>` and :obapi:`OBMol::PerceiveBondOrders() <OpenBabel::OBMol::PerceiveBondOrders>` after :obapi:`OBMol::EndModify() <OpenBabel::OBMol::EndModify>` to ensure bonds are assigned.

  10. +
  11. Consider various input and output options that users can set from the command-line or GUI. For example, many quantum mechanics formats (as well as other formats which do not recognize bonds) offer the following options:

    +

    -as Call only :obapi:`OBMol::ConnectTheDots() <OpenBabel::OBMol::ConnectTheDots>` (single bonds only)

    +

    -ab No bond perception

    +
  12. +
  13. Make sure to use generic data classes like :obapi:`OBUnitCell` and others as appropriate. If your format stores any sort of common data types, consider adding a subclass of :obapi:`OBGenericData` for use by other formats and user code.

  14. +
  15. Please make sure to add several example files to the test set repository. Ideally, these should work several areas of your import code – in the end, the more robust the test set, the more stable and useful Open Babel will be. The test files should include at least one example of a correct file and one example of an invalid file (i.e., something which will properly be ignored and not crash babel).

  16. +
  17. Make sure to document your format using the string returned by Description(). At the minimum this should include a description of all options, along with examples. However, the more information you add (e.g. unimplemented features, applications of the format, and so forth) the more confident users will be in using it.

  18. +
  19. That’s it! Contact the openbabel-discuss mailing list with any questions, comments, or to contribute your new format code.

  20. +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/WritePlugins/AddNewDescriptor.html b/docs/WritePlugins/AddNewDescriptor.html new file mode 100644 index 00000000..59a638ba --- /dev/null +++ b/docs/WritePlugins/AddNewDescriptor.html @@ -0,0 +1,633 @@ + + + + + + + + + + + How to add a new descriptor — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

How to add a new descriptor#

+

[Some text here]

+
+

Add a new group contribution descriptor#

+

Group contribution descriptors are a common type of molecular descriptor whose value is a sum of contributions from substructures of the molecule. Such a descriptor can easily be added to Open Babel without the need to recompile the code. All you need is a set of SMARTS strings for each group, and their corresponding contributions to the descriptor value.

+

The following example shows how to add a new descriptor, hellohalo, whose value increments by 1, 2, 3 or 4 for each F, Cl, Br, and I (respectively) in the molecule.

+
    +
  1. Create a working directory, for example C:\Work.

  2. +
  3. Copy the plugin definition file, plugindefines.txt to the working directory. This file can be found in the Open Babel data directory (typically in /usr/share/openbabel on Linux systems, or C:\Users\username\AppDataRoaming\OpenBabel-2.3.2\data on Windows).

  4. +
  5. For the hellohalo descriptor, add the following to the end of plugindefines.txt (make sure to include a blank line between it and other descriptor definitions):

    +
    OBGroupContrib
    +hellohalo              # name of descriptor
    +hellohalo_smarts.txt   # data file
    +Count up the number of halogens (sort of)\n    # brief description
    +This descriptor is not correlated with any\n   # longer description
    +known property, living or dead.
    +
    +
    +
  6. +
  7. Now create a file hellohalo_smarts.txt, again in the working directory, containing the following SMARTS definitions and contribution values:

    +
    # These are the SMARTS strings and contribution values
    +# for the 'hellohalo' group contribution descriptor.
    +;heavy
    +F    1  # This is for fluorines
    +Cl   2  # And this is for chlorines
    +Br   3  # Etc.
    +I    4  # Ditto
    +
    +
    +
  8. +
+

That’s it!

+

Now let’s test it. Open a command prompt, and change directory to the working directory. We can find information on the new descriptor using obabel’s -L option:

+
C:\Work>obabel -L descriptors
+abonds    Number of aromatic bonds
+atoms    Number of atoms
+...
+hellohalo    Count up the number of halogens (sort of)
+...
+title    For comparing a molecule's title
+TPSA    topological polar surface area
+
+C:\Work>obabel -L hellohalo
+One of the descriptors
+hellohalo    Count up the number of halogens (sort of)
+This descriptor is not correlated with any
+known property, living or dead.
+ Datafile: hellohalo_smarts.txt
+OBGroupContrib is definable
+
+
+

An easy way to test the descriptor is to use the title output format, and append the descriptor value to the title:

+
C:\Work>obabel -:C(Cl)(Cl)I -otxt --append hellohalo
+8
+1 molecule converted
+
+
+

There are a couple of points to note about the pattern file:

+
    +
  1. Although a SMARTS string may match a substructure of a molecule, the descriptor contribution is only assigned to the first atom of the match.

  2. +
  3. Where several SMARTS strings assign values to the same atom, only the final assignment is retained. As an example, the following set of patterns will assign a contribution of 0.4 to all atoms except for carbon atoms, which have a value of 1.0:

    +
    ;heavy
    +[*]     0.4    # All atoms
    +[#6]    1.0    # All carbon atoms
    +
    +
    +
  4. +
  5. If you wish to take into account contributions from hydrogen atoms, you should precede the ;heavy section by a ;hydrogen section. The values for the contributions in the latter section are multiplied by the number of hydrogens attached to the matching atom. For example, consider the following set of patterns:

    +
    ;hydrogen
    +[*]  0.2   # Hydrogens attached to all atoms
    +C    1.0   # Hydrogens attached to an aliphatic carbon
    +;heavy
    +C   10.0   # An aliphatic carbon
    +
    +
    +

    For ethanol, this gives a value of 25.2: two carbons (20.0), five hydrogens attached to a carbon (5.0), and one other hydrogen (0.2).

    +
  6. +
+

For further inspiration, check out psa.txt, mr.txt and logp.txt in the data directory. These are the group contribution descriptions for Polar Surface Area, Molar Refractivity and LogP.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/WritePlugins/AddingNewOptions.html b/docs/WritePlugins/AddingNewOptions.html new file mode 100644 index 00000000..110cbf1e --- /dev/null +++ b/docs/WritePlugins/AddingNewOptions.html @@ -0,0 +1,621 @@ + + + + + + + + + + + Adding new operations and options — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Adding new operations and options#

+

The babel command line has the form:

+
babel inputfile [outputfile] [options]
+
+
+

There are several types of options:

+
+
+
Options that control the conversion process

For example -i, -o and -m

+
+
Options specific to particular input or output formats

These are specified with the -a and -x prefixes

+
+
General options

These usually operate on a molecule after it has been read by the input format and before it has been written by the output format.

+
+
+
+

The ones of interest here are the general options. These can be single letter options like -c (which centers coordinates), or multi-character options like --separate (which makes separate molecules from disconnected fragments). The ones mentioned are hardwired into the code, but it is possible to define new options that work in a similar way. This is done using the :obapi:`OBOp` class.

+
+

The OBOp class#

+

The name :obapi:`OBOp` is intended to imply an operation as well as an option. This is a plugin class, which means that new ops are easily added without a need to alter any existing code.

+

The ops that are installed can be found using:

+
babel -L ops
+
+
+

or in the plugins menu item in the GUI. An example is the --gen3D option, which adds 3D coordinates to a molecule:

+
 1     class OpGen3D : public OBOp
+ 2     {
+ 3     public:
+ 4       OpGen3D(const char* ID) : OBOp(ID, false){};
+ 5       const char* Description(){ return "Generate 3D coordinates"; }
+ 6
+ 7       virtual bool WorksWith(OBBase* pOb)const
+ 8         { return dynamic_cast<OBMol*>(pOb)!=NULL; }
+ 9       virtual bool Do(OBBase* pOb, OpMap* pmap, const char* OptionText);
+10     };
+11
+12     OpGen3D theOpGen3D("gen3D");
+13
+14     bool OpGen3D::Do(OBBase* pOb, OpMap* pmap, const char* OptionText)
+15     {
+16       OBMol* pmol = dynamic_cast<OBMol*>(pOb);
+17       if(!pmol)
+18         return false;
+19
+20       OBBuilder builder;
+21       builder.Build(*pmol);
+22       pmol->SetDimension(3);
+23
+24       return true;
+25     }
+
+
+

The real work is done in the Do function, but there is a bit of boilerplate code that is necessary.

+

Line 4: The constructor calls the base class constructor, which registers the class with the system. There could be additional parameters on the constructor if necessary, provided the base constructor is called in this way. (The false parameter value is to do with setting a default instance which is not relevant here.)

+

Line 5: It is necessary to provide a description. The first line is used as a caption for the GUI checkbox. Subsequent lines are shown when listed with the verbose option.

+

Line 7: WorksWith() identifies the type of object. Usually this is a molecule (OBMol) and the line is used as shown. The function is used by the GUI to display the option only when it is relevant.

+
+

The OBOp base class doesn’t know about OBMol or OBConversion and so it can be used with any kind of object derived from OBBase (essentially anything). Although this means that the dependencies between one bit of the program and another are reduced, it does lead to some compromises, such as having to code WorksWith() explicitly rather than as a base class default.

+
+

Line 12: This is a global instance which defines the Id of the class. This is the option name used on the command line, preceded by --.

+

Line 14: The Do() function carries out the operation on the target object. It should normally return true. Returning false prevents the molecule being sent to the output format. Although this means that it is possible to use an OBOp class as a filter, it is better to do this using the --filter option.

+

Any other general options specified on the command line (or the GUI) can be accessed by calling find on the parameter pmap. For example, to determine whether the -c option was also specified:

+
OpMap::const_iterator iter = pmap->find("c");
+if(iter!=pmap->end())
+  do something;
+
+
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/WritePlugins/index.html b/docs/WritePlugins/index.html new file mode 100644 index 00000000..509b379c --- /dev/null +++ b/docs/WritePlugins/index.html @@ -0,0 +1,582 @@ + + + + + + + + + + + Adding plugins — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Adding plugins#

+

Open Babel uses a plugin architecture for file formats, ‘operations’, charge models, forcefields, fingerprints and descriptors. The general idea behind plugins is described on Wikipedia. When you start an application that uses the Open Babel library, it searches for available plugins and loads them. This means, for example, that plugins could be distributed separately to the Open Babel distribution.

+

In fact, even the plugin types are themselves plugins; this makes it easy to add new categories of plugin. The different types of plugins can be listed using:

+
C:\>babel -L
+charges
+descriptors
+fingerprints
+forcefields
+formats
+loaders
+ops
+
+
+

To list the plugins of a particular type, for example, charge models, just specify the plugin type:

+
C:\>babel -L charges
+gasteiger    Assign Gasteiger-Marsili sigma partial charges
+mmff94       Assign MMFF94 partial charges
+qeq    Assign QEq (charge equilibration) partial charges (Rappe and Goddard, 199
+1)
+qtpie    Assign QTPIE (charge transfer, polarization and equilibration) partial
+charges (Chen and Martinez, 2007)
+
+
+

To add a new plugin of any type, the general method is very simple:

+
    +
  1. Make a copy of an existing plugin .cpp file

  2. +
  3. Edit it so that it does what you want

  4. +
  5. Add the name of the .cpp file to the appropriate CMakeLists.txt.

  6. +
+

The following sections describe in depth how to add support for a new file format or operation to Open Babel. Remember that if you do add a new plugin, please contribute the code back to the Open Babel project.

+ +
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..425bd9e9 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,742 @@ + + + + + + + + + + + User Guide — Open Babel openbabel-3-1-1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

User Guide#

+
+

Open Babel, or how I learned to love the chemistry file format#

+

The latest version of this documentation is available in several formats from http://openbabel.org/docs/

+
+ +
+
+
+ + +
+ + + + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/genindex.html b/genindex.html index e647c9a7..867a0bb4 100644 --- a/genindex.html +++ b/genindex.html @@ -140,6 +140,13 @@