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比较好,很久不用这些工具了...

也许以后都不会用了

时间: 2024-08-02 20:06:44

Biopython根据ID或者根据序列去除重复项的相关文章

Excel2003 去除重复项

利用 数据透视表 间接 获得 非重复项 1] 选中要去除重复项 的列 数据 2] 3]将选中列移动到 左侧 即可 4]

EF+Lamdba的三种去除重复项

今天在写项目的时候出现了这个问题,经过百度和帮人帮助最终原来lamdba是这样去除重复项的             var Total1 = db.NikeDTCDailyReport.Where(p => p.CN_Launch_Date >= date1 && p.CN_Launch_Date <= date2).Where(p => p.CN_Planning_Qty != 0).ToList();             var Total2= Total1

[LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. For example,Given input array A = [

[LeetCode] Remove Duplicates from Sorted Array II 有序数组中去除重复项之二

Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2,3]. 这道题是之前那道Remove Duplicates from Sorted Array 有序数组中

python3 列表去除重复项保留原序

1 l1 = ['a',1,'c','b',2,'b','c','d','a'] 2 l2= sorted(set(l1),key=l1.index) 3 print('l2:',l2) 4 print('l1:',l1) 5 6 #输出 7 #l2: ['a', 1, 'c', 'b', 2, 'd'] 8 #l1: ['a', 1, 'c', 'b', 2, 'b', 'c', 'd', 'a'] 9 # 相关知识整理 1.set(l1)集合,去除列表重复项

javacript模拟map输出与去除重复项

1.Javascriptmap输出 function Map(){ // private var obj = {} ;// 空的对象容器,承装键值对 // put 方法 this.put = function(key , value){ obj[key] = value ; // 把键值对绑定到obj对象上 } // size 方法 获得map容器的个数 this.size = function(){ var count = 0 ; for(var attr in obj){ count++;

Python3基础 列表之间+ 合并,不去除重复项

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 list1=[1,2] 2 list2=[2,3] 3 list3=list1+list2 4 5 print(list3) 2 show ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Python是优秀

c#linq去除重复项并将相同数据的数量字段值相加

这是执行前和执行后想要的效果 以下是用Sql语句实现的代码: select goodsno, goodsspec,SUM([count]) as count from goods group by goodsno ,goodsspec 下面这个则是用Linq实现的代码: var res = (from l in picModel group l by new { goodsno = l.GoodsNO, goodsSpec = l.SpecName, RecID = l.RecID, Posit

SQL变量、Substring、charindex、case函数、去除重复

isnull(aa,0)删除表数据: truncate table aaa 添加字段: ALTER TABLE table1 ADD col1 varchar(200) DEFAULT '2008-05-22' 修改字段名: alter table table1 rename column col1 to col2; 修改字段属性: alter table table1 alter column col1 varchar(200) not null; 修改默认值: alter table tab