美文网首页
原始数据下载专题 | 用ffq下载原始测序数据

原始数据下载专题 | 用ffq下载原始测序数据

作者: 卖萌哥 | 来源:发表于2024-12-26 06:51 被阅读0次

背景介绍

今天要介绍的ffq和昨天的gget是同一个lab出品的,都是加州理工学院的pachterlab,我研究了一下这个实验室的PI,Dr. Lior Pachter,不看不知道,一看好家伙,直呼好家伙。

他参与过最早的转录组比对软件TopHat
并且他还是kallisto的通讯作者(10.1038/nbt.3519),也是cufflinks的通讯作者(10.1038/nbt.1621),总引用超过11w次,妥妥的大牛。

他去年发表的splitcode我也用过(是一个高效的用来从测序数据中拆分信息用的工具),依稀记得似乎就是因为这个软件才发现的ffqgget这两个工具。

言归正传,聊聊ffq这个软件。一句话介绍:

ffq 接收一个登录号(accession),并返回该登录号的元数据(metadata),以及通过 GEO、SRA、EMBL-EBI、DDBJ 和 Biosample 之间的连接,获取的所有下游登录号的元数据

这个软件主要是从以下的数据库里下载原始测序数据用的,属于最符合我这个专题的一集了:

  • GEO: Gene Expression Omnibus,
  • SRA: Sequence Read Archive,
  • EMBL-EBI: European Molecular BIology Laboratory’s European BIoinformatics Institute,
  • DDBJ: DNA Data Bank of Japan,
  • NIH Biosample: Biological source materials used in experimental assays,
  • ENCODE: The Encyclopedia of DNA Elements.

实现原理

ffq总体的架构图如下:
[图片上传失败...(image-5916ff-1735253481938)]

输入一个GEO数据的登录号,可以找到对应的sample的编号进而找到下面对应的实验号(Experiments)和Runs的编号,当然,也接受Studysample的编号。ENCODE的每一级编号也是支持的(当然这个我不太熟悉,有需要的朋友可以自己试试哈)

安装

conda或者pip都可以的:

conda

conda install ffq

pip

python -m pip install ffq

当前最新版的版本号是0.3.1

使用

打印出帮助文档看一眼:

ffq --help
usage: ffq [-h] [-o OUT] [-l LEVEL] [--ftp] [--aws] [--gcp] [--ncbi] [--split] [--verbose] [--version] IDs [IDs ...]

ffq 0.3.1: A command line tool to find sequencing data from SRA / GEO / ENCODE / ENA / EBI-EMBL / DDBJ / Biosample.

positional arguments:
  IDs         One or multiple SRA / GEO / ENCODE / ENA / EBI-EMBL / DDBJ / Biosample accessions, DOIs, or paper titles

optional arguments:
  -h, --help  Show this help message and exit
  -o OUT      Path to write metadata (default: standard out)
  -l LEVEL    Max depth to fetch data within accession tree
  --ftp       Return FTP links
  --aws       Return AWS links
  --gcp       Return GCP links
  --ncbi      Return NCBI links
  --split     Split output into separate files by accession (`-o` is a directory)
  --verbose   Print debugging information
  --version   show program's version number and exit

支持各大数据库,比较神奇的功能是还能根据论文的DOI号来下载数据。

一句话介绍什么是DOI号:

DOI号(数字对象标识符,Digital Object Identifier)是用于唯一标识学术论文、图书、报告等数字内容的永久链接,便于在学术领域中快速检索和引用相关资源。

DOI号就像学术论文的“身份证号”,用来标记和定位每篇论文,方便别人快速找到和引用它。

场景1:根据GEO编号查找数据下载地址

ffq --ftp  GSE241397 -o GSE241397.txt

使用起来蛮简单的,程序会返回一个很大的json列表,可以结合jq来解析(jq这个命令也可以用conda安装哈):

ffq --ftp  GSE241397 -o GSE241397.txt
cat GSE241397.txt | jq -r '.[].url'

得到

ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR257/050/SRR25724550/SRR25724550_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR257/050/SRR25724550/SRR25724550_2.fastq.gz
...
  • -r:以原始格式输出,去掉双引号。
  • .[].url:表示从 JSON 文件的每个对象中提取 url 字段的值。

如果你想同时把样品名称也整理出来,可以这样:

cat GSE241397.txt | jq -r '.[] | "\(.accession)\t\(.url)"'

就能得到

SRR25724550     ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR257/050/SRR25724550/SRR25724550_1.fastq.gz
SRR25724550     ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR257/050/SRR25724550/SRR25724550_2.fastq.gz
SRR25724549     ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR257/049/SRR25724549/SRR25724549_1.fastq.gz
...

拿到url之后就可以自己去写个循环下载了。

是的ffq是不支持内置的下载的。

这一点吧,完全不如fastq-dlgget

当然下载的时候用其他的编号也是可以的,比如SRA的Runs编号(SRR, ERR, DRR)或者Experiments编号(ERX, DRX, SRX)。

具体的列表可以看一下我前面介绍的fastq-dl工具。

萌哥碎碎念:

很好笑的是ffq居然不支持BioProject的编号,例如PRJNA483730,直接就会error,告诉你这个编号不合规。

emmm,坐等ffq更新吧。毕竟才0.3.1版本,它还是个孩子啊

场景2:根据论文的ID或者DOI号下载数据

这个功能看起来是真的蛮好的, 有的时候想要复现文章,下载数据的时候要费点功夫才能找到论文对应的数据的编号。

但是这个功能需要改进,并不是所有的论文提供DOI号都能成功。

比如我测试了我们lab之前师姐发表的论文的DOI号:

ffq  10.1101/gr.245456.118
[2024-12-26 16:12:19,226] WARNING Searching by DOI may result in missing information.
[2024-12-26 16:12:19,226]    INFO Searching for DOI '10.1101/GR.245456.118'
[2024-12-26 16:12:19,419]    INFO Searching for Study SRP with title 'Pervasive and dynamic transcription initiation in <i>Saccharomyces cerevisiae</i>'
[2024-12-26 16:12:19,963] WARNING No studies found with the given title. Searching Pubmed for DOI '10.1101/GR.245456.118'
[2024-12-26 16:12:20,293]    INFO Searching for GEO record linked to Pubmed ID '31076411'
[2024-12-26 16:12:20,571] WARNING No GEO records are linked to the Pubmed ID '31076411'. Searching for SRA record linked to this Pubmed ID.
[2024-12-26 16:12:21,828]   ERROR No SRA records are linked to Pubmed ID '31076411'
usage: ffq [-h] [-o OUT] [-l LEVEL] [--ftp] [--aws] [--gcp] [--ncbi] [--split] [--verbose] [--version] IDs [IDs ...]
ffq: error: For possible failure modes, please see https://github.com/pachterlab/ffq#failure-modes

直接就报错了。我看了一眼,他的实现原理应该是根据DOI号去查找PubmedID,然后根据PubmedID去查找与之相关的SRA或者相关的记录值。但是如果pubmed没有对应的记录,那么也就无从查起了。

但是有的论文是可以的:

ffq   10.1016/j.cell.2018.08.067

就能够查找到对应的数据,再用上面的命令一通解析,就相对轻松地得到你想要的数据啦。

萌哥碎碎念

相对于前两款软件,这个工具的能力稍弱了一点,如果下载原始数据我目前首选还是fastq-dl

让子弹再飞一会儿吧。

相关文章

网友评论

      本文标题:原始数据下载专题 | 用ffq下载原始测序数据

      本文链接:https://www.haomeiwen.com/subject/kutiejtx.html