Python-based library with utilities for modeling and calibration, with emphasis on exploiting phylogenetic data.


Documentation is available at


phyloModels contains the following folders:


Algorithms and tools for model calibration.


Documentation and notes.


Battery of examples and use-cases of modules.


Summary statistics for structured (e.g., time series) and unstructured (e.g., trees, graphs) data.


Algorithms and tools for disease transmission models.


Algorithms and utilities for generation and manipulation of graphs/trees/networks.


Algorithms and utilities for sampling model generated data.


Main programs that test the library and demonstrate its performance.


Miscellaneous functions (read/write from/to files, data conversions, etc.)


Functions and utilities for visualization.

Data structures

Structured data is represented using Pandas dataframes. Phylogenetic trees are represented using ETE3 tree objects.


  1. Download the library:

    git clone
  2. Install dependencies.

    Packages not on PyPI will not be installed by setuptools in step 3 below. Hence, they should be installed separately. These packages include CUDA and History Matching (at this time, CUDA and History Matching are required only for the calibration module; functions in other modules can run without these libraries).

    We recommend using a virtual environment. You can configure a virtual environment using the Conda definition file that is included in this package, or you can create a virtual environment with the required dependencies from scratch. Follow one of the steps below:

    • Create and configure virtual environment using an environment definition file.

      A Conda environment definition file is provided with this package. This file, called phylomodels_env.yml, includes definitions of all requirements, even packages not on PyPI. To use it for installing dependencies, edit the first line to set the name of the environment, and then execute the following commands for installing and activating a conda environment that satisfies all required dependencies:

      conda env create -f phylomodels_env.yml
      conda activate [environment name]`


      In some systems, the environment activation command is source activate [environment name] instead of conda activate [environment name].

    • Create and configure virtual environment using Conda.

      Other than CUDA libraries, which are only used for the calibration module, most of the dependencies can be installed during the installation step (see item 3 below). However, there is an exception with some of the dependencies of the ETE3 library, which is used for representing tree data structures. These dependencies and their required versions can be installed as follows:

      conda create --name [environment name] python==3.7
      conda activate [environment name]
      pip install PyQt5==5.11.3
    • Create and configure virtual environment using venv.

      The process is similar to creating a Conda virtual environment:

      python3 -m venv [environment name]
      source [environment name]/bin/activate
      pip install PyQt5==5.11.3
  3. Install the package:

    python3 develop


    Alternatively, you could run python3 install if you plan on using the package as is, without making any changes to the code.

  4. Register environment as jupyter kernel (optional).

    You may need to manually add the new environment as a jupyter kernel. With the conda environment activated, this can be done as follows:

    python -m ipykernel install --user --name [environment name] --display-name "Python ([environment name])"


See dependencies in and phylomodels_env.yml.


  • Computing summary statistics on phylogenetic trees: phylomodels/examples/features_computeTreeFeatures/features_computeTreeFeatures.ipynb

  • Model calibration using History Matching: phylomodels/examples/calibration_historyMatching_featureSelectionForSIR/calibration_historyMatching_featureSelectionForSIR.ipynb