  Natural microbial communities contain hundreds to thousands of interacting
species. For this reason, computational simulations are playing an increasingly
important role in microbial ecology. In this manuscript, we present a new
open-source, freely available Python package called Community Simulator for
simulating microbial population dynamics in a reproducible, transparent and
scalable way. The Community Simulator includes five major elements: tools for
preparing the initial states and environmental conditions for a set of samples,
automatic generation of dynamical equations based on a dictionary of modeling
assumptions, random parameter sampling with tunable levels of metabolic and
taxonomic structure, parallel integration of the dynamical equations, and
support for metacommunity dynamics with migration between samples. To
significantly speed up simulations using Community Simulator, our Python
package implements a new Expectation-Maximization (EM) algorithm for finding
equilibrium states of community dynamics that exploits a recently discovered
duality between ecological dynamics and convex optimization. We present data
showing that this EM algorithm improves performance by between one and two
orders compared to direct numerical integration of the corresponding ordinary
differential equations. We conclude by listing several recent applications of
the Community Simulator to problems in microbial ecology, and discussing
possible extensions of the package for directly analyzing microbiome
compositional data.
