【发布时间】:2013-07-01 16:23:52
【问题描述】:
我有一个名为 snp.txt 的文件,如下所示:
chrom chromStart chromEnd name strand observed
chr1 259 260 rs72477211 + A/G single
chr1 433 433 rs56289060 + -/C insertion
chr1 491 492 rs55998931 + C/T single
chr1 518 519 rs62636508 + C/G single
chr1 582 583 rs58108140 + A/G single
我有第二个文件gene.txt
chrom chromStart chromEnd tf_title tf_score
chr1 200 270 NFKB1 123
chr1 420 440 IRF4 234
chr1 488 550 BCL3 231
chr1 513 579 TCF12 12
chr1 582 583 BAD170 89
我想要的最终输出是:output.txt
chrom chromStart chromEnd name strand observed tf_title tf_score
chr1 259 260 rs72477211 + A/G NFKB1 123
chr1 433 433 rs56289060 + -/C IRF4 234
chr1 491 492 rs55998931 + C/T BCL3 231
chr1 518 519 rs62636508 + C/G TCF12 12
chr1 582 583 rs58108140 + A/G BAD170 89
我希望能够做的关键是查看gene.txt并检查snp.txt的名称列中的rsnumber是否在由chrom、chromStart和chromEnd建立的同一区域中。
例如:
在snp.txt的第一行 rsid rs72477211 位于 chr1 的位置 259 和 260 之间。
现在在gene.txt中,NFKB1也在chr1上,但在位置200和270之间, 这意味着 rsid rs72477211 位于 NFKB1 区域,因此在输出 txt 中会注明。
在使用 pandas 合并功能时我无法做到这一点,我什至不知道从哪里开始。 文件非常大,因此循环效率非常低。 有人可以帮忙吗?谢谢!
【问题讨论】: