输出和总结

塞巴斯蒂安·勒基姆

2024-02-09

nosoiSim公司对象

的输出诺索伊模拟是一门课nosoiSim公司包含在模拟到以下插槽中:

主机特定元素(即主机信息。主机信息。B类)在此对象中,可以使用函数获取主机数据:

获取主机数据(无输出,什么,弹出)

此函数将nosoi输出对象(ofnosoiSim公司),什么你想提取(或未感染,表.主机,表格.状态前缀host),以及哪个主机类型(此处流行音乐)你对(通过默认,但可以是B类如果是双宿主仿真)。

表格.hosts

表格.hosts,一个数据表对象,包含有关已模拟的每个主机的信息。在这个对象中,一个行对应于一个主机。可以使用以下命令直接提取此对象函数获取表主机:

获取表主机(无输出,弹出)

此函数将nosoi输出对象(ofnosoiSim公司)以及哪种主机类型(此处流行音乐)你对(默认情况下,但可以B类在双宿主模拟的情况下)。

该表的结构如下:

表格.状态

表格.状态,一个数据表对象,包含有关每个主机移动历史的信息模拟。此表仅在结构化填充为模拟(离散或连续)。可以直接提取使用函数获取表格状态:

获取表格状态(无输出,弹出)

此函数将nosoi输出对象(ofnosoiSim公司)以及哪种主机类型(此处流行音乐)你对(默认情况下,但可以B类在双宿主模拟的情况下)。

该表的结构如下:

流行病学见解

通过模拟传动链,诺索伊也模拟流行过程。诺索伊提供了一些解决方案通过以下方式轻松探索这一流行病过程的动态随着时间的推移,活动感染主机的数量以及受感染主机的累计数量。它还允许计算精确的基本复制数\(R_0\),定义为一个案例生成的平均案例数。自从所有生成的数据存储在输出中nosoiSim公司目标,还可以进行更深入的探索。

流行病学总结

总结是一个交钥匙解决方案,它计算流行病的动态和\(R_0\).它唯一的参数是(类的)nosoi输出对象nosoiSim公司):

总结(无输出)

它返回包含插槽的列表:

流行病学动力学

两者都是累计动力学桌子可以使用函数直接提取获取累计获取动态分别是。这两个函数都会生成数据表但它们的结构略有不同。累计具有以下结构:

动力学具有以下结构:

这些可用于绘制模拟传输链。例如,我们在这里模拟一个一种单寄主病原菌在3种不同植物间的引种位置/状态(命名为“A”、“B”和“C”),不断退出和移动概率以及取决于位置的联系人数量以及每个位置的主机数量:

图书馆(无)
t_incub_fct<- 功能(x){rnorm公司(x,平均值= 5,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}
p_移动_fct<- 功能(t){返回(0.1)}

p_退出_fct<- 功能(t){返回(0.05)}

先证<- 功能(t,p_max,t_incub){
    如果(t)<=t_incub){p=0}
    如果(t)>=t_incub){p=p_最大值}
    返回(p)
}

时间联系人<- 功能(t,current.in,host.count){

温度值= 30 -主机计数

    如果(温度值<= 0) {
      返回(0)
}
    如果(温度值>= 0) {
      如果(当前输入==“A”){
        返回(((温度值/30)*rnorm公司(1,,1),0))}
      如果(当前输入==“B”){返回(0)}
      如果(当前输入==“C”){
        返回(((温度值/30)*rnorm公司(1,6,1),0))}
}
}

转换矩阵= 矩阵(c(c)(0,0.2,0.4,0.5,0,0.6,0.5,0.8,0),nrow公司= ,ncol公司= ,数据名=列表(c(c)(“A”,“B”,“C”),c(c)(“A”,“B”,“C”)))

  设置种子(1050)
