使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图
使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图
- 1. EoN是什么
- 2. 安装
- 3. 效果图
- 4. 源代码
- 4.1 源码
- 4.2 源码
- 参考
写这篇博客源于博友的提问,好奇EoN是什么,然后安装研究了一下~。
1. EoN是什么
EoN:使用python模拟网络中的疾病扩散模型
这本教科书为网络科学领域提供了一个令人兴奋的新的补充,其特点是模型与其数学起源的更强有力和更有条理的联系,并解释了这些模型如何相互关联,特别关注网络上的流行病传播。
作者开发了名为Eon的python包,可以非常方便地模拟网络中的疾病扩散模型。
2. 安装
https://epidemicsonnetworks.readthedocs.io/en/latest/GettingStarted.html#
pip install EoN
EoN需要numpy、scipy和matplotlib。如果您没有它们,并且您通过pip进行安装,这些将自动添加。一些可视化工具提供了对动画的支持,但是制作动画需要安装ffmpeg之类的东西。
3. 效果图
看不太懂是在整啥,看一个demo的效果图:
demo2效果图:
4. 源代码
4.1 源码
import EoN
import matplotlib.pyplot as plt
import networkx as nxG = nx.karate_club_graph()
nx_kwargs = {"with_labels": True}
print('doing Gillespie simulation')
sim = EoN.Gillespie_SIR(G, 1, 1, return_full_data=True)
print('done with simulation, now plotting')
sim.display(time=1, **nx_kwargs)plt.show()
4.2 源码
# EoN官网demoimport EoN
import matplotlib.pyplot as plt
import networkx as nxN = 10 ** 5
G = nx.barabasi_albert_graph(N, 5) # create a barabasi-albert graphtmax = 20
iterations = 5 # run 5 simulations
tau = 0.1 # transmission rate
gamma = 1.0 # recovery rate
rho = 0.005 # random fraction initially infectedfor counter in range(iterations): # run simulationst, S, I, R = EoN.fast_SIR(G, tau, gamma, rho=rho, tmax=tmax)if counter == 0:plt.plot(t, I, color='k', alpha=0.3, label='Simulation')plt.plot(t, I, color='k', alpha=0.3)# Now compare with ODE predictions. Read in the degree distribution of G
# and use rho to initialize the various model equations.
# There are versions of these functions that allow you to specify the
# initial conditions rather than starting from a graph.# we expect a homogeneous model to perform poorly because the degree
# distribution is very heterogeneous
t, S, I, R = EoN.SIR_homogeneous_pairwise_from_graph(G, tau, gamma, rho=rho, tmax=tmax)
plt.plot(t, I, '-.', label='Homogeneous pairwise', linewidth=5)# meanfield models will generally overestimate SIR growth because they
# treat partnerships as constantly changing.
t, S, I, R = EoN.SIR_heterogeneous_meanfield_from_graph(G, tau, gamma, rho=rho, tmax=tmax)
plt.plot(t, I, ':', label='Heterogeneous meanfield', linewidth=5)# The EBCM model does not account for degree correlations or clustering
t, S, I, R = EoN.EBCM_from_graph(G, tau, gamma, rho=rho, tmax=tmax)
plt.plot(t, I, '--', label='EBCM approximation', linewidth=5)# the preferential mixing model captures degree correlations.
t, S, I, R = EoN.EBCM_pref_mix_from_graph(G, tau, gamma, rho=rho, tmax=tmax)
plt.plot(t, I, label='Pref mix EBCM', linewidth=5, dashes=[4, 2, 1, 2, 1, 2])plt.xlabel('$t$')
plt.ylabel('Number infected')plt.legend()
plt.plot()
plt.show()
# plt.savefig('SIR_BA_model_vs_sim.png')
参考
- https://book.douban.com/review/10072369/
- https://github.com/springer-math/Mathematics-of-Epidemics-on-Networks
- https://epidemicsonnetworks.readthedocs.io/en/latest/GettingStarted.html#quickstart-guide
使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图相关推荐
- Python文本处理:单词提取和统计,借助matplotlib绘图
Python文本处理:单词提取和统计,借助matplotlib绘图 1.首先安装matplotlib绘图库 在电脑运行窗口输入cmd,右击命令提示符,以管理员身份运行. 在窗口输入:pip insta ...
- MICCAI 2022中的医学扩散模型
来源:知乎-JunMa 地址:https://zhuanlan.zhihu.com/p/569555913 没有意外,diffusion model的热浪也涌入了医学图像,这是今年MICCAI看到的几 ...
- [家里蹲大学数学杂志]第055期图像滤波中的方向扩散模型
$\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 5.4.1 节的详细论述. $\bf 关键词$: 图像滤波; 方向扩散模型; matlab 编程 1. 模型的建 ...
- Python实现RabbitMQ中6种消息模型(转)
RabbitMQ与Redis对比 RabbitMQ是一种比较流行的消息中间件,之前我一直使用redis作为消息中间件,但是生产环境比较推荐RabbitMQ来替代Redis,所以我去查询了一些Rab ...
- python绘制折线图中文图例不显示_python使用matplotlib绘图时图例显示问题的解决...
前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图 ...
- 深度学习:Diffusion Models in Vision: A Survey视觉中的扩散模型:综述
Diffusion Models in Vision: A Survey视觉中的扩散模型:综述 0.摘要 1.概述 2.通用模型架构 2.1.Denoising Diffusion Probabili ...
- OpenAI新研究:扩散模型在图像合成质量上击败BigGAN,多样性还更佳
来源:AI科技评论本文约3600字,建议阅读5分钟本文介绍了OpenAI新研究:扩散模型在图像合成的最新技术. 新模型在ImageNet512×512上实现了3.85FID,甚至在每个样本只有25次正 ...
- python ppt 绘图_Python数据分析-Matplotlib绘图基础
本文结构: 一.Matplotlib绘图基础及中文乱码解决 二.如何利用pandas绘图? 三.如何利用notebook制作分析报告? 图形在我们日常生活中无处不在.如果没有可视化,就是一些数字罗列, ...
- 扩散模型爆火,这是首篇综述与Github论文分类汇总
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 编译:机器之心 本文首次对现有的扩散生成模型(diffusion model)进行了全面 ...
最新文章
- Unity3D+VR的实现
- QT绘制具有向下钻取效果的园饼图
- 检测 SAP Spartacus 服务器端渲染页面响应时间的两种办法
- cad钣金展开插件_钣金高级工考试大小头手工展开图步骤教程
- 作者:朱扬勇,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
- UVa 495 Fibonacci Freeze
- git远程仓库中master及其余分支间代码的合并
- 58欧氏空间05——对称变换和对称矩阵、实对称矩阵的标准形、正交相似、实对称矩阵的正交相似对角化
- SelectObject失败原因 cannot convert from ‘HGDIOBJ‘ to ‘CBrush‘
- JDK1.8下载、安装和环境配置教程
- matlab 仿真逆变电路,逆变电路的MATLAB仿真研究论文.doc
- Solution of ZOJ 2748 Free Kick
- 【蓝桥杯选拔赛真题01】Scratch消失的小猫 少儿编程scratch蓝桥杯选拔赛真题讲解
- java super是什么意思_java中Super到底是什么意思
- Xtend官方文档-第一部分
- 《软件工程——实践者的研究方法》重难点复习笔记(第八章——理解需求)
- 野路子玩Qt,第三十一集,擦玻璃游戏
- es与数据库的同步方案
- 一、多线程是什么?为什么要用多线程?
- 【渝粤题库】广东开放大学 电子商务职业技能 形成性考核
热门文章
- 2021年大数据环境命令(一):常用命令汇总
- [JS] 事件冒泡,阻止事件冒泡,事件的三个阶段(捕获,目标,冒泡)
- Redeclared ‘list_b‘ defined above without usage
- Android 模拟机自定义屏幕的尺寸
- Keras运行速度越来越慢的问题
- adb命令 判断锁屏
- 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
- 深入理解jQuery插件开发【转】
- virtual hust 2013.6.20 数论基础题目 D - Just the Facts
- Google Chrome(谷歌浏览器) 发布下载