我有一个名为 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 合并功能时做到这一点,我什至不知道从哪里开始。文件非常大,因此循环效率非常低。有人可以帮忙吗?谢谢!