测试nosiA<- nosoiSim公司(类型=“单身”,pop结构=“离散”,
                          长度=100,
                          最大受影响=200,
                          初始化个人=1,
                          初始结构=“A”,
                          结构矩阵=transition.max矩阵,
                          p移动=p_Move_fct,
                          参数.移动=不适用,
                          差异联系人=真的,
                          hostCount.n联系人=真的,
                          n联系=时间联系人,
                          param.n联系人=不适用,
                          pTrans公司=概率,
                          参数.Trans= 列表(p_最大值=p_max_fct,
                                              t_incub公司=t_incub_fct),
                          p退出=p_Exit_fct,
                          参数.退出=不适用
)
图书馆(ggplot2)
累积表<- 获取累计(测试nosoiA)
动态表<- 获取动态(测试nosoiA)

ggplot图(数据=累积表,原子发射光谱(x个=t、,年=计数))+ 地理线()+ 主题_最小()+ 实验室(x个=“时间(t)”,年=“受感染主机的累计计数”)

ggplot图(数据=动态.table,原子发射光谱(x个=t、,年=计数,颜色=状态))+ 地理线()+ 主题_最小()+ 实验室(x个=“时间(t)”,年=“活动感染主机数”)

\(R_0\)

输出nosoiSim公司对象可用于计算“真实”\(R_0\),定义为平均值一个病例产生的病例数,通常在流行病学中估计研究。功能获得RO可以直接使用nosoiSim公司输出作为其唯一参数,以生成列表包含:

例如,在这里,我们模拟了单一主机的单一引入病原体处于3种不同状态(命名为“A”、“B”和“C”)之间恒定的退出和移动概率以及大量接触取决于每个位置的位置和主机数:

图书馆(无)
t_incub_fct<- 功能(x){rnorm公司(x,平均值= 5,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}
p_移动_fct<- 功能(t){返回(0.1)}

p_退出_fct<- 功能(吨){返回(0.05)}

先证<- 功能(t,p_max,t_incub){
    如果(t)<=t_incub){p=0}
    如果(t)>=t_incub){p=p_最大值}
    返回(p)
}

时间_联系人<- 功能(t,current.in,host.count){

温度值= 30 -主机计数

    如果(温度值<= 0) {
      返回(0)
}
    如果(温度值>= 0) {
      如果(当前输入==“A”){
        返回(((温度值/30)*rnorm公司(1,,1),0))}
      如果(当前输入==“B”){返回(0)}
      如果(当前输入==“C”){
        返回(((温度值/30)*rnorm公司(1,6,1),0))}
}
}

转换矩阵= 矩阵(c(c)(0,0.2,0.4,0.5,0,0.6,0.5,0.8,0),nrow公司= ,ncol公司= ,数据名=列表(c(c)(“A”,“B”,“C”),c(c)(“A”,“B”,“C”)))

  设置种子(1050)
测试nosiA<- nosoiSim公司(类型=“单身”,pop结构=“离散”,
                          长度=100,
                          最大受影响=200,
                          初始化个人=1,
                          初始结构=“A”,
                          结构矩阵=transition.max矩阵,
                          p移动=p_移动_,
                          参数.移动=不适用,
                          差异联系人=真的,
                          hostCount.n联系人=真的,
                          n联系=时间联系人,
                          param.n联系人=不适用,
                          pTrans公司=先证医学,
                          参数.Trans= 列表(p_最大值=p_max_fct,
                                              t_incub公司=t_incub_fct),
                          p退出=p_Exit_fct,
                          参数.退出=不适用
)
获得R0(测试nosoiA)
#>$N.非活动
#> [1] 117
#>
#>平均R00000美元
#> [1] 1.068376
#>
#>$R0.dist美元
#>   [1] 18  4  0  0  0  0  0  0  6  0  0  0  0  0  0  0  0  0  0  6  0  0  0  0  0
#>  [26]  4  0  0  0  0  9  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  3 10  0  2
#>  [51]  1  4  5  0  0  0  1  2  1  0  3  2  0  0  0 11  0  0  0  0  1  0  8  0  1
#>  [76]  0  1  1  0  0  0  1  0  0  0  0  0  0  0  1  2  0  3  0  0  1  0  3  0  3
#> [101]  0  0  0  0  0  1  0  1  0  0  1  0  1  2  1  0  0

