美文网首页
nr/nt taxonomy scientific name

nr/nt taxonomy scientific name

作者: 胡童远 | 来源:发表于2022-11-07 17:36 被阅读0次

    转载
    原创作者:风风是超人
    原文链接:https://blog.csdn.net/qq_42962326/article/details/105081327

    NCBI Taxonomy数据库

    wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/nucl_gb.accession2taxid.gz
    wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdump.tar.gz
    

    预测基因blast nt

    blastn -query .fna \
    -out out.xml \
    -max_target_seqs 1 -outfmt 5 \
    -db nt -num_threads 30 -evalue 1e-5
    

    获取NCBI taxonomy

    wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/nucl_gb.accession2taxid.gz
    wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdump.tar.gz
    

    下载,解压

    打开nucl_gb.accession2taxid


    第一列Accession : 序列标识码
    第一列Accession.version : 带版本号的序列标识码
    第三列: 序列的taxid 号,即物种分类号。如 Homo sapiens 的是9606.
    第四列:序列的gi号

    cut -f 3,4 nucl_gb.accession2taxid > cutted_nucl_gb.accession2taxid
    

    taxdump.tar.gz 解压后会有7个库,打开names.dmp

    第1列为 物种的taxid号。
    第2列为物种名称。
    我们后面会选择scientific name 对应的物种学名

    从XML结果文件提取gi号

    提取的信息包括:
    Iteration_query-def:reads id
    Hit_id : 匹配序列的 id ,信息中包括gi号
    Hit_def : 匹配序列物种信息

    # -*- coding:utf-8 -*-
    import re
    from collections import defaultdict
    
    ms, file_xml, file_gi = sys.argv
    
    xmlfile=open(file_xml, "r")
    outfile=open(file_gi, "w")
    
    dict1=defaultdict(list)
    for lines in xmlfile:
        line=lines.strip()
        read_id = re.match('<Iteration_query-def>.*</Iteration_query-def>',line)
        Hit_id = re.match('<Hit_id>.*</Hit_id>',line)
        Hit_def = re.match('<Hit_def>.*</Hit_def>',line)
        
        if read_id !=None:
            read_id=read_id.group()
            read_id = read_id.split("<")[1].split(">")[1]
            key=read_id
    
        elif Hit_id !=None:
            Hit_id = Hit_id.group()
            Hit_id = Hit_id.split("<")[1].split(">")[1]
            dict1[key].append(Hit_id)
    
        elif Hit_def !=None:
            Hit_def = Hit_def.group()
            Hit_def = Hit_def.split("<")[1].split(">")[1]
            dict1[key].append(Hit_def)
    
    for key in dict1:
        outfile.write(key + "\t" + "\t".join(dict1[key])+"\n")
    

    这样得到的处理文件如下:
    第一列reads id
    第二例 gi号信息
    第三列 物种信息

    此时的物种信息列,字段是不整齐的,如Homo sapiens ,虽然都是Homo sapiens,但是字段很不一致,不利于统计,所以需要进行学名统一。
    逻辑就是从blast结果中得到gi号,通过gi号得到taxid ,通过taxid 得到物种学名。

    # -*- coding:utf-8 -*-
    from collections import defaultdict
    import sys, os, re
    
    ms, file_gi, file_sci_name = sys.argv
    
    tiqu_gi = open(file_gi, "r")
    get_name = open(file_sci_name, "w")
    # 来自NCBI taxonomy信息
    gi2taxid = open("/public/home/zzumgg03/huty/databases/NCBI_tax/cutted_nucl_gb.accession2taxid","r")
    taxid2name = open("/public/home/zzumgg03/huty/databases/NCBI_tax/names.dmp","r")
    
    taxid_name_dict={}
    for lines in taxid2name:
        if "scientific name" in lines:
            line = lines.strip().split("|")
            taxid = line[0].strip()
            name = line[1].strip()
            taxid_name_dict[taxid]=name
            
    tiqu_dict=defaultdict(list)
    for lines in tiqu_gi:
        line = lines.strip().split("\t")
        gi = line[1].split("|")[1]
        tiqu_dict[gi].append("\t".join(line))
    
    
    gi_taxid_dict={}
    for lines in gi2taxid:
        line = lines.strip().split("\t")
        GI = line[1]
        taxid = line[0]
        gi_taxid_dict[GI]=taxid
    
    jiaoji=set(tiqu_dict.keys())&set(gi_taxid_dict.keys())
    
    tax_list=taxid_name_dict.keys()
    
    for lines in tiqu_gi:
        line = lines.strip().split("\t")
        gi = line[1].split("|")[1]
        if gi in jiaoji:
            taxid=gi_taxid_dict[gi]
            if taxid in tax_list:
                get_name.write("\t".join(line)+"\t"+taxid_name_dict[taxid]+"\n")
    

    结果文件共4列,最后一列为匹配得到的物种学名。

    下面在进行各个物种reads在所有抽取reads中所占比例即可。

    pip install bio
    from Bio import Entrez
    

    reference
    通过 blast 结果查看 测序数据fastq是否被污染,以及污染reads所属物种、所占比例

    相关文章

      网友评论

          本文标题:nr/nt taxonomy scientific name

          本文链接:https://www.haomeiwen.com/subject/hzxznrtx.html