如何基于另一文件列值实现文件行过滤(含多匹配行处理)
需求:基于动态碱基列的文件过滤
我现在需要处理两个文本文件,实现特定规则的过滤,具体情况如下:
输入文件说明
File1.txt
文件内容是空格分隔的连续记录,每个记录包含位置(第1、2列)及关联碱基值,内容如下:
1 20 A G 4 400 T C 1 12 A T 2 500 G C
(每条完整记录为4个字段,比如1 20 A G是一条独立记录)
File2.txt
包含部分与File1相同的位置,可能存在重复位置的行,第一行是表头,内容如下:
#CHR POS Count_A Count_C Count_G Count_T 1 20 0 18 2 0 4 400 0 0 0 1 1 12 0 7 0 40 4 400 0 1 0 1 5 50 16 0 0 0 2 500 9 0 4 0
过滤规则
我需要输出File1.txt的过滤版本,排除同时满足以下两个条件的记录:
- 记录的位置(第1+2列)与File2.txt中的某行位置匹配;
- File2.txt中对应File1.txt第4列碱基的
Count_*列数值>0。
注:只要File2.txt中有任意一行满足上述条件,就需要排除File1.txt中对应位置的记录。比如示例里最终只有
2 500 G C这条记录会被保留。
现有尝试
我之前用Python实现过基于单列值的文件过滤,代码如下:
f2 = open('file2.txt', 'r') d2 = {} for line in f2.split('\n'): line = line.rstrip() fields = line.split("\t") key = (fields[0], fields[1]) d2[key] = int(fields[2]) f1 = open('file1.txt', 'r') for line in file1.split('\n'): line = line.rstrip() fields = line.split("\t") key = (fields[0], fields[1]) if d2[key] > 1000: print(line)
但现在不知道怎么实现这种动态匹配碱基列的条件过滤,想寻求可行的解决方案,不限编程语言。
内容的提问来源于stack exchange,提问作者user964689
相关产品推荐
相关产品推荐

