A Python package for the mathematical modeling of infectious diseases via compartmental models

Overview

epispot


epispot v2

A Python package for the mathematical modeling of infectious diseases via compartmental models. Originally designed for epidemiologists, epispot can be adapted for almost any type of modeling scenario.

Features

The epispot package currently only supports compartmental models, though we plan to expand the package to work for stochastic agent-based and spatial models as well. Currently, epispot offers the following:

  • Quick compilation of compartmental models with the following compartments:
    • Susceptible
    • Infected
    • Recovered
    • Removed
    • Exposed
    • Dead
    • Critical
    • Hospitalized
  • Custom-defined compartments for research
  • Built-in graphing and visualization engine
    • Plots model predictions interactively
    • Creates comparisons between models

Due to its diverse range of features, epispot can be used for both research and experimental modeling. If you would like to add more modeling support, please see the contributing section.

Installation

The epispot package can be installed from PyPI, Anaconda, or be built from the source. Before reading this guide, it is important to note that there are actually two different versions of the epispot package. The first of which is the master package, which will always have a version tag like v#.#.#. This package is used to release stable versions of epispot. However, during important events, like the COVID-19 pandemic, the nightly package is used to publish new features quickly. However, these versions may be unstable.

PyPI

This is the easiest way to install epispot. Fire up a terminal and type:

pip install epispot

For the nightly version, use

pip install epispot-nightly

Pip will ask you to install numpy and matplotlib as dependencies if you haven't already. Additionally, it may require you to install fire for the CLI. These can be installed beforehand with:

pip install numpy
pip install matplotlib
pip install fire

Anaconda

Please note that the nightly version is not available on the conda package registry. However, it is still possible to install on conda-based systems with

pip install epispot-nightly

which uses pip from Anaconda to install it.

The standard version of epispot is published to conda using the conda-forge channel. To install, please use:

conda config --add channels conda-forge
conda install -c conda-forge epispot

Building from the source

This is the hardest way to install epispot and it is recommended that you use either PyPI or Anaconda to install it instead. However, if you would like to contribute to the repository, this will be particularly useful.

Clone the repository with:

git clone https://github.com/epispot/epispot  # clone epispot/epispot
cd epispot  # open project
pip install -r requirements.txt  # install package requirements
pip install -r bin/requirements.txt  # Install CLI requirements

Then, build the nightly version with

python setup-nightly.py install

For the stable version, first checkout a release branch with something like:

git checkout v2.1.1
python setup.py install

Quick Demo

Installing epispot from pip and then compiling a simple SIR model in less than 40 seconds.

Documentation

The documentation for the epispot package is generated automatically from the Python source code using Pdoc3. You can view the documentation for both the nightly and stable builds of epispot here.

At first, the documentation may seem a bit hard to understand, especially if you're new to epidemiology. That's why epispot has put together an entire manual describing some basic concepts you'll need to know to master epispot. You can view it here. The GitHub source is available here.

Usage/Examples

The GitHub repository has a vast array of samples using epispot. You can start by checking out the explorables/ directory. In it, you'll find many programs designed for helping you get started with epispot and some hands-on examples.

Badges

latest-release conda Downloads Language grade: Python Total alerts open-issues

Statuses

Pipeline Status
Travis CI Build Status
CodeCov codecov
PyPI main latest-release
PyPI nightly latest-release
Security GitHub issue custom search in repo

Feedback

If you have any feedback, please

  • Create a discussion on GitHub
  • Create an issue if you've found a bug
  • Submit a PR if you want to add a new feature
  • Contact a CODEOWNER

Contributing

Contributions are always welcome! See CONTRIBUTING.md for instructions on how to get started, including environment setup and instructions to build from the source. Please note also that epispot has many guides dedicated to certain types of contributions. Please see

Citation

GPLv3 License

If you plan on using epispot in your project, please abide by the GPLv3 license. This requires that any changes you make to epispot must be open-sourced under the GPLv3 license as well and that you give credit to the author, which you can do by citing the project in your research, linking back to the original repository, or mentioning the author @quantum9innovation.

For research, you can also use epispot's DOI to reference the project:

DOI

The recommended citation for epispot is:

quantum9innovation (2021, April 2). epispot/epispot: (Version 2.1.0). Zenodo. http://doi.org/10.5281/zenodo.4624423

Authors

Please see our CODEOWNERS file for authors. Because epispot is an open-source project, different pieces of our code have different authors. However, if citing epispot or using it in another project, you can put @quantum9innovation as the lead author.

Acknowledgements

Idea & Inspiration

The original idea for epispot came from a 3Blue1Brown video on basic infectious disease dynamics and an interactive article in the Washington Post. This in turn inspired the very basic infectious disease dynamics simulated here. However, what finally set the package into motion was a series of articles by Henry Froese, available on Medium here, along with their corresponding interactive notebooks.

Code Development & Maintenance

The epispot project is built on open source code and is itself open-source. The initial core development was fueled by @quantum9innovation and much of the codebase was maintained by @Quantalabs. Additionally, thank you to all of epispot's open-source contributors!

epispot's open-source contributors

Dependencies

The epispot team also relies on the following open-source projects as dependencies:

  • NumPy (GitHub), the fundamental package for scientific computing with Python
  • Matplotlib (GitHub), plotting with Python
  • Google Fire (Github), a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.

