Metadata-Version: 2.1
Name: atomica
Version: 1.0.22
Summary: Toolbox for compartment-based dynamic systems with costing and optimization
Home-page: http://github.com/atomicateam/atomica
Author: Atomica Team
Author-email: info@atomica.tools
License: UNKNOWN
Keywords: dynamic,compartment,optimization,disease
Platform: OS Independent
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
Requires-Dist: matplotlib (>=1.4.2)
Requires-Dist: numpy (>=1.10.1)
Requires-Dist: scipy
Requires-Dist: pandas
Requires-Dist: six (>=1.11.0)
Requires-Dist: xlsxwriter
Requires-Dist: openpyxl (<2.6,>=2.5)
Requires-Dist: pyswarm
Requires-Dist: hyperopt
Requires-Dist: sciris
Requires-Dist: tqdm

# Atomica

[![Build Status](https://travis-ci.com/atomicateam/atomica.svg?branch=develop)](https://travis-ci.com/atomicateam/atomica)
[![Documentation Status](https://readthedocs.org/projects/atomica/badge/?version=latest)](https://atomica.readthedocs.io/en/latest/?badge=latest)

Atomica is a simulation engine for compartmental models. It can be used to simulate disease epidemics, health care cascades, and many other things.

Atomica is still under development; please check back regularly for updates.

# Installation

Atomica is available for Python 3 only. Because we develop using Python 3.7, it is possible that dictionary order is
relevant (although we endeavour to use ordered dictionaries via `Sciris` in places where order matters). Therefore, we
only _officially_ support Python 3.7, as this is the first Python release that guarantees ordering of all dictionaries.

### Git installation

Use the Git installation method if you plan to make changes to the Atomica source code. First, you will need a Python
environment containing the `numpy`, `scipy` and `matplotlib`. In theory these can be installed automatically as
dependencies for `atomica`, but in practice, these packages can require system-level setup so it is usually easiest
to install them separately beforehand.

We recommend installing via Anaconda, which facilitates getting the binaries and dependencies like QT installed in a
platform-agnostic manner. We also recommend working within an Anaconda environment.

You may also wish to install `mkl` first, before installing `numpy` etc. to improve performance. So for example:

```
conda install mkl
conda install numpy scipy matplotlib
```

Then, you can install Atomica into the environment using:

```
git clone https://github.com/atomicateam/atomica.git
cd atomica
python setup.py develop
```

```
cd atomica/tests
python testworkflow.py
```

# Troubleshooting

### Installation fails due to missing `numpy`

If running `python setup.py develop` in a new environment, `numpy` must be installed prior to `scipy`. In some cases,
installing `numpy` may fail due to missing compiler options. In that case, you may wish to install `numpy` via Anaconda
(by installing Python through Anaconda, and using `conda install numpy scipy matplotlib`). In general, our experience
has been that it is easier to set up the C binaries for `numpy` and the QT dependencies for `matplotlib` via Anaconda
rather than doing this via the system, which involves different steps on every platform.

