Skip to main content

Molecular Barcode (MolBar): Molecular Identifier for Organic and Inorganic Molecules

Project description

MolBar

logo

This package offers an implementation of the Molecular Barcode (MolBar), a molecular identifier inspired by quantum chemistry, designed to ensure data uniqueness in chemical structure databases. The identifier is optimized for computational chemistry applications, such as black-box chemical space exploration, by generating the identifier directly from 3D Cartesian coordinates and encoding the 3D shape of the molecule, including information typically not found in a Molfile. This encompasses details about highly distorted structures that deviate significantly from VSEPR geometries. It supports both organic and inorganic molecules and aims to describe relative and absolute configurations, including centric, axial/helical, and planar chirality.

License: MIT PyPI Downloads ChemRxiv Paper

It does this by fragmentating a molecule into rigid parts which are then idealized with a specialized non-physical force field. The molecule is then described by different matrices encoding topology (connectivity), topography (3D positions of atoms after input unification), and absolute configuration (by calculating a chirality index). The final barcode is the concatenated spectra of these matrices.

Current Limitations

The input file must contain 3D coordinates and explicit hydrogens.

MolBar should work well for organic and inorganic molecules with typical 2c2e bonding. It can describe molecules based on their relative and absolute configuration, including centric, axial/helical and planar chirality.

Given that 3D Cartesian coordinates are the usual starting point, problems may arise when determining which atoms are bonded, particularly in metal complexes with η-bonds. Additionally, challenges can occur if the geometry around a metal in a complex cannot be classified by one of the standard VSEPR models. Solutions to these issues are being developed and are released with the next versions. If you encounter difficulties, you can use the -d option when using MolBar as a command-line tool or set write_trj=True when using MolBar as a Python module to examine the optimized trajectories of each fragment. If anything is unclear or if you encounter any unusual behavior, please report it by posting issues or via email at van.staalduinen@pc.rwth-aachen.de.

For rigidity analysis, MolBar only considers double/triple bonds and rings to be rigid. For example, an obstacle to rotation due to bulkiness of substituents is not taken into account, but can be added manually from the input file (additional dihedral constraint, but that should be used as an exception and carefully).

Getting started (tested on Linux and macOS, compiling works for Windows only in WSL)

For Linux/macOS

Using a virtual environment is highly recommended because it allows you to create isolated environments with their own dependencies, without interfering with other Python projects or the system Python installation. This ensures that your Python environment remains consistent and reproducible across different machines and over time. To create one, type in the following command in your terminal:

 python3 -m venv your_path

To activate the environment, type in:

 source your_path/bin/activate

To install Molbar, enter the following command in your terminal:

pip install molbar

For Windows

Since compiling in a standard Windows environment does not work yet, it is highly recommended to use the WSL (Windows Subsystem for Linux) extension. Simply follow this installation guide: https://learn.microsoft.com/en-us/windows/wsl/install. Note that a Fortran compiler needs to be installed manually in the WSL environment. Otherwise, the installation of MolBar will result in an error.

For Python usage, it is highly recommended to use Visual Studio Code (VSC) as it provides specific extensions to code directly in WSL. A more detailed guide can be found here: https://code.visualstudio.com/docs/remote/wsl

MolBar Structure

For l-alanine, the MolBar reads:

MolBar | 1.1.2 | C3NO2H7 | 0 | -339 -140 -110 -32 13 20 20 20 160 237 432 528 850 | -209 -8 130 160 354 633 | -108 -79 -42 -24 11 11 11 47 75 140 293 433 891 | -11 0 0 0 31

The different parts of MolBar are defined as follows:

Version: 1.1.2
Molecular Formula: C3H7NO2 
Topology Spectrum: -339 -140 -110 -32 13 20 20 20 160 237 432 528 850 (Encoding atomic connectivity)
Heavy Atom Topology Spectrum: -209 -8 130 160 354 633 (Encoding atomic connectivity without hydrogen atoms. So if for two molecules, the topology spectra are different but the tautomer spectra are the same, both molecules are tautomeric structures)
Topography Spectrum : -108 -79 -42 -24 11 11 11 47 75 140 293 433 891 (3D arrangement of atoms in Cartesian space, also describes diastereomerism)
Chirality: -11 0 0 0 31 (Encoding absolute configuration for each fragment)

