SRA-Toolkits安装与使用

1,042 阅读13分钟

一、安装sra-tools

# 创建conda虚拟环境
conda create -y -n sra-tools
# 激活虚拟环境
conda activate sra-tools
# conda命令安装sra-tools
conda install -c bioconda sra-tools
# 查看核心工具版本
prefetch --version
fastq-dump --version
fasterq-dump --version

二、下载数据测试

# 使用prefetch下载数据
prefetch SRR26374704

# 报错
2023-10-26T02:44:37 prefetch.3.0.8 sys: encryption failed while validating token within cryptographic module - Verification issue 0x4 for this certificate: (  cert. version     : 3  serial number     : 02:E4:E1:54:AC:4F:1E:7F:57:A8:6B:6C:67:A4:EB:5D  issuer name       : C=US, O=DigiCert Inc, CN=DigiCert Basic RSA CN CA G2  subject name      : C=CN, ST=?????????, L=?????????, O=????????????, CN=*.jiangnan.edu.cn  issued  on        : 2023-09-26 00:00:00  expires on        : 2024-10-26 23:59:59  signed using      : RSA with SHA-256  RSA key size      : 2048 bits  basic constraints : CA=false  subject alt name  :      dNSName : *.jiangnan.edu.cn      dNSName : jiangnan.edu.cn  key usage         : Digital Signature, Key Encipherment  ext key usage     : TLS Web Server Authentication, TLS Web Client Authentication  certificate policies : ???  )
2023-10-26T02:44:37 prefetch.3.0.8 sys: mbedtls_ssl_get_verify_result for 'locate.ncbi.nlm.nih.gov' returned 0x4 ( !! The certificate Common Name (CN) does not match with the expected CN )
2023-10-26T02:44:37 prefetch.3.0.8: Current preference is set to retrieve SRA Normalized Format files with full base quality scores.

# 问题解决
找了很多解决办法均没有作用,仍然报错,最后分析报错内容,确定一定是网络的问题。
于是检查服务器网络连接,能够远程连接服务器,证明服务器一定是连接了网络的,检查发现确实如此;
但是尝试连接外网发现无法连接;
最后检查发现是因为校园网额度已经用完,所以网络即使是连接的,但是并不能连接外网,也就无法下载数据了。

三、Prefetch帮助信息

# 用法:

prefetch [选项] <SRA 访问号>
下载SRA文件

prefetch [选项] --cart <kart 文件>
下载kart文件

prefetch [选项] <URL> --output-file <文件>
下载URL到文件

prefetch [选项] <URL> [...] --output-directory <目录>
下载URL到目录

prefetch [选项] <SRA 文件> [...]
检查SRA文件以查找确实的依赖项并下载它们

# 选项:
-T|--type <值>            指定要下载的文件类型。默认值:sra 
-t|--transport <http|fasp|both>    传输方式:其中之一:fasp;http;both [默认]。 (仅 fasp;仅 http;首先尝试 fasp (ascp),如果无法使用 fasp 进行下载,则使用 http)。 
--location <值>           数据的位置。 
1 -N|--min-size <大小>    下载的文件的最小大小(以 KB 为单位,包括在内)。 
2 -X|--max-size <大小>    下载的文件的最大大小(以 KB 为单位,不包括在内)。默认值:20G 
-f|--force <yes|no|all|ALL>    强制对象下载:其中之一:no;yes;all;ALL。 
    no [默认]:如果找到对象并且完整,则跳过下载;
    yes:即使找到并且完整,也下载它;
    all:忽略锁文件(过时的锁或正在被其他进程下载,自担风险使用!);
    ALL:忽略锁文件,重新从头开始下载。 
3 -r|--resume <yes|no>    恢复部分下载:其中之一:no;yes [默认]。 
-C|--verify <yes|no>      下载后验证:其中之一:no;yes [默认]。 
4 -p|--progress           显示下载进度。 
-H|--heartbeat <值>       以分钟为单位显示下载进度的时间间隔(0:没有进度),默认值:1 
5  --eliminate-quals      不下载 QUALITY 列(质量值信息)。 
-c|--check-all            双重检查所有 refseq。 
-S|--check-rs <yes|no|smart>    在下载文件中检查 refseq:其中之一:
    no;yes;smart [默认]。 
    Smart:跳过对大型加密的非
-sra                      文件的检查。 
-o|--order <kart|size>    下载 kart 时的顺序:其中之一:kart;size。 
   (按 kart 顺序,按文件大小:从最小开始),默认值:size。 
