使用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绘图相关推荐

  1. Python文本处理:单词提取和统计,借助matplotlib绘图

    Python文本处理:单词提取和统计,借助matplotlib绘图 1.首先安装matplotlib绘图库 在电脑运行窗口输入cmd,右击命令提示符,以管理员身份运行. 在窗口输入:pip insta ...

  2. MICCAI 2022中的医学扩散模型

    来源:知乎-JunMa 地址:https://zhuanlan.zhihu.com/p/569555913 没有意外,diffusion model的热浪也涌入了医学图像,这是今年MICCAI看到的几 ...

  3. [家里蹲大学数学杂志]第055期图像滤波中的方向扩散模型

    $\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 5.4.1 节的详细论述. $\bf 关键词$: 图像滤波; 方向扩散模型; matlab 编程 1. 模型的建 ...

  4. Python实现RabbitMQ中6种消息模型(转)

    RabbitMQ与Redis对比 ​ RabbitMQ是一种比较流行的消息中间件,之前我一直使用redis作为消息中间件,但是生产环境比较推荐RabbitMQ来替代Redis,所以我去查询了一些Rab ...

  5. python绘制折线图中文图例不显示_python使用matplotlib绘图时图例显示问题的解决...

    前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图 ...

  6. 深度学习:Diffusion Models in Vision: A Survey视觉中的扩散模型:综述

    Diffusion Models in Vision: A Survey视觉中的扩散模型:综述 0.摘要 1.概述 2.通用模型架构 2.1.Denoising Diffusion Probabili ...

  7. OpenAI新研究:扩散模型在图像合成质量上击败BigGAN,多样性还更佳

    来源:AI科技评论本文约3600字,建议阅读5分钟本文介绍了OpenAI新研究:扩散模型在图像合成的最新技术. 新模型在ImageNet512×512上实现了3.85FID,甚至在每个样本只有25次正 ...

  8. python ppt 绘图_Python数据分析-Matplotlib绘图基础

    本文结构: 一.Matplotlib绘图基础及中文乱码解决 二.如何利用pandas绘图? 三.如何利用notebook制作分析报告? 图形在我们日常生活中无处不在.如果没有可视化,就是一些数字罗列, ...

  9. 扩散模型爆火,这是首篇综述与Github论文分类汇总

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 编译:机器之心 本文首次对现有的扩散生成模型(diffusion model)进行了全面 ...

最新文章

  1. Unity3D+VR的实现
  2. QT绘制具有向下钻取效果的园饼图
  3. 检测 SAP Spartacus 服务器端渲染页面响应时间的两种办法
  4. cad钣金展开插件_钣金高级工考试大小头手工展开图步骤教程
  5. 作者:朱扬勇,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
  6. UVa 495 Fibonacci Freeze
  7. git远程仓库中master及其余分支间代码的合并
  8. 58欧氏空间05——对称变换和对称矩阵、实对称矩阵的标准形、正交相似、实对称矩阵的正交相似对角化
  9. SelectObject失败原因 cannot convert from ‘HGDIOBJ‘ to ‘CBrush‘
  10. JDK1.8下载、安装和环境配置教程
  11. matlab 仿真逆变电路,逆变电路的MATLAB仿真研究论文.doc
  12. Solution of ZOJ 2748 Free Kick
  13. 【蓝桥杯选拔赛真题01】Scratch消失的小猫 少儿编程scratch蓝桥杯选拔赛真题讲解
  14. java super是什么意思_java中Super到底是什么意思
  15. Xtend官方文档-第一部分
  16. 《软件工程——实践者的研究方法》重难点复习笔记(第八章——理解需求)
  17. 野路子玩Qt,第三十一集,擦玻璃游戏
  18. es与数据库的同步方案
  19. 一、多线程是什么?为什么要用多线程?
  20. 【渝粤题库】广东开放大学 电子商务职业技能 形成性考核

热门文章

  1. 2021年大数据环境命令(一):常用命令汇总
  2. [JS] 事件冒泡,阻止事件冒泡,事件的三个阶段(捕获,目标,冒泡)
  3. Redeclared ‘list_b‘ defined above without usage
  4. Android 模拟机自定义屏幕的尺寸
  5. Keras运行速度越来越慢的问题
  6. adb命令 判断锁屏
  7. 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
  8. 深入理解jQuery插件开发【转】
  9. virtual hust 2013.6.20 数论基础题目 D - Just the Facts
  10. Google Chrome(谷歌浏览器) 发布下载