You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选至少2个重复样本中reads数>10的基因?

基因表达数据筛选:保留至少2个样本reads数>10的基因

原代码的核心问题是筛选条件设置为NumExpressedgenes>0,仅要求至少1个样本满足reads>10。要实现至少2个样本的筛选需求,只需修改最后一步的判断条件:

修改后的代码

# 标记每个基因在各样本中是否满足reads>10
Expressedgenes = counts > 10
# 统计每个基因满足条件的样本数量
NumExpressedgenes = apply(Expressedgenes, 1, sum)
# 筛选出满足条件的样本数≥2的基因
FilteredCounts = counts[NumExpressedgenes >= 2, ]

代码说明

  • 第一步Expressedgenes = counts > 10:生成布尔矩阵,TRUE表示对应基因在该样本中reads数大于10,FALSE则相反。
  • 第二步apply(Expressedgenes, 1, sum):按行(基因维度)求和,得到每个基因有多少个样本满足reads>10的条件。
  • 第三步将筛选条件从>0改为>=2,确保只保留在2个及以上样本中reads数超过10的基因。

补充:针对分组重复样本的筛选(若需要)

如果你的“重复样本”指的是同一实验分组内的生物学重复(比如胰腺组、肺组各自的重复),需要结合PancreasLungDesign的分组信息,针对每个分组单独统计:

# 假设PancreasLungDesign的Group列是分组标识
group_labels = PancreasLungDesign$Group

# 按分组拆分样本,对每个分组内的基因统计满足reads>10的重复数
group_expressed = lapply(unique(group_labels), function(g) {
  # 提取当前分组的样本计数
  group_counts = counts[, group_labels == g]
  # 统计每个基因在该分组中满足条件的样本数≥2
  apply(group_counts > 10, 1, sum) >= 2
})

# 合并结果:保留至少一个分组内满足条件的基因
keep_genes = rowSums(do.call(cbind, group_expressed)) >= 1
FilteredCounts = counts[keep_genes, ]

内容的提问来源于stack exchange,提问作者Luca Rinaldi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:33:25