现在数据格式如下(每一列以Tab键分隔):
12 GAGACGAT TGAAGACG 10520277 10520428
23 TGAAGACG GAGACGAT 10520277 10520428
11 GAAGGAAG ATCCAGAG 10525674 10525756
22 GAAGGAAG ATCCAGAG 10525756 10525674
33 TCGCTGTT TTCCAAGG 10525992 10525964
11 TTCCAAGG TCGCTGTT 10525992 10525964
12 CGGCTAAT GTCGAAGA 10546542 10546594
23 CGGCTAAT GTCGAAGA 10546542 10546594
15 GCTATCCT GTGCCATA 10549955 10550024
21 GCTATCCT GTGCCATA 10550024 10549955
21 ATCCAGAG GAAGGAAG 10562789 10562916
56 ATCCAGAG GAAGGAAG 10562916 10562789
脚本的目的是如果存在两行,其第2、3列值刚好相反,且第4、5列值相同,则只输出其中一行(如上述第一二行),或者如果2、3、4、5列值相等,也只输出其中一行,所以上述结果应该为:
12 GAGACGAT TGAAGACG 10520277 10520428
11 GAAGGAAG ATCCAGAG 10525674 10525756
22 GAAGGAAG ATCCAGAG 10525756 10525674
33 TCGCTGTT TTCCAAGG 10525992 10525964
23 CGGCTAAT GTCGAAGA 10546542 10546594
15 GCTATCCT GTGCCATA 10549955 10550024
21 GCTATCCT GTGCCATA 10550024 10549955
21 ATCCAGAG GAAGGAAG 10562789 10562916
56 ATCCAGAG GAAGGAAG 10562916 10562789
我的想法是这个文件打开两次,然后内外两个for循环,一行一行的比较,再用个if语句,如果满足这个条件就在其中一个文件中删除这行,但是网上查了一下,好像没有删除这一说?本来想着用continue跳过本次循环,但是本该删除的行在下次循环中可能就被留下来了,请问还有没有其它办法啊?
for s1 in r1:
for s2 in r2:
if(R1_UMI1==R2_UMI2 and R2_UMI1==R1_UMI2 and s1.pos==s2.pos and s1.pnext==s2.pnext):
continue
else:
outfile.write(s2)
而且,我的数据是一个二进制文件,只能用pysam这个库打开,所以是不能用pandas把它当成数据框之类的来处理,所以如果就用一般的循环该怎么改?


雷达卡



京公网安备 11010802022788号







