Skip to main content

A package for compartmental epidemic modelling

Project description

Пакет epidemmo

Пакет для создания эпидемиологических моделей. Структура создаваемых моделей основана на идеях компартментального моделирования.

Импорт пакета

import epidemmo

Создание простой SIR модели

from epidemmo import ModelBuilder
from matplotlib import pyplot as plt

builder = ModelBuilder()
builder.add_stage('S', 100).add_stage('I', 1).add_stage('R')
builder.add_factor('beta', 0.4).add_factor('gamma', 0.1)
builder.add_flow('S', 'I', 'beta', 'I').add_flow('I', 'R', 'gamma')

model = builder.build()
result_df = model.start(70)

result_df.plot(title='SIR', ylabel='population', xlabel='time')
plt.show()

start(70) - метод, который принимает длительность моделирования, а возвращает pd.DataFrame с результатами моделирования.

Результаты моделирования

sir example

Использование стандартных моделей

Пакет содержит несколько стандартных эпидемиологических моделей.

from epidemmo import Standard

model = Standard.get_SIR_builder().build()
result = model.start(40)

Вы можете изменить стартовую численность каждой стадии, а также изменить значение параметров модели.

from epidemmo import Standard

model = Standard.get_SIR_builder().build()
model.set_start_stages(S=1000, I=10, R=0)
model.set_factors(beta=0.5)

Вывод и запись табличных результатов

После запуска модели Вы можете вывести результаты в виде таблицы (PrettyTable) в консоль.

from epidemmo import Standard

model = Standard.get_SIR_builder().build()
model.start(60)
model.print_result_table()

или записать результаты в csv файлы, включая

  1. файл с изменением численности каждой стадии
  2. файл с изменением значений всех параметров во времени
  3. файл с изменением интенсивности потоков модели во времени
from epidemmo import Standard

model = Standard.get_SIR_builder().build()
model.start(60)
model.write_results()

Получение системы LaTex уравнений

Вы можете получить LaTex уравнения модели. Для этого при добавлении факторов необходимо указать свойство latex_repr. Вы можете использовать параметр simplified для упрощения уравнений (представления в классическом варианте).

from epidemmo import ModelBuilder

builder = ModelBuilder()
builder.add_stage('S', 100).add_stage('I', 1).add_stage('R')
builder.add_factor('beta', 0.4, latex_repr=r'\beta').add_factor('gamma', 0.1, latex_repr=r'\gamma')
builder.add_flow('S', 'I', 'beta', 'I').add_flow('I', 'R', 'gamma')

model = builder.build()

latex_str = model.get_latex()
print(latex_str)

latex_str_simplified = model.get_latex(simplified=True)
print(latex_str_simplified)

Будут сформированы следующие системы дифференциальных уравнений:

\begin{equation}\label{eq:SIR_full}
    \begin{cases}
        \frac{dS}{dt} =  - S \cdot (1 - (1 - \frac{\beta}{N})^{I})\\
        \frac{dI}{dt} = S \cdot (1 - (1 - \frac{\beta}{N})^{I}) - I \cdot \gamma\\
        \frac{dR}{dt} = I \cdot \gamma\\
    \end{cases}
\end{equation}

\begin{equation}\label{eq:SIR_classic}
    \begin{cases}
        \frac{dS}{dt} =  - \frac{S \cdot \beta \cdot I}{N}\\
        \frac{dI}{dt} = \frac{S \cdot \beta \cdot I}{N} - I \cdot \gamma\\
        \frac{dR}{dt} = I \cdot \gamma\\
    \end{cases}
\end{equation}

Для компиляции необходимо подключить пакет amsmath Результат компиляции LaTex выглядит следующим образом: equation example

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

epidemmo-0.1.0.tar.gz (119.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

epidemmo-0.1.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file epidemmo-0.1.0.tar.gz.

File metadata

  • Download URL: epidemmo-0.1.0.tar.gz
  • Upload date:
  • Size: 119.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for epidemmo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e6763341eda655552e6e86b9e577146f9552dd8702442c720daba0b402b088e0
MD5 06763caad7e50d80e4e548ca2bea5dff
BLAKE2b-256 9678b36fe9e049a5b3c68cdaf05673b26e0d8f68c77886da071e9d2ec05bcabe

See more details on using hashes here.

File details

Details for the file epidemmo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: epidemmo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for epidemmo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 726e3483ab3e94437ba588a91b514f9891261f9bf4a68a361013ed88655e9c2d
MD5 555d8f20ed1ecb935aaeae5bb3083f39
BLAKE2b-256 2dc2068c04c737c00c32bb7d7db1a5e2a8effac4b1603898c5adc4d3f8fbde8d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page