Git Product home page Git Product logo

qcscine / molassembler Goto Github PK

View Code? Open in Web Editor NEW
31.0 6.0 7.0 10.52 MB

Chemoinformatics toolkit with support for inorganic molecules

Home Page: https://scine.ethz.ch/download/molassembler

License: BSD 3-Clause "New" or "Revised" License

CMake 1.24% Python 0.77% C++ 96.62% R 0.61% Shell 0.03% Makefile 0.01% TeX 0.62% C 0.12%
chemistry chemoinformatics molecule-builder conformer-generator data-structures graph-algorithms molecule stereochemistry

molassembler's Introduction

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 rotamers

License

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 ..
make

You 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.

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.

molassembler's People

Contributors

jan-grimo avatar nabbelbabbel avatar reiher-research-group avatar steinmig avatar weymutht avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

molassembler's Issues

Cannot get the conformer of Ir coordinate complex

Hi,

I fail to get the conformer of Ir complex. The ligands are three bidentate ligands C1=Nc2ncccc2C1 and the coordination atoms are N atoms. Could you please give me some suggestions? Thank you.

Here is my code:

from scine_molassembler import io
from scine_molassembler import dg

shipscrew_smiles = '[Ir+3]123([N+]4=CCc5ccc[n+]1c54)([N+]1=CCc4ccc[n+]2c41)[N+]1=CCc2ccc[n+]3c21'
shipscrew = io.experimental.from_smiles(shipscrew_smiles)

permutator = shipscrew.stereopermutators.option(0)
assert permutator is not None

config = dg.Configuration()
# config.spatial_model_loosening = 2.0

for i in range(permutator.num_assignments):
    shipscrew.assign_stereopermutator(0, i)
    result = dg.generate_random_conformation(shipscrew, config)
    assert not isinstance(result, str)
    io.write("shipscrew-" + str(i) + ".mol", shipscrew, result)

Here is the output:

TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_6605/1604243307.py in 
     15     result = dg.generate_random_conformation(shipscrew, config)
     16     assert not isinstance(result, str)
---> 17     io.write("shipscrew-" + str(i) + ".mol", shipscrew, result)

TypeError: write(): incompatible function arguments. The following argument types are supported:
    1. (filename: str, molecule: scine_molassembler.Molecule, positions: numpy.ndarray[numpy.float64[m, 3]]) -> None
    2. (filename: str, molecule: scine_molassembler.Molecule) -> None

Invoked with: 'shipscrew-0.mol', , 

Build fails with clang 13 on MacOS

Compilation fails with clang 13 on MacOS. I'm aware that you don't support MacOS, however the compilation still fails which is worth reporting.

[16/135] Building CXX object src/CMakeFiles/molassembler_obj.dir/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp.o
FAILED: src/CMakeFiles/molassembler_obj.dir/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp.o 
$BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-clang++ -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DEIGEN_USE_BLAS -I$SRC_DIR/src -I$SRC_DIR/_build/src -isystem $SRC_DIR/_build -isystem $PREFIX/include/eigen3 -isystem $PREFIX -isystem $PREFIX/include/Scine -isystem /Users/runner/mambaforge/conda-bld/scine-molassembler_1657188655384 -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/scine-molassembler-1.2.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -O3 -DNDEBUG -isysroot /Applications/Xcode_12.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wshadow -Wpedantic -fconstexpr-steps=100000000 -fconstexpr-backtrace-limit=0 -fopenmp=libomp -std=gnu++14 -MD -MT src/CMakeFiles/molassembler_obj.dir/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp.o -MF src/CMakeFiles/molassembler_obj.dir/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp.o.d -o src/CMakeFiles/molassembler_obj.dir/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp.o -c $SRC_DIR/src/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp
$SRC_DIR/src/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp:868:3: error: use of undeclared identifier 'feenableexcept'; did you mean 'feraiseexcept'?
  feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
  ^~~~~~~~~~~~~~
  feraiseexcept
/Applications/Xcode_12.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/fenv.h:235:12: note: 'feraiseexcept' declared here
extern int feraiseexcept(int /* excepts */);
           ^
$SRC_DIR/src/Molassembler/DistanceGeometry/TetrangleSmoothing.cpp:932:3: error: use of undeclared identifier 'fedisableexcept'; did you mean 'feraiseexcept'?
  fedisableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
  ^~~~~~~~~~~~~~~
  feraiseexcept
