【数据库】本地NR数据库如何按物种拆分?
1.准备本地数据库文件
NR(Non-Redundant Protein Sequence Database)
非冗余蛋白库,是所有GenBank+EMBL+DDBJ+PDB
中的非冗余蛋白序列。Taxonomy
物种分类数据库,包括大于7万余个物种的名字和系谱,这些物种都至少在遗传数据库中有一条核酸或蛋白序列。NR
和Taxonomy
数据库都是NCBI
的子数据库,会提供比较全面的对应关系。在本地数据库按物种拆分的话,必须下载这两个数据库的文件。
1.1 NR库下载
ftp下载地址:ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA
NR数据库更新是相当频繁的,如果追求新,估计每个月甚至每周就重新下一次,但它又非常大,对于商业流程使用不可能更新得这么频繁,可以半年或一年更新一次。
1.2 Taxonomy数据库下载
ftp下载地址:ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/
同样,taxonomy更新也很快。
我们分库需要用到两个文件,一个是accession2taxid
中的prot.accession2taxid
文件:
该文件将accession
和taxid
关系对应起来(也有GI号,2016年以前大家用的是GI和taxid的对应文件,现在该文件已淘汰)。其格式为:
另一个是taxdump
文件,里面包含了物种层级和物种名称等文件。解压后文件:
readme.txt
文件中解释了每个文件的每一列信息(注意|是列间隔,而非列本身):
*.dmp files are bcp-like dump from GenBank taxonomy database.
General information.
Field terminator is "\t|\t"
Row terminator is "\t|\n"
nodes.dmp file consists of taxonomy nodes. The description for each node includes the following
fields:
tax_id -- node id in GenBank taxonomy database (Taxonomy记录号)
parent tax_id -- parent node id in GenBank taxonomy database (上一层分类级别的tax_id)
rank -- rank of this node (superkingdom, kingdom, ...) 该tax_id所处的分类层级)
embl code -- locus-name prefix; not unique
division id -- see division.dmp file
inherited div flag (1 or 0) -- 1 if node inherits division from parent
genetic code id -- see gencode.dmp file
inherited GC flag (1 or 0) -- 1 if node inherits genetic code from parent
mitochondrial genetic code id -- see gencode.dmp file
inherited MGC flag (1 or 0) -- 1 if node inherits mitochondrial gencode from parent
GenBank hidden flag (1 or 0) -- 1 if name is suppressed in GenBank entry lineage
hidden subtree root flag (1 or 0) -- 1 if this subtree has no sequence data yet
comments -- free-text comments and citations
Taxonomy names file (names.dmp):
tax_id -- the id of node associated with this name (为taxonomy的记录号)
name_txt -- name itself (即对应tax_id号的物种名称)
unique name -- the unique variant of this name if name not unique
name class -- (synonym, common name, ...)
Divisions file (division.dmp):
division id -- taxonomy database division id
division cde -- GenBank division code (three characters)
division name -- e.g. BCT, PLN, VRT, MAM, PRI...
comments
Genetic codes file:
genetic code id -- GenBank genetic code id
abbreviation -- genetic code name abbreviation
name -- genetic code name
cde -- translation table for this genetic code
starts -- start codons for this genetic code
Deleted nodes file (delnodes.dmp):
tax_id -- deleted node id
Merged nodes file (merged.dmp):
old_tax_id -- id of nodes which has been merged
new_tax_id -- id of nodes which is result of merging
Citations file (citations.dmp):
cit_id -- the unique id of citation
cit_key -- citation key
pubmed_id -- unique id in PubMed database (0 if not in PubMed)
medline_id -- unique id in MedLine database (0 if not in MedLine)
url -- URL associated with citation
text -- any text (usually article name and authors).
-- The following characters are escaped in this text by a backslash:
-- newline (appear as "\n"),
-- tab character ("\t"),
-- double quotes ('\"'),
-- backslash character ("\\").
taxid_list -- list of node ids separated by a single space
其中最关键的是names.dmp
和nodes.dmp
文件。names.dmp
示例(共四列,重要的也就taxid和物种名的前两列信息):
nodes.dmp
示例(共13列,重要的也就taxid、上层级taxid、分类层级这前三列信息):
为了让分类更简单,我们按taxonomy数据库本身分类的分法,即division.dmp
文件,共12类物种。
2.按物种拆分NR库
2.1 第一步:获得Aceesson和分类物种的对应关系
根据以上的prot.accession2taxid.gz
、nodes.dmp
和division.dmp
文件,可通过编写脚本来获得accession
和以上12类物种的对应关系。脚本略,自己写。假设结果文件命名为acc2sp.xls
,格式如下:
2.2 第二步:获得分类物种的序列
根据acc2sp.xls
这个文件以及NR总库序列文件nr.gz
,我们就可以获得各类物种的序列信息了。当然除了taxonomy数据库本身分的这12类,我们也可以将它们合并来自定义子库。比如这12类中没有动物,我们可以将Invertebrates.fa、 Mammals.fa、 Primates.fa、 Rodents.fa 和Vertebrates.fa
合并为动物作为一类,也可以将"Bacteria"、"fungi"、"Viruses"、"Phages"
和"Environmental.samples"
等合并为微生物作为一类(这在宏组学注释中常用)。当然NR中也有这12类中没包含的序列,我们可将其归为unknown.fa
(不同于Unassigned.fa
,它是没有物种信息)。
脚本自己写,最后得到的是各个子数据库的fasta
序列文件。
2.3 第三步:建库和比对
blast或diamond比对工具进行序列数据库建库,后面比对选择对应的字库就可。
blastall:
formatdb -p T -i Plants.fa
blastall -i query.fa -d Plants.fa -o blastout.nr -p blastp -F F -m 7 -e 1e-5 -b 10 -v 10 -a 5
或diamond:
diamond makedb --in Plants.fa -d Plants.fa
diamond blastp --evalue 1e-5 --threads 4 --outfmt 5 -q query.fa -d Plants.fa.dmnd -o blastout.nr --seg no --max-target-seqs 20 --more-sensitive -b 0.5 --salltitles
【数据库】本地NR数据库如何按物种拆分?的更多相关文章
- 构建NCBI本地BLAST数据库 (NR NT等) | blastx/diamond使用方法 | blast构建索引 | makeblastdb
参考链接: FTP README 如何下载 NCBI NR NT数据库? 下载blast:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+ 先了解 ...
- 【数据库】本地KEGG数据库如何拆分子库?
目录 KEGG本地库文件 按物种拆分KEGG数据库 1.获得物种分类信息 2.获得物种分类的序列信息并建库 3.获得物种分类的K-ko对应文件 根据相似性原理,序列相似,功能相似,所有功能注释无非是用 ...
- NR 数据库简介
目前有很多的数据库都存储了蛋白序列,比如NCBI Refseq, protein, swissprot 等,在各个数据库之间,或者是在某个数据库中,蛋白序列有大量冗余:为了方便使用,ncbi 构建了n ...
- [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
saiku数据库的表和用户默认创建是在启动项目的时候,通过初始化 saiku-beans.xml 中的 h2database 这个 bean 执行org.saiku.service.Database类 ...
- 从服务器将Oracle数据库导出到本地Oracle数据库的方法
1.将服务器上的Oracle数据库导入到本地 在CMD模式下执行以下命令: exp username1/password@服务器端数据库 file=本地硬盘:/文件名.dmp 例如: exp ...
- sql server 2008 把远程的数据库的数据转移到本地数据数据库里
如题:把远程的数据库对应表里的数据转移到本地数据数据库的对应表里 比如把192.168.188.160的DB的A表的数据转移到本地的DB的A表里 第一步:连接远程服务器前准备 exec sp_addl ...
- cordova调用本地SQLite数据库的方法
第一篇技术博客,写下来和大家分享今天所学,其次自己也巩固一下. 整个下午的时间用来钻研如何用cordova调用移动端本地SQLite数据库.首先我并不是用eclipse来编程的,而是用cordova建 ...
- Xamarin android使用Sqlite做本地存储数据库
android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思). SQLite 是一个软件库,实现了自给自足的.无服 ...
- WebService访问oracle数据库本地调试
WebService访问oracle数据库本地调试-一步一个坑 上篇文章提到我们额数据库挂了,重装了数据库,然后呢我需要在本地调试WebService,看看那些数据结构缺失,迁移到新数据库中去.踩坑之 ...
随机推荐
- Redis:学习笔记-03
Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...
- Gopher们写if err != nil是否腻了?
效果 go里面没有try catch,比较类似的有panic() 和 recover()机制,但是代价太大了,他们的场景更多使用在"程序异常,无法继续往下执行了这种场景",比如配置 ...
- 第四单元博客总结——暨OO课程总结
第四单元博客总结--暨OO课程总结 第四单元架构设计 第一次UML作业 简单陈述 第一次作业较为简单,只需要实现查询功能,并在查询的同时考虑到性能问题,即我简单的将每一次查询的结果以及递归的上层结果都 ...
- CSP-S2021 退役记
首先大家一起恭喜博主以5pts之差与省三擦肩而过!(nmd爷去年都省三今年成功打铁了) 果然这个菜鸡一年不如一年了 upd:T3死在多测上了,随便一个40+28的人可以吊打我 Day -2: 模拟赛, ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- JMH 使用指南
简介 JMH(Java Microbenchmark Harness)是用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级.该工具是由 Oracle 内部实现 JIT 的大 ...
- JuiceFS CSI Driver 的最佳实践
文章根据 Juicedata 工程师朱唯唯,在云原生 Meetup 杭州站所作主题演讲<JuiceFS CSI Driver 的最佳实践>整理而成. 大家好,我是来自 Juicedata ...
- Java测试开发--Set、Map、List三种集合(四)
1.集合类型主要有3种:set(集).list(列表)和map(映射). 2.三者关系 3.Set set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这 ...
- leakcanary内存泄漏:此篇有加了内存泄漏的apk demo
概括: ·用Android studio写一个demo ·配置leakcanary ·加入内存泄漏代码片段 ·安装apk 验证结果 ·源码地址 一.android ...
- vuex4 极速入门到上手
vuex4 是 vue3的兼容版本,提供了和vuex3 的相同API.因此我们可以在 vue3 中复用之前已存在的 vuex 代码. 一.安装以及初始化 vuex4安装: npm install vu ...