External Code Management Tools

For code maintenance, epispot uses various tools including:

  • Coverage.py (PyPI) for code coverage report generation
  • Pdoc3 (GitHub) for automatic documentation generation
  • GitBook (Website) for documentation hosting
  • CodeCov (Website) for code coverage report analysis
  • LGTM (Website) for CodeQL analysis
  • DeepSource (Website) for static code analysis
  • GitLocalize (Website) for localization of documentation
  • Zenodo (Website) for automatic DOI & citations
Comments
  • [dep]: Update numpy requirement from ~=1.21.5 to ~=1.22.0

    [dep]: Update numpy requirement from ~=1.21.5 to ~=1.22.0

    Updates the requirements on numpy to permit the latest version.

    Release notes

    Sourced from numpy's releases.

    v1.22.0

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    unsupported :no_entry: low-priority :arrow_down_small: dependabot 
    opened by dependabot[bot] 8
  • Initialization Testing

    Initialization Testing

    Adds initialization testing to package

    From PR #48, after PR #49


    New Feature

    Adds sanity and dependency checks to the epispot/__init__.py file and adds classifiers and other metadata to both setup.py and setup-nightly.py.

    Known Issues

    No known issues.

    Code Breakdown

    • epispot/__init__.py
      • Sanity checks
      • Dependency checks
      • Increased package documentation
        • Ported from README.md
    • release.py
      • Updated to be compatible with new initialization file
    • setup.py, setup-nightly.py
      • Adds classifiers
      • Adds more URLs
    doc :scroll: feat :rocket: low-priority :arrow_down_small: src 
    opened by quantum9Innovation 8
  • Add Dependabot

    Add Dependabot

    Is your feature request related to a problem? Please describe. This feature is unrelated to any current issues in epispot. However, using Dependabot will not only make epispot's code more secure, but it allow epispot to support the latest versions of each of our dependencies. Previously, this was not a problem—however, as new versions of epispot add more and more external dependencies, it is critical that we monitor security vulnerabilities and release notes constantly.

    Describe the solution you'd like Solving this problem will require the following steps:

    • [x] #80
    • [x] #81
    • [x] #87
    • [x] #82

    Describe alternatives you've considered No alternative solutions have been considered. Dependabot is usually the norm for dependency management, especially since it integrates nicely with GitHub.

    feat :rocket: help wanted :helicopter: good first issue :+1: nightly :crescent_moon: low-priority :arrow_down_small: dependabot 
    opened by quantum9Innovation 7
  • [op:spaghetti] Standardize parameters

    [op:spaghetti] Standardize parameters

    Parameters for all compartments other than the Susceptible compartment should include a rate and probability, organized into an easily-understandable matrix which is then parsed by the Model class. The reason for this is to eliminate the double-parameter chaos created in epispot v2.

    The double-parameter issue

    Currently, epispot v2 requires parameters to be specified twice. First to the compartment from which people are leaving and second to the compartment which people are entering. This is because each compartment does not have access to the other compartments' derivatives. However, there is a simple fix for this; every compartment needs to be able to change the derivative of every other compartment. This means that all the derivatives need to be stored at the Model level and distributed to all the compartments. Each compartment should not make a direct assignment to the derivative but rather add or subtract some value from the derivative. Using this system, every compartment can change the derivative of every other compartment, avoiding the complication of having to enter parameters in twice.

    An example solution

    The model first learns what compartments are going to be compiled. For this example, we'll use the following compartment codes: A, B, C. Here's a diagram of how they all connect:

      ┌───────────────────┐
      │                   ▼
    ┌───┐     ┌───┐     ┌───┐
    │ A │ ──▶ │ C │ ──▶ │ B │
    └───┘     └───┘     └───┘
    

    Now we examine how we can represent this as a parameter matrix. We will refer as the compartments from which an arrow extends as the from compartments. On the other hand, compartments which receive an arrow will be referred to as to compartments.

    In code

    Each from compartment gets its own subarray. Each element of this subarray corresponds to its respective to compartment. This in turn contains a tuple with the structure ({probability}, {rate}). For our diagram, the matrix looks like this in Python:

    matrix = [
        [(1/2, 1/3), (1/5, 1/2)],       # A: [B, C]
        [(1/2, 1/6)],                   # C: [B]
    ]
    

    Sidenote

    Notice how the matrix simply does not include elements or subarrays that aren't necessary; B has no subarray of its own and C lacks a tuple describing rates and probabilities for A. We can do this because of how we describe connections between compartments:

    Describing connections

    This won't change much from epispot v2. Here's how connections are described, using our example with A, B, and C. The following graph:

      ┌───────────────────┐
      │                   ▼
    ┌───┐     ┌───┐     ┌───┐
    │ A │ ──▶ │ C │ ──▶ │ B │
    └───┘     └───┘     └───┘
    

    becomes the following matrix in Python:

    connections = [
        ['B', 'C'],     # A
        [],             # B
        ['B']           # C
    ]
    

    Sidenote

    Notice how, even despite having any connections, B must be included in this matrix. This matrix differs from the rate and probability matrix because here epispot does not yet know what the connections are. After epispot receives this matrix, the Model class can then parse following parameter matrices by assuming that non-connections are skipped.

    Development

    For now, development of this feature will not interfere with the package itself. Rather, the development will be done in a separate module and tested with dummy compartments (as we did above), before it is transitioned into the actual Model class.

    • [x] #74
    • [x] #75
    • [x] #76
    feat :rocket: help wanted :helicopter: high-priority :arrow_up_small: 
    opened by quantum9Innovation 7
  • [dep/dev]: Update pytest requirement from ~=7.1.2 to ~=7.1.3

    [dep/dev]: Update pytest requirement from ~=7.1.2 to ~=7.1.3

    Updates the requirements on pytest to permit the latest version.

    Release notes

    Sourced from pytest's releases.

    7.1.3

    pytest 7.1.3 (2022-08-31)

    Bug Fixes

    • #10060: When running with --pdb, TestCase.tearDown is no longer called for tests when the class has been skipped via unittest.skip or pytest.mark.skip.
    • #10190: Invalid XML characters in setup or teardown error messages are now properly escaped for JUnit XML reports.
    • #10230: Ignore .py files created by pyproject.toml-based editable builds introduced in pip 21.3.
    • #3396: Doctests now respect the --import-mode flag.
    • #9514: Type-annotate FixtureRequest.param as Any as a stop gap measure until 8073{.interpreted-text role="issue"} is fixed.
    • #9791: Fixed a path handling code in rewrite.py that seems to work fine, but was incorrect and fails in some systems.
    • #9917: Fixed string representation for pytest.approx{.interpreted-text role="func"} when used to compare tuples.

    Improved Documentation

    • #9937: Explicit note that tmpdir{.interpreted-text role="fixture"} fixture is discouraged in favour of tmp_path{.interpreted-text role="fixture"}.

    Trivial/Internal Changes

    Commits
    • 4645bcd Remove incorrect output in how-to/fixtures.rst
    • fadfb4f Prepare release version 7.1.3
    • ab96ea8 Merge pull request #10258 from pytest-dev/backport-10252-to-7.1.x
    • fc0e024 [7.1.x] Fix regendoc
    • 8f5088f Merge pull request #10249 from pytest-dev/backport-10231-to-7.1.x
    • aae93d6 Ignore type-errors related to attr.asdict
    • 71b79fc [7.1.x] Ignore editable installation modules
    • 89f7518 Merge pull request #10222 from pytest-dev/backport-10171-to-7.1.x
    • 88fc45b [7.1.x] Update fixtures.rst w/ finalizer order
    • d0b53d6 Merge pull request #10221 from pytest-dev/backport-10217-to-7.1.x
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    Dependabot will merge this PR once CI passes on it, as requested by @quantum9Innovation.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot 
    opened by dependabot[bot] 6
  • [Stub] Issue status test

    [Stub] Issue status test

    This issue is a stub: do not comment. It is intended to test the new claim.yml and mod.yml workflows that aim to provide automatic issue labeling based on issue comments. See commit 5eb8ce14b666ffa909a0f797e544ce97457a4dc2 for more information.

    opened by quantum9Innovation 6
  • Use `pytest`

    Use `pytest`

    Set up pytest as main testing framework

    After PR #46, solves issue #47


    New Feature

    Transforms old tests to use pytest as the main testing framework. pytest allows for

    • more testing accuracy
    • easily accessible testing suite
    • fast testing due to local cache
    • assert-based testing and bounds It also adds GitHub CODEOWNERS

    Known Issues

    Fixes #47 "Getting started with pytest"

    Code Breakdown

    • .github/CODEOWNERS
      • Adds CODEOWNERS
    • .github/workflows/
      • build.yml, coverage.yml
        • Changed testing to use $ python -m pytest command
      • Optimizes workflows (@Quantalabs check optimizations)
    • bin/epispot
      • Replace broad except with except ImportError
    • bin/requirements.txt
      • Removes epispot due to pip install -r bin/requirements.txt command in workflows which installs epispot from PyPI instead of from the source
    • epispot/init.py
      • Add shortened README and guide to top of file (for help() commands)
      • Add dependency and sanity checks (@Quantalabs please see)
      • Remove __ from metadata variable names to make them globally accessible
      • Add documentation on metadata
    • epispot/
      • Add # pragma: no cover on soon-to-be deprecated functions
    • explorables/
      • Remove all tests, former testing suites, examples, and tutorials and move them to this directory to keep tests/ directory clean
    • tests/
      • Replace testing suite with new one that uses pytest
    • release.py
      • Update to be compatible with new __init__.py
    • setup.py, setup-nightly.py
      • Add more metadata and classifier information

    Additional Notes

    There's a lot going on in this PR and it may need to be broken up into multiple PRs. For now, it will be created as a draft PR just because of the sheer scale of the PR. Additionally, before moving into merge stage, all merge conflicts should be resolved and all basic checks (build and code coverage) should pass. After we enter the merge stage, reviewers should analyze code for compatibility issues and other code quality-related alerts will be dealt with if necessary.


    Closes #47

    doc :scroll: duplicate feat :rocket: high-priority :arrow_up_small: src tests repo 
    opened by quantum9Innovation 6
  • Added a CLI

    Added a CLI

    Basic CLI Structure Implemented


    New Feature

    This PR adds a basic built-in CLI to epispot nightly that comes preinstalled with setup.py. The keyword to initiate it is epispot followed by a command. Currently the only available command is about. The shell uses Fire and termcolor as dependencies although it can run without termcolor by suppressing color (see the __color__ flag). To test the shell, run:

    $ epispot about
    >>> Epispot was invoked via the epispot CLI
    >>> Path: /home/user/anaconda3/lib/python3.8/site-packages/epispot_nightly-2.1.1.1-py3.8.egg/EGG-INFO/scripts
    >>> Version: shell-v0.1.0-alpha epispot-v2.1.1.1
    >>> Color output enabled (True/False): True
    
    

    Known Issues

    • Coverage does not work on CLI scripts.
    • Planning on adding an enhancement to run models from the CLI; will require the addition of automatic parameter substitutions that will be implemented in another branch.

    Code Breakdown

    • .coveragerc
      • Added bin/ as a directory however still not implemented in codecov reports (issue)
    • .github/workflows
      • Added to support build tests for CLI
      • coverage.yml
        • Added more verbosity for issue solving related to code coverage reporting
    • CHANGELOG.md
      • Added a CHANGELOG to track progress on the nightly package
    • README.md
      • Removed Release Notes on README.md to create CHANGELOG.md
    • bin/requirements.txt
      • Added separate CLI requirements (Fire, termcolor (optional))
    • requirements.txt
      • Removed unnecessary requirements (sphinx)
    • setup.py
      • Added scripts indicator to add epispot to the command line

    Additional Notes

    Similar to branch #cli Ideally merge when:

    • Code and implementation has been thoroughly reviewed
    • New workflows have been approved by @Quantalabs 's review Ignoring:
    • LGTM, CodeFactor, and other code quality checks (except built-in GitHub CodeQL)
      • Currently transitioning to Deepsource
    duplicate feat :rocket: high-priority :arrow_up_small: 
    opened by quantum9Innovation 6
  • [dep]: Update scienceplots requirement from ~=1.0.9 to ~=2.0.0

    [dep]: Update scienceplots requirement from ~=1.0.9 to ~=2.0.0

    Updates the requirements on scienceplots to permit the latest version.

    Release notes

    Sourced from scienceplots's releases.

    SciencePlots (v2.0.0)

    • Fix import on case sensitive OSs
    • Finally bump to this major version, following breaking change
      • Remember, now import scienceplots is needed on top of your scripts!
    Changelog

    Sourced from scienceplots's changelog.

    v2.0.0 (21-Nov-2022)

    • Fix import on case sensitive OSs
    • Finally bump to this version, following breaking change of distribution

    v1.1.0 (07-Nov-2022)

    • Major change in distribution system
      • Now needs import directive import scienceplots
    • Fix not using raw string in plot-example.py
    • Update README

    v1.0.9 (16-Sep-2021)

    • notebook:
      • make Latex fonts sans-serif
    • Fix bug with Latex packages:
      • e.g., \usepackage{amsmath, amssymb, sfmath} --> \usepackage{amsmath} \usepackage{amssymb} \usepackage{sfmath}
    • Add pyproject.toml file (see PEP 517/518)
    • Minor updates to README, including adding more papers to publication list

    v1.0.8 (02-Jun-2021)

    • nature:
      • Added style for Nature articles
      • Uses sans-serif fonts
    • latex-sans:
      • Added style for using LaTeX with sans-serif fonts
    • std-colors:
      • Added style to recover the standard color cycle of the SciencePlots package
      • For example, if you use plt.style.use(["science", "ieeee"]). The figure will use the "ieee"color cycle. To revert to the standard color cycle, you can useplt.style.use(["science", "ieee", "std-colors"])``.
    • science:
      • Added amssymb to LaTeX preamble
    • grid:
      • Set axes.axisbelow to True
    • Minor updates to README

    v1.0.7 (28-Feb-2021)

    • Add support for CJK fonts:
      • see README for details
    • Add example of CJK fonts:
      • see Fig 14a, Fig 14b, Fig 14c, Fig 14d
    • science style:
      • use default serif font
    • ieee style:
      • use Times font

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    Dependabot will merge this PR once CI passes on it, as requested by @quantum9Innovation.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot 
    opened by dependabot[bot] 5
  • [dep]: Update matplotlib requirement from ~=3.4.2 to ~=3.4.3

    [dep]: Update matplotlib requirement from ~=3.4.2 to ~=3.4.3

    Updates the requirements on matplotlib to permit the latest version.

    Release notes

    Sourced from matplotlib's releases.

    REL: v3.4.3

    This is the third bugfix release of the 3.4.x series.

    This release contains several critical bug-fixes:

    • Clarify deprecation of Axes.figbox
    • Disable MultiCursor widget on Axes subplots which it is not tracking
    • Don't simplify path in LineCollection.get_segments
    • Fix DPI in subfigures, affecting tick spacing, and scatter marker size
    • Fix broken EPS output when using Type 42 STIX fonts
    • Fix change in tick behaviour when calling Axes.clear
    • Fix class docstrings for Norms created from Scales
    • Fix compatibility with NumPy 1.21.0
    • Fix crash on broken TrueType fonts
    • Fix incorrect hits from Path.intersects_path
    • Fix leak if affine_transform is passed invalid vertices
    • Fix legends of stackplot with edgecolors='face'
    • Fix plot directive when building in parallel
    • Fix supxlabel and supylabel behaviour in constrained layout
    • Fix tests with latest Inkscape and Ghostscript
    • Improve DateFormatter styling for month names when usetex=True
    • Re-disable autoscaling after interactive zoom
    • Work around bug in Pillow 8.3.0
    Commits
    • 919145f REL: v3.4.3
    • b6f40b2 Merge branch 'v3.4.2-doc' into v3.4.x
    • b8068c3 DOC: Update GitHub stats for 3.4.3.
    • c946d3c Merge pull request #20830 from meeseeksmachine/auto-backport-of-pr-20826-on-v...
    • 4b5ea5a Backport PR #20826: Fix clear of Axes that are shared.
    • da6b1fe Merge pull request #20823 from meeseeksmachine/auto-backport-of-pr-20817-on-v...
    • 7cf7368 Backport PR #20817: Make test_change_epoch more robust.
    • 7d5754e Merge pull request #20820 from meeseeksmachine/auto-backport-of-pr-20771-on-v...
    • 83b0190 no draw_no_output
    • 00acdbb Update lib/matplotlib/tests/test_figure.py
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    unsupported :no_entry: low-priority :arrow_down_small: dependabot 
    opened by dependabot[bot] 5
  • [dep/dev]: Update pdoc3 requirement from ~=0.9.2 to ~=0.10.0

    [dep/dev]: Update pdoc3 requirement from ~=0.9.2 to ~=0.10.0

    Updates the requirements on pdoc3 to permit the latest version.

    Changelog

    Sourced from pdoc3's changelog.

    0.10.0 (2021-08-03)

    • Python 3.6+ required.
    • New support for variable doc-comments (directly above variable definition or on the same line; starting with '#:').
    • Improved formatting of typing annotations.
    • Respect PYTHONWARNINGS environment variable.
    • Various other small bugs and fixes.

    0.9.2 (2020-11-25)

    • Stop touching objects blacklisted with __pdoc__.
    • Use last __init__ to document class signature (e.g. in case of @typing.overload).
    • Better formatting of nptyping and typing.NewType annotations.
    • Fix minor lunr search bugs from the previous version.

    0.9.1 (2020-09-28)

    • Fix circular imports and generally handling of typing annotations when they are unresolvable (regression since 0.9.0).

    0.9.0 (2020-08-27)

    • New offline search function using Lunr.js (see lunr_config config tunable).
    • Correctly enumerate members of Enum and typed-only namespaces.
    • Inspect __init__ to obtain true/overridden class instantiation parameters.
    • Bump Highlight.js and use its 'python-repl' annotation for doctests.

    0.8.5 (2020-08-27)

    • Fix installation issue on non-UTF-8 platforms.
    • Fix working with 'develop' installations in virtual environments.

    0.8.4 (2020-06-30)

    • Fix inline code interpretation inside fenced code blocks.

    0.8.3 (2020-06-27)

    • Fix extracting TOC with interleaved doctests in fenced code blocks, regression since 0.8.2.

    0.8.2 (2020-06-26)

    • Enhancements:
      • New CLI switch --skip-errors for skipping invalid/broken modules with a warning instead of raising an error.
      • CSS tweak to highlight :target-ed section.
      • Paths to generated files (with --output-dir) are now printed to stdout.

    ... (truncated)

    Commits
    • f358893 MNT: Update CHANGELOG for 0.10.0
    • 0073fae REF: More f-strings
    • 1961159 REF: Avoid using _BLACKLISTED_DUMMY 🤡
    • 1bb95b4 BUG: Fix crash on annotating something as typing.Callable
    • f49faf0 MNT: CI: Install types-Markdown package to avoid mypy warning
    • 251d61a BUG: Don't build Lunr search index when not --html
    • 1c7f454 REF: Remove unused param pdoc.test.run(_check=)
    • da98dd7 BUG: Fully respect PYTHONWARNINGS, when set
    • c2c1320 REF: Also replace typing.Union[None, T] -> Optional[T]
    • bacbd53 TST: Skip failing test for now
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    unsupported :no_entry: low-priority :arrow_down_small: dependabot 
    opened by dependabot[bot] 5
  • [Feat] Add support for Python 3.11

    [Feat] Add support for Python 3.11

    With the release of Python 3.11, it is imperative that epispot adds support for the new version along with the many updates that it brings. Among other things, the speed improvements offered by this release will have major impacts on the forecasting power of epispot's models by allowing users to generate predictions faster.

    feat :rocket: unsupported :no_entry: high-priority :arrow_up_small: 
    opened by quantum9Innovation 0
