比较多个文件中的值

2024-06-01 19:32:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件,每个文件有3列和n行数(每个文件中的行数不同)。在

每个都是这样的:

file1
chr1    12  32 
chr1    14  30
chr3    10002  89000 
chrx    5678900   987654

还有这个:

^{pr2}$

每个文件中的第二列和第三列表示起始值和结束值,而第一列是名称。在

因此,如果(文件1的)第一列中的值与文件2的第一列中的值匹配,则脚本应计算它们是否与文件2中的文件1的第二列和第三列的值范围是否存在重叠(文件1第2列和第3列的值范围与文件2的第2列和第3列中的值范围有任何程度的重叠)。在

需要这样的输出:

regions from file1 present in file 2

chr1    12  32   present 
chr1    14  30   present 
chr3    10002  89000  absent
chrx    5678900   987654 absent

任何关于awk操作或python脚本的建议…请帮助。在


Tags: 文件infrom脚本名称file1regionschr1
1条回答
网友
1楼 · 发布于 2024-06-01 19:32:32
  1. 读取file2以创建映射:name->;间隔,即,结果是:ranges = {'chr1': [[8, 15], [10, 14], [32, 34]]}。如果每个名称有很多间隔,那么作为一个优化,您可以合并它们:ranges = {'chr1': [[8, 15], [32, 34]]}

  2. 定义overlap(r1, r2)函数,该函数返回两个区间r1r2是否重叠。指定边缘是否包含在重叠中。

  3. 对于file1中的每一行,找出是否存在重叠并打印适当的输出。

相关问题 更多 >