引用我們:Haoyu Chao,Zhuojin Li,Dijun Chen,Ming Chen,iSeq:獲取公共定序資料的整合工具,生物資訊學,2024;,btae641,https://doi.org/10.1093/bioinformatics/btae641
iSeq是一個 Bash 腳本,可讓您從GSA 、 SRA 、 ENA和DDBJ資料庫下載定序資料和元資料。請參閱 iSeq 的詳細管道。這是 iSeq 的基本流程:
重要的
要使用 iSeq,您的系統必須連接到網路並支援 FTP、HTTP 和 HTTPS 協定。
-s
、 --speed
選項用於設定下載速度限制 (MB/s)(預設值:1000 MB/s)。如iseq -i SRR7706354 -s 10
sra-tools=2.11
更新為sra-tools>=2.11.0
。用於合併 FASTQ 檔案的新-e
選項:新增了-e
選項,用於將每個Experiment (-e ex)
、 Sample (-e sa)
或Study (-e st)
的多個FASTQ 檔案合併為一個文件。
用於輸入的新-i
選項: iSeq
現在可以接受包含多個登錄號的file
作為-i fileName
的輸入。
GSA 元資料下載的 API 變更:用於下載 GSA 元資料的 API 端點已從getRunInfo
更新為getRunInfoByCra
。
將結果儲存到個人目錄:輸出結果現在將透過-o
選項儲存在使用者的個人目錄中。
更新了 SAMC 符合的正規表示式:SAMC 的符合模式已從SAMC[AZ]?[0-9]+
變更為SAMC[0-9]+
。
修復一些錯誤
conda install bioconda::iseq
# Use the following command to check whether dependent software is installed
iseq --version
iseq -i PRJNA211801
-a
進行批次下載,使用-g
直接下載 gzip 格式的 FASTQ 檔案。 iseq -i SRR_Acc_List.txt -a -g
$ iseq --help
Usage:
iseq -i accession [options]
Required option:
-i, --input [text|file] Single accession or a file containing multiple accessions.
Note: Only one accession per line in the file, all accessions must be from the same database.
Optional options:
-m, --metadata Skip the sequencing data downloads and only fetch the metadata for the accession.
-g, --gzip Download FASTQ files in gzip format directly (*.fastq.gz).
Note: if *.fastq.gz files are not available, SRA files will be downloaded and converted to *.fastq.gz files.
-q, --fastq Convert SRA files to FASTQ format.
-t, --threads int The number of threads to use for converting SRA to FASTQ files or compressing FASTQ files (default: 8).
-e, --merge [ex|sa|st] Merge multiple fastq files into one fastq file for each Experiment, Sample or Study.
-d, --database [ena|sra] Specify the database to download SRA sequencing data (default: ena).
Note: new SRA files may not be available in the ENA database, even if you specify "ena".
-p, --parallel int Download sequencing data in parallel, the number of connections needs to be specified, such as -p 10.
Note: breakpoint continuation cannot be shared between different numbers of connections.
-a, --aspera Use Aspera to download sequencing data, only support GSA/ENA database.
-s, --speed int Download speed limit (MB/s) (default: 1000 MB/s).
-o, --output text The output directory. If not exists, it will be created (default: current directory).
-h, --help Show the help information.
-v, --version Show the script version.
-i
, --input
輸入要下載的資料,也可以輸入包含多個材料的檔案(檔案中每行只能一個材料,所有材料必須來自同一個資料庫)。
iseq -i PRJNA211801
首先, iSeq將檢索加入的元數據,然後繼續下載其中包含的每個運行。
目前支援來自以下5個資料庫的6種登入格式,支援的登入前綴如下:
資料庫 | 生物計劃 | 學習 | 生物樣本 | 樣本 | 實驗 | 跑步 |
---|---|---|---|---|---|---|
總務局 | PRJC | 加拿大稅務局 | 山姆公司 | 克雷克斯 | CRR | |
安全研究協會 | PRJNA | 建議零售價 | 薩姆尼 | SRS | SRX | SR |
埃納 | PRJEB | 企業資源計劃 | 相同的 | 急診室 | ERX | 犯錯 |
東德巴傑 | 普吉資料庫 | 資料復原計劃 | 薩姆迪 | DRS | 不連續接收 | 減少災害風險 |
地球軌道 | 通用電氣工程師協會 | 全球行動通訊系統 |
另外,對於GEO資料庫中的兩種資料格式( GSE/GSM
),它將直接檢索關聯的PRJNA/SAMN
,然後繼續取得包含的Runs並下載定序資料。因此,本質上,它仍然從SRA資料庫下載定序資料。
以下是一些範例:
加入類型 | 前綴 | 例子 |
---|---|---|
生物計劃 | PRJEB、PRJNA、PRJDB、PRJC、GSE | PRJEB42779、PRJNA480016、PRJDB14838、PRJCA000613、GSE122139 |
學習 | ERP、DRP、SRP、CRA | ERP126685、DRP009283、SRP158268、CRA000553 |
生物樣本 | SAMD、SAME、SAMN、SAMC | SAMD00258402、SAMEA7997453、SAMN06479985、SAMC017083 |
樣本 | ERS、DRS、SRS、GSM | ERS5684710、DRS259711、SRS2024210、GSM7417667 |
實驗 | ERX、DRX、SRX、CRX | ERX5050800、DRX406443、SRX4563689、CRX020217 |
跑步 | ERR、DRR、SRR、CRR | ERR5260405、DRR421224、SRR7706354、CRR311377 |
綜上所述,無論您加入的六個選項中的資料格式如何,它最終都會下載並檢查每個包含的Run的MD5值。如果MD5值與公共資料庫中的MD5值不匹配,則會嘗試最多三輪重新下載。如果經過三次嘗試下載並驗證成功,則檔案名稱將儲存在success.log
中;否則,如果下載失敗,檔案名稱將儲存在fail.log
中。
-m
, --metadata
僅下載記錄的樣本信息,跳過測序數據的下載。
iseq -i PRJNA211801 -m
iseq -i CRR343031 -m
因此,無論是否使用-m
參數,都會取得到加入的樣本資訊。如果無法檢索元數據, iSeq程式將退出,而不繼續進行後續下載。
筆記
註1 :如果檢索到的登錄號在SRA/ENA/DDBJ/GEO資料庫中, iSeq將先在ENA資料庫中檢索。如果可以檢索樣本信息,它將透過 ENA API 下載TSV
格式的元數據,通常包含 191 列。但SRA資料庫中最近發布的一些數據可能無法及時同步到ENA資料庫。因此,如果無法從ENA資料庫取得元數據, iSeq將透過SRA資料庫後端直接下載CSV
格式的元數據,通常包含30列。為了保持與 TSV 格式的一致性,將使用sed -i 's/,/t/g'
將其轉換為 TSV 格式。但是,如果單一欄位包含逗號,則可能會導致列亂序。最終,您將獲得名為${accession}.metadata.tsv
的範例資訊。
筆記
註2 :如果檢索到的登入資訊在GSA資料庫中, iSeq將透過GSA的getRunInfo介面取得樣本信息,下載CSV
格式的元數據,通常包含25列。上面獲得的元資料將保存為${accession}.metadata.csv
。為了補充更詳細的元資料訊息,iSeq 會透過 GSA 的 exportExcelFile 介面自動取得入庫所屬項目的元資料訊息,下載XLSX
格式的元數據,一般有 3 張: Sample
、 Experiment
、 Run
。最終的元資料資訊將保存為${accession}.metadata.xlsx
。總之,您最終將獲得名為${accession}.metadata.csv
和CRA*.metadata.xlsx
的樣本資訊。
-g
, --gzip
直接下載gzip格式的FASTQ檔。如果無法直接下載,則會下載 SRA 檔案並使用多執行緒分解和壓縮將其轉換為 gzip 格式。
iseq -i SRR1178105 -g
由於直接儲存在GSA資料庫中的資料格式大多是 gzip 格式,因此如果要擷取的記錄來自 GSA 資料庫,無論是否使用-g
參數,都可以直接下載 gzip 格式的 FASTQ 檔案。
如果加入來自SRA/ENA/DDBJ/GEO資料庫, iSeq將首先嘗試存取 ENA 資料庫。如果它可以直接下載 gzip 格式的 FASTQ 文件,它就會這樣做;否則,它會下載SRA檔案並使用fasterq-dump
工具將其轉換為FASTQ格式,然後使用pigz
工具壓縮FASTQ文件,最終獲得gzip格式的FASTQ檔案。
提示
parallel-fastq-dump 還可以將 SRA 轉換為 gzip 壓縮的 FASTQ 文件,通常比fasterq-dump + pigz
快2-3 倍。但考慮到IO限制, iSeq
目前不支援parallel-fastq-dump
。
-q
, --fastq
下載SRA檔案後,它們將被分解為多個未壓縮的FASTQ檔案。
iseq -i SRR1178105 -q
只有當加入來自SRA/ENA/DDBJ/GEO資料庫且下載的檔案為SRA檔案時,此參數才有效。下載SRA檔案後, iSeq將使用fasterq-dump
工具將其轉換為FASTQ檔案。此外,您可以使用-t
參數指定要轉換的執行緒數。
筆記
註1 : -q
對於下載單細胞數據特別有用,特別是對於scATAC-Seq數據,因為它可以有效地將文件分解為四個部分: I1
, R1
, R2
, R3
。但是,如果透過-g
參數直接下載FASTQ文件,則只會獲得R1
和R3
文件(例如SRR13450125),這可能會導致後續資料分析時出現問題。
筆記
註2 :當-q
和-g
一起使用時,首先會下載SRA文件,然後使用fasterq-dump
工具將其轉換為FASTQ
文件,最後使用pigz
將其壓縮為gzip格式。它不會直接下載gzip格式的FASTQ
文件,這對於獲取全面的單細胞數據非常有用。
-t
, --threads
指定用於將 SRA 檔案解壓縮為 FASTQ 檔案或壓縮 FASTQ 檔案的執行緒數。預設值為8
。
iseq -i SRR1178105 -q -t 10
考慮到定序資料檔案一般較大,可以使用-t
參數指定分解的執行緒數。然而,更多的執行緒不一定意味著更好的效能,因為過多的執行緒可能會導致CPU或IO負載過高,特別是fasterq-dump
會消耗大量的IO,可能會影響其他任務的執行。根據基準評估,我們建議最大執行緒數為 15。
-e
, --merge
將每個實驗 ( ex
)、樣本 ( sa
) 或研究 ( st
) 的多個 FASTQ檔案合併為一個 FASTQ檔案。
iseq -i SRX003906 -g -e ex
儘管在大多數情況下,一個實驗僅包含一次運行,但某些定序資料可能在一個實驗中包含多個運行(例如,SRX003906、CRX020217)。因此,您可以使用-e
參數將實驗中的多個 FASTQ 檔案合併為一個。考慮到雙端定序,需要同時合併fastq_1
和fastq_2
文件,並且相應行中的序列名稱需要保持一致, iSeq將按照相同的順序合併多個FASTQ檔案。最終,對於單端定序數據,會產生單一檔案SRX*.fastq.gz
,對於雙端定序數據,會產生兩個檔案SRX*_1.fastq.gz
和SRX*_2.fastq.gz
。
筆記
註1 :如果加入的是運行ID ,則不能使用-e
參數(見下文)。目前, iSeq支援合併gzip 壓縮和未壓縮的 FASTQ文件,但不支援合併BAM 檔案和 tar.gz檔案等文件。
-e ex
:將同一實驗的所有 fastq 檔案合併為一個 fastq 檔案。接受的加入格式: ERX, DRX, SRX, CRX
。-e sa
:將相同Sample的所有 fastq 檔案合併為一個 fastq 檔。接受的加入格式: ERS, DRS, SRS, SAMC, GSM
。-e st
:將同一Study的所有fastq檔合併為一個fastq檔。接受的加入格式: ERP, DRP, SRP, CRA
。 筆記
註2 :通常,當一個實驗只包含一次運行時,相同的運行應具有相同的前綴。例如, SRR52991314_1.fq.gz
和SRR52991314_2.fq.gz
具有相同的前綴SRR52991314
。在這種情況下, iSeq會直接將它們重新命名為SRX*_1.fastq.gz
和SRX*_2.fastq.gz
。但是,也有例外,例如在 CRX006713 中,執行CRR007192
包含具有不同前綴的檔案。在這種情況下, iSeq會將它們重新命名為SRX*_original_filename
,例如,它們將重新命名為CRX006713_CRD015671.gz
和CRX006713_CRD015672.gz
。
-d
, --database
指定下載SRA檔案的資料庫,支援ENA和SRA資料庫。
iseq -i SRR1178105 -d sra
預設情況下, iSeq會自動偵測可用的資料庫,因此通常不需要指定-d
參數。但是,某些 SRA 檔案可能會從 ENA 資料庫下載緩慢。在這種情況下,您可以透過指定-d sra
強制從 SRA 資料庫下載。
筆記
注意:如果在ENA資料庫中沒有找到對應的 SRA 文件,即使指定了-d ena
參數, iSeq仍然會自動切換到從SRA資料庫下載。
-p
, --parallel
啟用多線程下載並需要指定線程數。
iseq -i PRJNA211801 -p 10
考慮到wget
在某些情況下可能會很慢,可以使用-p
參數讓iSeq利用axel
工具進行多執行緒下載。
筆記
註1 :多執行緒下載的斷點續傳功能僅在同一執行緒內有效。也就是說,如果第一次下載使用了-p 10
參數,第二次下載也必須使用該參數才能實現斷點下載。
筆記
註 2 :如前所述, iSeq將在整個下載過程中維持 10 個連線。因此,您將在下載過程中看到多次彈出相同的Connection * finished
。這是因為有些連線在下載完成後立即釋放,然後建立新的連線進行下載。
-a
, --aspera
使用 Aspera 進行下載。
iseq -i PRJNA211801 -a -g
由於Aspera的下載速度較快,因此您可以使用-a
參數指示iSeq使用ascp
工具進行下載。遺憾的是,Aspera 下載目前僅受 GSA 和 ENA 資料庫支援。 NCBI SRA資料庫無法使用 Aspera 下載,因為它主要使用 Google Cloud 和 AWS Cloud 技術以及其他原因,請參閱避免使用 ascp。
筆記
註1 :訪問GSA資料庫時,如果有華為雲的下載鏈接,即使使用-a
參數, iSeq也會優先透過華為雲下載。這是因為華為雲端提供更快、更穩定的下載速度。因此,下載GSA資料時,建議使用-a
參數。這樣在無法存取華為雲的情況下,透過Aspera通道下載還是比較快的。否則,您將不得不透過wget
或axel
下載,這是較慢的方法。
筆記
註2 :由於Asper
a需要密鑰文件, iSeq會自動在conda
環境或~/.aspera
目錄中搜尋密鑰檔案。如果未找到金鑰文件,則無法下載。
-o
, --output
輸出目錄。如果不存在,將建立它(預設:目前目錄)。
-s
, --speed
Wget
、 AXEL
和Aspera
的下載速度限制 (MB/s)(預設:1000 MB/s)。
輸出 | 描述 |
---|---|
SRA 文件 | 可以使用-q 選項轉換為 FASTQ 文件 |
.元數據.tsv | 用於查詢加入的元數據 |
成功日誌 | 儲存下載成功的SRA檔名 |
失敗日誌 | 儲存已下載的SRA檔名失敗 |
輸出 | 描述 |
---|---|
GSA 文件 | 大部分是*.gz格式,也有少數是bam/tar/bz2格式 |
.元資料.csv | 用於查詢加入的元數據 |
.元資料.xlsx | 項目元數據,包括 xlsx 格式的查詢加入 |
成功日誌 | 儲存下載成功的GSA檔名 |
失敗日誌 | 儲存已下載的GSA檔名失敗 |
iSeq 的靈感來自於fastq-dl、fetchngs、pysradb、Kingfisher 。這些優秀的工具也可能非常有幫助。以下是不同軟體的多重比較:
軟體名稱 | 程式語言 | 支援的資料庫 | 支持的加入品 | 支援的格式 | 支持的方法 | 取得元數據 | MD5檢查 | 可斷點下載 | 平行下載 | 合併FASTQ | 跳過下載 | 可安裝康達 | 網址 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
定序儀 | 殼 | GSA、SRA、ENA、DDBJ、GEO | 全部 | fq、fq.gz、sra、bam | wget、阿克塞爾、阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ? |
邊緣渦輪 | C | 總務局 | 全部被否認 | fq、fq.gz、bam | 邊緣渦輪下載 | ✔ | ? | ||||||
SRA 工具包 | C | SRA、ENA、DDBJ | 所有期望運行 ID 均被拒絕 | fq、fq.gz、sra | 預取 | ✔ | ✔ | ✔ | ✔ | ? | |||
enaBrowser工具 | Python | SRA、ENA、DDBJ | 除 GSA/GEO ID 之外的所有內容 | fq、fq.gz、sra | urllib、阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
fastq-dl | Python | SRA、ENA、DDBJ | 除 GSA/GEO ID 之外的所有內容 | fq、fq.gz、sra、sra.lite | 獲取 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
獲取 | Python | SRA、ENA、DDBJ、GEO | 除 GSA ID 外的所有內容 | fq, fq.gz | wget、aspera、預取 | ✔ | ✔ | ✔ | ✔ | ? | |||
pysradb | Python | SRA、ENA、DDBJ、GEO | 除 GSA ID 外的所有內容 | fq、fq.gz、sra、bam | 請求,阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
翠鳥 | Python | SRA、ENA、DDBJ | 除 GSA/GEO ID 之外的所有內容 | fq、fq.gz、sra | 捲曲、aria2c、阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
FFQ | Python | SRA、ENA、DDBJ、GEO | 除 GSA ID 外的所有內容 | fq、fq.gz、sra、bam | 要求 | ✔ | ✔ | ✔ | ? |
歡迎為iSeq做出貢獻!如果您有任何建議、錯誤報告或功能請求,請在專案的 GitHub 儲存庫上提出問題。如果您想貢獻程式碼,請分叉儲存庫,進行更改並提交拉取請求。
引用我們:https://doi.org/10.1101/2024.05.16.594538
該項目已獲得 MIT 許可證的許可。