Releases(v3.0.0-rc-1)
  • v3.0.0-rc-1(Aug 21, 2022)

  • v3.0.0-alpha-3(Nov 25, 2021)

    Important Notes

    Python

    Python 3.10 is now officially supported (in epispot and all its core dependencies)! :fireworks: As of now, Python 3.10 will become the standard environment for testing epispot's future releases (though we will continue to test on 3.7-3.9).

    Dependencies

    All updates shown below:

    Security

    This release adopts a new and stronger security policy than before, emphasizing compatibility with Google's OSS Vulnerability Guide. We encourage you to take a look at the new changes here.

    Changes

    Note: See the project changelog for more detailed information.

    No new features were introduced in this update, only environment changes.

    Version-specific Information

    This release is the third in a series of alpha releases of epispot v3.0, succeeding v3.0.0-alpha-2 'standard params'. Code coverage is at 95.56%, details available on CodeCov Version documentation available in English at https://epispot.github.io/epispot/en/v3.0.0-alpha-3/

    At the time of release, there is 1 issue related to this version:

    • #77 "Accept shortened parameter matrices"

    Statuses

    There exists 1 LGTM code quality alert for this release. The latest LGTM code quality scan is available here. There exist no known security vulnerabilities at this time. (This release will not receive security updates)

    What's Changed

    • Remove implicit object from the base class by @deepsource-autofix in https://github.com/epispot/epispot/pull/97
    • SECURITY.md Revision 1 by @quantum9Innovation in https://github.com/epispot/epispot/pull/98
    • [dep/dev]: Update codecov requirement from ~=2.1.11 to ~=2.1.12 by @dependabot in https://github.com/epispot/epispot/pull/100
    • [dep/dev]: Update pdoc3 requirement from ~=0.9.2 to ~=0.10.0 by @dependabot in https://github.com/epispot/epispot/pull/101
    • [dep]: Update plotly requirement from ~=5.1.0 to ~=5.2.1 by @dependabot in https://github.com/epispot/epispot/pull/104
    • [dep]: Update matplotlib requirement from ~=3.4.2 to ~=3.4.3 by @dependabot in https://github.com/epispot/epispot/pull/103
    • [dep]: Update numpy requirement from ~=1.21.1 to ~=1.21.2 by @dependabot in https://github.com/epispot/epispot/pull/102
    • [dep]: Update plotly requirement from ~=5.2.1 to ~=5.2.2 by @dependabot in https://github.com/epispot/epispot/pull/106
    • [dep]: Update plotly requirement from ~=5.2.2 to ~=5.3.0 by @dependabot in https://github.com/epispot/epispot/pull/107
    • [dep]: Update plotly requirement from ~=5.3.0 to ~=5.3.1 by @dependabot in https://github.com/epispot/epispot/pull/109
    • [dep/dev]: Update pytest requirement from ~=6.2.4 to ~=6.2.5 by @dependabot in https://github.com/epispot/epispot/pull/108
    • [dep]: Update scienceplots requirement from ~=1.0.8 to ~=1.0.9 by @dependabot in https://github.com/epispot/epispot/pull/110
    • [dep/dev]: Update coverage requirement from ~=5.5 to ~=6.1 by @dependabot in https://github.com/epispot/epispot/pull/116
    • Python 3.10 by @quantum9Innovation in https://github.com/epispot/epispot/pull/113
    • [dep]: Update numpy requirement from ~=1.21.2 to ~=1.21.4 by @dependabot in https://github.com/epispot/epispot/pull/117
    • [dep]: Update plotly requirement from ~=5.3.1 to ~=5.4.0 by @dependabot in https://github.com/epispot/epispot/pull/118
    • [dep]: Update matplotlib requirement from ~=3.4.3 to ~=3.5.0 by @dependabot in https://github.com/epispot/epispot/pull/119
    • Bump version to v3.0.0-alpha-3 by @Quantalabs in https://github.com/epispot/epispot/pull/120
    • Fix failing docs from #113 by @Quantalabs in https://github.com/epispot/epispot/pull/121
    • Deploy v3.0.0-alpha-3 by @quantum9Innovation in https://github.com/epispot/epispot/pull/122

    New Contributors

    • @deepsource-autofix made their first contribution in https://github.com/epispot/epispot/pull/97

    Full Changelog: https://github.com/epispot/epispot/compare/v3.0.0-alpha-2...v3.0.0-alpha-3

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-alpha-2(Jul 25, 2021)

    v3.0.0-alpha-2 (standard-params)

    Installation Instructions

    This is the second in the series of epispot v3 alpha releases, following the massive plots release. As with the last one, it must be installed using pip. Install with:

    pip install epispot-nightly==3.0.0a2
    

    Important Notes

    Python

    All versions of Python 3.6 are no longer supported. This follows a change in our CI/CD provider and multiple updates to manifest files. If you are using Python 3.6, please upgrade to 3.7, the oldest supported release right now.

    Deprecations

    As this is a pre-release to the epispot v3 release, there are many, many new changes. Unfortunately, this also leads to a huge number of deprecations. However, we believe that the new changes in epispot v3.0.0-alpha-2 will be very easy to adapt to and simplify the user experience greatly. The main deprecation is that of the Model object, which now has a different structure and must be formed according to the new ideas proposed in #73. Additionally, the epispot.fitters module (while still available) is now deprecated; new alternatives will be shipped in a future release. We hope you will read more about these changes and send us any feedback you have.

    Dependencies

    No new dependencies have been added to the package source code; however, we have now officially updated the list of packages sent out on the PyPI package registry to reflect our internal requirements files. This release we have bumped NumPy to 1.21.1 from 1.21.0.

    Changes

    Note: See the project changelog for more detailed information.

    This release completely redesigns the central Model object in epispot. In brief, we now support custom compartments and combinations through a new Compartment object and we now pass parameters into the Model object instead of to the Compartment object. The name 'standard-params' comes from the fact that now the parameters (that are really just probabilities and rates) have been organized into an easily-understandable matrix. More discussion about this feature can be found here.

    Version-specific Information

    This release is the second in a series of alpha releases of epispot v3.0, succeeding v3.0.0-alpha-1 'massive plots'. Code coverage is at 95.50%, details available on CodeCov
    Version documentation available in English at https://epispot.github.io/epispot/en/v3.0.0-alpha-2/

    At the time of release, there is 1 issue related to this version:

    • #77 "Accept shortened parameter matrices"

    Statuses

    There exists 1 LGTM code quality alert for this release. The latest LGTM code quality scan is available here. There exist no known security vulnerabilities at this time. (This release will not receive security updates)

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-alpha-1(Jun 22, 2021)

    v3.0.0-alpha-1 (massive-plots)

    Installation Instructions

    This is a nightly release, meaning that it is only available through the epispot-nightly project on PyPI. However, if you have Anaconda, you can still install it into your environment, just using pip. Installation instructions for both systems are shown below:

    pip install epispot-nightly==3.0.0a1
    

    Important Notes

    Deprecations

    All functions from the epi.plots module have now been deprecated. Please use epi.plots.native as a replacement for these functions. Alternatively, you can continue using the latest v2 build of the nightly version, v2.1.1.15. This will be supported until the official stable release of epispot v3.

    Dependencies

    The new plots subpackage in epispot requires SciencePlots and plotly, two new dependencies added to the requirements-nightly.txt file. These new dependencies are used for improving graph quality in epispot and generating quick plots without extensive computation.

    Changes

    Note: See the project changelog for more detailed information.

    This release adds new plotting features to epispot, available through the epi.plots subpackage. This subpackage in turn contains two new modules, web and native. The web module includes utilities for graphing with plotly and the native module utilities for creating scientific plots of models with matplotlib. More details about these new features can be found in the documentation for this release.

    Version-specific Information

    This version is the first of many alpha versions of epispot v3.0 (unreleased as of yet). Code coverage is at 90.16%, details available on CodeCov Version documentation available in English at https://epispot.github.io/epispot/en/v3.0.0-alpha-1/ At the time of release, there exist no issues related to this version.

    Statuses

    There exists 1 LGTM code quality alert for this release. The latest LGTM code quality scan is available here. There exist no known security vulnerabilities at this time. (This release will not receive security updates)

    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Apr 5, 2021)

  • v2.1.0(Apr 3, 2021)

    Introducing pre-compiled models! Instead of writing long and useless blocks of code to set up simple models, you can now create them via the pre module. For example, create an SIR model with just:

    SIR = epi.pre.SIR(R_0=2.5, N=1e5, p_recovery=0.5, recovery_rate=1/7)
    

    Install via pip with pip install epispot==2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Dec 29, 2020)

  • v2.0.0(Oct 25, 2020)

    Version 2 Debut

    latest-release Introduces new graph annotation commands (see the plots module). Install on pip as pip install epispot==2.0.0

    Packaging| Docs | Features --- | --- | --- ready ✔️ | docstrings ✔️ | compartments ✔️ pip ✔️ | docs :heavy_check_mark: | spatial models ❌ conda ❌ | tutorials 🟡 | interactive plots 🟡

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Aug 30, 2020)

  • v1.0.0(Aug 22, 2020)

    Herd Immunity (v1.0.0)

    Note: this is the first fully-supported production-ready release. Now the first release on PyPI

    latest-release

    Comes with Susceptible, Infected, Recovered, Exposed, Critical, Hospitalized, and Dead compartments. Install on pip as pip install epispot==1.0.0

    Packaging| Docs | Features --- | --- | --- ready ✔️ | docstrings ✔️ | compartments ✔️ pip ✔️ | docs ❌ | spatial models ❌ conda ❌ | tutorials 🟡 | interactive plots ❌

    Source code(tar.gz)
    Source code(zip)
  • v0.1.3-beta(Aug 11, 2020)

  • v0.1.2-beta(Aug 9, 2020)

  • v0.1.1-beta(Aug 8, 2020)

    Install on pip as pip install epispot==0.0.2

    Packaging| Docs | Features --- | --- | --- pip ✔️ | docstrings ✔️ | compartments 🟡 conda ❌ | docs ❌ | spatial models ❌ | | tutorials 🟡 | interactive plots ❌

    Source code(tar.gz)
    Source code(zip)
  • v0.1-beta(Aug 3, 2020)

    Note: this version is still in beta mode. Support for proper documentation, cross-platform packages, tutorials, and more compartments are still to come.

    The first version with full package support, as can be found on PyPi at https://pypi.org/project/epispot/0.0.1/. Comes with Susceptible, Infected, and Recovered compartments. Install on pip as pip install epispot==0.0.1

    Packaging| Docs | Features --- | --- | --- pip ✔️ | docstrings ✔️ | compartments 🟡 conda ❌ | docs ❌ | spatial models ❌ | | tutorials ❌ | interactive plots ❌

    Source code(tar.gz)
    Source code(zip)
  • v0.1-alpha(Jul 19, 2020)

    Notes:

    ⚠️ unsupported These are the first few code bits for the epi-spot package. The first release of epi-spot (v0.1-alpha - 'patient-zero'). Deployed to GitHub Pages, code fully released. Currently no Python package or Wiki.

    Support For:

    • SIR/SEIR/SEIRCD Models
    • Visualizers on matplotlib.pyplot
    • Model fitting via gradient descent*

    *unstable

    Source code(tar.gz)
    Source code(zip)
