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

Python中精准计算两个DataFrame的基因组重叠与非重叠区间

区间重叠分析需求及问题反馈

核心需求

需要获取DF1与DF2的精确重叠区间,以及DF1中与DF2不重叠的区间,需覆盖两类场景:

  • DF1中完全不与DF2重叠的行
  • DF1中与DF2部分重叠的行

关键难点

  • 处理部分重叠行时,必须保证同一染色体的所有输出区间(重叠/非重叠)内部无重叠冲突。例如:若某行拆分出的非重叠区间是1-59,但同一染色体上其他行存在10-20的重叠区间,那么需剔除10-20部分,仅保留1-9、21-59作为有效非重叠区间
  • 结果验证标准:所有重叠区间与非重叠区间的总长度,必须等于DF1对应区域的总长度

示例说明

示例数据

DF1数据:

chr   start   end 
1     1       100
1     150     200
2     5       10

DF2数据:

chr   start   end 
1     10      20
1     60      260
1     500     550
2     1       20

预期结果分析

  • 染色体1的重叠区间:10-20、60-100、150-200
  • 染色体1的非重叠区间:1-9、21-59
  • 染色体2的非重叠区间:无(DF1的5-10完全被DF2的1-20覆盖)

长度验证(忽略染色体2)

DF1总碱基数:(100-1+1)+(200-150+1)=151
各区间长度之和:9+11+39+41+51=151,与DF1总长度匹配

测试反馈:现有方案不符合预期

测试数据

DF1总碱基数=137:

Chromosome  Start   End
0   chr1    200     227
1   chr1    613     721

DF2数据:

Chromosome  Start   End
0   chr1    1000    1227

预期输出

Chromosome  Start   End   merge
0   chr1    200     227   left_only
1   chr1    613     721   left_only
2   chr1    1000    1227  right_only  #[可选包含right_only]
  • 预期left_only总碱基数=137,与DF1总长度一致

错误输出

Chromosome_ range_first range_last  _merge_first
1   chr1    1      200        721         left_only
  • 错误点:left_only总碱基数=522,与DF1实际长度不符;错误包含了DF1中不存在的228-612区域,该区域不属于DF1或DF2,不应出现在结果中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:50:04