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

背景介绍

今天要介绍的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

让子弹再飞一会儿吧。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,501评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,673评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,610评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,939评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,668评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,004评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,001评论 3 449
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,173评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,705评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,426评论 3 359
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,656评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,139评论 5 364
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,833评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,247评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,580评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,371评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,621评论 2 380

推荐阅读更多精彩内容