Owner
epispot
The official organization behind the epispot package for epidemiologists.
epispot
Dbt-core - dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.

Dbt-core - dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.

dbt Labs 6.3k Jan 08, 2023
SparseLasso: Sparse Solutions for the Lasso

SparseLasso: Sparse Solutions for the Lasso Introduction SparseLasso provides a Scikit-Learn based estimation of the Lasso with cross-validation tunin

Gabriel Okasa 1 Nov 08, 2021
Exploratory data analysis

Exploratory data analysis An Exploratory data analysis APP TAPIWA CHAMBOKO 🚀 About Me I'm a full stack developer experienced in deploying artificial

tapiwa chamboko 1 Nov 07, 2021
Import, connect and transform data into Excel

xlwings_query Import, connect and transform data into Excel. Description The concept is to apply data transformations to a main query object. When the

George Karakostas 1 Jan 19, 2022
Using Python to derive insights on particular Pokemon, Types, Generations, and Stats

Pokémon Analysis Andreas Nikolaidis February 2022 Introduction Exploratory Analysis Correlations & Descriptive Statistics Principal Component Analysis

Andreas 1 Feb 18, 2022
Template for a Dataflow Flex Template in Python

Dataflow Flex Template in Python This repository contains a template for a Dataflow Flex Template written in Python that can easily be used to build D