/Applications/Xcode_12.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/fenv.h:235:12: note: 'feraiseexcept' declared here
extern int feraiseexcept(int /* excepts */);
           ^
2 errors generated.

CMake configuration

-- The C compiler identification is Clang 13.0.1
-- The CXX compiler identification is Clang 13.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Scine::UtilsOS found locally at $PREFIX/lib/cmake/ScineUtilsOS
-- Could NOT find nauty (missing: nauty_DIR)
-- nauty found locally at nauty_DIR-NOTFOUND
-- Found nlohmann_json: $PREFIX/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.10.5") 
-- Could NOT find RingDecomposerLib (missing: RingDecomposerLib_DIR)
-- RingDecomposerLib found locally at RingDecomposerLib_DIR-NOTFOUND
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Doxygen not found - Documentation for Molassembler will not be built.
-- Configuring done
-- Generating done

System info

     active environment : base
    active env location : /Users/runner/mambaforge
            shell level : 1
       user config file : /Users/runner/.condarc
 populated config files : /Users/runner/mambaforge/.condarc
          conda version : 4.12.0
    conda-build version : 3.21.9
         python version : 3.9.13.final.0
       virtual packages : __osx=10.15.7=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /Users/runner/mambaforge  (writable)
      conda av data dir : /Users/runner/mambaforge/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /Users/runner/mambaforge/pkgs
                          /Users/runner/.conda/pkgs
       envs directories : /Users/runner/mambaforge/envs
                          /Users/runner/.conda/envs
               platform : osx-64
             user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.13 Darwin/19.6.0 OSX/10.15.7
                UID:GID : 501:20
             netrc file : None
           offline mode : False

Graph.Cycles gives incorrect output

Hello!

I noticed that scine_molassembler.Cycles gives incorrect atomic positions when I iterate through cycles - it just repeats the same numbers.
Screen Shot 2023-09-21 at 2 50 24 PM

When ligands are different, the issue persists with atomic positions being mixed from different cycles into one.

Could you look into it?

My expected output is:
[[(0, 3), (0, 4), (1, 3), (1, 4)], [(0, 7), (0, 8), (5, 7), (5, 8)], [(0, 11), (0, 12), (9, 11), (9, 12)]]
bino3.xyz.zip

Linking against shared library

Setting -DBUILD_SHARED_LIBS=ON does only additionally build a shared library and not disable the static library build. Further, linking against the shared library leads to missing symbols for some reason.