如您所见,在117个非活动主机中\(R_0\)为1.068376。当然不是这样反映了\(R_0\)大多数宿主实际上从未传播感染:

数据= 数据帧(R0级=获取R0(测试nosoiA)$R0.距离)
ggplot图(数据=数据,原子发射光谱(x个=R0))+ 地理直方图()+ 主题_最小()

变速器链条

全传动链

传动链是诺索伊模拟。可以使用表格.hosts及时链接主机的表。它也可以是以模仿系统发育树的形式提取,并可视化或使用可用的系统发育树工具进行保存,如潮树.为此,您可以使用获取传输树()功能,哪些参数是诺索伊模拟输出,以及主机类型将是树的提示(默认为“A”,如果是双宿主模拟)。

从形式上讲,传播树被提取为一个过时的系统发育树树,其中:

这样的树是二进制的,其提示数与受感染的主机,以及与传输事件数量一样多的节点。它跨越了从第一个主机的第一个条目开始的一段时间(通常为,按照约定,0)到最后一个主机的退出。

它可以被视为代表感染每个寄主的病原体。

获取传输树()提取完整的传输树。如果发生大规模模拟疫情,这可能需要一些时间。绘制/可视化也可能非常复杂。

作为示例,我们模拟了单一主机的单一引入病原体处于3种不同状态(命名为“A”、“B”和“C”)之间恒定的退出和移动概率以及大量接触取决于每个位置的位置和主机数:

图书馆(无)
t_incub_fct<- 功能(x){rnorm公司(x,平均值= 5,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}
p_移动_fct<- 功能(t){返回(0.1)}

p_退出_fct<- 功能(t){返回(0.05)}

先证<- 功能(t,p_max,t_incub){
  如果(t)<=t_incub){p=0}
  如果(t)>=t_incub){p=p_最大值}
  返回(p)
}

时间_联系人<- 功能(t,current.in,host.count){
  
温度值= 30 -主机计数
  
  如果(温度值<= 0) {
    返回(0)
}
  如果(温度值>= 0) {
    如果(电流.in==“A”){
      返回((临时/30)*rnorm公司(1,,1),0))}
    如果(当前输入==“B”){返回(0)}
    如果(当前输入==“C”){
      返回(((温度值/30)*rnorm公司(1,6,1),0))}
}
}

转换矩阵<- 矩阵(c(c)(0,0.2,0.4,0.5,0,0.6,0.5,0.8,0),nrow公司= ,ncol公司= ,数据名=列表(c(c)(“A”,“B”,“C”),c(c)(“A”,“B”,“C”)))

设置种子(1050)
测试nosiA<- nosoiSim公司(类型=“单身”,pop结构=“离散”,
                        长度=100,
                        最大受影响=200,
                        初始化个人=1,
                        初始结构=“A”,
                        结构矩阵=transition.max矩阵,
                        p移动=p_Move_fct,
                        参数.移动=不适用,
                        diff.n联系人=真的,
                        hostCount.n联系人=真的,
                        n联系=时间联系人,
                        param.n联系人=不适用,
                        pTrans公司=先证医学,
                        参数.Trans= 列表(p_最大值=p_max_fct,
                                            t_incub公司=t_incub_fct),
                        p退出=p_退出_,
                        参数.退出=不适用
)

该模拟运行了46个时间步,感染了204台主机。这个因此可以提取以下传输树(作为潮汐树::treedata对象)并使用打印ggtree(ggtree):

test.nosoiA.tree测试目录树<- 获取传输树(测试nosoiA)