The chirality barcode can only be compared between two molecules if their topology and topography barcodes are identical. If the chirality barcodes differ only in their sign, this indicates that the two molecules are enantiomers.

Generating MolBar

MolBar can be generated using either of the following methods:

1.	Python Interface: Refer to the Python Module Usage for detailed instructions on generating MolBar using Python.

2.	Command Line Interface with the following command: molbar coord.xyz (see Command Line Usage for more information)

Python Module Usage

MolBar can be generated by Python function calls:

  1. for a single molecule with get_molbar_from_coordinates by specifying the Cartesian coordinates as a list,
  2. for several molecules at once with get_molbars_from_coordinates by giving a list of lists with Cartesian coordinates,
  3. for a single molecule with get_molbar_from_file by specifying a file path,
  4. for several molecules at once with get_molbars_from_files by specifying a list of file paths.

1. get_molbar_from_coordinates

NOTE: If you need to process multiple molecules at once, it is recommended to use get_molbars_from_coordinates instead of get_molbar_from_coordinates.

  from molbar.barcode import get_molbar_from_coordinates

  def get_molbar_from_coordinates(coordinates: list, elements: list, return_data=False, timing=False, input_constraint=None, mode="mb") -> Union[str, dict]

Arguments:

  coordinates (list): Molecular geometry provided by atomic Cartesian coordinates with shape (n_atoms, 3).
  elements (list):A list of elements in that molecule. Either the element symbols or atomic numbers can be used.
  return_data (bool): Whether to return MolBar data. MolBar can return detailed data, including information about bonding, VSEPR geometries, fragments, and more. This data is useful for understanding what MolBar recognizes and can be leveraged for other projects.
  timing (bool): Whether to print the duration of this calculation.
  input_constraint (dict, optional): A dict of extra constraints for the calculation. See below for more information. USED ONLY IN EXCEPTIONAL CASES.
  mode (str): Whether to calculate the molecular barcode ("mb") or only the topology part of the molecular barcode ("topo").

Returns:

  Union[str, dict]: Either MolBar or the MolBar and MolBar data.

Input constraints should be used only in exceptional cases. However, they may be useful to constrain the molecule with additional dihedrals for rotations that are normally considered around single bonds but whose rotation is hindered (e.g., 90° binol systems with bulky substituents).

{
'constraints': {
                'dihedrals': [{'atoms': [1,2,3,4], 'value':90.0},...]} #atoms: list of atoms that define the dihedral, value is the ideal dihedral angle in degrees, atom indexing starts with 1.
}

2. get_molbars_from_coordinates

NOTE: If you need to process multiple molecules at once, it is recommended to use this function and specify the number of threads that can be used to process multiple molecules simultaneously.

from molbar.barcode import get_molbars_from_coordinates

def get_molbars_from_coordinates(list_of_coordinates: list, list_of_elements: list, return_data=False, threads=1, timing=False, input_constraints=None, progress=False,  mode="mb") -> Union[list, Union[str, dict]]:

Arguments:

  list_of_coordinates (list): A list of molecular geometries provided by atomic Cartesian coordinates with shape (n_molecules, n_atoms, 3).
  list_of_elements (list): A list of element lists for each molecule in the list_of_coordinates with shape (n_molecules, n_atoms).  Either the element symbols or atomic numbers can be used.
  return_data (bool): Whether to return MolBar data. MolBar can return detailed data, including information about bonding, VSEPR geometries, fragments, and more. This data is useful for understanding what MolBar recognizes and can be leveraged for other projects.
  threads (int): Number of threads to use for the calculation. If you need to process multiple molecules at once, it is recommended to use this function and specify the number of threads that can be used to process multiple molecules simultaneously.
  timing (bool):  Whether to print the duration of this calculation.
  input_constraints (list, optional): A list of constraints for the calculation. Each constraint in that list is a Python dict as shown above for get_molbar_from_coordinates.
  progress (bool): Whether to show a progress bar.
  mode (str): Whether to calculate the molecular barcode ("mb") or the topology part of the molecular barcode ("topo").

