🍠C++和R穿刺针吸活检肿瘤算法模型模拟和进化动力学量化差异模型

🏈指点迷津 | Brief

🎯要点

🎯模拟肿瘤细胞增生进化轨迹 | 🎯肿瘤生长的随机空间细胞自动机模型 | 🎯模拟穿刺活检的收集空间局部的肿瘤块,模拟针吸活检采集长而薄的组织样本 | 🎯构建不同参数模拟合成肿瘤测试集 | 🎯算法模型计算先验分布、计算概率分布的瓦瑟斯坦距离和欧氏距离 | 🎯细胞进化系统动力学量化分裂差异模型。

📜病理学用例

📜Python和C++骨髓细胞进化解析数学模型

📜Python成像质谱流式细胞术病理生理学

📜Python流感传播感染康复图模型计算和算法

📜Python脑溶质扩散生理几何模型计算

📜Python流感常微分方程房室数学模型

📜Python药物副作用生物图分析算法和矩阵降维算法

🍪语言内容分比

🍇R瓦瑟斯坦距离

两个概率测度 μ\mu ν \nu 之间的 pth p^{\text {th }} 瓦瑟斯坦距离,在有限 pth p^{\text {th }} 矩下,可以定义为

Wp(μ,ν)p=infE[d(X,Y)p]W_p(\mu, \nu)^p=\inf E \left[d(X, Y)^p\right]

其中 dd 是一个度量,E[Z]E [Z] 表示随机变量 Z 的期望值,下确界取随机变量 X 和 Y 的所有联合分布,边际为分别为 μ\muν\nu。对于 p=1p=1,表明,RR 上的两个累积分布函数 F1F_1F2F_2 之间的一维(一维)瓦瑟斯坦-1 度量可以写为 L_1距离:

W1(F1,F2)=RF1(x)F2(x)dxW_1\left(F_1, F_2\right)=\int_{ R }\left|F_1(x)-F_2(x)\right| d x

因此,对于具有数值可处理的累积分布函数的分布,瓦瑟斯坦-1 度量可以用数值积分来近似。值得注意的是,该距离在单调变换(例如,在尺度变换下)下不是不变的。

接下来,我们展示分布 F(;θ\cdot ; \theta) 和嵌套兴趣分布 F(;θ0)F\left(\cdot ; \theta_0\right) 之间瓦瑟斯坦-1 度量的数值计算示例,对于 θ0\theta_0 的某个固定值。我们省略了位置和比例参数,但可以轻松调整 R 代码以包含这些参数。我们还展示了该函数的图:

M(θ)=W1(F(;θ),F(;θ0))=RF(x;θ)F(x;θ0)dxM(\theta)=W_1\left(F(\cdot ; \theta), F\left(\cdot ; \theta_0\right)\right)=\int_{ R }\left|F(x ; \theta)-F\left(x ; \theta_0\right)\right| d x

可以解释为测量参数θ \theta 效果的函数。

偏斜正态概率密度函数为:

f(x;λ)=2ϕ(x)Φ(λx)f(x ; \lambda)=2 \phi(x) \Phi(\lambda x)

其中 ϕ\phiΦ \Phi 分别是标准正态概率密度函数和累积分布函数,λR\lambda \in R。在这里,我们计算 f(x;λx ; \lambda) 和 ϕ(x)\phi(x) 之间的瓦瑟斯坦-1 度量。

 library(sn)
 library(knitr)
 MW1 <- Vectorize(function(par){
   tempf <- Vectorize(function(x)  abs(psn(x, alpha=par)  - pnorm(x)) )
   val <- integrate(tempf,-Inf,Inf)$value
   return(val)
 })
 ​
 lambda <- -5:5
 W1 <- MW1(lambda)
 print(kable(cbind(lambda,W1),digits=4))
 ## 
 ## 
 ##  lambda       W1
 ## -------  -------
 ##      -5   0.7824
 ##      -4   0.7741
 ##      -3   0.7569
 ##      -2   0.7136
 ##      -1   0.5642
 ##       0   0.0000
 ##       1   0.5642
 ##       2   0.7136
 ##       3   0.7569
 ##       4   0.7741
 ##       5   0.7824

结果绘图

 curve(MW1,-10,10, xlab = ~lambda, ylab="M", cex.axis=1.5, cex.lab=1.5, lwd=2, n = 250)

两部分正态概率密度函数定义为:

f(x;γ)=ϕ(x1+γ)I(x<0)+ϕ(x1γ)I(x0)f(x ; \gamma)=\phi\left(\frac{x}{1+\gamma}\right) I(x<0)+\phi\left(\frac{x}{1-\gamma}\right) I(x \geq 0)