如果(requireNamespace(必需命名空间)(“ggtree”(ggtree),悄悄地= 真的)&&
    requireNamespace(必需命名空间)(“ggplot2”,悄悄地= 真的)) {
  图书馆(ggtree)
  图书馆(ggplot2)
ggtree(ggtree)(test.nosoiA.tree,测试树,颜色= “灰色30”)+ 
  地理节点点(原子发射光谱(颜色=状态))+ 
  地理_顶点(原子发射光谱(颜色=状态))+ 
  主题树2()+ xlab公司(“时间(t)”)+ 
  主题(图例.位置= c(c)(0,0.8),
        图例.标题= 元素_空白(),
        图例.key= 元素_空白())
}其他的{
  消息(“绘图需要包‘ggtree’和‘ggplot2’”)
}

每个色点表示位置/状态,位于退出模拟时的传输(节点)或主机(或结束模拟点;小费)。此传输树已计时(time模拟步骤)。正如你所见,在位置“B”(绿色);这与被选中的人是一致的n联系功能,当主机位于“B”。

对传动链进行采样

通常,整个传输链(即每个宿主)将在疫情监测期间进行采样,或地方性传播。功能示例传输树()示例从退出传输树()两者都可以用于从这个传输链中抽取主机样本并构建新树基于现有主机(提示)。

示例传输树()需要以下内容论据:

在上面的示例中,我们想对以下20台主机进行采样:

test.nosoiA.tree.采样<- 示例传输树(test.nosiA、test.nosoiA.tree、samples.data.table)

如前所述,获得的树是树形纲对象,以及可以绘制:

如果(!requireNamespace(必需命名空间)(“ggtree”(ggtree),悄悄地= 真的)) {
ggtree(ggtree)(测试.土壤.树木.取样,颜色= “灰色30”)+ 地理节点点(原子发射光谱(颜色=状态))+ 地理倾点(原子发射光谱(颜色=状态))+ 地理实验室(原子发射光谱(标签=主机))+ 
  主题树2()+ xlab公司(“时间(t)”)+ 主题(图例位置= c(c)(0,0.8),
                                           图例.标题= 元素_空白(),
                                           图例.key= 元素_空白())
}

或者,您可以在退出的主机(即不再在模拟结束时激活)使用功能示例从退出传输树(),模拟采样具有破坏性或将宿主从种群中剔除的过程。Be公司但是要小心,因为它不会影响流行病学过程:主机仅在退出模拟时采样。

示例TransmissionTreeFromExiting()需要以下内容论据:

在我们的示例中,我们想对这些样本进行采样:

test.nosoiA.tree.sampled.exiting退出<- 退出时的传输树示例(test.nosoiA.tree,sampled.hosts)

如前所述,获得的树是树形纲对象,以及可以绘制:

如果(requireNamespace(必需命名空间)(“ggtree”(ggtree),悄悄地= 真的)) {
ggtree(ggtree)(test.nosoiA.tree.sampled.exiting,颜色= “灰色30”)+ 地理节点点(原子发射光谱(颜色=状态))+ 地理_顶点(原子发射光谱(颜色=状态))+ 地理实验室(原子发射光谱(标签=主机))+ 
  主题树2()+ xlab公司(“时间(t)”)+ 主题(图例.位置= c(c)(0,0.8),
                                           图例.标题= 元素_空白(),
                                           图例.键= 元素_blank())
}其他的{
  消息(“绘图需要“ggtree”包”)
}

导出传输树

上述所有函数都会生成一个潮汐树::treedata对象。这是一个系统发育树节点和提示上标注了疫情的所有特征,包括地理位置(如适用)。此格式为由他的开发人员在本文中详细描述电子书.

这样可以很容易地将生成的数据导出到其他软件下游分析,得益于该软件包树(treeio)。对于实例中,可以将树写入野兽兼容格式得益于功能treeio::write.beast():

树(treeio)::书写野兽(test.nosoiA.tree.sampled.exiting)