Returns:

  Union[list, Union[str, dict]]: Either MolBar or the MolBar and MolBar data.

3. get_molbar_from_file

NOTE: If you need to process multiple molecules provided by files at once, it is recommended to use get_molbars_from_files instead of get_molbar_from_file.

from molbar.barcode import get_molbar_from_file

def get_molbar_from_file(file: str, return_data=False, timing=False, input_constraint=None, mode="mb", write_trj=False) -> Union[str, dict]:

Arguments:

  file (str): The path to the file containing the molecule information. The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.
  return_data (bool): Whether to return MolBar data. MolBar can return detailed data, including information about bonding, VSEPR geometries, fragments, and more. This data is useful for understanding what MolBar recognizes and can be leveraged for other projects.
  timing (bool): Whether to print the duration of this calculation.
  input_constraint (dict, optional): A dict of extra constraints for the calculation. See below for more information. USED ONLY IN EXCEPTIONAL CASES.
  mode (str): Whether to calculate the molecular barcode ("mb") or only the topology part of the molecular barcode ("topo").
  write_trj (bool, optional): Whether to write a trajectory of the unification process. Defaults to False.

Returns:

  Union[str, dict]: Either MolBar or the MolBar and MolBar data.

Example for input file in .yml format. Input constraint should be used only in exceptional cases. However, it may be useful to constrain bonds with a additional dihedral for the barcode that are normally considered single bonds but whose rotation is hindered (e.g., 90° binol systems with bulky substituents).

constraints:
  dihedrals:
    - atoms: [30, 18, 14, 13]  # List of atoms involved in the dihedral
      value:  90.0  # Actual values for the dihedral parameters

4. get_molbars_from_files

NOTE: If you need to process multiple molecules at once, it is recommended to use this function and specify the number of threads that can be used to process multiple molecules simultaneously.

from molbar.barcode import get_molbars_from_files

def get_molbars_from_files(files: list, return_data=False, threads=1, timing=False, input_constraints=None, progress=False, mode="mb", write_trj=False) ->Union[list, Union[str, dict]]:

Arguments:

  files (list): The list of paths to the files containing the molecule information. The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.
  return_data (bool): Whether to return MolBar data. MolBar can return detailed data, including information about bonding, VSEPR geometries, fragments, and more. This data is useful for understanding what MolBar recognizes and can be leveraged for other projects.
  threads (int): Number of threads to use for the calculation. If you need to process multiple molecules at once, it is recommended to use this function and specify the number of threads that can be used to process multiple molecules simultaneously.
  timing (bool):  Whether to print the duration of this calculation. 
  input_constraints (list, optional): A list of file paths to the input files for the calculation. Each constrained is specified by a file path to a .yml file, as shown above for get_molbar_from_file.
  progress (bool): Whether to show a progress bar.
  mode (str): Whether to calculate the molecular barcode ("mb") or the topology part of the molecular barcode ("topo").
  write_trj (bool, optional): Whether to write a trajectory of the unification process. Defaults to False.

Returns:

      Union[list, Union[str, dict]]: Either MolBar or the MolBar and MolBar data.

Commandline Usage

MolBar can also be used as commandline tool. Just simply type:

molbar coord.xyz

and the MolBar is printed to the stdout.

NOTE: If you need to process several molecules at once, it is recommended to pass all molecules to the code at once (e.g. with *.xyz) while specifying the number of threads the code should use:

molbar *.xyz -T N_threads -s

The latter option (-s) is used to store the barcode to .mb files.

Further, the commandline tool provides several options:

Basic usage example: 
molbar coord.xyz

Usage with multiple files: 
molbar *.xyz -T 8