-R|--rows <行>            要下载的 kart 行(默认为全部)。行列表应该按顺序排列。 
--perm <路径>             JWT kart 文件的路径。 
--ngc <路径>              ngc文件的路径。 
--cart <路径>             用于读取 kart 文件。 
-a|--ascp-path <ascp-binary|private-key-file>    ascp 程序和私钥文件的路径(asperaweb_id_dsa.putty) 
--ascp-options <值>       传递给 ascp 命令行的任意选项。 
-o|--output-file <文件>   在下载单个文件时将文件写入 FILE6 -O|--output-directory <目录>    保存文件到目录/ 
7 -h|--help               输出程序的简要说明。 
8 -V|--version            显示程序的版本然后退出。 
-L|--log-level <级别>     日志级别,可以是数字或枚举字符串之一。
     其中之一:(fatal|sys|int|err|warn|info|debug) 或 (0-6)。当前/默认为 warn。 
-v|--verbose              增加程序状态消息的详细程度。多次使用以获得更多详细信息。与静音相互抵消。 
-q|--quiet                关闭程序的所有状态消息。通过使用 -v 选项来取消静音。 
--option-file <文件>      从文件中读取更多选项和参数。

四、Fastq-dump帮助信息

# 用法:
fastq-dump [选项] <路径> [<路径>...] 
fastq-dump [选项] <访问号>

# 输入:
-A|--accession <访问号> 替换文件名和 访问号(仅适用于单个表格导出) 
--table <表名> cSRA 对象内的表名,默认为 "SEQUENCE"

# 读分割:
--split-spot    将 spots 拆分为单个reads

# Spot 过滤器
-N|--minSpotId <行号>    最小 spot id 
-X|--maxSpotId <行号>    最大 spot id 
--spot-groups <[列表]>    通过 SPOT_GROUP(成员)进行过滤:name[,...] 
-W|--clip    从读中移除适配器序列

# 通用过滤器
-M|--minReadLen <长度>   通过序列长度 >= <长度> 进行过滤 
-R|--read-filter <[过滤器]>    根据 READ_FILTER 值将文件拆分为可选的过滤值: 
    pass|reject|criteria|redacted 
-E|--qual-filter    用于早期的 1000 Genomes 数据的过滤器:不包含以 >= 10N 开头或结尾的序列 
--qual-filter-1    用于当前的 1000 Genomes 数据

# 基于比对的过滤器 
--aligned    仅导出已比对的序列 
--unaligned    仅导出未比对的序列 
--aligned-region <名称[:from-to]>    根据基因组上的位置进行过滤。
    名称可以是 accession.version(例如:NC_000001.10)或文件特定名称
    (例如:"chr1""1")。"from""to" 是从 1 开始的坐标 
--matepair-distance <from-to|unknown>    根据 matepair 之间的距离进行过滤。
    使用 "unknown" 查找分布在参考之间的 matepair。
    使用 from-to 限制在同一参考上的 matepair 距离

# 针对单个读的过滤器
--skip-technical    仅导出biological reads

# 输出
-O|--outdir <路径>    输出目录,默认为当前工作目录 '.' 
-Z|--stdout    输出到标准输出,所有拆分数据合并为单个流 
--gzip    使用 gzip 压缩输出:不推荐,已弃用 
--bzip2    使用 bzip2 压缩输出:不推荐,已弃用

# 多文件选项
--split-files    将读写入单独的文件中,读编号将作为文件名的后缀 
NOTE!建议使用 `--split-3` 选项。在某些情况下,不是所有 spots 具有相同数量的读,这个选项会生成会导致大多数处理拆分对 fastq 文件的程序出错的文件 
--split-3    用于 matepair 的三路拆分。对于每个 spot,如果有两个满足过滤条件的生物学读,
    则第一个读放入 `*_1.fastq` 文件,第二个读放入 `*_2.fastq` 文件。
    如果只有一个生物学读满足过滤条件,它放入 `*.fastq` 文件中。
    所有 spot 中的其他读都被忽略。 
-G|--spot-group    按 SPOT_GROUP(成员名称)将文件拆分 
-R|--read-filter <[过滤器]>     根据 READ_FILTER 值将文件拆分为可选的过滤值:pass|reject|criteria|redacted 
-T|--group-in-dirs    拆分为子目录而不是文件 
-K|--keep-empty-files    不删除空文件

