一、安装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 <文件> 在下载单个文件时将文件写入 FILE。
6 -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

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

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

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

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