Usage for topology barcode only: 
molbar coord.mol -m topo

Usage to return additional data: 
molbar coord.pdb -d

Usage to print timings: 
molbar coord.com -t

Arguments and Options:

positional arguments:
  file(s)    

  The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.
  -m {mb,topo,opt}, --mode {mb,topo,opt}

  The mode to use for the calculations (either "mb" (default, calculates MolBar), "topo" (topology part only)
  or "opt" (using stand-alone force field idealization, writes ".opt" with final structure))
  -i path/to/input --inp path/to/input

  Path to input file in .yml format to add further constraints. Example input can be found below.
  -d, --data           Whether to print MolBar data. 
                        Writes a "filename/" directory containing a json file with
                        important information that defines MolBar. Writes idealization trajectories of each fragment to same directory.
  -T number_of_threads, --threads number_of_threads
                        The number of threads to use for parallel processing of several files. MolBar generation for a single file is not parallelized. Should be used together with -s/--save (e.g. molbar *.xyz -T 8 -s)
  -s, --save            Whether to save the result to a file of type "filename.mb"
  -t, --time            Print out timings.
  -p, --progress        Use a progress bar when several files are handled.

Example for input file constraints in yml format. Input constraint should be used only in exceptional cases. However, it may be useful to constrain bonds with a additional dihedral for the barcode that are normally considered single bonds but whose rotation is hindered (e.g., 90° binol systems with bulky substituents).

constraints:
  dihedrals:
    - atoms: [30, 18, 14, 13]  # List of atoms involved in the dihedral
      value:  90.0  # Actual values for the dihedral parameters

Using the unification force field for the whole molecule.

The force field can be used to idealize the structure of a whole molecule where the coordinates are either given in Python by a file:

  1. as a command line tool with the molbar coord.xyz -m opt option
  2. in Python with idealize_structure_from_file by providing a file path
  3. in Python with idealize_structure_from_coordinates by providing Cartesian coordinates as a list

Commandline tool

molbar coord.xyz -m opt

This writes a coord.opt file that contains the idealized coordinates.

In Python from a file:

  from molbar.idealize import idealize_structure_from_file

  def idealize_structure_from_file(file: str, return_data=False, timing=False, input_constraint=None,  write_trj=False) -> Union[list, str]

Arguments:

  file (str): The path to the input file to be processed. 
  
  The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.
  return_data (bool): Whether to return MolBar data. MolBar can return detailed data, including information about bonding, VSEPR geometries, fragments, and more. This data is useful for understanding what MolBar recognizes and can be leveraged for other projects.
  timing (bool): Whether to print the duration of this calculation.
  input_constraint (str): The path to the input file containing the constraint for the calculation. See down below for more information.
  write_trj (bool, optional): Whether to write a trajectory of the unification process. Defaults to False.

Returns:

  n_atoms (int): Number of atoms in the molecule.
  energy (float): Final energy of the molecule after idealization.
  coordinates (list): Final coordinates of the molecule after idealization.
  elements (list): Elements of the molecule.
    data (dict): Molbar data.

This is an example input as a yml file:

bond_order_assignment: False  # False if bond order assignment should be skipped, only reasonable opt mode (standalone force-field optimization)
cycle_detection: True # False if cycle detection should be skipped, only reasonable opt mode (standalone force-field optimization).
repulsion_charge: 100.0 # Charge used for the Coulomb term in the Force field, every atom-atom pair uses the same charge, only reasonable opt mode (standalone force-field optimization). Defaults to 100.0
set_edges: True #False if no bonds should be constrained automatically.
set_angles: True #False if no angles should be constrained automatically.
set_dihedrals: True # False if no dihedrals should be constrained automatically.
set_repulsion: True #False if no coulomb term should be used automatically.

