NCBI的NT库比对——blastn

article/2025/9/23 1:01:24

NCBI的NT库比对——blastn

NT库比对,包括对测序数据和组装后的基因组序列进行NT库比对,查看是否存在菌污染以及是否是自己的数据。这里我提供这一部分的具体操作过程。
在这里插入图片描述

步骤一:NT全库下载

前面有一篇博文,提到了通过Aspera软件下载nt/nr/swissprot库。但是最近发现Aspera会报错,所以wget下载会好很多。(如果你的Aspera下载流畅,都可以)
时间:2022-09-26
NT库:https://ftp.ncbi.nlm.nih.gov/blast/db/
有75个子文件:https://ftp.ncbi.nlm.nih.gov/blast/db/nt.XX.tar.gz,且这75个文件是构建好的文件(使用了makeblastdb命令)。因此解压后,不需要使用makeblastdb命令
有1个总文件:https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nt.gz,这仅是fasta文件。因此解压后,需要使用makeblastdb命令

这里我对75个子文件下载。

cd /home/zhaohuiyao/Database/NT
#使用Aspera下载(尝试)
/home/zhaohuiyao/.aspera/connect/bin/ascp -v -QT -l 400m -k1 –i /home/zhaohuiyao/.aspera/connect/etc/asperaweb_id_dsa.openssh anonftp@ftp.ncbi.nlm.nih.gov:/blast/db/nt.00.tar.gz  ./
#报错信息,可能是服务器或者网络受限的问题
ascp: no remote host specified
Startup failed, exit
#使用wget下载,速度3MB/s(尝试)
wget https://ftp.ncbi.nlm.nih.gov/blast/db/nt.00.tar.gzmkdir /home/zhaohuiyao/Database/NT/nt	#存放解压后的文件
#共00~74个nt文件,编辑download_nt.sh,全部下载
#!/bin/bash
echo "download nt start on `date`"
cd /home/zhaohuiyao/Database/NT/
for i in {00..74}
dowget https://ftp.ncbi.nlm.nih.gov/blast/db/nt.${i}.tar.gz ./wget https://ftp.ncbi.nlm.nih.gov/blast/db/nt.${i}.tar.gz.md5 ./md5sum -c ./nt.${i}.tar.gz.md5tar -zxvf ./nt.${i}.tar.gz -C ./nt/echo "nt.${i} has done."
done
echo "download nt end on `date`"nohup /bin/bash ./download_nt.sh &
#查看目录/home/zhaohuiyao/Database/NT/nt下内容,下载完成
#查看文件nohup.out,查看是否所有都完成。grep "has done" ./nohup.out
nt.00 has done.
nt.01 has done.
nt.02 has done.
...
nt.74 has done.#若觉得占空间,可以将下载nt.XX.tar.gz和nt.XX.tar.gz.md5进行删除
rm nt.XX.tar.gz
rm nt.XX.tar.gz.md5

完成以上过程,你就拿到了构建好的NT全库了,接下来,就可以进行比对。

步骤二:随机提取10000条或5000条序列

如果是组装好的基因组文件,那么你可以根据情况选择(例如总共1000条,那就随机提取100条即可)

cd /home/zhaohuiyao/Genome_survey/nt
#这是常见的二代双端数据,两个fastq文件。每一个文件随机提取5000条。
nohup python3 Extract_sequence.py -i /XXX/raw_data/XXX_L1_1.fq -I /XXX/raw_data/XXX_L1_2.fq -o ./ -out_name XXX -f fq -n 10000 &
#最后拿到结果文件XXX_10000.fa
#参数-i:文件1;参数-I:文件2;参数-o:输出目录;参数-out_name:输出文件名;参数-f:fq/fa。默认是fq;参数-n:提取的序列个数#如果你是PacBio的HiFi测序数据,公司会给你bam/fasta/fastq格式的数据文件。这里仅针对fastq/fasta文件,提取5000条序列
nohup python3 Extract_sequence.py -i /XXX/raw_data/XXX_L1_1.fq -o ./ -out_name XXX -f f -n 5000 &