Is there a possibility to avoid building the static library and specially link the Python extension module against the shared library (see #6)?

ZeroAssignmentStereopermutators Error for unclear reason

I am using Python Molassembler in Google CoLab to operate with graphs and generate 3d representations. The molecule I am working with is Bi-ion surrounded by ligands. I have built a graph and obtained 3d structures with dg.generate_ensemble (image 1):
Screen Shot 2023-01-25 at 11 18 46 AM

Then I remove one of the ligands and try to generate 3d structures again, but this time I get Error.ZeroAssignmentStereopermutators (image 2):
Screen Shot 2023-01-25 at 11 22 11 AM

This seems not very reasonable to me. Could you check that it works how it supposed to be?

a problem occured while compare two structures

when I tried to compare two structures, the results is same. However, there is some differences between them. So I wonder is there some adjusts need to fix this problem.

the results:
Atom stereopermutators in file 1:
5: bent, AB, 0 (1)
3: triangle, ABC, 0 (1)
0: triangle, AAB, 0 (1)

Atom stereopermutators in file 2:
5: bent, AB, 0 (1)
3: triangle, ABC, 0 (1)
0: triangle, AAB, 0 (1)

Bond stereopermutators in file 1:

Bond stereopermutators in file 2:

The component AtomEnvironmentComponents.BondOrders is the same between the two molecules.

The component AtomEnvironmentComponents.Connectivity is the same between the two molecules.

The component AtomEnvironmentComponents.ElementTypes is the same between the two molecules.

The component AtomEnvironmentComponents.ElementsAndBonds is the same between the two molecules.

The component AtomEnvironmentComponents.ElementsBondsAndShapes is the same between the two molecules.

The component AtomEnvironmentComponents.Shapes is the same between the two molecules.

The component AtomEnvironmentComponents.Stereopermutations is the same between the two molecules.

The component AtomEnvironmentComponents.All is the same between the two molecules.
屏幕截图 2024-08-21 150017
屏幕截图 2024-08-21 150037

fail to install the library following the instruction..

Hi Expert,
Need some help to install the library.. I have tried to follow the instruction. But no luck to success..

CMake

Could you elaborate "When building with CMake, Boost and Eigen must be installed and available via CMake's find_package (e.g. via CMAKE_PREFIX_PATH). "
I have downloaded Boost and Eigen, but I don't find out how to link it to CMake.. (via modifying CMakeLists.txt?)
Here is the output when I try to run cmake -DCMAKE_BUILD_TYPE=Rlease .. in the build-release directory:

CMake Warning at dev/cmake/ComponentSetup.cmake:61 (message):
  You are compiling Scine components with an architecture-specific ISA:
  -march=native.  Linking together libraries with mismatched architecture
  build flags can cause problems, in particular with Eigen.  Watch out!
Call Stack (most recent call first):
  build-release/scine-utils-os-src/CMakeLists.txt:16 (scine_setup_component)


CMake Warning at /usr/share/cmake/Modules/FindBoost.cmake:1354 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindBoost.cmake:1476 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake/Modules/FindBoost.cmake:2086 (_Boost_MISSING_DEPENDENCIES)
  build-release/scine-core-src/src/Core/CMakeLists.txt:3 (find_package)


CMake Warning at /usr/share/cmake/Modules/FindBoost.cmake:1354 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindBoost.cmake:1476 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake/Modules/FindBoost.cmake:2086 (_Boost_MISSING_DEPENDENCIES)
  build-release/scine-core-src/src/Core/CMakeLists.txt:3 (find_package)


CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Boost (missing: system filesystem) (found version "1.82.0")
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindBoost.cmake:2344 (find_package_handle_standard_args)
  build-release/scine-core-src/src/Core/CMakeLists.txt:3 (find_package)


-- Configuring incomplete, errors occurred!
See also "/anfhome/a-zhiwenshi/azurequantumnotebookdemos/aiida_pyscf/ie/molassembler/build-release/CMakeFiles/CMakeOutput.log".

conan

Here is the output when I run conan install -r scine --build=missing scine_molassembler/2.0.0@

ERROR: Conanfile not found at /anfhome/a-zhiwenshi/azurequantumnotebookdemos/aiida_pyscf/ie/scine_molassembler/2.0.0@

seems missing Conanfile to configure the process?..(how to create then?)

PyPI

run python3 -m pip install scine-molassemler gives me:

ERROR: Could not find a version that satisfies the requirement scine-molassemler (from versions: none)
ERROR: No matching distribution found for scine-molassemler

I have checked https://pypi.org/project/scine-molassembler/#files for the release. It shows another package name with - instead of _. But it gives me the same response when I run pip install scine-molassembler:

ERROR: Could not find a version that satisfies the requirement scine-molassembler (from versions: none)
ERROR: No matching distribution found for scine-molassembler

I am really interested in the library, but get frustrated in installation.. HELP.. :)

Compile error!

molassembler/src/Molassembler/IO/Base64.h:23:43: error: ‘uint8_t’ is not a member of ‘std’; did you mean ‘wint_t’?
23 | std::string encode(const std::vectorstd::uint8_t& inputBuffer);

Do not copy shared libs into Python modules

I noticed that building the Python bindings of molassembler (and most other Scine modules), will try to copy needed shared libraries into the Python package. Copying the utilities module (~105MB) into every Python package is quite wasteful and defeats the point of dynamic linking.

Is there an easier way than patching the CMake build files to not copy shared libraries from outside the project into the Python package?

Compilation with gcc 13.2.1

Hi
Molassembler does not compile with GCC 13.2.1 I needed to include <cstdint> in /molassembler/src/Molassembler/IO/BinaryHandler.h and /molassembler/src/Molassembler/IO/Base64.h

Best regards
Joël Landis

Test failures on Linux with GCC 10

Trying to build molassembler currently fails for me due to errors in the tests:

