首页 > 代码库 > Biopython根据ID或者根据序列去除重复项

Biopython根据ID或者根据序列去除重复项

from Bio import SeqIO
import argparse

records_new = SeqIO.parse(args.in_raw, "fasta")

Pretreated_fa = SeqIO.to_dict(SeqIO.parse(args.input, "fasta" ))

result = open(args.out_file, "w")
for rec in records_new:
    flag = True
    for k, i in Pretreated_fa.iteritems():
        if str(i.seq) == str(rec.seq):
            flag =False
            break
    if flag :
        SeqIO.write(rec, result, "fasta")
result.close()
from Bio import SeqIO
import argparse

records_bac = SeqIO.parse("nr.hmm.protein.faa", "fasta")
 
 
All_fa_dict = SeqIO.to_dict(SeqIO.parse("Allq_protein.faa", "fasta" ))
 
 
noDupID = open("No_Dup_ID.txt", "w")
noDupSeqR = open("new_Record.fasta", "w") 
 
for r in records_bac:
 
    if r.id not in All_fa_dict:
 
        noDupID.write(r.id+"\n")
        noDupSeqR.write(">"+r.id+"\n")
        noDupSeqR.write(str(r.seq)+"\n")
 
noDupID.close()
noDupSeqR.close()

这些是对之前从事的生物信息工作的一点点整理内容, 生物信息学的研究人员用python和perl的确是最多的,但是这两种语言作为脚本工具,应当总结的方法和工具很多, 需要学的东西也太多了。


希望能对用到python的生信分析人员有帮助吧!


很久以前听说过uclust  fastx_collasper 以及 cd-hit 可以完成去重复

很久很久以前我只会用CD-hit 和 FastUniq(这个是针对双端测序的fastq文件的), mothur的unique.seq 命令也可以,不过好像针对的是几十M的 fasta比较好,很久不用这些工具了...


也许以后都不会用了 

Biopython根据ID或者根据序列去除重复项