步骤三:对提取10000条序列进行全NT库blastn比对

保证软件blast已安装成功且测试通过

#全NT库已经是构建好的,直接进行blast
cd /home/zhaohuiyao/Genome_survey/nt/
nohup blastn -num_threads 32 -max_target_seqs 10 -evalue 1e-05 -db /home/zhaohuiyao/Database/NT/nt/nt -outfmt "7 qseqid sseqid evalue pident ppos length mismatch gapopen qstart qend sstart send bitscore staxid sscinames stitle" -query ./XXX_10000.fa -out ./XXX_10000.blastn.out &#具体的参数含义,自行查阅即可
#可能会遇到这样的报错:BLAST Database error: Error: Not a valid version 4 database。原因可能是blast版本低,使用高版本的blast
#报警告,不影响blast结果,只是因为没有物种信息,无法用staxid获取sscinames信息
Warning: [blastn] Taxonomy name lookup from taxid requires installation of taxdb database with ftp://ftp.ncbi.nlm .nih.gov/blast/db/taxdb.tar.gz
#更新命令
cd /home/zhaohuiyao/Database/NT/
wget http://ftp.ncbi.nlm.nih.gov/blast/db/taxdb.tar.gz
tar -zxvf ./taxdb.tar.gz -C ./nt/
#更新后没有用,因此这里我整理一下staxid、scinames的信息,最后补充到blast结果中。如果你没有这类问题,则忽略
#我的blast结果(缺失scinames的信息,显示为N/A)
# BLASTN 2.10.1+
# Query: A00808:1021:H5HHFDSX3:3:2478:32217:24627 1:N:0:GACCAAGCTT+AGTGGAGTCA
# Database: /home/zhaohuiyao/Database/NT/nt/nt
# Fields: query id, subject id, evalue, % identity, % positives, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, bit score, subject tax id, subject sci name, subject title
# 46 hits found
A00808:1021:H5HHFDSX3:3:2478:32217:24627	gi|2268683873|emb|OX155639.1|	2.56e-54	93.421	93.42	152	8	2	1	150	15472611      15472762	224	218720	N/A	Carterocephalus palaemon genome assembly, chromosome: 2

补充:staxid的scinames关系信息

这一步只有你的blastn的结果中scinames这一栏是N/A的情况下进行,若是没有,则跳过

#下载最新的taxdmp.zip(2022-09-28)
mkdir -p /home/zhaohuiyao/Database/taxdmp/ && cd /home/zhaohuiyao/Database/taxdmp/
wget https://ftp.ncbi.nih.gov/pub/taxonomy/taxdmp.zip
wget https://ftp.ncbi.nih.gov/pub/taxonomy/taxdmp.zip.md5
md5sum -c ./taxdmp.zip.md5
unzip ./taxdmp.zip
#解压后的文件中names.dmp,是我们需要的staxid-scinames关系文件
#执行脚本staxid-scinames.py,拿到两者关系文件staxid-scinames.txt,第一列:staxid;第二列:scinames
python3 ./staxid-scinames.py -i ./names.dmp -o ./#staxid的scinames关系文件目录
/home/zhaohuiyao/Database/taxdmp/staxid-scinames.txt

步骤四:对blastn结果进行统计

这一步执行的前提的是你已经拿到了blastn的结果文件。因为我的脚本里面需要补充scinames信息,所以要提供staxid-scinames.txt文件,若你不需要,则需要将脚本略微修改。(两种我都会提供)

