2017/11/9 第一版: 生物數(shù)據(jù)庫,基本數(shù)據(jù)類型(genbank, fasta/fastq),數(shù)據(jù)上傳站點(diǎn)
2017/11/12 第二版:如何利用esearch, efecth快速獲取SRR序列號(hào)
生物數(shù)據(jù)庫
目前絕大部分?jǐn)?shù)據(jù)由NCBI, EMBL-EBI, DDBJ三大機(jī)構(gòu)托管,可劃分為五類:
(表格數(shù)據(jù)來源于INSDC)
Data type | DDBJ | EMBL-EBI | NCBI |
---|---|---|---|
Next generation reads | Sequence Read Archive | European NucleotideArchive (ENA) | Sequence Read Archive |
Capillary reads | Trace Archive | 同上 | Trace Archive |
Annotated sequences | DDBJ | 同上 | GenBank |
Samples | BioSample | 同上 | BioSample |
Studies | BioProject | 同上 | BioProject |
大部分所需要的數(shù)據(jù)可在如下站點(diǎn)進(jìn)行搜索
- GenBank: 存放所有注釋和已被發(fā)現(xiàn)的DNA序列信息
- SRA: 存放高通量測(cè)序產(chǎn)生的短讀數(shù)據(jù)
- PDB: 蛋白3D結(jié)構(gòu)數(shù)據(jù)庫
- uniprot: 最權(quán)威的蛋白序列數(shù)據(jù)庫
- UCSC Genome Browser:脊椎動(dòng)物相關(guān)數(shù)據(jù)庫
- FlyBase: 果蠅相關(guān)數(shù)據(jù)庫
- WornBase: 蠕蟲相關(guān)數(shù)據(jù)庫
- SGD: 酵母相關(guān)數(shù)據(jù)庫
- RNA-Central: RNA相關(guān)資源匯總數(shù)據(jù)庫
- TAIR: 擬南芥相關(guān)數(shù)據(jù)庫
- EcoCyc: 大腸桿菌數(shù)據(jù)庫
- 待補(bǔ)充
常見數(shù)據(jù)格式
GenBank格式
目前測(cè)序數(shù)據(jù)最常儲(chǔ)存的格式為GenBank, FASTA和 FASTQ。前兩者經(jīng)常表示策劃的序列信息(curated sequence information)。FASTQ格式表示的是從測(cè)序儀器中獲得的實(shí)驗(yàn)數(shù)據(jù)。
GenBank是最古老的生物信息數(shù)據(jù),最早是用來搭建人類可讀和機(jī)器高效利用之間的橋梁,格式稱為固定寬度格式,前10個(gè)字符為標(biāo)識(shí),后面則是相應(yīng)信息:
LOCUS AF086833 18959 bp cRNA linear VRL 13-FEB-2012
DEFINITION Ebola virus - Mayinga, Zaire, 1976, complete genome.
ACCESSION AF086833
VERSION AF086833.2 GI:10141003
KEYWORDS .
SOURCE Ebola virus - Mayinga, Zaire, 1976 (EBOV-May)
ORGANISM Ebola virus - Mayinga, Zaire, 1976
Viruses; ssRNA viruses; ssRNA negative-strand viruses;
Mononegavirales; Filoviridae; Ebolavirus.
REFERENCE 1 (bases 1 to 18959)
AUTHORS Bukreyev,A.A., Volchkov,V.E., Blinov,V.M. and Netesov,S.V.
TITLE The VP35 and VP40 proteins of filoviruses. Homology between Marburg
and Ebola viruses
JOURNAL FEBS Lett. 322 (1), 41-46 (1993)
PUBMED 8482365
REFERENCE 2 (bases 1 to 18959)
AUTHORS Volchkov,V.E., Becker,S., Volchkova,V.A., Ternovoj,V.A.,
Kotov,A.N., Netesov,S.V. and Klenk,H.D.
TITLE GP mRNA of Ebola virus is edited by the Ebola virus polymerase and
by T7 and vaccinia virus polymerases
GenBank格式的優(yōu)勢(shì)在于可讀,但是對(duì)于數(shù)據(jù)分析而言不太合適,ReadSeq 可以將將GenBank格式轉(zhuǎn)換為比較簡單的版本。
RefSeq,The NCBI Reference Sequence,項(xiàng)目提供了大多數(shù)生物的序列記錄和相應(yīng)的信息,為醫(yī)學(xué),功能和比較分析提供了基準(zhǔn)線。
FASTA格式
定義:第一行為>開頭,表示為fasta記錄開始,隨后緊跟序列
問題: 缺乏定義,過于簡單
注意:
- 序列行不應(yīng)太長,
- 不同工具對(duì)序列行中的超出字符集(核酸ATCG或蛋白質(zhì)20種)處理不同
- 序列行如果有多行,除最后一行,前幾行應(yīng)該是等寬的
- 使用大寫字母。不同工具會(huì)有大小寫敏感。如有些工具會(huì)認(rèn)為小寫字母是非重復(fù),大寫字母象征著重復(fù)區(qū)域。
- 不同機(jī)構(gòu)對(duì)>后面的結(jié)構(gòu)有各自的定義
小寫字母可能表示重復(fù)區(qū),但是目前還是很難判斷哪些是重復(fù)區(qū)。
注lastz
默認(rèn)過濾小寫字母(重復(fù)區(qū))
FASTQ格式
FASTQ可以算是FASTA的增加堿基質(zhì)量版本,很久之前是單行表示所有數(shù)據(jù),目前是通過4行進(jìn)行表示,形如:
@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
其中第四行是描述堿基質(zhì)量,通常可以按照如下這樣認(rèn)為
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI
| | | | | | | | |
0....5...10...15...20...25...30...35...40
| | | | | | | | |
worst................................best
注:
- 目前有許多中FASTQ質(zhì)量編碼版本:有+33, +64兩類。以!為0的是,+33,以@開頭的是+64
- FASTQ開頭的定義也有多個(gè)版本見維基百科
FATA/Q 格式操作
為了更好的熟悉FASTA/Q,最好的的方法就是用SeqKit
對(duì)他們進(jìn)行一波處理,一探究竟。
# 安裝軟件
conda install seqkit # for linux
brew install seqkit # for mac
# 下載數(shù)據(jù)
wget http://data.biostarhandbook.com/reads/duplicated-reads.fq.gz
wget ftp://ftp.ncbi.nih.gov/refseq/release/viral/viral.1.1.genomic.fna.gz
wget ftp://ftp.ncbi.nih.gov/refseq/release/viral/viral.1.protein.faa.gz
我們用seqkit解決如下問題:
- 了解概況
$ seqkit stat *.gz
file format type num_seqs sum_len min_len avg_len max_len
duplicated-reads.fq.gz FASTQ DNA 15,000 1,515,000 101 101 101
viral.1.1.genomic.fna.gz FASTA DNA 8,557 212,624,336 200 24,848 2,473,870
viral.1.protein.faa.gz FASTA Protein 253,637 64,758,934 5 255.3 8,960
- GC含量
seqkit fx2tab --name --only-id --gc viral.1.*fna.gz | head -n 1
NC_021865.1 40.94
- 獲取子集, 抽樣
# 隨機(jī)獲取id
seqkit sample --proportion 0.001 duplicated-reads.fq.gz | seqkit seq --only-id --name > id.txt
# 根據(jù)ID獲取序列
seqkit grep --pattern-file id.txt duplicated-reads.fq.gz > duplicated-reads.subset.fq
官方列舉出更多的用法,這里不一一贅述, 詳見http://bioinf.shenwei.me/seqkit/
自動(dòng)化數(shù)據(jù)下載
這里的自動(dòng)化意味著不經(jīng)由瀏覽器查找數(shù)據(jù),而是利用命令行根據(jù)物種名或者項(xiàng)目號(hào)解析下載鏈接并獲取相關(guān)數(shù)據(jù)的過程。
數(shù)據(jù)下載
所謂“巧婦難為無米之炊”,在數(shù)據(jù)分析之前得要保證要有數(shù)據(jù)。 絕大部分的數(shù)據(jù),如參考基因組,高通量測(cè)序結(jié)果可以在如下網(wǎng)站獲取
- NCBI web: https://www.ncbi.nlm.nih.gov/
- NCBI FTP: ftp://ftp.ncbi.nlm.nih.gov/
- Ensembl web: http://useast.ensembl.org/index.html
- Ensembl FTP: ftp://ftp.ensembl.org/pub/release-86/
- Biomart: http://www.ensembl.org/biomart/martview/
- UCSC Downloads: http://hgdownload.cse.ucsc.edu/downloads.html
- UCSC FTP: ftp://hgdownload.cse.ucsc.edu/goldenPath/
下載SRA數(shù)據(jù)
當(dāng)然目前最常接觸的數(shù)據(jù)是二代測(cè)序數(shù)據(jù)。隨著測(cè)序價(jià)格下降,大家動(dòng)不動(dòng)就來一波高通量測(cè)序,然后為了可重復(fù)就需要把數(shù)據(jù)上傳到專門的服務(wù)器。NCBI為了管理這些數(shù)據(jù),就專門搞了Short Read Archive,還專門搞出了一個(gè)SRA格式用于壓縮數(shù)據(jù),當(dāng)然這個(gè)SRA格式被吐槽的很慘。這個(gè)項(xiàng)目本身的組織方式還是非常棒的
- NCBI BioProject: 以PRJN開頭,例如PRJNA257197,通常是一個(gè)研究項(xiàng)目的介紹
- NCBI BioSample: 以SAMN/SRS開頭, 通常是介紹材料的來源
- SRA Experiment: 以SRX開頭, 一個(gè)特定樣本的單獨(dú)的測(cè)序文庫
- SRA Run: 以SRR/ERR開頭,只有這個(gè)才真正存放數(shù)據(jù),只有之中序列號(hào)才能用于下載。
給定一個(gè)ID, 就可以在https://www.ncbi.nlm.nih.gov/sra或https://www.ebi.ac.uk/ena進(jìn)行檢索,然后用SRAtoolkit或者是curl進(jìn)行下載。
SRAtoolkit下載的數(shù)據(jù)來自于NCBI,需要進(jìn)一步用fastq-dump解壓縮。如果不想解壓縮的話,就去EBI里進(jìn)行檢索,這里面的數(shù)據(jù)僅僅經(jīng)過gzip壓縮,下載后直接可以分析。
舉個(gè)例子,比如說我拿到了一個(gè)項(xiàng)目號(hào)SRP113349
, 我先去NCBI的SRA中進(jìn)行檢索,得到如下子結(jié)果。
為了獲得SRR序列號(hào),我根據(jù)需求選擇了第一個(gè),并且找到了目標(biāo)序列號(hào)SRR5860104
可以直接用sratoolkit的prefetch進(jìn)行下載。
既然我們只需要得到SRR開頭的序列號(hào),其實(shí)完全沒有必要去打開網(wǎng)頁一個(gè)個(gè)翻查,一點(diǎn)都不geek.
使用Entrez檢索NCBI
目前NCBI提供了數(shù)據(jù)存儲(chǔ),分類以及幾乎所有生命科學(xué)相關(guān)的信息。為了便于管理這些數(shù)據(jù),NCBI使用了Entrez作為其主要的文本檢索和提取工具,用于搞定文獻(xiàn),DNA,蛋白,基因組,基因變異等信息檢索。NCBI為了方便用戶使用,開放了專門的API,并且為這個(gè)API還做了一個(gè)命令行工具,叫做Entrez Direct
,安裝方法如下
#通用方法
cd ~
/bin/bash
perl -MNet::FTP -e \
'$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1);
$ftp->login; $ftp->binary;
$ftp->get("/entrez/entrezdirect/edirect.tar.gz");'
gunzip -c edirect.tar.gz | tar xf -
rm edirect.tar.gzbuiltin exit export PATH=$PATH:$HOME/edirect >& /dev/null || setenv PATH "${PATH}:$HOME/edirect"
./edirect/setup.sh
echo "export PATH=\$PATH:\$HOME/edirect" >> $HOME/.bash_profile
# Mac OS
brew install edirect
# conda
conda install entrez-direct
一共提供了8個(gè)命令
- esearch : 給定詞條(term)對(duì)某一個(gè)數(shù)據(jù)庫進(jìn)行檢索
- elink: 在esarch的前提下,找到其他相關(guān)數(shù)據(jù)
- efilter: 對(duì)之前的結(jié)果進(jìn)行過濾
- efetch : 按照給定的格式下載數(shù)據(jù)
- xtract : 將XML轉(zhuǎn)變成表格格式
- einfo : 獲取
- epost: 上傳數(shù)據(jù)
- nquire: 向網(wǎng)頁或CGI服務(wù)器發(fā)送URL請(qǐng)求
具體的使用方法見 Entrez Direct: E-utilities on the UNIX Command Line, 提供了詳細(xì)的實(shí)例。這里介紹如何使用esearch
根據(jù)文章上傳的項(xiàng)目獲取下載所需的SRR號(hào)。
esearch -db sra -query SRP113349
# 結(jié)果顯示有8個(gè)結(jié)果, 可以通過efetch獲取這個(gè)8個(gè)結(jié)果,保存為CSV
esearch -db sra -query SRP113349 | efetch -format runinfo > info.csv
# CSV 的第一列就是SRR
cat info.csv | cut -d ',' -f 1 | head -n 5
# 結(jié)合xargs直接完成所有數(shù)據(jù)下載
cat info.csv | cut -d ',' -f 1 | xargs -i prefetch {}
從此又降低打開網(wǎng)頁的必要性,不需要點(diǎn)擊那么多下,直接搞定所有項(xiàng)目數(shù)據(jù)下載。
數(shù)據(jù)上傳
目前還未涉及到上傳數(shù)據(jù),僅僅列出不同數(shù)據(jù)上傳對(duì)應(yīng)的網(wǎng)站:
- Sequence Read Archive (SRA)
- Gene Expression Omnibus (GEO)
- Database of Short Genetic Variations (dbSNP)
- Database of Genomic Structural Variations (dbVar)
- Database of Expressed Sequence Tags (dbEST)
- Transcriptome Shotgun Assembly Sequence Database (TSA)
- Whole Genome Shotgun Submissions (WGS)
- Metagenomes
- GenBank
- Genomes
簡而言之:高通量測(cè)序結(jié)果上傳SRA,功能基因組學(xué)數(shù)據(jù)如RNA-SEQ,CHIP-SEQ上傳GEO,變異特異性數(shù)據(jù)上傳dbSNP,轉(zhuǎn)錄本組裝結(jié)果為TSA,其他可以傳到GenBank等