+ cmake -DCMAKE_AR=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-ar -DCMAKE_CXX_COMPILER_AR=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-gcc-ar -DCMAKE_C_COMPILER_AR=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-gcc-ar -DCMAKE_RANLIB=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-ranlib -DCMAKE_CXX_COMPILER_RANLIB=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-gcc-ranlib -DCMAKE_C_COMPILER_RANLIB=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-gcc-ranlib -DCMAKE_LINKER=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-ld -DCMAKE_STRIP=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin/x86_64-conda-linux-gnu-strip -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY '-DCMAKE_FIND_ROOT_PATH=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl;/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/x86_64-conda-linux-gnu/sysroot' -DCMAKE_INSTALL_PREFIX=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl -DCMAKE_INSTALL_LIBDIR=lib '-DCMAKE_PROGRAM_PATH=/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_build_env/bin;/home/conda/staged-recipes/build_artifacts/scine-molassembler_1656626094491/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/bin' -B _build -G Ninja -DSCINE_MARCH= -DBLA_VENDOR=Generic
-- The C compiler identification is GNU 10.3.0
-- The CXX compiler identification is GNU 10.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Setting build type to default 'Release'
-- Scine::UtilsOS found locally at $PREFIX/lib/cmake/ScineUtilsOS
-- Enabling GCC specific warning flags
-- Could NOT find MKL (missing: MKL_INCLUDE_DIRS MKL_LIBRARIES) 
-- Found LAPACKE for use with Eigen3
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Doxygen not found - Documentation for Molassembler will not be built.
-- Configuring done
-- Generating done
-- Build files have been written to: $SRC_DIR/_build
+ cmake --build _build
...
+ ctest --test-dir _build --output-on-failure
Internal ctest changing into directory: $SRC_DIR/_build
Test project $SRC_DIR/_build
    Start 1: Molassembler
1/1 Test #1: Molassembler .....................***Failed   63.20 sec
Running 195 test cases...
Platform: linux
Compiler: GNU C++ version 10.3.0
STL     : GNU libstdc++ version 20210408
Boost   : 1.74.0
$SRC_DIR/test/Coherence.cpp(200): error: in "BidentateAssignmentRecognized": check reinterpretedAssignment == expectedAssignment has failed [ 17 !=  4]
Conformer generation failure: Failed to generate decision list.
Conformer generation failure: Failed to generate decision list.
unknown location(0): fatal error: in "TetrangleSmoothingExplicit": signal: invalid floating point operation; address of failing instruction: 0x55815e949ac1
$SRC_DIR/test/DistanceGeometry/Smoothing.cpp(39): last checkpoint: "TetrangleSmoothingExplicit" test entry
Warning: Graph comparison with graphs generated by different versions of Molassembler!
Warning: Graph comparison with graphs generated by different versions of Molassembler!
Warning: Graph comparison with graphs generated by different versions of Molassembler!
Warning: Graph comparison with graphs generated by different versions of Molassembler!

System information


     active environment : base
    active env location : /opt/conda
            shell level : 1
       user config file : /home/conda/.condarc
 populated config files : /opt/conda/.condarc
                          /home/conda/.condarc
          conda version : 4.13.0
    conda-build version : 3.21.9
         python version : 3.9.13.final.0
       virtual packages : __linux=5.13.0=0
                          __glibc=2.17=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /opt/conda  (writable)
      conda av data dir : /opt/conda/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /home/conda/staged-recipes/build_artifacts/pkg_cache
                          /opt/conda/pkgs
       envs directories : /opt/conda/envs
                          /home/conda/.conda/envs
               platform : linux-64
             user-agent : conda/4.13.0 requests/2.28.0 CPython/3.9.13 Linux/5.13.0-1031-azure centos/7.9.2009 glibc/2.17
                UID:GID : 1001:1001
             netrc file : None
           offline mode : False

Use boost/outcome.hpp instead of outcome/outcome.hpp

