This project is the descriptive epidemiological meta-regression tool, DisMod-MR, which grew out of the Global Burden of Disease (GBD) Study 2010. DisMod-MR has been developed for the Institute of Health Metrics and Evaluation at the University of Washington from 2008-2013.
A motivating example: descriptive epidemiological meta-regression of Parkinson's Disease
Dismod MR requires PyMC2 which does not play nicely with normal Python
installation tools. Fortunately, conda
has solved this issue for us.
So first you'll need to setup a conda environment
(after installing conda, if necessary)
and install pymc
version 2.3.8
. Then you can install dismod_mr
using pip
.
conda create --name=dismod_mr python=3.6 pymc==2.3.8
conda activate dismod_mr
pip install dismod_mr
If you get an error stating
ERROR: Complete output from command python setup.py egg_info:
ERROR: Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-d9fbq7v3/pymc/setup.py", line 8, in <module>
from numpy.distutils.misc_util import Configuration
ModuleNotFoundError: No module named 'numpy'
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-d9fbq7v3/pymc/
or something similar, you do not have pymc
properly installed.
If you want to install dismod_mr
locally in an editable mode, the
instructions are very similar. We'll clone the repository and install it
from a local directory instead of using pip
to grab it from the Python
package index.
conda create --name=dismod_mr python=3.6 pymc==2.3.8
conda activate dismod_mr
git clone [email protected]:ihmeuw/dismod_mr.git
cd dismod_mr
pip install -e .
To test this, you can use pytest
, which you must first install.
pip install pytest
pytest
If you have things setup right, this will still generate many warnings, but there should be no tests that produce failures or errors.
- Write tests before code
- Write equations before tests
- Test quantitatively with simulation data
- Test qualitatively with real data
- Automate tests
- Use a package instead of DIY
- Test the package
- Optimize code later
- Optimize code for readability before speed
- .py files should be short, less than 500 lines
- Functions should be short, less than 25 lines