python chemistry packages 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 awesome-python list.

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.

General Chemistry

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.

Simulations

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.

Molecular Visualization

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.

Data Visualization

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.