constraints:
  bonds:
    - atoms: [19, 23]  # List of atoms involved in the bond
      value: 1.5  # Ideal bond length. 
  angles:
    - atoms: [19, 23, 35]  # List of atoms involved in the angle
      value: 45.0  # Angle to which the angle between the three atoms is to be constrained
    - atoms: [35, 23, 19]  # List of atoms involved in the angle
      value: 45.0  # Angle to which the angle between the three atoms is to be constrained

  dihedrals:
    - atoms: [30, 18, 14, 13]  # List of atoms involved in the dihedral
      value:  90.0  # Actual values for the dihedral parameters

In Python from a list of Cartesian coordinates:

from molbar.idealize import idealize_structure_from_coordinates

def idealize_structure_from_coordinates(coordinates: list, elements: list, return_data=False, timing=False, input_constraint=None) -> Union[list, str]:

Arguments:

  coordinates (list): Cartesian coordinates of the molecule.
  elements (list): Elements of the molecule. Either the element symbols or atomic numbers can be used.
  return_data (bool, optional): Whether to return MolBar data. MolBar can return detailed data, including information about bonding, VSEPR geometries, fragments, and more. This data is useful for understanding what MolBar recognizes and can be leveraged for other projects.
  timing (bool, optional): Whether to print the duration of this calculation.
  input_constraint (dict, optional): The constraint for the calculation. See documentation for more information.

Returns:

  n_atoms (int): Number of atoms in the molecule.
  energy (float): Final energy of the molecule after idealization.
  coordinates (list): Final coordinates of the molecule after idealization.
  elements (list): Elements of the molecule.
    data (dict): Molbar data.

This is an example input as a Python dict:

  {'bond_order_assignment': True, #False if bond order assignment should be skipped, only reasonable opt mode (standalone force-field optimization)
  'cycle_detection': True, #False if cycle detection should be skipped, only reasonable opt mode (standalone force-field optimization).
  'set_edges': True #False if no bonds should be constrained automatically.
  'set_angles': True #False if no angles should be constrained automatically.
  'set_dihedrals': True #False if no dihedrals should be constrained automatically.
  'set_repulsion': True #False if no coulomb term should be used automatically.
  'repulsion_charge': 100.0, # Charged used for the Coulomb term in the Force field, every atom-atom pair uses the same charge, only reasonable opt mode (standalone force-field optimization). Defaults to 100.0
  'constraints': {'bonds': [{'atoms': [1,2], 'value':1.5},...], #atoms: list of atoms that define the bond, value is the ideal bond length in angstrom, atom indexing starts with 1.
                  'angles': [{'atoms': [1,2,3], 'value':90.0},...], #atoms: list of atoms that define the angle, value is the ideal angle in degrees, atom indexing starts with 1.
                  'dihedrals': [{'atoms': [1,2,3,4], 'value':180.0},...]}  #atoms: list of atoms that define the dihedral, value is the ideal dihedral angle in degrees, atom indexing starts with 1.
  }

Additional Command line Scripts provided by the MolBar package.

Ensplit

Helper script to split an ensemble file into individual ensembles, each with a unique molecular barcode:

ensplit ensemble.trj -T 8 -topo
file                  Input file 

The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.
  -T THREADS, --threads number_of_threads. Number of threads for processing multiple files.
  -p, --progress        Show progress bar
  -topo, --topo         Only evaluate topology

Princax

Helper script to align the molecule to the principal axes.

princax coord.xyz -r
file                  Input file 

The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.
-r, --replace  Overwrite the input file with the aligned coordinates, or print to a new file if not specified.

Invstruc

Helper script to invert structures to yield enantiomers.

invstruc coord.xyz
file                  Input file 

The file can be in formats such as XYZ, Turbomole coord, SDF/MOL, CIF, PDB, Gaussian (.com, .gjf, .log), and many others. For a complete list, refer to the ASE documentation, ASE I/O Formats: https://wiki.fysik.dtu.dk/ase/ase/io/io.html). The file must contain 3D coordinates and explicit hydrogen atoms.

Acknowledgments

MolBar relies on the following libraries and packages:

Thank you!

License and Disclaimer

MIT License

Copyright (c) 2022 Nils van Staalduinen, Christoph Bannwarth

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

