我有2个大文本文件,例如以下小示例。有2个文件({{1)}。
在major and minor
和major
文件中,共有4列。在主文件中,第2列和第3列之间的差异为10000,而第2列和第3列之间的差异为32或31或接近31的数字,但不是很高。
主要文件的小示例:
minor
次要文件的小示例:
chr4 530000 540000 0.0
chr4 540000 550000 1719.0
chr4 550000 560000 0.0
我想创建一个新的文本文件,其中会有4列。像预期的输出一样:
预期输出:
chr4 295577 295608 12
chr4 323326 323357 10
chr4 548873 548904 32
chr4 548873 548904 20
chr4 549047 549078 32
chr4 549047 549078 20
chr4 549137 549168 32
chr4 549137 549168 20
chr4 549181 549212 32
chr4 549181 549212 20
chr4 549269 549300 22
chr4 549269 549300 381
chr4 549269 549300 67
chr4 549269 549300 89
chr4 549269 549300 95
chr4 549269 549300 124
chr4 549269 549300 149
chr4 549269 549300 87
chr4 549269 549300 33
chr4 549269 549300 65
chr4 549269 549300 68
chr4 549269 549300 190
chr4 549269 549300 20
chr4 549355 549386 32
chr4 549355 549386 20
chr4 549443 549474 16
chr4 705810 705841 10
chr4 846893 846924 28
前4列来自chr4 548873 548904 32 chr4 540000 550000
chr4 548873 548904 20 chr4 540000 550000
chr4 549047 549078 32 chr4 540000 550000
chr4 549047 549078 20 chr4 540000 550000
chr4 549137 549168 32 chr4 540000 550000
chr4 549137 549168 20 chr4 540000 550000
chr4 549181 549212 32 chr4 540000 550000
chr4 549181 549212 20 chr4 540000 550000
chr4 549269 549300 22 chr4 540000 550000
chr4 549269 549300 381 chr4 540000 550000
chr4 549269 549300 67 chr4 540000 550000
chr4 549269 549300 89 chr4 540000 550000
chr4 549269 549300 95 chr4 540000 550000
chr4 549269 549300 124 chr4 540000 550000
chr4 549269 549300 149 chr4 540000 550000
chr4 549269 549300 87 chr4 540000 550000
chr4 549269 549300 33 chr4 540000 550000
chr4 549269 549300 65 chr4 540000 550000
chr4 549269 549300 68 chr4 540000 550000
chr4 549269 549300 190 chr4 540000 550000
chr4 549269 549300 20 chr4 540000 550000
chr4 549355 549386 32 chr4 540000 550000
chr4 549355 549386 20 chr4 540000 550000
chr4 549443 549474 16 chr4 540000 550000
,后3列来自minor file
。
查看预期的输出,major file
和2nd
列中的数字(来自次要文件)在同一行的范围内,但3rd
和7(来自主要文件)和第一列等于columns 6
列(实际上是主要和次要文件的第一列)。
实际上,我想在次要文件中查找第一列等于主文件的第一列的行,而且同一行(在次要文件中)的5th
和2nd
列也必须在主文件的3rd
和2nd
列中。因此,实际上,次要文件中的每一行都有3个条件,可以包含在输出文件中。最后3列来自主要文件,适合次要文件中的行。
我正在尝试在python中完成此操作,并编写了以下代码,但未返回我期望的结果:
3rd
答案 0 :(得分:0)
也许在您的代码中有错别字,我可以看到您在if_small_list [i]上缺少标签页
final = []
for i in minor_list:
for j in major_list
if minor_list[i] == major_list[j] and minor_list[i+1] <= major_list[j+1] and minor_list[i+2] >= major_list[j+2]:
final.append(i)
应该是
final = []
for i in minor_list:
for j in major_list
if minor_list[i] == major_list[j] and minor_list[i+1] <= major_list[j+1] and minor_list[i+2] >= major_list[j+2]:
final.append(i)
答案 1 :(得分:0)
您应该这样做
final = []
for i, j in zip(minor_list, major_list):
final.append(i, j)
答案 2 :(得分:0)
您是否为此使用过Python?如果在bash shell中安装“ bedtools”,则可以通过以下代码行完成:
bedtools intersect -wa -wb -a minor.bed -b major.bed > intersected_file.bed
一些生物信息学工具仅适用于linux / mac,因此,如果您要进行任何数量的生物信息学研究,则值得学习如何在Shell中编写脚本。