其中 ϕ\phi 是标准正态概率密度函数,γ(1,1)\gamma \in(-1,1)。在这里,我们计算 f(x;γx ; \gamma) 和ϕ(x) \phi(x) 之间的瓦瑟斯坦-1度量。

 library(twopiece)
 library(knitr)
 ​
 MW1 <- Vectorize(function(par){
   tempf <- Vectorize(function(x)  abs(ptp3(x, 0, 1, par, FUN = pnorm, param = "eps")  - pnorm(x)) )
   val <- integrate(tempf,-Inf,Inf)$value
   return(val)
 })
 ​
 gamma <- seq(-0.9,0.9,by=0.1)
 W1 <- MW1(gamma)
 print(kable(cbind(gamma,W1),digits=4))
 ## 
 ## 
 ##  gamma       W1
 ## ------  -------
 ##   -0.9   1.4362
 ##   -0.8   1.2766
 ##   -0.7   1.1170
 ##   -0.6   0.9575
 ##   -0.5   0.7979
 ##   -0.4   0.6383
 ##   -0.3   0.4787
 ##   -0.2   0.3192
 ##   -0.1   0.1596
 ##    0.0   0.0000
 ##    0.1   0.1596
 ##    0.2   0.3192
 ##    0.3   0.4787
 ##    0.4   0.6383
 ##    0.5   0.7979
 ##    0.6   0.9575
 ##    0.7   1.1170
 ##    0.8   1.2766
 ##    0.9   1.4362

结果绘图

 curve(MW1,-0.99,0.99, xlab = ~gamma, ylab="M", cex.axis=1.5, cex.lab=1.5, lwd=2, n = 250)

指数威布尔分布是一种三参数分布。它包含一个尺度参数、一个形状参数和一个幂(形状)参数α\alpha。 指数威布尔分布包含作为特殊情况 (α=1\alpha=1) 的威布尔分布。 指数威布尔分布已用于对生存时间进行建模,因为它的风险函数可以捕获基本形状:常数、递增、递减、浴盆和单峰。

如果我们有兴趣比较两条生存曲线 S1S_1S2S_2,一种可能的方法是计算生存曲线之间的面积,即它们之间的 L1L_1 距离。此外,由于 Si()=1Fi(),i=1,2S_i(\cdot)=1-F_i(\cdot), i=1,2,因此

R+S1(x)S2(x)dx=R+F1(x)F2(x)dx=W1(F1,F2)\int_{ R _{+}}\left|S_1(x)-S_2(x)\right| d x=\int_{ R _{+}}\left|F_1(x)-F_2(x)\right| d x=W_1\left(F_1, F_2\right)

在这里,我们将测量在尺度和形状参数为 1 的情况下功率参数 α\alpha 的影响,与具有单位尺度和形状参数的威布尔分布相比。

 library(knitr)
 ​
 pexpweibull<- function(t,lambda,kappa,alpha,log.p=FALSE){
   log.cdf <- alpha*pweibull(t,scale=lambda,shape=kappa,log.p=TRUE)
   ifelse(log.p, return(log.cdf), return(exp(log.cdf)))
 } 
 ​
 MW1 <- Vectorize(function(par){
   tempf <- Vectorize(function(x)  abs(pexpweibull(x, 1, 1, par)  - pweibull(x,1,1)) )
   val <- integrate(tempf,0,Inf)$value
   return(val)
 })
 ​
 alpha <- seq( 0.1,5,by=0.1)
 W1 <- MW1(alpha)
 print(kable(cbind(alpha,W1),digits=4))
 ## 
 ## 
 ##  alpha       W1
 ## ------  -------
 ##    0.1   0.8465
 ##    0.2   0.7118
 ##    0.3   0.5920
 ##    0.4   0.4842
 ##    0.5   0.3863
 ##    0.6   0.2967
 ##    0.7   0.2142
 ##    0.8   0.1378
 ##    0.9   0.0666
 ##    1.0   0.0000
 ##    1.1   0.0626
 ##    1.2   0.1215
 ##    1.3   0.1773
 ##    1.4   0.2301
 ##    1.5   0.2804
 ##    1.6   0.3283
 ##    1.7   0.3740
 ##    1.8   0.4178
 ##    1.9   0.4597
 ##    2.0   0.5000
 ##    2.1   0.5387
 ##    2.2   0.5761
 ##    2.3   0.6120
 ##    2.4   0.6468
 ##    2.5   0.6804
 ##    2.6   0.7129
 ##    2.7   0.7444
 ##    2.8   0.7749
 ##    2.9   0.8045
 ##    3.0   0.8333
 ##    3.1   0.8613
 ##    3.2   0.8886
 ##    3.3   0.9151
 ##    3.4   0.9409
 ##    3.5   0.9661
 ##    3.6   0.9907
 ##    3.7   1.0146
 ##    3.8   1.0381
 ##    3.9   1.0610
 ##    4.0   1.0833
 ##    4.1   1.1052
 ##    4.2   1.1266
 ##    4.3   1.1476
 ##    4.4   1.1682
 ##    4.5   1.1883
 ##    4.6   1.2080
 ##    4.7   1.2274
 ##    4.8   1.2464
 ##    4.9   1.2650
 ##    5.0   1.2833

结果绘图

 curve(MW1,0.001,5, xlab = ~alpha, ylab="M", cex.axis=1.5, cex.lab=1.5, lwd=2, n = 1000)

Last updated