# 序列 
-C|--dumpcs <[cskey]>    使用颜色空间格式化序列(适用于 SOLiD,默认情况下),可以为 "cskey" 指定翻译 
-B|--dumpbase    使用碱基空间格式化序列(适用于除 SOLiD 以外的数据) 质量 -Q|--offset <整数> 用于质量转换的偏移量,默认为 33 
--fasta <[行宽度]>    仅生成 FASTA 格式,不包含质量值,可选的行宽度(设置为零表示不包装) 
--suppress-qual-for-cskey    抑制 cskey 的质量值 Defline -F|--origfmt Defline 仅包含原始序列名称 
-I|--readids    在 defline 中的 spot id 之后附加读 id,格式为 'accession.spot.readid' 
--helicos    Helicos 风格的 defline 
--defline-seq <格式>    用于序列的 defline 格式规范 
--defline-qual <格式>    用于质量的 defline 格式规范。格式规范是由字符和/或变量组成的字符串。

五、Fastqer-dump帮助信息

用法: 
fasterq-dump <路径> [选项] 
fasterq-dump <访问号> [选项] 

选项: 
-F|--format 格式(special, fastq,默认=fastq) 
-o|--outfile 输出文件 
-O|--outdir 输出目录 
-b|--bufsize 文件缓冲区大小,默认=1MB 
-c|--curcache 游标缓存大小,默认=10MB 
-m|--mem 排序的内存限制,默认=100MB 
-t|--temp 临时文件存放位置,默认=当前目录 
-e|--threads 线程数,默认=6 
-p|--progress 显示进度 
-x|--details 打印详细信息 
-s|--split-spot 将 spots 拆分成 reads 
-S|--split-files 将 reads 写入不同的文件 
-3|--split-3 将单个 reads 写入特殊文件 
--concatenate-reads 将整个 spots 写入一个文件 
-Z|--stdout 将输出打印到标准输出 
-f|--force 强制覆盖现有文件 
--skip-technical 跳过技术读 
--include-technical 包括技术读 
-M|--min-read-len 根据序列长度进行过滤 
--table 在 PacBio 情况下使用的 seq-table 
-B|--bases 根据碱基进行过滤 -A|--append 追加到输出文件 
--fasta 生成 FASTA 输出 
--fasta-unsorted 生成未排序的 FASTA 输出 
--fasta-ref-tbl 从 REFERENCE 表格生成 FASTA 输出 
--fasta-concat-all 连接所有行并生成 FASTA 输出 
--internal-ref 仅提取内部 REFERENCEs 
--external-ref 仅提取外部 REFERENCEs 
--ref-name 仅提取指定的 REFERENCEs 
--ref-report 列举 REFERENCEs 
--use-name 打印名称而不是序列 ID 
--seq-defline 序列的自定义 defline:$ac=访问号,$sn=spot 名称,$sg=spot 组,$si=spot ID,$ri=read ID,$rl=read 长度 
--qual-defline 质量的自定义 defline:与 seq-defline 相同 
-U|--only-unaligned 仅处理未比对的 reads 
-a|--only-aligned 仅处理已比对的 reads 
--disk-limit 明确设置磁盘限制 
--disk-limit-tmp 明确设置临时文件的磁盘限制 
--size-check 控制开关:on=执行大小检查(默认),off=不执行大小检查,only=只执行大小检查 
--ngc <路径> ngc 文件的路径 
-h|--help 输出程序的简要说明。 
-V|--version 显示程序的版本然后退出。 
-L|--log-level <级别> 日志级别,可以是数字或枚举字符串之一。
    其中之一:(fatal|sys|int|err|warn|info|debug) 或 (0-6)。当前/默认为 warn。 
-v|--verbose 增加程序状态消息的详细程度。多次使用以获得更多详细信息。与静音相互抵消。 
-q|--quiet 关闭程序的所有状态消息。通过使用-v 选项来取消静音。 
--option-file <文件> 从文件中读取更多选项和参数。

六、SRA-Tools的工具

1. fastq-dump:    用于将SRA格式的数据文件转换为FASTQ格式,以便进行后续的分析。
2. prefetch:      用于从NCBI SRA数据库下载数据文件并将其缓存到本地,以便后续的分析和处理。
3. vdb-config:    用于配置和管理SRA Toolkit的全局设置,如代理设置、缓存目录等。
4. vdb-dump:      用于提取SRA数据文件中的元数据信息和序列数据,以获取有关数据集的详细信息。
5. vdb-validate:  用于验证SRA数据文件的完整性和有效性,以确保数据没有损坏或错误。
6. vdb-sql:       提供SQL查询接口,允许用户查询SRA数据库中的数据,以便检索和过滤所需的数据集。
7. sra-stat:      用于生成有关SRA文件的统计信息,如测序深度、序列长度分布等。
8. sra-pileup:    用于创建pileup文件,该文件可用于分析与参考基因组比对的SRA数据。
9. vdb-passwd:    用于管理NCBI账户的密码,用于与NCBI的数据库进行身份验证和访问。

