搭建本地NCBI病毒库用于Blast


目的:为了通过Blast剔除我数据集中所有与Human任意片段相似度超过97%的序列

日期:2022/11/17


1. Nt库下载

创建conda环境

conda create -n aspera
conda activate aspera
conda install -y -c hcc aspera-cli
conda install -y -c bioconda sra-tools



下载Nt库

# 在/media/yang/data/nt目录下下载nt.gz
ascp -v -k 1 -T -l 200m -i ~/miniconda2/envs/rna/etc/asperaweb_id_dsa.openssh anonftp@ftp.ncbi.nlm.nih.gov:/blast/db/FASTA/nt.gz ./
# 然后在/media/yang/data/nt目录下下载nr.gz
ascp -v -k 1 -T -l 200m -i ~/miniconda2/envs/rna/etc/asperaweb_id_dsa.openssh anonftp@ftp.ncbi.nlm.nih.gov:/blast/db/FASTA/nr.gz ./

2. 软件准备

2.1、数据:

  1. accession2taxid:(核酸就下载核酸,蛋白就下载蛋白)https://ftp.ncbi.nih.gov/pub/taxonomy/accession2taxid/https://ftp.ncbi.nih.gov/pub/taxonomy/accession2taxid/nucl_gb.accession2taxid.gz

  2. taxdump: https://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz

2.2、软件:

  1. blast: https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/

  2. taxonkit: https://bioinf.shenwei.me/taxonkit/download/

sudo cp taxonkit /usr/local/bin/

2.3、解压

gzip -d nr.gz
mv nr nr.fa
gzip -d prot.accession2taxid.gz
gzip -d taxdump.tar.gz

把taxdump解压的文件移动到taxonkit对应位置,否则会报错

sudo cp *.dmp /home/yzu/.taxonkit

3. 抽提所有的流感序列构建子库

3.1 nt本地库构建(可有可无)

makeblastdb -in nt.fa -dbtype nucl -title nr -parse_seqids -hash_index -out nr -logfile nr.log

A型流感病毒对应的taxonomy id是197911

3.2 抽取所有的AIV序列

taxonkit list --ids 197911 --indent "" > AIV.taxid

cat prot.accession2taxid |csvtk -t grep -f taxid -P AIV.taxid |csvtk -t cut -f accession.version > Viruses.acc

seqtk subseq nt.fa Viruses.acc > IAV.fa

3.3 建索引

makeblastdb -in IAV.fa -dbtype nucl -title NCBIIAV -parse_seqids -hash_index -out NCBIIAV

4. Blast

sudo blastn -task blastn -db NCBIIAV -query /mnt/c/Users/yzu-v/Desktop/all_avian.fas  -outfmt 7 -out query.txt

获得更为纯净的blast结果

sed '/^#/d' query.txt > query_result.txt

只筛选相似度大于97%的结果

awk '$3 >= 97 {print}' query_result.txt > query_to_rm.txt

5. 登录号转name

本文的目的是找到所有和人源毒株有某一个片段相似度大于97%的毒株,所以要把登录号转为name,这样更容易看结果。

我们需要用excel制作对应的accession→name表格,但是前文提到了,我们建索引的nt库的IAVs子集也非常大,有50多W条序列,这样我们就需要用python来提取fasta序列的id和对应的name,否则是会卡死的。

from Bio import SeqIO
import pandas as pd seqid = []
seqname = [] for seq_record in SeqIO.parse("IAV.fa","fasta"):
seqid.append(seq_record.id)
seqname.append(seq_record.description) dict_1 = {
"id": seqid,
"name": seqname
}
data = pd.DataFrame(dict_1)
data.head()
data.to_csv("acc_to_name.csv")

接下来就去excel里面分列做一个自己感兴趣的信息表就行了,最后我就提取一下包含human字符的所有结果行就行了

grep 'human' merge.csv > to_rm.csv