The outcome module is available in boost >=1.70 (see https://www.boost.org/doc/libs/1_70_0/libs/outcome/doc/html/index.html). Is there a reason to require a separate dependency instead of using boost proper?


Potential patch

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b3754ef4..a04a9152 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -75,8 +75,6 @@ find_package(Boost
 )
 include(ImportNauty)
 import_nauty()
-include(ImportOutcome)
-import_outcome()
 include(ImportJSON)
 import_json()
 include(ImportRingDecomposerLib)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 67a7542f..d87f233b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -41,7 +41,6 @@ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0")
   target_link_libraries(molassembler_obj PRIVATE
     Boost::boost
     Scine::UtilsOS
-    outcome
     RingDecomposerLib
     json
     Boost::filesystem
@@ -53,7 +52,6 @@ else()
   target_include_directories(molassembler_obj
     PUBLIC
       $<TARGET_PROPERTY:Scine::UtilsOS,INTERFACE_INCLUDE_DIRECTORIES>
-      $<TARGET_PROPERTY:outcome,INTERFACE_INCLUDE_DIRECTORIES>
       $<TARGET_PROPERTY:RingDecomposerLib,INTERFACE_INCLUDE_DIRECTORIES>
       $<TARGET_PROPERTY:Boost::boost,INTERFACE_INCLUDE_DIRECTORIES>
   )
@@ -67,7 +65,6 @@ target_compile_options(molassembler_obj PRIVATE
 target_include_directories(molassembler_obj SYSTEM PRIVATE
   ${Boost_INCLUDE_DIR}
   ${RDL_INCLUDE_DIR}
-  $<TARGET_PROPERTY:outcome,INTERFACE_INCLUDE_DIRECTORIES>
   $<TARGET_PROPERTY:Eigen3::Eigen,INTERFACE_INCLUDE_DIRECTORIES>
   $<TARGET_PROPERTY:json,INTERFACE_INCLUDE_DIRECTORIES>
   $<TARGET_PROPERTY:nauty,INTERFACE_INCLUDE_DIRECTORIES>
@@ -108,7 +105,6 @@ function(molassembler_library_links target_name)
   target_link_libraries(${target_name}
     PUBLIC
       Scine::UtilsOS
-      outcome
     PRIVATE
       Boost::filesystem
       Boost::system
diff --git a/src/Molassembler/Conformers.h b/src/Molassembler/Conformers.h
index b059541e..9d17bc72 100644
--- a/src/Molassembler/Conformers.h
+++ b/src/Molassembler/Conformers.h
@@ -10,13 +10,13 @@
 
 #include "Molassembler/Types.h"
 #include "Utils/Typenames.h"
-#include "outcome/outcome.hpp"
+#include "boost/outcome.hpp"
 #include <vector>
 
 namespace Scine {
 namespace Molassembler {
 
-namespace outcome = OUTCOME_V2_NAMESPACE;
+namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;
 
 // Forward-declarations
 class Molecule;
diff --git a/src/Molassembler/DirectedConformerGenerator.h b/src/Molassembler/DirectedConformerGenerator.h
index bd4fb290..febf0e89 100644
--- a/src/Molassembler/DirectedConformerGenerator.h
+++ b/src/Molassembler/DirectedConformerGenerator.h
@@ -23,7 +23,7 @@ class AtomCollection;
 
 namespace Molassembler {
 
-namespace outcome = OUTCOME_V2_NAMESPACE;
+namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;
 
 class Molecule;
 
diff --git a/src/Molassembler/DistanceGeometry/ConformerGeneration.h b/src/Molassembler/DistanceGeometry/ConformerGeneration.h
index 34222636..bff37ab8 100644
--- a/src/Molassembler/DistanceGeometry/ConformerGeneration.h
+++ b/src/Molassembler/DistanceGeometry/ConformerGeneration.h
@@ -17,7 +17,7 @@
 namespace Scine {
 namespace Molassembler {
 
-namespace outcome = OUTCOME_V2_NAMESPACE;
+namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;
 
 namespace DistanceGeometry {
 namespace Detail {
diff --git a/src/Molassembler/DistanceGeometry/DistanceBoundsMatrix.h b/src/Molassembler/DistanceGeometry/DistanceBoundsMatrix.h
index 9480f78e..aa7331aa 100644
--- a/src/Molassembler/DistanceGeometry/DistanceBoundsMatrix.h
+++ b/src/Molassembler/DistanceGeometry/DistanceBoundsMatrix.h
@@ -21,7 +21,7 @@ namespace Random {
 class Engine;
 } // namespace Random
 
-namespace outcome = OUTCOME_V2_NAMESPACE;
+namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;
 
 namespace DistanceGeometry {
 
diff --git a/src/Molassembler/DistanceGeometry/ExplicitBoundsGraph.h b/src/Molassembler/DistanceGeometry/ExplicitBoundsGraph.h
index 0f950ec8..f0611d29 100644
--- a/src/Molassembler/DistanceGeometry/ExplicitBoundsGraph.h
+++ b/src/Molassembler/DistanceGeometry/ExplicitBoundsGraph.h
@@ -28,7 +28,7 @@ namespace Random {
 class Engine;
 } // namespace Random
 
-namespace outcome = OUTCOME_V2_NAMESPACE;
+namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;
 
 // Forward-declare PrivateGraph
 class PrivateGraph;
diff --git a/src/Molassembler/DistanceGeometry/ImplicitBoundsGraph.h b/src/Molassembler/DistanceGeometry/ImplicitBoundsGraph.h
index 01b702a3..526c20ae 100644
--- a/src/Molassembler/DistanceGeometry/ImplicitBoundsGraph.h
+++ b/src/Molassembler/DistanceGeometry/ImplicitBoundsGraph.h
@@ -32,7 +32,7 @@ namespace Random {
 class Engine;
 } // namespace Random
 
-namespace outcome = OUTCOME_V2_NAMESPACE;
+namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;
 
 // Forward-declare PrivateGraph
 class PrivateGraph;

Build fails with GCC 11 on Linux

Trying to build molassembler against Nauty 2.7.2 fails with

[21/81] Building CXX object src/CMakeFiles/molassembler_obj.dir/Molassembler/Graph/Canonicalization.cpp.o
FAILED: src/CMakeFiles/molassembler_obj.dir/Molassembler/Graph/Canonicalization.cpp.o 
/home/abt-grimme/opt/conda/envs/gcc/bin/x86_64-conda-linux-gnu-c++ -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DEIGEN_USE_BLAS -DEIGEN_USE_MKL_ALL -I/tmp1/ehlert/scine/molassembler/src -I/tmp1/ehlert/scine/molassembler/_build/src -I/software/intel/parallel_studio_xe_2019/compilers_and_libraries_2019.6.324/linux/mkl/include -I/tmp1/ehlert/scine/molassembler/_build/RingDecomposerLib/src/RingDecomposerLib -isystem /home/abt-grimme/opt/conda/envs/scine/include -isystem /tmp1/ehlert/scine/molassembler/_build -isystem /home/abt-grimme/opt/conda/envs/scine/include/eigen3 -isystem /home/abt-grimme/opt/conda/envs/scine/include/Scine -fvisibility-inlines-hidden -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/abt-grimme/opt/conda/envs/gcc/include -g -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -Wall -Wextra -Wshadow -Wpedantic -Wduplicated-cond -Wlogical-op -Wold-style-cast -Wuseless-cast -Wdouble-promotion -Wno-maybe-uninitialized -std=gnu++14 -MD -MT src/CMakeFiles/molassembler_obj.dir/Molassembler/Graph/Canonicalization.cpp.o -MF src/CMakeFiles/molassembler_obj.dir/Molassembler/Graph/Canonicalization.cpp.o.d -o src/CMakeFiles/molassembler_obj.dir/Molassembler/Graph/Canonicalization.cpp.o -c /tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp
In file included from /home/abt-grimme/opt/conda/envs/scine/include/boost/smart_ptr/detail/sp_thread_sleep.hpp:22,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/smart_ptr/detail/yield_k.hpp:23,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp:14,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/smart_ptr/detail/spinlock.hpp:42,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/smart_ptr/detail/spinlock_pool.hpp:25,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/smart_ptr/shared_ptr.hpp:29,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/property_map/vector_property_map.hpp:14,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/property_map/property_map.hpp:602,
                 from /home/abt-grimme/opt/conda/envs/scine/include/boost/graph/adjacency_list.hpp:27,
                 from /tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/PrivateGraph.h:11,
                 from /tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:15:
/home/abt-grimme/opt/conda/envs/scine/include/boost/detail/iterator.hpp:13:1: note: '#pragma message: This header is deprecated. Use <iterator> instead.'
   13 | BOOST_HEADER_DEPRECATED("<iterator>")
      | ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/abt-grimme/opt/conda/envs/scine/include/nauty/nausparse.h:26,
                 from /tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:24:
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp: In function 'void molassembler_nauty_canonicalize(int, size_t, size_t*, int*, int*, size_t, size_t, size_t, int*, int*)':
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:51:3: error: '_Thread_local' does not name a type; did you mean 'thread_local'?
   51 |   DYNALLSTAT(int, orbits, orbits_sz);
      |   ^~~~~~~~~~
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:51:3: error: '_Thread_local' does not name a type; did you mean 'thread_local'?
   51 |   DYNALLSTAT(int, orbits, orbits_sz);
      |   ^~~~~~~~~~
In file included from /home/abt-grimme/opt/conda/envs/scine/include/nauty/nausparse.h:26,
                 from /tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:24:
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:52:26: error: 'orbits_sz' was not declared in this scope
   52 |   DYNALLOC1(int, orbits, orbits_sz, nv, "malloc");
      |                          ^~~~~~~~~
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:52:18: error: 'orbits' was not declared in this scope
   52 |   DYNALLOC1(int, orbits, orbits_sz, nv, "malloc");
      |                  ^~~~~~
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:52:18: error: 'orbits' was not declared in this scope
   52 |   DYNALLOC1(int, orbits, orbits_sz, nv, "malloc");
      |                  ^~~~~~
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:58:34: error: 'orbits' was not declared in this scope
   58 |   sparsenauty(&source, lab, ptn, orbits, &options, &stats, &canong);
      |                                  ^~~~~~
In file included from /home/abt-grimme/opt/conda/envs/scine/include/nauty/nausparse.h:26,
                 from /tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:24:
/tmp1/ehlert/scine/molassembler/src/Molassembler/Graph/Canonicalization.cpp:66:19: error: 'orbits_sz' was not declared in this scope
   66 |   DYNFREE(orbits, orbits_sz);
      |                   ^~~~~~~~~
cmake
❯ cmake -B _build -G Ninja -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DSCINE_MARCH=""
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/abt-grimme/opt/conda/envs/gcc/bin/x86_64-conda-linux-gnu-cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/abt-grimme/opt/conda/envs/gcc/bin/x86_64-conda-linux-gnu-c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Setting build type to default 'Debug'
-- Scine::UtilsOS found locally at /home/abt-grimme/opt/conda/envs/scine/lib/cmake/ScineUtilsOS
-- Enabling GCC specific warning flags
-- Could NOT find MKL (missing: MKL_INCLUDE_DIRS) 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found LAPACKE for use with Eigen3
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Configuring done
CMake Warning at test/CMakeLists.txt:16 (add_executable):
  Cannot generate a safe runtime search path for target MolassemblerTests
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libgomp.so.1] in /home/abt-grimme/opt/conda/envs/gcc/lib may be hidden by files in:
      /home/abt-grimme/opt/conda/envs/scine/lib

  Some of these libraries may not be found correctly.


-- Generating done
-- Build files have been written to: /tmp1/ehlert/scine/molassembler/_build
mamba info
     active environment : scine
    active env location : /home/abt-grimme/opt/conda/envs/scine
            shell level : 3
       user config file : /home/ehlert/.condarc
 populated config files : /home/abt-grimme/opt/conda/.condarc
                          /home/ehlert/.condarc
          conda version : 4.12.0
    conda-build version : not installed
         python version : 3.9.10.final.0
       virtual packages : __linux=4.12.14=0
                          __glibc=2.26=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/abt-grimme/opt/conda  (writable)
      conda av data dir : /home/abt-grimme/opt/conda/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /home/abt-grimme/opt/conda/pkgs
                          /home/ehlert/.conda/pkgs
       envs directories : /home/abt-grimme/opt/conda/envs
                          /home/ehlert/.conda/envs
               platform : linux-64
             user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.10 Linux/4.12.14-lp151.28.13-default opensuse-leap/15.1 glibc/2.26
                UID:GID : 1748:1001
             netrc file : None
           offline mode : False
mamba list
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                  2_kmp_llvm    conda-forge
abseil-cpp                20211102.0           h27087fc_1    conda-forge
boost-cpp                 1.74.0               h75c5d50_8    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2022.6.15            ha878542_0    conda-forge
cyrus-sasl                2.1.27               h7604b24_5    conda-forge
docutils                  0.19            py310hff52083_0    conda-forge
eigen                     3.4.0                h4bd325d_0    conda-forge
gitdb                     4.0.9              pyhd8ed1ab_0    conda-forge
gitpython                 3.1.27             pyhd8ed1ab_0    conda-forge
gmock                     1.11.0               h924138e_0    conda-forge
gtest                     1.11.0               h924138e_0    conda-forge
icu                       70.1                 h27087fc_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.19.3               h08a2579_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
libblas                   3.9.0           15_linux64_openblas    conda-forge
libbson                   1.21.2               h27087fc_0    conda-forge
libcblas                  3.9.0           15_linux64_openblas    conda-forge
libcurl                   7.83.1               h2283fc2_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 12.1.0              h8d9b700_16    conda-forge
libgfortran-ng            12.1.0              h69a702a_16    conda-forge
libgfortran5              12.1.0              hdcd56e2_16    conda-forge
libgomp                   12.1.0              h8d9b700_16    conda-forge
liblapack                 3.9.0           15_linux64_openblas    conda-forge
libmongoc                 1.21.2               h0506597_0    conda-forge
libmongocxx               3.6.7                h6e2fe03_0    conda-forge
libnghttp2                1.47.0               he49606f_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libntlm                   1.4               h7f98852_1002    conda-forge
libopenblas               0.3.20          pthreads_h78a6416_0    conda-forge
libssh2                   1.10.0               ha35d2d1_2    conda-forge
libstdcxx-ng              12.1.0              ha89aaad_16    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libzlib                   1.2.12               h166bdaf_1    conda-forge
llvm-openmp               14.0.4               he0ac6c6_0    conda-forge
lockfile                  0.12.2                     py_1    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
mctc-lib                  0.3.0                hc3ea6d6_0    conda-forge
mkl                       2022.1.0           h84fe81f_915    conda-forge
mongodb                   5.1.1                h0e13805_3    conda-forge
nauty                     2.7.2                h7f98852_0    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
nlohmann_json             3.10.5               h27087fc_1    conda-forge
numpy                     1.23.0          py310h53a5b5f_0    conda-forge
openssl                   3.0.5                h166bdaf_0    conda-forge
pcre                      8.45                 h9c3ff4c_0    conda-forge
pip                       22.1.2             pyhd8ed1ab_0    conda-forge
psutil                    5.9.1           py310h5764c6d_0    conda-forge
pybind11                  2.9.2           py310hbf28c38_1    conda-forge
pybind11-global           2.9.2           py310hbf28c38_1    conda-forge
python                    3.10.5          ha86cf86_0_cpython    conda-forge
python-daemon             2.3.0              pyhd8ed1ab_1    conda-forge
python_abi                3.10                    2_cp310    conda-forge
pyyaml                    6.0             py310h5764c6d_4    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
ringdecomposerlib         1.1.3                h166bdaf_1    conda-forge
scine-core                4.0.1                h6e2fe03_0    conda-forge
scine-database            1.0.0                    pypi_0    pypi
scine-puffin              1.0.0                    pypi_0    pypi
scine-readuct             4.0.0                he3004b7_0    conda-forge
scine-sparrow             3.0.1                he3004b7_1    conda-forge
scine-utilsos             5.0.0                h99171d1_0    conda-forge
scine-xtb                 1.0.1                h886c582_1    conda-forge
scipy                     1.8.1           py310h7612f91_0    conda-forge
setproctitle              1.2.3           py310h5764c6d_0    conda-forge
setuptools                63.1.0          py310hff52083_0    conda-forge
smmap                     3.0.5              pyh44b312d_0    conda-forge
snappy                    1.1.9                hbd366e4_1    conda-forge
sqlite                    3.39.0               h4ff8645_0    conda-forge
tbb                       2021.5.0             h924138e_1    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
typing_extensions         4.3.0              pyha770c72_0    conda-forge
tzdata                    2022a                h191b570_0    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
xtb                       6.5.0                h9d67668_0    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
yaml-cpp                  0.7.0                h27087fc_1    conda-forge
zlib                      1.2.12               h166bdaf_1    conda-forge
zstd                      1.5.2                h8a70e8d_2    conda-forge

Isomorphism check failure

Hello! Could you explain why two graphs are drawn as the same structures but are considered different during the isomorphism check?

I generate graphs, canonicalize them and want to filter out isomorphic structures generated at different iterations. But I noticed that isomorphism check does not always remove the same structures. Thus, in this example,
the structure from the first iteration:
Screen Shot 2023-02-06 at 7 41 05 PM
looks exactly like the structure from the second iteration of my algorihtm:
Screen Shot 2023-02-06 at 7 42 43 PM
But the isomorphism check says that they are different:
Screen Shot 2023-02-06 at 7 43 18 PM

Could you help with this issue? Is there something else to consider?

I attach str.zip with two pickle files for lists listone and listtwo with 6 molassembler Molecules in each; they all repeat each other but are not filtered out.
To open them, you can do:

import pickle
with open("listone.pkl", "rb") as file:
  listone = pickle.load(file)
with open("listtwo.pkl", "rb") as file:
  listtwo = pickle.load(file)

Then you can try:
listone[0] == listtwo[0]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.