#对blast结果补充scinames信息,并进行总结分类
python3 blastn_stat.py -i ./XXX_10000.blastn.out -f /home/zhaohuiyao/Database/taxdmp/staxid-scinames.txt -o ./XXX_10000.blastn.out.stat -num 10000#结果文件如下,cat XXX_10000.blastn.out.stat
Species_name	mapping_reads	total_reads	ratio
unknown	9265	10000	92.65%
Wolbachia pipientis	207	10000	2.07%
Wolbachia endosymbiont of Ostrinia scapulalis	99	10000	0.99%
Wolbachia endosymbiont of Chrysomya megacephala	92	10000	0.92%
Opisthograptis luteolata	91	10000	0.91%
Wolbachia endosymbiont of Ostrinia furnacalis	90	10000	0.90%
Wolbachia endosymbiont of Corcyra cephalonica	76	10000	0.76%
Wolbachia pipientis wAlbB	76	10000	0.76%
Wolbachia endosymbiont of Drosophila mauritiana	75	10000	0.75%
Wolbachia endosymbiont of Diaphorina citri	73	10000	0.73%
#取blast前10的物种输出。第一列:物种名;第二列:比对到该物种的reads数;第三列:总参与比对reads数;第四列:占比
#为什么unknown这么多,这是二代数据太短了,150bp,造成的#这是一个PacBio的Hifi测序数据的NT库比对结果
Species_name	mapping_reads	total_reads	ratio
unknown	1506	5000	30.12%
Glyphotaelius pellucidus	204	5000	4.08%
Spodoptera littoralis	195	5000	3.90%
Zeuzera pyrina	183	5000	3.66%
Hypsopygia costalis	171	5000	3.42%
Calamotropha paludella	169	5000	3.38%
Cerceris rybyensis	168	5000	3.36%
Mellicta athalia	166	5000	3.32%
Phosphuga atrata	155	5000	3.10%
Schistocerca gregaria	150	5000	3.00%

总结