搭建本地NCBI病毒库用于Blast的更多相关文章

  1. 【转】使用TortoiseSVN搭建本地的版本控制库

    转:https://blog.csdn.net/chenyusiyuan/article/details/6925374 越来越发觉版本控制的重要性了,很惭愧到现在才真正开始落实~~~ 这里使用Tor ...

  2. Git: 本地创建版本库用于多处同步

    问题背景 目前有一个 Android 和 一个 iOS 项目,两个项目底层使用相同的 C++ 代码.由于在开发迭代中代码时常更新,而且往往是今天 Android 部分修改一小部分,明天 iOS 部分修 ...

  3. TortoiseSVN搭建本地版本库及简单操作使用

    TortoiseSVN是windows上一款著名的版本控制软件,对于我们管理自己的代码,特别是对一个团队来说,非常重要. 本文探讨的是如何搭建本地的版本库. (1)安装TortoiseSVN之后需要创 ...

  4. TortoiseSVN 搭建本地版本库及简单操作使用

    TortoiseSVN是windows上一款著名的版本控制软件,对于我们管理自己的代码,特别是对一个团队来说,非常重要. 本文探讨的是如何搭建本地的版本库. (1)安装TortoiseSVN之后需要创 ...

  5. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari

    一.集群软硬件环境准备: 操作系统:  centos 7 x86_64.1804 Ambari版本:2.7.0 HDP版本:3.0.0 HAWQ版本:2.3.05台PC作为工作站: ep-bd01 e ...

  6. Mac搭建本地svn服务器,并用Cornerstone连接服务器

    Mac默认已经安装了svn,我们只需要进行配置并开启就可以了 首先我们可以验证一下是否安装了svn,打开终端,输入命令 svnserve --version 这里可以看到目前svn的版本号,说明已经安 ...

  7. 搭建本地 Registry - 每天5分钟玩转 Docker 容器技术(20)

    Docker Hub 虽然非常方便,但还是有些限制,比如: 需要 internet 连接,而且下载和上传速度慢. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 reposito ...

  8. spring boot / cloud (十八) 使用docker快速搭建本地环境

    spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越 ...

  9. webpack-dev-server 搭建本地服务以及浏览器实时刷新

    一.概述开发项目中为了保证上线,开发项目是都需要使用localhost进行开发,以前的做法就是本地搭建Apache或者Tomcat服务器.有的前端开发人员 对服务器的搭建和配置并不熟悉,这个时候需要后 ...

  10. 020、搭建本地Registry(2019-01-11 周五)

    参考https://www.cnblogs.com/CloudMan6/p/6902325.html   Docker Hub 虽然方便,但还是有些限制,比如     1.需要Internet连接,上 ...

随机推荐

  1. 实用干货分享(3)- Git常用操作干货分享

    官方学习地址 https://git-scm.com/book/zh/v2 简单的代码提交流程 1. git status 查看工作区代码相对于暂存区的差别: 2. git add . 将当前目录下修 ...

  2. Jetpack Compose 的原理性文章

    正在写一篇关于UI的思考,接触到 Android 的 Jetpack Compose: 从第一原则撰写 | 可理解的胡言乱语

  3. SAGA/TCC 就是 WORKFLOW!!!

    SAGA TCC 的本质就是一个 workflow, 用 activiti, conductor 或 zeebee 都可以实现. saga, tcc 依赖的状态机模型在 workflow 引擎一直在用 ...

  4. 【Mybatis】学习笔记02:实现简单的查

    Mybatis02:简单的查 如果你没先去学 增删改 ,然后直接看这篇记录,我想会有些困难.因为该文写的很粗劣,只是简单的截图.所以没基础的建议先去看 [Mybatis]学习笔记01:连接数据库,实现 ...

  5. arm mattermost

    It's not so hard, here is my working steps for arm64 device. cd ~/build/mattermost wget https://raw. ...

  6. MybatisPlusException: can not find lambda cache for this entity[]异常解决

    文章目录 场景说明 解决方案 场景说明   简单来说,我们系统中许多数据都是树状结构的,所以我定义了一个实体类父类BaseTreePO,并且想封装一个通用的树状对象的Service类,部分代码如下: ...

  7. 使用P6Spy监控你的Spring boot数据库操作

    引言 最近换了号称最快的HikariDataSource,由于没有了SQL监控,加之于Mybaits默认输出日志之拙计.遂用此物,与之相仿还有log4jdbc,比较活跃度后选择了P6Spy. 版本 P ...

  8. TIBCO Jaspersoft Studio-6.12.2连接mysql时显示时区问题

    TIBCO Jaspersoft Studio-6.12.2创建mysql型的Data Adapter, 在进行连接test时弹出显示时区问题,如下图所示: 解决办法: 在Data Adapter W ...

  9. DVWA靶场Command Injection(命令注入) 漏洞low(低),medium(中等),high(高)所有级别通关教程及源码审计

    命令注入 命令注入漏洞是一种安全漏洞,攻击者可以通过向应用程序输入恶意命令,诱使系统执行这些命令,从而达到未授权访问.数据篡改.系统控制等目的.该漏洞通常出现在应用程序未对用户输入进行充分验证和清理时 ...

  10. 【宝塔】搭建随机图API

    创建站点 首先,我们打开服务器的宝塔面板,如果没安装的推荐安装一个,因为这个对建站小白来说非常的方便. 我们参加一个 API 站点 然后到站点设置里申请一个 ssl 认证,再打开强制 https 添加 ...