七、vdb-dump帮助信息

用法:
vdb-dump <path> [<path> ...] [options] 
    
选项: 
-I|--row_id_on                  打印行号 
-l|--line_feed <line_feed>      行与行之间的分隔符 
-N|--colname_off                不打印列名 
-X|--in_hex                     以十六进制形式打印数字 
-T|--table <table>              指定表名 
-R|--rows <rows>                指定要打印的行数(默认全部) 
-C|--columns <columns>          指定要打印的列数(默认全部) 
-S|--schema <schema>            指定模式名 
-A|--schema_dump                打印数据库模式 
-E|--table_enum                 枚举表名 
-O|--column_enum                枚举列名(扩展格式) 
-o|--column_enum_short          枚举列名(简短格式) 
-D|--dna_bases                  如果列匹配模式,强制为DNA碱基 
-M|--max_length <max_length>    限制行长度 
-i|--indent_width <indent_width> 指定缩进宽度 
-f|--format <format>            输出格式: 
    csv ..... 逗号分隔值,一行 
    xml ..... XML格式,无完整的XML框架 
    json .... JSON格式 
    piped ... 一个单元格一行:行号,列名: 值 
    tab ..... 一行一行,制表符分隔的值 
    fastq ... 每行4行的FASTQ格式 
    fastq1 .. 每个片段的FASTQ格式(4行) 
    fasta ... 如果可能,每个片段的FASTA格式(2行) 
    fasta1 .. 每个访问的一个FASTA记录(REFSEQ) 
    fasta2 .. 每个cSRA的参考之一的FASTA记录 
    qual .... 每行2行的QUAL格式 
    qual1 ... 如果可能,每个片段的QUAL格式(2行) 
-r|--id_range                  打印ID范围 
-n|--without_sra               不进行SRA类型翻译 
-x|--exclude <columns>         排除指定列 
-b|--boolean <1 or T>          定义如何打印布尔值(1,T) 
-j|--obj_version               请求VDB版本 
--obj_timestamp                请求对象修改日期 
-y|--obj_type                  报告对象类型 
-u|--numelem                   仅打印元素计数 
-U|--numelemsum                求元素计数总和 
--phys-blobs                   显示物理BLOB 
--vdb-blobs                    显示VDB-BLOB 
--phys                         枚举物理列 
--readable                     枚举可读列 
--idx-report                   枚举所有可用索引 
--idx-range <idx-name>         枚举一个索引的值和行范围 
--cur-cache <size>             游标缓存大小 
--output-file <filename>       将输出写入文件 
--output-path <path>           将输出写入目录 
--gzip                         使用gzip压缩输出 
--bzip2                        使用bzip2压缩输出 
--output-buffer-size <size>    输出缓冲区大小,0表示不使用缓冲区 
--disable-multithreading       禁用多线程 
1 --info                       打印运行信息 
--spotgroups                   显示斑点组 
--merge-ranges                 合并和排序行范围 
--spread                       显示整数值的分布 
-a|--append                    如果使用输出文件,则追加到输出文件 
--ngc <path>                   NGC文件的路径 
--view <view>                  视图名称 
--inspect                      查看对象内部数据使用情况 
2 -h|--help                    输出程序的简要解释 
3 -V|--version                 显示程序的版本号并退出 
-L|--log-level <level>         日志级别,可选值为数字或枚举字符串。
    可选值包括(fatal|sys|int|err|warn|info|debug)或(0-6),默认为warn。 
4 -v|--verbose                 增加程序状态消息的详细程度。多次使用以增加详细程度。与quiet相反。 
5 -q|--quiet                   关闭程序的所有状态消息。被verbose取消。 
--option-file <file>           从文件中读取更多选项和参数。

八、使用演示

prefetch下载数据

# prefetch下载数据
prefetch SRR26374699

image.png

# 使用tree检查文件
tree ../test

image.png

使用fastq-dump转换数据格式

# 使用fastq-dump转换数据格式为fastq
fastq-dump SRR26374699

image.png

# 检查文件转换结果
tree ../test

image.png

vdb-dump获取基本信息

# vdb-dump获取基本信息
vdb-dump --info SRR26374699

image.png