Fraction of Same-Cell Type Transitions (FOSCTTM) 相同细胞类型转换的分数

Fraction of Same-Cell Type Transitions (FOSCTTM) 相同细胞类型转换的分数, 用于评估由一个空间(或者domain,域)转换到另一个空间的好坏程度。

例如用矩阵表示的两组点之间的相似性,一个常见的应用场景是用于细胞数据从源空间转换到目标空间后,评估转换结果的好坏。

该评估数值越小说明转换的结果越好

参考文献SCOT

原理

总体来说,对于每个域,我们计算一个固定的样本点和另一个域中的所有数据点之间的欧氏距离。接下来,我们使用这些距离来计算更接近固定样本比它的真实匹配的样本的比例。最后,我们对这两个域中的所有样本的这些值进行平均。为了完美对齐(转换),所有样本将最接近它们的真实匹配,产生的平均FOSCTTM为零。

从一个例子开始,我们有源数据:点集 A ∈ R n A \in \mathbb{R}^{n} ARn, 目标数据:点集 B ∈ R n B \in \mathbb{R}^{n} BRn

我们通过一些算法,比如optimal transport(OT),将A转换到B所在的空间,得到转换后的 A ′ A^{'} A

然后FOSCTTM的原理是,最理想的转换下,A中的点应该与对应的目标B中的点的位置重合,即 转换后的点 A i ′ A^{'}_{i} Ai 和目标点 B i B_{i} Bi之间的距离 d i , i = 0 d_{i, i}=0 di,i=0,但往往我们达不到最理想的状态,即 d i , i > 0 d_{i, i} > 0 di,i>0,但如果这个距离相比于从 A ′ A^{'} A中其他点到 B i B_{i} Bi的距离仍然是最小的,那我们也认为这是一个非常好的转换(因为这样 A ′ A^{'} A的整体几何形状会与 B 相似。)。

那如果其他某些转换后的点 A j ′ A^{'}_{j} Aj B i B_{i} Bi的距离比 d i , i d_{i, i} di,i 更近,那转换的结果就不够好了,而这样不好的点越多,转换的结果就越糟糕。 FOSCTTM就是计算有多少这样比真实匹配距离更近的错误的点的比例。

例如下图, d 1 , 1 d_{1,1} d1,1 应该是最短的,但如果 d 1 , 2 d_{1, 2} d1,2 d 1 , 1 d_{1,1} d1,1还要小,那我们就计算 FOSCTTM=1/3。

在这里插入图片描述

代码实现

代码来源

def foscttm(
    x: np.ndarray,
    y: np.ndarray,
) -> float:
    d = scipy.spatial.distance_matrix(x, y) # 计算x,y之间的距离
    foscttm_x = (d < np.expand_dims(np.diag(d), axis=1)).mean(axis=1)  #计算对x来说有多少错误点
    foscttm_y = (d < np.expand_dims(np.diag(d), axis=0)).mean(axis=0)  #计算对y来说有多少错误点
    fracs = []

	# 下边都是给错误点数求平均
    for i in range(len(foscttm_x)):
        fracs.append((foscttm_x[i] + foscttm_y[i]) / 2) 
    return np.mean(fracs).round(4)
  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是土豆大叔啊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值