molbar-1.1.3.tar.gz (419.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

molbar-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

molbar-1.1.3-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

molbar-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

molbar-1.1.3-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

molbar-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

molbar-1.1.3-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

molbar-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

molbar-1.1.3-cp39-cp39-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

molbar-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

molbar-1.1.3-cp38-cp38-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file molbar-1.1.3.tar.gz.

File metadata

  • Download URL: molbar-1.1.3.tar.gz
  • Upload date:
  • Size: 419.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for molbar-1.1.3.tar.gz
Algorithm Hash digest
SHA256 893ff8bfd885009904f0957a56c890f932dbb52ed3483e5247282c7c7e793da3
MD5 7dabb9b650616db8db2a1fb85dae5f7d
BLAKE2b-256 143062d59086aef1a1fca7a50454cd2ef2a564d30e9f897149bc58210bf88cc6

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0b68e7c45d21ec6ac5f97387dd0084667d70b8411eeeba45d5106246673bbc03
MD5 f3f36842af5dd4377af0e1ace92e14a3
BLAKE2b-256 f2ad65bee87aa40bd181f2e0971eb869355c43deef91b64bc86c822c4366b3e9

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58b462779e1a1d1ea6c04edf92a0307c4e4d46d0097a2bd0ebeca8e2171db009
MD5 85589c9f53d3065a923658c7a968b82b
BLAKE2b-256 e7ef1b729f2e4e8623a1d8b29c3b5a0456249120faf8bc4aeea566bf3baa0baa

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11f59a30521e145c4dbf9f297985ec246a1227e0e3c5a9661ab9d6a2cd13ebb4
MD5 6e2656d1443b7913d7fa46f1932acdf2
BLAKE2b-256 4223a86c2f712cb1600f894c91044254df177bcdf643152d8b59e85746f38385

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10af7d6c03aac58752c01ffb0e3c4364ce9c6483adab951ffe1f250e4377ae0f
MD5 88d5e53db85ba7758abab014e8cac93a
BLAKE2b-256 694cdb5a41b0ef04a986f47f42319b739eb1182bbe80ca4f98ba3edc50445567

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0c691744a450983e978d40f425e57778fae845bab9093cc5d4c86f032bd32a53
MD5 a4f7f42494c857e87b7eb4a0929a445e
BLAKE2b-256 021fcf643f3b2439b85e097bcf38877fff4833022cf90fbbab7814938a780547

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d0d490609c92a10c6a4883b624e0d44446bc6266a4ae78a7355bfc7b0c0346a
MD5 db3e039402f469c4d0c40b1eb7eca6b4
BLAKE2b-256 b73e510323770e4bd4ee87ff40c0af0c06558a2221e4d72034eff130c737b4ea

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e27abdb9d606551d182045d168c582027436035375b56d6a3e84a09984379502
MD5 051ee8a711cef9844bdf73bfa4322070
BLAKE2b-256 b81daf0674f91cbda868799d100ba6a576b7dc2223cef39ee8b7a7a13207a72f

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5deb2cb2c8e793a4e0499a68b8c47f1bbaf62fc20f89330ca6d6d14683ae7a8c
MD5 230f648bf2b16fd7d493638958f0eacb
BLAKE2b-256 3f8dfb95cdf1ac2b20383acac689189627bd592d801b821be0da40916eff9c34

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bd965e8967e98a648ed8707bfa542e8fbb4161b280bfd02af0c38b850f8c87d
MD5 633ecc3761e60adaf7286867152e0f57
BLAKE2b-256 bf09c183b8c67f58cf11552d229a51db075f9d7eb4af26ad51d8275c771c1b38

See more details on using hashes here.

File details

Details for the file molbar-1.1.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for molbar-1.1.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 251d66c0a0cfb185e7ab441a7e8597e0977ffd90dbc518b461bf66ad9b22739c
MD5 860c8395d0564d8b51efbad5cf5bf834
BLAKE2b-256 c0cd80e04155077d19000c634cd1d7935b6a163813e29b87bfd85be5502e31c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page