因为考虑到全库比对会比较费时间,所以计划构建子库。但是尝试后发现,全库比对的时间可以接受,所以放弃制作子库,但是可以作为拓展练习。(正在努力,完成后会和大家分享学习~~ 这里提供别人的一篇文章,供大家参考,这是一篇nr子库构建:https://cloud.tencent.com/developer/article/1943973)

还有上面提到的四个脚本,我放在了gitee上,大家可以下载学习,也可以自己写。https://gitee.com/zhao-huiyao/python_script/tree/master/NT%E5%BA%93%E6%AF%94%E5%AF%B9


http://chatgpt.dhexx.cn/article/4xn4Yf53.shtml

相关文章

NB-IoT模块 移远BC26测试 - TCP通信

准备工作 USB转TTL线NB-IoT测试卡(电信或者移动制式,BC26支持全频段,B5 B8都可以) AT指令 硬件正确连接之后,按住轻触开关 S1 一段时间或者拉高丝印为 PWR 的信号(排针)一段时间让模块开机&…

NB-IoT移远BC95调试笔记 01 加网测试

一、前言 移远BC95是最早推出的NB-IoT模块,目前厦门这边网络都已经覆盖了。自己拿个设备来玩玩,这篇笔记先记录下加网测试的心得。 本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/ 二、加网总体思路 加网思路…

[内网渗透]—内网扫描

nbtscan Win2012 上传nbtscan和dll程序 upload D:\内网\tools\信息收集\nbtscan\nbtscan.exe上传后用nbtscan命令扫描内网其他网段 shell nbtscan.exe 192.168.52.0/24win2016 此时直接上线Win2016肯定是不行的,因为目标不出网无法访问到kali,所以要…

TBCNN

TBCNN – 基于树的卷积神经网络 TBCNN: A Tree-Based Convolutional Neural Network for Programming Language Processing 一种用于编程语言处理的基于树的卷积神经网络 Abstract: 由于当前还没有将深度神经网络应用于编程语言处理, 提出TBCNN模型来对基于ASTs的编程语言进行…

Nbtscan.exe工具分析

Nbtscan.exe 这是一款用于扫描Windows网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地…

内网安全攻防读书笔记(5)——探测域内存活主机和端口扫描

实际探测可以在白天和晚上分别进行探测。 1.利用NetBIOS快速探测内网 nbtscan工具已经上传到我的资源,大家可以下载。此工具用于扫描本地或远程TCP/IP网络上开放NetBIOS名称服务器。有Windows和Linux两个版本,将其上传到目标服务器就可以直接使用。使用…

nbtscan局域网扫描的原理

本文出处:http://blog.csdn.net/xizhibei 相信搞网络的应该都听说过nbtscan这个工具,当我们处于局域网中,想查询同处一个局域网的主机时,它就是个不错的工具(比如追踪ARP诈骗源) 它也很好用,在…

nbtscan在windows和linux下编译

nbtscan在windows和linux下编译 windows下载编译 linux下载编译 参考文章 windows 下载 http://unixwiz.net/tools/nbtscan-source-1.0.35.zip解压之后,修改nbtscan.c的66行include "getopt.i"为include "getopt.h" 修改nbtscan_common.h为li…

内网探测(主机存活、端口、Web资产)

内网探测(主机存活、端口、Web资产) 当我们能访问到目标内网任何资源之后,我们就可以对目标内网进行更深层次的信息搜集,比如:主机收集、IP 段搜集、端⼝开放服务、Web资产数量、漏洞类型 0x01. nbtscan 介绍&#xff…

入侵检测——nbtscan(扫描篇)

目录 环境介绍工具简介数据包规则 环境介绍 NAT模式: kali攻击方win7受害者Metasploitable受害者 工具简介 一个在本地或远程TCP/IP网络上扫描开放的NETBIOS名称服务器的命令行工具。它基于Windows系统的nbtstat工具的功能实现,但它可在许多地址上运…

delphi生成一个随机序列号

varFGuid: TGUID;beginCreateGUID(FGuid);edit1.Text : GUIDToString(FGuid);edit1.Text : edit1.Text IntToStr(Length(edit1.Text));edit1.Text : Copy(GUIDToString(FGuid), 2, 36);end; 测试通过

delphi2007 注册码

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 执行 Setup.exe 文件安装 Delphi 2007 for…

linux 磁盘序列号修改,一个小程序:Linux下取得硬盘的序列号

最近给朋友帮忙,遇到一个问题:如何在Linux取到硬盘的序列号?目前网上说的方法大都是Windows 下用Delphi、C#等工具开发的。如何用ANSI C来实现呢?其实C在做这种底层事情方面比Delphi和C#都要容易的。下面这个函数就是取得硬盘序列…

win7读取linux硬盘序列号,Windows 下获取硬盘序列号

只获取序列号 以下任意一条命令都可以: wmic diskdrive get serialnumber wmic path win32_physicalmedia get SerialNumber wmic path Win32_DiskDrive get SerialNumber 运行结果: 获取硬盘的更多信息 wmic diskdrive get Name, Manufacturer, Model, InterfaceType, Media…

Delphi dbgrideh序号

数据库里面的数据没有序号的数据,在dbgrideh上新增一列自定义其字段,例如:id 在编码的开头定义i,为integer 在dbgrideh控件上的‘OnDrawColumnCell’事件下写下代码 procedure TForm1.number(Sender: TObject; const Rect: TRect;…

安装delphi 10.4 社区版

事先说明:由于delphi的服务器是在国外的,所以,有条件的你懂的 下载安装程序 去 https://www.embarcadero.com/cn/products/delphi/starter 下载安装程序 点击 get community edition free 填写信息,注册账号,成功之后它将会把免费使用的序列号发送到你所填写的邮箱里面,之后会…

Delphi7安装及补丁安装详解

在学习Delphi之前,我们要先安装开发环境,博主这里以Delphi7镜像作为安装实例,希望在Delphi学习之路上能给予大家一点帮助。接下来就让我们一起来走一遍这个安装过程。 ⑴双击Delphi7镜像文件,镜像文件会在DVD驱动器中打开 ⑵ 双击…

nginx Proxy 代理

1、代理原理 反向代理产生的背景: 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担…

python-proxy

代码: # -*- coding: utf-8 -*- # Time : 2020/4/15 17:44 # Author : Oneqq # File : 11.proxy.py # Software: PyCharmfrom urllib.request import Request, urlopen from fake_useragent import UserAgent from urllib.request import ProxyHandler, build_open…

but was actually of type 'com.sun.proxy.$Proxy7'

but was actually of type ‘com.sun.proxy.$Proxy7’ 标签(空格分隔): spring 二月 11, 2018 12:24:02 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息: Refreshing org.springframework.…