28 January 2017
Awesome Python Chemistry
A repository of chemistry related python tools
Python programming language is becoming the language of choice for large number of scientists and
it doesn't take much effort to realize why this is happening. One of the most important reasons is
it's simplicity that does not compromise it's power. It has a relatively low entry point since simple
python expressions resemble statements in English but at the same time it's a mature language used
as an indispensable tool in many operating systems, it powers up web services, and is used in large
scale applications. Moreover it has a great documentation system, helpful community and a lot of
online resources that offer everything from short tutorials to university programming courses.
It is so popular among scientists between a broad range of domains that there is now a meeting
called SciPy conference dedicated to scientific applications of
Python. It is a great initiative that encourages collaboration and blurs the lines between
different fields of scientific inquiry like: chemistry, physics, mathematics, computer science and many more, which is
crucial for research innovations.
The popularity didn't go unnoticed by an even wider audience since one of the most influential
scientific journals (Nature) published this article that recommends picking up Python to work much more efficiently, improve
handling of big data sets and create beautiful visualizations. You could also communicate your
research results more efficiently through building websites or web applications (also with Python
tools). Collaboration and publishing also became more efficient with Jupyter notebooks
that were highlighted in another article.
If you are curious to see Python and Jupyter working together for various applications
(including scientific ones) have a look at the
gallery of interesting Jupyter notebooks.
There are already a lot of useful tools, packages and libraries written in Python to help
you improve your research and most of them can be found on PyPI or
github. However finding relevant content might be a bit difficult due to to
the sheer number of packages on PyPI or repositories on
github, therefore I decided to create a list of packages that are related to
chemistry (since I'm a chemist) inspired by the awesome list repo.
You can find the list in a repository on github and
below in this post. Additionally I included some of the more useful scientific packages from the
I am quite sure that the list below is not complete and there are a lot more useful packages
that should be included. If you would like to suggest a package that is not mentioned yet, please
write an issue on github or submit a
pull request. If both of the above
sound difficult you can always write a commend below or drop me an email.
Awesome Python Chemistry
A curated list of awesome Python frameworks, libraries, software and resources related to Chemistry.
Inspired by awesome-python.
Packages and tools for general chemistry.
- batchcalculator - A GUI app based on wxPython for calculating the correct amount of reactants (batch) for a particular composition given by the molar ratio of its components.
- chempy - ChemPy is a package useful for chemistry (mainly physical/inorganic/analytical chemistry).
- ionize - Calculates the properties of individual ionic species in aqueous solution, as well as aqueous solutions containing arbitrary sets of ions.
- mendeleev - A package that provides a python API for accessing various properties of elements from the periodic table of elements.
- Open Babel - A chemical toolbox designed to speak the many languages of chemical data.
- periodictable - This package provides a periodic table of the elements with support for mass, density and xray/neutron scattering information.
- pubchempy - PubChemPy provides a way to interact with PubChem in Python.
- pybel - Pybel provides convenience functions and classes that make it simpler to use the Open Babel libraries from Python.
- pyEQL - A set of tools for conventional calculations involving solutions (mixtures) and electrolytes.
- pymatgen - Python Materials Genomics is a robust, open-source library for materials analysis.
- symmetry - Symmetry is a library for materials symmetry analysis.
Packages for atomistic simulations and computational chemistry.
- amp - Is an open-source package designed to easily bring machine-learning to atomistic calculations.
- Atomic Silumation Environment (ASE) - Is a set of tools and modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations.
- ccdc - An API for the Cambridge Structural Database System.
- cclib - A library for parsing output files various quantum chemical programs.
- chemlab - Is a library that can help the user with chemistry-relevant calculations.
- deepchem - Deep-learning models for Drug Discovery and Quantum Chemistry.
- horton - Helpful Open-source Research TOol for N-fermion system, a quantum-chemistry program that can perform computations involving model Hamiltonians.
- mathchem - Is a free open source package for calculating topological indices and other invariants of molecular graphs.
- MDAnalysis - Is an object-oriented library to analyze trajectories from molecular dynamics (MD) simulations in many popular formats.
- MMTK - The Molecular Modeling Toolkit is an Open Source program library for molecular simulation applications.
- MolMod - A library with many components that are useful to write molecular modeling programs.
- pygauss - An interactive tool for supporting the lifecycle of a computational molecular chemistry investigations.
- PyQuante - Is an open-source suite of programs for developing quantum chemistry methods
- pysic - A calculator incorporating various empirical pair and many-body potentials.
- Pyscf - A quantum chemistry package written in Python.
- RDKit - Open-Source Cheminformatics Software.
- QUIP - A collection of software tools to carry out molecular dynamics simulations.
- tsase - The library which depends on ASE to tackle transition state calculations.
Packages for viewing molecular structures.
- ase-gui - The graphical user-interface allows users to visualize, manipulate, and render molecular systems and atoms objects.
- chemview - An interactive molecular viewer designed for the IPython notebook.
- imolecule - An embeddable webGL molecule viewer and file format converter.
- pymoldyn - A viewer for atomic clusters, crystalline and amorphous materials in a unit cell corresponding to one of the seven 3D Bravais lattices.
General Scientific Packages
Packages for scientific computing and data analyzing.
- blaze - NumPy and Pandas interface to Big Data.
- NetworkX - A high-productivity software for complex networks.
- Neupy - Running and testing different Artificial Neural Networks algorithms.
- Numba - Python JIT (just in time) complier to LLVM aimed at scientific Python by the developers of Cython and NumPy.
- NumPy - A fundamental package for scientific computing with Python.
- Open Mining - Business Intelligence (BI) in Python (Pandas web interface)
- orange - Data mining, data visualization, analysis and machine learning through visual programming or Python scripting.
- Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
- PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
- PyMC - Markov Chain Monte Carlo sampling toolkit.
- scikit-learn - Very powerful and rich machine learning library, built on NumPy, SciPy, and matplotlib.
- SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
- statsmodels - Statistical modeling and econometrics in Python.
- SymPy - A Python library for symbolic mathematics.
Libraries for visualizing data.
- matplotlib - A Python 2D plotting library.
- bokeh - Interactive Web Plotting for Python.
- ggplot - Same API as ggplot2 for R.
- plotly - Collaborative web plotting for Python and matplotlib.
- pygal - A Python SVG Charts Creator.
- pygraphviz - Python interface to Graphviz.
- PyQtGraph - Interactive and real time 2D/3D/Image plotting and science/engineering widgets.
- SnakeViz - A browser based graphical viewer for the output of Python's cProfile module.
- vincent - A Python to Vega translator.
- VisPy - High-performance scientific visualization based on OpenGL.