全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
4721 1
2018-06-22
现在数据格式如下(每一列以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把它当成数据框之类的来处理,所以如果就用一般的循环该怎么改?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-6-22 15:00:15
我用单纯使用列表的方法试了一下,你试试行不行
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群