快速、灵活的基于代理的疾病建模框架
项目描述
Starsim是一个基于代理的建模框架,用于通过动态传播网络模拟代理之间疾病的传播。Starsim支持一次同时传播多种疾病,捕捉它们在生物学和行为上的相互作用。用户还可以将非传染性疾病作为单独的疾病或影响传染性疾病的因素来包括。Starsim允许从怀孕到研究出生相关疾病的详细建模。此外,Starsim允许用户比较不同的干预策略,如疫苗或治疗,通过不同的交付方式,如大规模运动或针对性的外展,来查看它们的影响。
Starsim已实现的一些疾病示例包括性传播感染(HIV、HPV和梅毒,包括共传播)、呼吸道感染(结核病和RSV),以及其他疾病(埃博拉和霍乱)以及健康的基础决定因素(如营养不良)。
注意:Starsim是一个通用多疾病框架,基于我们之前的一系列针对特定疾病的模型,包括Covasim、HPVsim和FPsim。在需要区分的情况下,Starsim也被称为“Starsim框架”,而这一系列其他模型被称为“Starsim套件”。
有关Starsim的更多信息,请参阅文档。
要求
Python 3.9-3.12。
我们建议但不强制要求在虚拟环境中安装Starsim,例如Anaconda。
安装
Starsim最简单的安装方式是通过PyPI:pip install starsim。
Starsim也可以本地安装。为此,首先克隆此存储库,然后运行pip install -e .(别忘了末尾的点!)。
注意:Starsim利用Intel的短向量数学库。如果您想使用它(以获得约10%的速度提升),请通过conda install intel-cmplr-lib-rt安装。
使用和文档
完整文档,包括教程和API参考,可在https://docs.starsim.org找到。
您可以通过以下方式运行一个简单的演示:
import starsim as ss ss.demo()
以下是一个SIR模型与随机连接的更真实的示例
import starsim as ss
# Define the parameters
pars = dict(
n_agents = 5_000, # Number of agents to simulate
networks = dict( # Networks define how agents interact w/ each other
type = 'random', # Here, we use a 'random' network
n_contacts = 10 # Each person has 10 contacts with other people
),
diseases = dict( # *Diseases* add detail on what diseases to model
type = 'sir', # Here, we're creating an SIR disease
init_prev = 0.01, # Proportion of the population initially infected
beta = 0.05, # Probability of transmission between contacts
)
)
# Make the sim, run and plot
sim = ss.Sim(pars)
sim.run()
sim.plot() # Plot all the sim results
sim.diseases.sir.plot() # Plot the standard SIR curves
更多使用示例可在教程中找到,以及tests文件夹中。
Starsim结构
所有核心模型代码位于starsim子文件夹中;标准用法是import starsim as ss。
模型由核心类组成,包括Sim、People、Disease、Network、Intervention等。这些类包含运行、构建简单或动态网络、生成随机数、计算结果、绘图等方法。
Starsim文件夹的子模块如下
arrays.py:用于处理在模拟中存储和更新网络中人的状态的类,包括生活、母亲、儿童、易感、感染、接种疫苗、康复等。
calibration.py:用于处理模型自动校准到数据的类。
demographics.py:用于转换初始条件输入参数以用于构建和利用网络的类。
disease.py:用于管理特定疾病的传播率、流行率、减弱效应和其他参数的类。
distributions.py:用于处理Starsim中用于产生随机数的统计分布的类。
interventions.py:干预类,用于添加干预措施并动态修改参数,以及从它派生的每个特定干预措施的类。分析器类(用于在模拟运行时执行分析),以及用于分析模拟的其他类和函数。
loop.py:主要模拟集成循环的逻辑。
modules.py:用于处理“模块”逻辑的类,例如更新(疾病、网络等)。
networks.py:用于根据输入参数创建简单和动态人群网络的类。
parameters.py:用于创建模拟参数的类。
people.py:用于处理每个个人的状态更新的People类。
products.py:用于管理疫苗和治疗部署的类。
results.py:分析并保存模拟结果的类。
run.py:运行模拟的类(例如并行运行和Scenarios和MultiSim类)。
samples.py:用于存储大量模拟数据的类。
settings.py:Starsim的用户自定义选项(例如默认字体大小)。
sim.py:Sim类,执行大部分繁重工作:初始化模型、运行和绘图。
utils.py:辅助函数。
version.py:版本、日期和许可证信息。
Starsim软件包中的diseases文件夹包含不同类型疾病的定义,包括性传播感染、埃博拉和霍乱。
贡献
有关问题或评论,请联系 info@starsim.org,或在项目的GitHub页面。Starsim的完整信息可在文档中找到。
免责声明
此存储库中的代码由IDM、Burnet研究所和其他合作者开发,以支持我们对灵活的基于主体的建模的联合研究。我们将其公开发布在MIT许可证下,以使其他人更好地了解我们的研究,并有机会在此基础上构建自己的工作。我们不保证代码按预期工作,也不会提供支持、解决发现的问题或接受拉取请求。您可以根据MIT许可证的许可创建自己的分支并修改代码以满足您的建模需求。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
starsim-2.0.0.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 674fd2266425fc943def7aa2f7edfe96353a4391125824aee1b7ad6e0530a529 |
|
| MD5 | b1cd54c021ca708b3862435ee26a09c0 |
|
| BLAKE2b-256 | 0db0d6db190177692cb36c05d67538b7d75d8fec5ef21b2410b1a9337a8a7a68 |
starsim-2.0.0-py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 51a0afdb0bf6c38f639854f6cdfdabfdc77a31c926db2cf168f0027ef348055e |
|
| MD5 | 38dfe3c8b733a3d016392c3e6825fb16 |
|
| BLAKE2b-256 | 274bc36942bc4011a3564e59e71e549fd0ec75301f6e22ea147cd6e5e56da86b |