Journal of Molecular Graphics and Modelling

The success of molecular modeling and computational chemistry efforts are, by deﬁnition, dependent on quality software applications. Open source software development provides many advantages to users of modeling applications, not the least of which is that the software is free and completely extendable. In this review we categorize, enumerate, and describe available open source software packages for molecular modeling and computational chemistry. An updated online version of this catalog can be found at https:// opensourcemolecularmodeling.github.io. © 2016 The Author(s). Published by Elsevier Inc. This is an open access article under the CC BY license (http://creativecommons.org/licenses/by/4.0/).


What is open source?
Free and open source software (FOSS) is software that is both considered "free software," as defined by the Free Software Foundation (http://fsf.org) and "open source," as defined by the Open Source Initiative (http://opensource.org). The distinctions between free and open source software are largely philosophical -the free software movement is primary motivated by user freedoms ("free as in speech, not free as in beer") while the open source movement is more concerned with promoting an open development model to enhance software quality. However, as a practical matter, especially with regards to scientific software, such distinctions remain philosophical rather than practical as the most popular software licenses are both free and open source.
The unifying theme of open source software licenses is that they allow users to use, modify, and distribute software without significant restrictions. This is achieved by making the full source code of the software available to users. Broadly speaking, open source licenses fall into two categories: permissive and copyleft. Permissive licenses, such as the Apache, BSD, MIT, and Python licenses, place minimal restrictions on how modified code may be distributed, such as requiring attribution and limiting liability. They specifically do not require that redistributions of modified source code be licensed under the same license as the original source code.
This enables source code licensed under a permissive license to be incorporated into commercial, proprietary programs that are not open source. In contrast, copyleft licenses, such as the different versions of the GNU Public License (GPL), require that public redistributions of licensed software remain licensed under a GPL license. That is, the source code must remain publicly and freely available. The GNU Lesser General Public License (LGPL) is slightly less restrictive version of the GPL used primarily for libraries as it does not require software that uses LGPL licensed software as a library to be licensed under the LGPL. Although copyleft licenses do not prohibit selling software, since the full source code must remain freely available, in practice vendors of copylefted software must commercialize the support of the product, rather than the product itself. Finally, we note there are other software licenses that make source code available, but are not open source licenses. These licenses typically prohibit the redistribution of the source code. Such licenses, which we will refer to as "source-available" licenses, have some popularity in academia as they allow source code to be distributed to other researchers in non-profit institutions, but allow the code to be sold to commercial entities.

Advantages and disadvantages of open source
The value of open source software in cheminformatics and molecular modeling is somewhat controversial. Unsurprisingly, those affiliated with commercial scientific software argue that traditional commercial development, with its associated support and continuous development, provides a superior value [1], while open source advocates feel the benefits outweigh the burdens [2,3]. Our goal is not to revisit these arguments. Instead source scientific software is a de facto part of the scientific community, and so in this review we catalog those open source packages that fall within the domain of cheminformatics and molecular modeling.
There are a few aspects of the open source software debate that we find particularly relevant. First, opponents are right to point out that free software is not free -users of open source software generally take on a much greater burden in supporting the software than with commercial software. This is one reason why it is important, when possible, to seek open source software that is under active development and supported by a broad community. Therefore, in this review we attempt to quantify the current level of development and usage of each package as an indirect measure of quality and usability. Second, the primary advantage of open source software is the ability to redistribute code without restriction. This inherently enables reproducibility and lets scientists "stand on the shoulders of giants" instead of reinventing the wheel. Consequently, in this review we limit ourselves to a survey of true open source software and exclude source-available software that may place restrictions on the publication of reproducible research results.

Methods
We organize software packages into seven categories: cheminformatics, visualization, QSAR (quantitative structure-activity relationship) and ADMET modeling, quantum chemistry, ligand dynamics and free energy calculations, and virtual screening (including ligand design). We identified open source software packages by browsing the relevant categories (Molecular Science, Chemistry, Bio-Informatics, Medical Science) on the popular SourceForge (http://sourceforge.net) repository, searching for categories on GitHub (http://github.com), searching for categories on OpenHub (https://www.openhub.net), searching for categories together with "open source software" on Google, and browsing the Click2Drug (http://click2drug.org) and VLS3D [4] directories. Finally, a draft document was tweeted (@david koes) to solicit suggestions for additional packages from the community.
For every identified software package, we report its primary URL and software license and assign it an activity code. For simplicity, BSD-like licenses (e.g., NCSA) are reported as BSD. Activity codes consist of a development activity level (alphabetical) and usage activity level (numerical). Activity codes were assigned as follows:

Development activity
A Substantial development (e.g., a new major release, the addition of new features, or substantial refinements of existing features) within the last 18 months. Note this includes all projects that were created in the last 18 months. B Evidence of some development within the last 18 months such as a minor release or bug fixes to a development branch. C No evidence of development (changes to the source code or documentation) within the last 18 months. Note that in cases where a package does not follow an open development model (i.e., source is only released with official releases) the estimate of development activity will be overly conservative.

Usage activity
1. Substantial user usage within the last 18 months (more than 20 downloads a month on average from SourceForge, more than 20 stars or forks on GitHub, more than 10 citations a year, and/or a clearly active user community as indicated by traffic on mailing lists or discussion boards). 2. Moderate user usage within the last 18 months.
3. Minimal or no identifiable user usage within the last 18 months (fewer than 50 downloads total on SourceForge, three or fewer stars and/or forks on GitHub, or fewer than one citation a year).
We omit some packages with extended periods of inactivity (e.g., more than 10 years) where there is little evidence of any usage or packages that are referenced in the literature but for which we could not find a extant source code repository. We also omit packages that provide common and/or trivial functionality (e.g., molecular weight calculators) and those that require non-open source packages in order to function.

Cheminformatics
Cheminformatics involves the representation, manipulation and analysis of molecular data [5,6]. Cheminformatic toolkits, although they may contain standalone utility programs, are primarily designed to function as libraries for other programs so that common functions, such as parsing molecular data, need not be reimplemented. As libraries, the native programming language of a toolkit is particularly relevant as it influences the language programs that integrate with the toolkit can be written in. In some cases, alternative language bindings, which essentially translate between programming languages, may be available, but due to the use of different idioms by different languages (e.g., object-oriented vs. functional, manual vs. automatic memory management) use of these non-native bindings may be cumbersome. In addition to toolkits, we catalog standalone programs, including conformer generators for converted 2D information into 3D molecular structures (some of which have been critically evaluated [7]), and graphical environments for creating and managing workflows. (Table 1) The Biochemical Algorithms Library (BALL) [8] provides an object-oriented C++ library for structural bioinformatics, and its capabilities include molecular mechanics, support for reading and writing a variety of file formats, protein-ligand scoring, docking, and QSAR modeling.

Toolkits
The Chemistry Development Kit (CDK) [9] is a cheminformatics toolkit written in Java. Its capabilities include support for reading and writing a variety of chemical formats, descriptor and fingerprint calculation, force field calculations, substructure search, and structure generation.
Chem f [10] is a minimal cheminformatics toolkit written in the functional language Scala. chemfp [11] is a high-performance library with a Python interface for generating and searching for molecular fingerprints. chemkit is a C++ cheminformatics toolkit that includes support for visualization with the Qt framework and molecular modeling.
ChemmineR [12] is a cheminformatics package for the R statistical programming language that is built using Open Babel. Its capabilities include property calculations, similarity search, and classification and clustering of compounds.
CurlySMILES [14] provides parsing functionality for an extension of the SMILES format that supports the description of complex molecular systems.
DisCuS (Database System for Compound Selection) [15] provides support for analyzing the results of a high-throughput screen.
Fafoom (flexible algorithm for optimization of molecules) [16] is a Python library for identifying low energy conformers using a genetic algorithm. fmcsR [41] is an R package that efficiently performs flexible maximum common substructure matching that allows minor mismatches between atoms and bonds in the common substructure.
Frowns is a cheminformatics toolkit mostly written in Python that provides basic support for SMILES and SD files, SMARTS search, fingerprint generation, and property perception.
Helium is a cheminformatics toolkit written using modern C++ idioms that provides support for SMILES files, fingerprints generation, and SMARTS and SMIRKS.
Indigo [18] is a cheminformatics toolkit written in C++ with C, Python, Java (including a KNIME node), and C# bindings. Its capabilities include general support for manipulating molecules, property calculation, combinatorial chemistry, scaffold detection and Rgroup decomposition, reaction processing, substructure matching and similarity search.
JOELib is a cheminformatics toolkit written in Java. Its capabilities include SMARTS substructure search, descriptor calculation, and processing/filtering pipes.
LICSS [19] integrates with the CDK to provide representations and analysis of chemical data embedded within Microsoft Excel.
MayChemTools is a collection of Perl scripts for manipulating chemical data, interfacing with databases, generating fingerprints, performing similarity search, and computing molecular properties.
Mychem is built using OpenBabel and provides an extension to the MySQL database package that adds the ability to search, analyze, and convert chemical data within a MySQL database.
The Open Drug Discovery Toolkit (ODDT) [21] is entirely written in Python, is built on top of RDKit and Open Babel, and is focused on providing enhanced functionality for managing and implementing drug discovery workflows, such as making it easy to implement a docking pipeline.
Open Babel [22] is substantial cheminformatics toolkit written in C++ with Python, Perl, Java, Ruby, R, PHP, and Scala bindings. Its capabilities include support for more than 100 chemical file formats, fingerprint generation, property determination, similarity and substructure search, structure generation, and molecular force fields. It has absorbed the Confab [47] conformer generator which produces 3D structures through the systematic enumeration of torsions and energy minimization.
OPSIN [23], the Open Parser for Systematic IUPAC nomenclature, converts plain-text chemical nomenclature to machine readable CML or InChi formats.
OrChem is built using the CDK and provides an extension to Oracle databases that adds the ability to incorporate and search chemical data.
OSRA [25] provides optical structure recognition. It takes as input an image and generates a SMILES string.
Ouch (Ouch Uses Chemical Haskell) is a minimal cheminformatics toolkit written in the functional language Haskell.
Pybel [26] provides the full functionality of Open Babel, but common routines are provided in a simplified, more 'pythonic' interface.
rcdk [27] provides an R interface to the CDK and working with fingerprints.
RDKit is a substantial cheminformatics toolkit written in C++ with Python, Java and C# bindings. Its capabilities include file handling, manipulation of molecular data, chemical reactions, substantial support for fingerprinting, substructure and similarity search, 3D conformer generation, property determination, force field support, shape-based alignment and screening, and integration with PyMOL, KNIME, and PostgreSQL.
RInChI provides tools for creating and manipulating reaction InChIs, a unique string for describing a reaction.
rpubchem is an R package for interfacing with the PubChem database.  rubabel [28] is similar to Pybel in that it provides a native Ruby interface to Open Babel.
The Small Molecule Subgraph Detector (SMSD) [29] is a Java library for calculating the maximum common subgraph between small molecules.
Som-it is an R package for creating and visualizing selforganizing maps from large datasets.
webchem is an R package for interfacing with a dozen different on-line resources for chemical data. Table 2) cApp [30] is a Java application that provides tools for evaluating physico-chemical properties, performing similarity searches, and querying the PubChem database.

Standalone programs (
The utilities checkmol and matchmol [31] decompose and compare functional groups of input molecules.
ConvertMAS is a utility for converting between formats and merging and splitting multi-molecule files.
Filter-it filters a set of molecules based on their properties such as physicochemical parameters and graph-based properties.
Frog2 [32] uses a two stage Monte Carlo approach coupled with energy minimization to rapidly generate 3D conformers.
The Lilly MedChem Rules (LMR) [33] apply filters to avoid reactive and promiscuous compounds.
Molpher [34] generates a virtual chemical library that represents the chemical space between two input molecules as it consists of the path found by morphing one molecule to another.
MoSS (Molecular Substructure miner) [35] finds common molecular substructures and discriminative fragments within a compound library.
The Open Molecule Generator (OMG) [36] enumerates all possible chemical structures given constraints on their composition.
sdf2xyz2sdf [37] converts between SDF and TINKER XYZ files. sdsorter provides convenient routines for manipulating, sorting, and filtering the contents of sdf molecular data files based on the embedded sd data tags.
Shape [38] employs a genetic algorithm to generate conformations of carbohydrates.
Strip-it is built using Open Babel and extracts molecular scaffolds. (Table 3) Ambit [39] integrates with the CDK to provide web-based applications for chemical search and analysis and includes a tautomer generation algorithm [48].

Graphical development environments
Bioclipse [40] is a workbench, based on the Eclipse framework, for manipulating and analyzing biochemical data and databases. It integrates with the CDK and Jmol to provide cheminformatic functionality and also has modules for bioinformatics (primarily sequence analysis) and QSAR modeling.
Galaxy [41] is a web platform for exploring biomedical data and includes as a component a Chemical Toolbox that integrates a number of other cheminformatics tools to offer an array of molecular search, property calculation, clustering, and manipulation capabilities.
The Konstanz Information Miner (KNIME) is a general workflow environment that includes a number of plugins for cheminformatics, such as CDK [49] and RDKit modules, as well as bioinformatics and machine learning modules.
Orange [43] is a graphical interface for construction interactive workflows and performing data analysis and visualization.
Screening Assistant 2 (SA2) [44] is a GUI written in Java that integrates with other toolkits to help manage, analyze, and visualize libraries of compounds.
Taverna [45] is a graphical workflow editor that includes support for integrating with web services and the CDK [50].
Weka [46] is a platform for data mining and machine learning that can be adapted for cheminformatics.

Visualization
An essential component of any molecular modeling exercise is the ability to visualize and, sometimes, edit molecular data.
Visualization software usually either deals with exclusively 2D or 3D molecular data and may be primarily intended for desktop usage (native 'fat' clients) or as a component embedded in a web browser. Packages designed for visualizing entire datasets are cataloged in the QSAR section (Table 10) and those with a particular emphasize on visualizing the output of quantum chemistry packages are in the Quantum Chemistry section (Table 13).

2D desktop applications (Table 4)
BKChem is a 2D molecular editor written in python that uses the Tk GUI toolkit.
chemfig is a tool for embedding chemical drawings in LaTeX documents.
Chemtool is a 2D molecular editor for Linux systems that uses the GTK toolkit.
JChemPaint [51] is a Java-based 2D molecular editor built using the CDK toolkit.
LeView [52] generates 2D representations of ligand-protein interactions that highlight features such as hydrogen bonds.
Molsketch is a 2D molecular editor written in C++ with the Qt toolkit that includes support for the Windows and Android operating systems.
SketchEl is a Java-based 2D molecular editor that includes support for a datasheet view for handling multi-molecule files.

3D desktop applications (Table 5)
Avogadro [54] is a 3D molecular viewer and editor with a modular plugin architecture with both Python and C++ bindings that includes interactive structure optimization for real-time editing.
gMol provides basic interactive 3D visualizations of molecular data readable by Open Babel.
Jamberoo provides a basic Java-based 3D molecular viewer and editor.
LP Molecular Viewer is an ActiveX/ATL control for embedding interactive 3D representations of molecular data in Microsoft products.
Luscus [56] is a 3D viewer and editor that is designed with a focus on electronic structure information.
Molecular Rift [57] integrates with the Oculus Rift virtual reality headset to provide immersive visualization of 3D molecular data.
OpenStructure [58] is a computational structural biology framework that provides a 3D viewer for manipulating structural information and includes an interactive Python shell.
PLIP (Protein-Ligand Interaction Profiler) [59] runs as a web application and analyzes and visualizes protein-ligand interactions in 3D.
PyMOL is a substantial 3D molecular viewer that includes a full Python interface to support scripting and plugin development.
RasTop and OpenRasMol are based off the venerable RasMol software and provide basic 3D visualization. SPADE (Structural Proteomics Application Development Environment) [60] is a graphical Python interface for structural informatics.

Web-based visualization
CH5M3D [63] uses JavaScript and HTML5 to provide visualization and editing of 3D structures of small molecules.
Chemozart [64] is a WebGL-based web application for 3D editing of small molecules.
CWC (ChemDoodle Web Components) [65] provides a suite of web-based visualizers and editors for 2D and 3D molecular data. JSME [66] is a pure JavaScript 2D molecular editor that can export and import SMILES data.
Jmol [67] is a Java applet for interactive 3D visualization that provides significant cheminformatics support and a custom scripting language.
JSmol [68] is the JavaScript port of Jmol and does not require the Java plugin to run.
NGL [69] is a WebGL-accelerated viewer and JavaScript library for interactive 3D visualization of macromolecules.
PV (Protein Viewer) [70] is a WebGL-accelerated viewer for interactive 3D visualization of macromolecules with a functionalstyle API.

QSAR/ADMET modeling
Quantitative structure-activity relationship (QSAR) approaches find relationships between the chemical structures of a series of compounds (or structural-related properties) and a biological activity [71], including ADMET properties (absorption, distribution, metabolism, excretion, and toxicity). QSAR methods calculate relevant molecular descriptors, build informative models using these descriptors and then apply the models. Models and datasets may also be visualized to aid in model development and understanding of compound libraries. Note that most of the cheminformatics toolkits shown in Table 1 also are capable of generating descriptors (and are often used as libraries by QSAR modeling software). (Table 7) 4D Flexible Atom-Pair Kernel (4D FAP) computes a '4D' similarity measure from the molecular graphs of an ensemble of conformations which can be incorporated into QSAR models.

Descriptor calculators
The BlueDesc descriptor calculator is a command-line tool that converts an MDL SD file into ARFF and LIBSVM format using CDK and JOELib2 for machine learning and data mining purposes. It computes 174 descriptors taken from both libraries.
Topological maximum cross correlation descriptors (TMACC) [75] generates 2D autocorrelation descriptors that are low dimensional and interpretable and appropriate for QSAR modeling.

Model building (Table 8)
AZOrange [76] is a machine learning package that supports QSAR model building in a full work flow from descriptor computation to automated model building, validation and selection. It promotes model accuracy by using several high performance machine learning algorithms for efficient data set specific selection of the statistical approach.
Bioalerts [77] uses RDKit fingerprints to create models from discrete (e.g., toxic/non-toxic) and continuous data. It includes the capability to visualize problematic functional groups.
Chemistry aware model builder (camb) [78] is an R package for the generation of quantitative models. Its capabilities    eTOXLab [79] provides a portable modeling framework embedded in a self-contained virtual machine for easy deployment.
Open3DGrid and Open3DQSAR [80] are a suite of related tools that build 3D QSAR models. Open3DGrid generates molecular interaction fields (MIFs) in a variety of formats, and Open3DQSAR builds predictive models from the MIFs of aligned molecules. Calculations can be visualized in real time in PyMOL.
QSAR-tools is a set of Python scripts that use RDKit to build linear QSAR models from 2D chemical data.

Model application (Table 9)
SMARTCyp [92] is a QSAR model that predicts the sites of cytochrome P450-mediated metabolism of drug-like molecules directly from the 2D structure of a molecule using fragment-based energy rules.
Toxtree [82] is a Java GUI application for estimating the "toxic hazard" of molecules using a variety of toxicity prediction modules, such as oral toxicity, skin and eye irritation prediction, covalent protein binding and DNA binding, Cytochrome P450-mediated drug metabolism (using SMARTCyp) and more.
UG-RNN/AquaSol [83] is an undirected graph recursive neural network that has been trained to predict aqueous solubility from molecular graphs. (Table 10) CheS-Mapper (chemical space mapper) [93,84]. is a 3D-viewer for small compounds in chemical datasets. It embeds a dataset into 3D space by performing dimensionality reduction on the properties of the compounds.

Visualization
DataWarrior [85] is a data visualization and analysis tool for chemical data with a rich set of available property calculations, similarity metrics, modeling capabilities, and data set representations.
DecoyFinder [86] provides a GUI for selecting a set of decoy compounds from a large library that are appropriate matches to a given set of actives.
Scaffold Hunter [87] provides a Java-based GUI for visualizing the relationship between compounds in a dataset.
Synergy Maps [88] visualizes synergistic activity extracted from screens of drug combinations.
VIDEAN (visual and interactive descriptor analysis) [89] is a visual tool for iteratively choosing a subset of descriptors appropriate for predicting a target property with the aid of statistical methods.
WCSE (Wikipedia chemical structure explorer) [90] runs as a web application and provides a 2D interface for visualizing and searching for 2D molecules.
WebChemViewer [91] is an online viewer for viewing and interacting with lists of compounds and their associated data.

Quantum chemistry
Quantum mechanics (QM) is increasingly accessible and relevant to molecular modeling and in silico drug design [94]. Quantum chemistry models molecules at the level of their wave function and offers enhanced accuracy and detail compared to classical models at a substantial increase in computation time. Corresponding to the large diversity of solution methods for Schrödinger's equation, there are many software packages for ab initio quantum chemistry, as well as programs for interpreting and visualizing the results of these calculations. (Table 11) ABINIT [95] can calculate the total energy, charge density and electronic structure of molecules and periodic solids with density functional theory (DFT) and Many-Body Perturbation Theory (MBPT), using pseudopotentials and a planewave or wavelet basis. ABINIT also can optimize the geometry, perform molecular dynamics simulations, or generate dynamical matrices, Born effective charges, and dielectric tensors and many more properties.

Ab initio calculation
ACES [96] performs calculations such as single point energy calculations, analytical gradients, and analytical Hessians, and is highly parallelized, including support for GPU computing. A focus of ACES is the use of MBPT and the coupled-cluster approximation to reliable treat electron correlation.
BigDFT [119,120,97] performs ab initio calculations using Daubechies wavelets and has the capability to use a linear scaling method. Periodic systems, surfaces and isolated systems can be simulated with the proper boundary conditions. It is included as part of ABINIT.
CP2K [98] performs simulations of solid state, liquid, molecular and biological systems. Its particular focus is massively parallel and linear scaling electronic structure methods and state-of-the-art ab initio molecular dynamics (AIMD) simulations. It is optimized for the mixed Gaussian and Plane-Waves method using pseudopotentials and can run on parallel and on GPUs.
Dacapo is a total energy program that uses density functional theory. It can do molecular dynamics/structural relaxation while solving the Schrödinger equations. It has support for parallel execution and is used through the Atomic Simulation Environment (ASE) [99].
ErgoSCM [100] is a quantum chemistry program for large-scale self-consistent field calculations. It performs electronic structure calculations using Hartree-Fock and Kohn-Sham density functional theory and achieves linear scaling for both CPU usage and memory utilization.
ERKALE [101] is designed to compute X-ray properties, such as ground-state electron momentum densities and Compton profiles, and core (X-ray absorption and X-ray Raman scattering) and valence electron excitation spectra of atoms and molecules.
HORTON (Helpful Open-source Research TOol for N-fermion systems) has as a primary design goal ease of extensibility for researching new methods in ab initio electronic structure theory.
JANPA [103] computes natural atomic orbitals from a reduced one-particle density matrix.
MPQC (massively parallel quantum chemistry program) [104] offers many features including closed shell, unrestricted and general restricted open shell Hartree-Fock energies and gradients, closed shell, unrestricted and general restricted open shell density functional theory energies and gradients, second order open shell perturbation theory and Z-averaged perturbation theory energies.
NWChem [105] provides a full suite of methods for modeling both classical and QM systems. Its capabilities include molecular electronic structure, QM/MM, pseudopotential plane-wave electronic structure, and molecular dynamics and is designed to scale across hundreds of processors.
Octopus pervorms ab initio calculations using time-dependent DFT (TDDFT) and pseudopotentials. Included in the project is libxc [123] which is a standalone library of exchange-correlation functionals for DFT (released under the LGPL).
OpenMX (Open source package for material eXplorer) [107] is designed for nano-scale material simulations based on DFT, normconserving pseudopotentials, and pseudo-atomic localized basis functions. OpenMX is capable of performing calculations of physical properties such as magnetic, dielectric, and electric transport properties and is optimized for large-scale parallelism.
Psi4 [108] is a suite of ab initio quantum chemistry programs that supports a wide range of computations (e.g., Hartree-Fock, MP2, coupled-cluster) and general procedures such as geometry optimization and vibrational frequency analysis with more than 2500 basis functions.  PyQuante is a collection of modules, mostly written in Python, for performing Hartree-Fock and DFT calculations with a focus on providing a well-engineered set of tools. A new version is under development (https://github.com/rpmuller/pyquante2).
PySCF is also written primarily in Python and supports several popular methods such as Hartree-Fock, DFT, and MP2. It also has easy of use and extension as primary design goals.
QMCPACK [109] is a many-body ab initio quantum Monte Carlo implementation for computing electronic structure properties of molecular, quasi-2D and solid-state systems. The standard file formats utilized for input and output are in XML and HDF5.
QUANTUM ESPRESSO [110] is designed for modeling at the nanoscale using DFT, plane waves, and pseudopotentials and its capabilities include ground-state calculations, structural optimization, transition states and minimum energy paths, ab initio molecular dynamics, DFT perturbation theory, spectroscopic properties, and quantum transport.
RMG [111] is a DFT code that uses real space grids to provide high scalability across thousands of processors and GPU acceleration for both structural relaxation and molecular dynamics.
Siam Quantum (SQ) is optimized for parallel computation and its capabilities include the calculation of Hartree-Fock and MP2 energies, minimum energy crossing point calculations, geometry optimization, population analysis, and quantum molecular dynamics.

Helper applications (Table 12)
FragIt [112] generates fragments of large molecules to use as input files in quantum chemistry programs that support fragment based methods.
cclib [113] provides a consistent interface for parsing and interpreting the results of a number of quantum chemistry packages.
GaussSum [113] uses cclib to extract useful information from the results of quantum chemistry programs (ADF, GAMESS, Gaussian, Jaguar) including monitoring the progress of geometry optimization, the UV/IR/Raman spectra, molecular orbital (MO) levels and MO contributions.
Geac (Gaussian ESI Automated Creator) extracts data from Gaussian log files.
Nancy EX [114] post-processes Gaussian output and analyzes excited states including natural transition orbitals, detachment and attachment density matrices, and charge-transfer descriptors.
orbkit [115] is a post-processing tool for the results of quantum chemistry programs. It has native support for a number of programs (MOLPRO, TURBOMOLE, GAMESS-US, PROAIMS/AIMPAC, Gaussian) and additionally interfaces with cclib for additional file format support. It can extract grid-based quantities such as molecular orbitals and electron density, as well as Muliken population charges and other properties.   6.3. Visualization (Table 13) CCP1GUI provides a graphical user interface to various computational chemistry codes with an emphasis on integration with the GAMESS-UK quantum chemistry program.
ccwatcher provides a graphical interface for the monitoring of computational chemistry programs.
Gabedit [116] is a graphical user interface to a large number of quantum chemistry packages. It can create input files and graphically visualize calculation results. J-ICE [117] is a Jmol-based viewer for crystallographic and electronic properties that can be deployed as a Java applet embedded in a web browser.
QMForge provides a graphical user interface for analyzing and visualizing results of quantum chemistry DFT calculations (Gaussian, ADF, GAMESS, Jaguar, NWChem, ORCA, QChem). Analyses include a number of population analyses, Mayer's bond order, charge decomposition, and fragment analysis.
wxMacMolPlt [118] is a multi-platform GUI for setting up and visualizing input and output files for the GAMESS quantum chemistry software.

Ligand dynamics and free energy calculations
Simulation based approaches for analyzing ligand-protein interactions have the potential to fully account for the dynamics of the ligand, protein, and water system. Molecular dynamics simulation is a powerful tool for computing free energies as long as the system can be properly parameterized and the simulation code adapted and analyzed to implement the desired free energy method.

Simulation software (Table 14)
Campari [124] conducts flexible Monte Carlo sampling of biopolymers in internal coordinate space, with built-in analysis routines to estimate structural properties and support for replica exchange and Wang-Landau sampling.
DL POLY Classic [125] is a general purpose molecular dynamics simulation package that can run in parallel and includes a Java graphical user interface.
GALAMOST (GPU accelerated large-scale molecular simulation toolkit) [126] uses GPU computing to perform traditional molecular dynamics with a special focus on polymeric systems at mesoscopic scales.
Gromacs [127] is a complete and well-established package for molecular dynamics simulations that provides high performance on both CPUs and GPUs. It can be used for free energy and QM/MM calculations and includes a comprehensive set of analysis tools.
Iphigenie [128] is a molecular mechanics program that features polarizable force fields, the HADES reaction field, and QM/(P)MM hybrid simulations.
LAMMPS (Large-scale Atomic/Molecular Massively Parallel Simulator) [129] is a highly modular classical molecular dynamics simulator that includes a diverse array of energy potentials and integrators.
MDynaMix [130] is a basic general purpose molecular dynamics package.
MMTK (Molecular Modelling Toolkit) [131] is a library written in Python (with some time critical parts written in C) for constructing and simulating molecular systems. Its capabilities include molecular dynamics, energy minimization, and normal mode analysis and it is well-suited for methods development.
OpenMM [132] is a substantial toolkit for high performance molecular dynamics simulations that includes support for GPU acceleration.
ProtoMol [133], and the associated MDLab Python bindings [151], provides an object-oriented framework for prototyping algorithms for molecular dynamics simulations and includes an interface to OpenMM.
ProtoMS [134] is a Monte Carlo biomolecular simulation program which can be used to calculate relative and absolute free energies and water placement with the GCMC and JAWS methodologies.
Sire is a collection of modular libraries intended to facilitate fast prototyping and the development of new algorithms for molecular simulation and molecular design. It has apps for system setup, simulation, and analysis.
WESTPA (The Weighted Ensemble Simulation Toolkit with Parallelization and Analysis) [135] is a library for performing weighted ensemble simulations to sample rare events and compute rigorous kinetics.
yank is built off of OpenMM and provides a Python interface for performing alchemical free energy calculations. (Table 15) AmberTools [136] is an open source component of the nonopen source Amber package and provides a large suite of analysis programs. As of Amber15, AmberTools includes the lower performance, but readily extendable, sander molecular dynamics code. LOOS (Lightweight Object-Oriented Structure library) [137] is a C++ library (with Python bindings) for reading and analyzing molecular dynamics trajectories that also includes a number of standalone programs.

Simulation setup and analysis
lsfitpar [138] derives bonded parameters for Class I force fields by performing a robust fit to potential energy scans provided by the user.
MDAnalysis [139] is a Python library for reading and analyzing molecular dynamics simulations with some time critical sections written in C.
MDTraj [140] provides high-performance reading, writing, and analysis of molecular dynamics trajectories in a diversity of formats from a Python interface.
MEMBPLUGIN [141] analyzes molecular dynamics simulations of lipid bilayers and is most commonly used as a VMD plugin.
MEPSA (Minimum Energy Pathway Analysis) [142] provides tools for analyzing energy landscapes and pathways.
MSMBuilder [143] is an application and Python library for building Markov models of high-dimensional trajectory data.
packmol [144] is a utility for setting molecular systems by realistically packing molecules to obey a variety of constraints and can create solvent mixtures and lipid bilayers.
PDB2PQR [145] prepares structures for electrostatics calculations by adding hydrogens, calculating sidechain pK a , adding missing heavy atoms, and assigning force field-dependent parameters; users can specify an ambient pH.
PLUMED [146] interfaces with an assortment of molecular dynamics software packages to provide a unified interface for performing free energy calculations using methods such as metadynamics, umbrella sampling and steered MD (Jarzynski).
ProDy [147] is a Python toolkit for analyzing proteins and includes facilities for trajectory analysis and druggability predictions using simulations of molecular probes [152].
Pteros [148] is a C++ library (with Python bindings) for reading and analyzing molecular dynamics trajectories.
PyEMMA [149] is a Python library for performing kinetic and thermodynamic analyses of molecular dynamics simulations using Markov models.
PyRED [150] generates RESP and ESP charges for the AMBER, CHARMM, OPLS, and Glycam and force fields.
PYTRAJ is a Python interface to the cpptraj tool of AmberTools. simpletraj is a lightweight Python library for parsing molecular dynamics trajectories.
WHAM (Weighted Histogram Analysis Method) calculates the potential of mean force (PMF) from umbrella sampling simulations.

Virtual screening and ligand design
The goal of virtual, or in silico, screening is to computationally identify small molecules in a compound library that are active against a given target. Virtual screening methods usually adopt either a ligand-based approach, where properties of known active compounds are used to identify additional compounds, or a structure-based approach, where the interactions between putative ligands and the receptor structure are used. Tools for chemical similarity, which can be used for ligand-based screening, are cataloged in the Cheminformatics section.
In contrast to virtual screening, which evaluates predetermined compounds, de novo ligand design attempts to create a molecule  'from scratch' that binds to a protein. Methods differ in how they specify the objective to optimize (e.g., docking score to a protein) and how candidate molecules are created, where a key challenge is maintaining synthetic accessibility.
Align-it is a successor of Pharao [158] and aligns and scores 3D representations of molecules based on their pharmacophore features. It includes a plugin for integration with PyMOL.
PAPER [154] performs GPU accelerated alignment of molecular shapes using Gaussian overlays.
Pharmer [155] uses efficient data structures to rapidly screen large libraries for ligand conformations that match a pharmacophore.
Pharmit [156] is a successor of Pharmer that also incorporates shape matching and energy minimization (if a receptor structure is available) as part of the screen. It is primarily intended to be used as a backend to a web service.
Shape-it uses Gaussian volumes to align and score molecular shapes.
USRCAT [157] performs "ultra-fast shape recognition" with the addition of pharmacophoric information to rapidly screen compound libraries for similar molecules. (Table 17) ADplugin is a plugin for PyMOL for interfacing with AutoDock and AutoDock Vina.

Docking and scoring
APBS [159] performs solvation free energy calculations using the Poisson-Boltzmann implicit solvent method.
AutoDock [160] is an automated docking program that uses a physics-based semiempirical scoring function [182] mapped to atom type grids to evaluate poses and a genetic algorithm to explore the conformational space. It includes the ability to incorporate sidechain flexibility and covalent docking.
AutoDock Vina [161] is an entirely separate code base and approach from Autodock that was developed with a focus on runtime performance and ease of system setup. It uses a fully empirical scoring function and an iterated local search global optimizer to produce docked poses. It includes support for multi-threading and flexible sidechains.
Clusterizer-DockAccessor [162] are tools for accessing the quality of docking protocols. It interfaces with a number of open source and free tools.
DockoMatic [163] provides a graphical user interface for setting up and analyzing AutoDock and AutoDock Vina docking jobs, including when run on a cluster. It also includes the ability to run inverse virtual screens (find proteins that bind a given ligand) and support for homology model construction.
DOVIS [164] is an extension of AutoDock 4.0 that provides more efficient parallelization of large virtual screening jobs.
idock [165] is a multi-threaded docking program that includes support for the AutoDock Vina scoring function and a random forest scoring function. I can output per-atom free energy information for hotspot detection.
MOLA [166] is a pre-packaged distribution of AutoDock and AutoDock Vina for deployment on multi-platform computing clusters.
NNScore [167] uses a neural network model to score protein-ligand poses.
Paradocks [168] is a parallelized docking program that includes a number of population-based metaheuristics, such as particle swarm optimization, for exploring the space of potential poses.
PyRx [169] is a visual interface for AutoDock and AutoDock Vina that simplifies setting up and analyzing docking workflows. Its future as an open-source solution is in doubt due to a recent shift to commercialization.
rDock [170] is designed for docking against proteins or nucleic acids and can incorporate user-specified constraints. It uses an empirical scoring function that includes solvent accessible surface area terms. A combination of genetic algorithms, Monte Carlo, and simplex minimization is used to explore the conformational space. Distinct scoring functions are provided for docking to proteins and nucleic acids.
RF-Score [171,183] uses a random forest classifier to score protein-ligand poses.
smina [172] is a fork of AutoDock Vina designed to better support energy minimization and custom scoring function development (scoring function terms and atom type properties can be specified using a run-time configuration file). It also simplifies the process of setting up a docking run with flexible sidechains.
VHELIBS (Validation HElper for LIgands and Binding Sites) [173] assists the non-crystallographer in validating ligand geometries with respect to electron density maps.
VinaLC [174] is a fork of AutoDock Vina designed to run on a cluster of multiprocessor machines.
VinaMPI [175] is a wrapper for AutoDock Vina that uses Open-MPI to run large-scale virtual screens on a computing cluster.
Zodiac [176] is a visual interface for structure-based drug design that includes support for haptic feedback. (Table 18) eFindSite [177] using homology modeling and machine learning predicts ligand binding sites in a protein structure.

Pocket detection
fpocket [178] detects and delineates protein cavities using Voronoi tessellation and is able to process molecular dynamics simulations.
KVFinder [179] is a PyMOL plugin for identifying and characterizing pockets.  mcvol [180] calculates protein volumes and identifying cavities using a Monte Carlo algorithm. PAPCA (PocketAnalyzerPCA) is a pocket detection utility designed to analyze ensembles of protein conformations.
PCS (Pocket Cavity Search) measures the volume of internal cavities and evaluates the environment of ionizable residues.
PocketPicker [181] is a PyMOL plugin that automatically identifies potential ligand binding sites using a grid-based shape descriptor. POVME (POcket Volume MEasurer) [91] is a tool for measuring and characterizing pocket volumes that includes a graphical user interface.

Ligand design
AutoClickChem [184] performs in silico click chemistry to generate large libraries of synthetically accessible compounds.
AutoGrow [185] uses a genetic algorithm to explore the space of reactants and reactions accessible via AutoClickChem and identifies compounds that dock well using AutoDock Vina.
igrow, like AutoGrow, uses a genetic algorithm but transforms ligands using branch exchange and uses idock as the underlying docking evaluation protocol.
OpenGrowth [186] assembles candidate ligands by connecting small organic fragments in the active site of proteins. It includes a graphical user interface.

Discussion
We have cataloged over 200 open-source packages for molecular modeling that provide a wide range of capabilities. As shown in Fig. 1, the most popular license (55%) is some variant of the copyleft GNU Public License, which ensures that derivative works remain open source. Interestingly 78% of the packages cataloged have a corresponding citeable publication which suggests that much of the software originates from academia. The distribution of average citations generated a year (as reported by Google Scholar) for the citeable publications is shown in Fig. 3. A significant majority (84%) of publications generate at least one citation a year, 29% generate at least 10 citations, and 8% generate more than 100 citations a year on average.
A substantial portion of the packages cataloged are under active development and see significant usage, as shown in Fig. 2. We rated 56% of the packages as 'A' level development, meaning major features or releases were made within the last 18 months, and 51% see substantial usage (rank 1). There are a number of projects (30%) where development has apparently ceased (no changes within the last 18 months). Note that our methodology for identifying packages ignores cases where software is no longer available, this is an underestimate. However, although we did find instances where an open source package was referenced in a paper but was no longer available, we did not find this to be a common occurrence. Most packages, even those that have remained unchanged for a   decade, see some usage. In fact, a number of packages (23), still see significant usage despite having received no development for the past 18 months. This underlies the importance of releasing source code through a third-party site such as SourceForge or GitHub as it ensures the continued existence of a project. A major advantage of open source is that in cases where a popular project is not being actively developed (e.g., AutoDock Vina [161]) new projects can fork the source code and continue development (e.g., smina [172]). However, a potential problem area with open source development is the lack of central coordination and efficient pooling of resources. For example, there are several forks of AutoDock Vina that improve it's performance on computing clusters and there are an array of tools in several categories that effectively perform the same task. This underscores the importance of efforts like Blue Obelisk [187,188] and Open Chemistry (http:// www.openchemistry.org) which foster collaboration among open source cheminformatics projects.
It is clear that open source software plays an important role in the scientific community and is a vibrant sub-community of its own with a wide assortment of projects under development and in widespread use. The open source software packages cataloged here provide launching points for the development of new tools for enabling further scientific discovery. As open source software is in a constant state of change, as a supplement to this article we provide a website, https://opensourcemolecularmodeling.github.io with an updated and community-editable catalog of open source molecular modeling software.