Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qcscine/molassembler
Chemoinformatics toolkit with support for inorganic molecules
https://github.com/qcscine/molassembler
chemistry chemoinformatics conformer-generator data-structures graph-algorithms molecule molecule-builder stereochemistry
Last synced: 2 months ago
JSON representation
Chemoinformatics toolkit with support for inorganic molecules
- Host: GitHub
- URL: https://github.com/qcscine/molassembler
- Owner: qcscine
- License: bsd-3-clause
- Created: 2020-11-27T11:27:09.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-26T04:16:44.000Z (4 months ago)
- Last Synced: 2024-09-27T08:41:32.444Z (3 months ago)
- Topics: chemistry, chemoinformatics, conformer-generator, data-structures, graph-algorithms, molecule, molecule-builder, stereochemistry
- Language: C++
- Homepage: https://scine.ethz.ch/download/molassembler
- Size: 10.3 MB
- Stars: 32
- Watchers: 6
- Forks: 7
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE.txt
Awesome Lists containing this project
README
SCINE - Molassembler
====================Overview
--------Molassembler is a C++ library that aims to facilitate conversions between
Cartesian and graph representations of molecules. It provides the necessary
functionality to represent a molecule as a graph, modify it in graph space, and
generate new coordinates from graphs. It can capture the absolute configuration
of inorganic molecules with multidentate and haptic ligands from Cartesian
coordinates and enumerate non-superposable stereopermutations at non-terminal
atoms and non-isotropic bonds at arbitrary local shapes ranging up to the
icosahedron and cuboctahedron.Features
--------- Molecules can be constructed from many types of information.
- Stereocenters are treated in shapes ranging from monovacant tetrahedron all
the way up to the icosahedron and cuboctahedron.
- A high-temperature approximation is invoked by default to avoid considering
inverting nitrogen centers as stereocenters, but this is optional. Even in
the high-temperature approximation, nitrogen centers whose substituents
form a strained cycle and hence do not invert rapidly are considered a
stereocenter.
- All stereocenter permutations are generated with relative statistical
occurrence weights. Linking of ligands (denticity) is properly considered.
Several classes of haptic ligands are supported.
- Editing of molecules preserves chiral information by default, and is highly
configurable.
- Molecules can be canonicalized for fast isomorphism tests. Canonicalization
can be customized to use subsets of the available information for vertex
coloring if desired.
- Ranking algorithms are nearly fully IUPAC Blue Book 2013 compliant,
generalized to larger coordination polyhedra.
- Stochastic conformer generation with Distance Geometry
- Directed conformer generation through enumeration of rotamersLicense
-------Molassembler is licensed under the BSD 3-clause "New" or "Revised" license. See
also the ``LICENSE.txt`` file.Integrating
-----------This library requires the C++17 standard.
Dependencies:
- `SCINE Utilities `_ (BSD-3 license) >= 3.0.0
- `Boost `_ (Boost license) >= 1.65 (lowest tested, prefer newest)
- `Eigen `_ (MPL 2.0 license) >= 3.3.2
- `RingDecomposerLib `_ [1]_ (BSD-3 license): Unique Ring Family [2]_ cycle detection
- `Outcome `_ single-header (Boost license): Enforce error handling requirement in type system
- `JSON For Modern C++ `_ (MIT license): JSON serialization
- `nauty `_ [3]_ (Apache 2.0 license): Graph automorphism determination and canonical labeling
- (MKL/LAPACK/BLAS libraries, added if detected during compilation)Can currently be compiled with:
- GCC >= 7
- Clang >= 4
- MinGW-w64 (latest)MSVC is currently untested. Last attempts failed because of compiler standard
compliance issues with ``constexpr`` code.How to Cite
-----------When publishing results obtained with Molassembler, please cite the
corresponding release as archived on `Zenodo `_.In addition, we kindly request you cite the following article when using
Molassembler:J.-G. Sobez, M. Reiher, "Molassembler: Molecular Graph Construction,
Modification, and Conformer Generation for Inorganic and Organic
Molecules", *J. Chem. Inf. Model*, **2020**, *60*, 3884.Furthermore, when publishing results obtained with any SCINE module, please cite the following paper:
T. Weymuth, J. P. Unsleber, P. L. Türtscher, M. Steiner, J.-G. Sobez, C. H. Müller, M. Mörchen,
V. Klasovita, S. A. Grimmel, M. Eckhoff, K.-S. Csizi, F. Bosia, M. Bensberg, M. Reiher,
"SCINE—Software for chemical interaction networks", *J. Chem. Phys.*, **2024**, *160*, 222501
(DOI `10.1063/5.0206974 `_).Installation
------------CMake
.....When building with CMake, Boost and Eigen must be installed and available via
CMake's ``find_package`` (e.g. via ``CMAKE_PREFIX_PATH``). Any of the other
libraries can be available, but are downloaded dynamically if missing.Clone the repository, then enter the following commands::
git submodule update --init
mkdir build-release
cd build-release
cmake -DCMAKE_BUILD_TYPE=Release ..
makeYou may want to peruse the CMake options to disable building the tests or
activating the Python binding builds. Run ``cmake -L ..`` to list options
affecting the build. Look for options with the ``SCINE_`` prefix.Conan
.....No dependencies must be preinstalled, and you do not need to download the
sources. To install/build with Conan::conan remote add scine https://scine-artifactory.ethz.ch/artifactory/api/conan/public
conan install -r scine --build=missing scine_molassembler/3.0.0@Should you want Python bindings, add ``-o scine_molassembler:python=True`` before
the last argument.PyPI
....``manylinux`` packages of thie Python bindings are available from PyPI and can be
installed with::python3 -m pip install scine_molassembler
Documentation
-------------Built documentation for releases is available for the `C++ library`_ and `Python bindings`_.
If ``doxygen`` is found, the C++ library documentation is built. If the Python
bindings are built and the ``sphinx`` Python module is available, the Python
binding documentation is generated too... _C++ library: https://scine.ethz.ch/static/download/documentation/molassembler/v3.0.0/cpp/index.html
.. _Python bindings: https://scine.ethz.ch/static/download/documentation/molassembler/v3.0.0/py/index.html
References
----------.. [1] Flachsenberg, F.; Andresen, N.; Rarey, M. RingDecomposerLib: An
Open-Source implementation of Unique Ring Families and Other Cycle Bases. J.
Chem. Inf. Model., 2017, 57 (2), pp 122–126.. [2] Kolodzik, A.; Urbaczek, S.; Rarey, M. Unique Ring Families: A Chemically
Meaningful Description of Molecular Ring Topologies. J. Chem. Inf. Model.,
2012, 52 (8), pp 2013–2021.. [3] McKay, Brendan D.; Adolfo Piperno. Practical graph isomorphism, II.
J. Symb. Comput., 2014, 60, pp 94-112.