Skip to content

An Integrative Metaregression Framework for Descriptive Epidemiology

License

Notifications You must be signed in to change notification settings

ihmeuw/dismod_mr

Repository files navigation

Latest Version

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

All examples

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 git@github.com: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