STOIX 5 Apr 28, 2022
A Numba-based two-point correlation function calculator using a grid decomposition

A Numba-based two-point correlation function (2PCF) calculator using a grid decomposition. Like Corrfunc, but written in Numba, with simplicity and hackability in mind.

Lehman Garrison 3 Aug 24, 2022
PyChemia, Python Framework for Materials Discovery and Design

PyChemia, Python Framework for Materials Discovery and Design PyChemia is an open-source Python Library for materials structural search. The purpose o

Materials Discovery Group 61 Oct 02, 2022
A Python package for modular causal inference analysis and model evaluations

Causal Inference 360 A Python package for inferring causal effects from observational data. Description Causal inference analysis enables estimating t

International Business Machines 506 Dec 19, 2022
Convert monolithic Jupyter notebooks into Ploomber pipelines.

Soorgeon Join our community | Newsletter | Contact us | Blog | Website | YouTube Convert monolithic Jupyter notebooks into Ploomber pipelines. soorgeo

Ploomber 65 Dec 16, 2022
Retail-Sim is python package to easily create synthetic dataset of retaile store.

Retailer's Sale Data Simulation Retail-Sim is python package to easily create synthetic dataset of retaile store. Simulation Model Simulator consists

Corca AI 7 Sep 30, 2022
INF42 - Topological Data Analysis

