Open Babel: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(example headings)
(Marked this version for translation)
Line 2: Line 2:
[[Category:Software]][[Category:ComputationalChemistry]]
[[Category:Software]][[Category:ComputationalChemistry]]
<translate>
<translate>
== General ==
== General == <!--T:1-->
[https://openbabel.org/ Open Babel] is a chemical toolbox designed to speak the many languages of chemical data.
[https://openbabel.org/ 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.
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.


<!--T:2-->
On our systems we have two kinds of modules for Open Babel installed:
On our systems we have two kinds of modules for Open Babel installed:


== <code>openbabel</code> ==
== <code>openbabel</code> == <!--T:3-->
This is the serial version of Open Babel which can safely be used even on login-nodes to convert chemical structure files between different formats.
This is the serial version of Open Babel which can safely be used even on login-nodes to convert chemical structure files between different formats.
This is the right module for most users.
This is the right module for most users.


==== Example ====
==== Example ==== <!--T:4-->


  module load openbabel
  <!--T:5-->
module load openbabel
   
   
  # download acetic_acid.mol as an example file:
  # download acetic_acid.mol as an example file:
Line 22: Line 24:
  obabel  -i mol  acetic_acid.mol  -o pdb  -O acetic_acid.pdb
  obabel  -i mol  acetic_acid.mol  -o pdb  -O acetic_acid.pdb


== <code>openbabel-omp</code> ==
== <code>openbabel-omp</code> == <!--T:6-->
This is the parallel version of Open Babel which has OpenMP parallelization enabled.
This is the parallel version of Open Babel which has OpenMP parallelization enabled.


<!--T:7-->
{{box|<b>This module should not be used on login-nodes,</b><br>
{{box|<b>This module should not be used on login-nodes,</b><br>
because even for simple tasks it will create as many threads
because even for simple tasks it will create as many threads
as it detects CPUs on the machine, in turn causeing load-spikes will be disruptive for other users.}}
as it detects CPUs on the machine, in turn causeing load-spikes will be disruptive for other users.}}


<!--T:8-->
The parallel version of Open Babel is useful when converting very large numbers of molecule structures or
The parallel version of Open Babel is useful when converting very large numbers of molecule structures or
calculating many of cheminformatics descriptors for large numbers of molecule structures.
calculating many of cheminformatics descriptors for large numbers of molecule structures.


<!--T:9-->
In this case please make sure to sent the environment variable <code>OMP_NUM_THREADS</code>
In this case please make sure to sent the environment variable <code>OMP_NUM_THREADS</code>
in order to tell Open Babel how many CPUs it is allowed to use.
in order to tell Open Babel how many CPUs it is allowed to use.


==== Example ====
==== Example ==== <!--T:10-->
The following job would take the [https://en.wikipedia.org/wiki/Chemical_table_file#SDF Structual Data File] <code>many_molecules.sdf</code>
The following job would take the [https://en.wikipedia.org/wiki/Chemical_table_file#SDF Structual Data File] <code>many_molecules.sdf</code>
which in this case should contain a database with many molecules and generate Canonical [https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system SMILES] representations for each of them, using two CPU-cores.
which in this case should contain a database with many molecules and generate Canonical [https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system SMILES] representations for each of them, using two CPU-cores.
Line 49: Line 54:
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK:-1}"
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK:-1}"


<!--T:11-->
obabel  -i sdf  many_molecules.sdf  -o can  -O many_canonical_smiles.txt
obabel  -i sdf  many_molecules.sdf  -o can  -O many_canonical_smiles.txt
}}
}}


== Python ==
== Python == <!--T:12-->
Open Babel's functionality can be used from other languages such as Python.
Open Babel's functionality can be used from other languages such as Python.
The [https://openbabel.org/docs/UseTheLibrary/Python.html Python interface for Open Babel] has been added to the both <code>openbabel</code> and <code>openbabel-omp</code> modules as extensions.
The [https://openbabel.org/docs/UseTheLibrary/Python.html Python interface for Open Babel] has been added to the both <code>openbabel</code> and <code>openbabel-omp</code> modules as extensions.
Therefore both the <code>openbabel</code> and <code>pybel</code> packages can be used after loading both openbabel and a compatible Python module.
Therefore both the <code>openbabel</code> and <code>pybel</code> packages can be used after loading both openbabel and a compatible Python module.


==== Example ====
==== Example ==== <!--T:13-->


  $ module load python/3.11 openbabel/3.1.1
  <!--T:14-->
$ module load python/3.11 openbabel/3.1.1
  $ python
  $ python
  Python 3.11.5 (main, Sep 19 2023, 19:49:15) [GCC 11.3.0] on linux
  Python 3.11.5 (main, Sep 19 2023, 19:49:15) [GCC 11.3.0] on linux
Line 68: Line 75:
  >>>
  >>>


<!--T:15-->
For further information on how to use Open Babel, please refer to the  
For further information on how to use Open Babel, please refer to the  
[https://openbabel.org/docs/ Open Babel User Guide]
[https://openbabel.org/docs/ Open Babel User Guide]
</translate>
</translate>

Revision as of 14:31, 30 January 2024

Other languages:

General[edit]

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.

On our systems we have two kinds of modules for Open Babel installed:

openbabel[edit]

This is the serial version of Open Babel which can safely be used even on login-nodes to convert chemical structure files between different formats. This is the right module for most users.

Example[edit]

module load openbabel

# download acetic_acid.mol as an example file:
wget "https://www.chemspider.com/FilesHandler.ashx?type=str&3d=yes&id=171" -O acetic_acid.mol

# convert from .mol format to .pdb format:
obabel   -i mol   acetic_acid.mol   -o pdb   -O acetic_acid.pdb

openbabel-omp[edit]

This is the parallel version of Open Babel which has OpenMP parallelization enabled.

This module should not be used on login-nodes,
because even for simple tasks it will create as many threads as it detects CPUs on the machine, in turn causeing load-spikes will be disruptive for other users.

The parallel version of Open Babel is useful when converting very large numbers of molecule structures or calculating many of cheminformatics descriptors for large numbers of molecule structures.

In this case please make sure to sent the environment variable OMP_NUM_THREADS in order to tell Open Babel how many CPUs it is allowed to use.

Example[edit]

The following job would take the Structual Data File many_molecules.sdf which in this case should contain a database with many molecules and generate Canonical SMILES representations for each of them, using two CPU-cores.

File : parallel_openbabel_job.sh

#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --cpus-per-task=2
#SBATCH --mem-per-cpu=1000M
module load openbabel-omp
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK:-1}"

obabel   -i sdf   many_molecules.sdf   -o can   -O many_canonical_smiles.txt


Python[edit]

Open Babel's functionality can be used from other languages such as Python. The Python interface for Open Babel has been added to the both openbabel and openbabel-omp modules as extensions. Therefore both the openbabel and pybel packages can be used after loading both openbabel and a compatible Python module.

Example[edit]

$ module load python/3.11 openbabel/3.1.1
$ python
Python 3.11.5 (main, Sep 19 2023, 19:49:15) [GCC 11.3.0] on linux
>>> import openbabel
>>> print(openbabel.__version__)
3.1.1.1
>>> from openbabel import pybel
>>>

For further information on how to use Open Babel, please refer to the Open Babel User Guide