TDA INF421(Conception et analyse d'algorithmes) Projet : Topological Data Analysis SphereMin Etant donné un nuage des points, ce programme contient de

2 Jan 07, 2022
ELFXtract is an automated analysis tool used for enumerating ELF binaries

ELFXtract ELFXtract is an automated analysis tool used for enumerating ELF binaries Powered by Radare2 and r2ghidra This is specially developed for PW

Monish Kumar 49 Nov 28, 2022
WaveFake: A Data Set to Facilitate Audio DeepFake Detection

WaveFake: A Data Set to Facilitate Audio DeepFake Detection This is the code repository for our NeurIPS 2021 (Track on Datasets and Benchmarks) paper

Chair for Sys­tems Se­cu­ri­ty 27 Dec 22, 2022
Stitch together Nanopore tiled amplicon data without polishing a reference

Stitch together Nanopore tiled amplicon data using a reference guided approach Tiled amplicon data, like those produced from primers designed with pri

Amanda Warr 14 Aug 30, 2022
Data Science Environment Setup in single line

datascienv is package that helps your to setup your environment in single line of code with all dependency and it is also include pyforest that provide single line of import all required ml libraries

Ashish Patel 55 Dec 16, 2022
A lightweight, hub-and-spoke dashboard for multi-account Data Science projects

A lightweight, hub-and-spoke dashboard for cross-account Data Science Projects Introduction Modern Data Science environments often involve many indepe

AWS Samples 3 Oct 30, 2021
Useful tool for inserting DataFrames into the Excel sheet.

PyCellFrame Insert Pandas DataFrames into the Excel sheet with a bunch of conditions Install pip install pycellframe Usage Examples Let's suppose that

Luka Sosiashvili 1 Feb 16, 2022
Instant search for and access to many datasets in Pyspark.

SparkDataset Provides instant access to many datasets right from Pyspark (in Spark DataFrame structure). Drop a star if you like the project. 😃 Motiv

Souvik Pratiher 31 Dec 16, 2022
Hydrogen (or other pure gas phase species) depressurization calculations

HydDown Hydrogen (or other pure gas phase species) depressurization calculations This code is published under an MIT license. Install as simple as: pi

Anders Andreasen 13 Nov 26, 2022