软件手册:Samtools 手册翻译
Samtools 是一个用于处理和分析 SAM(Sequence Alignment/Map)和 BAM(Binary Alignment/Map)格式文件的工具集。它提供了多种命令用于序列比对、格式转换、索引创建和统计分析等。
接下来我们翻译这一部分的命令说明:
samtools
命令列表好的,我们将这39条命令拆分为三部分进行说明,并为每个部分提供举例。
添加或替换读取组信息
:samtools addreplacerg -r 'ID:fish' -r 'LB:1334' -r 'SM:alpha' -o output.bam input.bam
解释:将读取组信息(ID、Library、Sample等)添加到 BAM 文件中。
示例:如果你有一个 BAM 文件 input.bam
,想为其添加样本信息 alpha
,并将结果保存为 output.bam
,可以使用此命令。
samtools ampliconclip -b bed.file input.bam
解释:基于 BED 文件中的位置信息,对 BAM 文件中的扩增子进行裁剪。
示例:将 input.bam
中的序列根据 bed.file
中定义的区域进行裁剪,生成更新后的 BAM 文件。
samtools ampliconstats primers.bed in.bam
解释:根据引物 BED 文件,生成扩增子统计信息。
示例:通过 primers.bed
中定义的引物区域,统计 in.bam
文件中的数据,常用于分析扩增子测序数据。
计算基因组覆盖范围
:samtools bedcov aln.sorted.bam
解释:计算 BAM 文件中的覆盖范围。
示例:统计 aln.sorted.bam
中每个区域的读取覆盖数,用于了解基因组覆盖情况。
samtools calmd in.sorted.bam ref.fasta
解释:基于参考基因组文件,更新或校正 BAM 文件中的 MD 标签。
示例:使用 ref.fasta
作为参考,修复或校正 in.sorted.bam
文件中的 MD 标签。
连接 BAM 文件
:samtools cat out.bam in1.bam in2.bam in3.bam
解释:将多个 BAM 文件合并为一个。
示例:将 in1.bam
、in2.bam
和 in3.bam
合并为一个新的 BAM 文件 out.bam
。
samtools collate -o aln.name_collated.bam aln.sorted.bam
解释:按读取名称整理 BAM 文件中的读取序列。
示例:将 aln.sorted.bam
按读取名称进行整理,输出为 aln.name_collated.bam
。
生成共识序列
:samtools consensus -o out.fasta in.bam
解释:从 BAM 文件生成共识序列。
示例:从 in.bam
文件中提取共识序列,并将其保存为 out.fasta
。
计算覆盖率
:samtools coverage aln.sorted.bam
解释:计算 BAM 文件的覆盖率。
示例:统计 aln.sorted.bam
中的每个基因组区域的覆盖率。
samtools cram-size -v -o out.size in.cram
解释:计算 CRAM 文件大小的摘要信息。
示例:生成 in.cram
文件的大小摘要,并输出为 out.size
。
samtools depad input.bam
解释:去除 BAM 文件中的插入位点,生成去插入位点的 BAM 文件。
示例:对 input.bam
进行处理,去除插入的位点信息。
计算读取深度
:samtools depth aln.sorted.bam
解释:计算 BAM 文件中每个位置的读取深度。
示例:统计 aln.sorted.bam
文件中每个位点的深度,常用于覆盖率分析。
samtools dict -a GRCh38 -s "Homo sapiens" ref.fasta
解释:基于参考基因组文件生成序列字典文件。
示例:生成 ref.fasta
的字典文件,包含注释信息。
生成参考基因组索引
:samtools faidx ref.fasta
解释:对参考基因组文件进行索引,生成一个 .fai
文件,方便后续快速查找。
示例:为 ref.fasta
生成索引文件 ref.fasta.fai
,便于快速检索序列。
samtools fasta input.bam > output.fasta
解释:从 BAM 文件中提取序列,并将其转换为 FASTA 格式。
示例:将 input.bam
中的序列提取并保存为 output.fasta
文件。
samtools fastq input.bam > output.fastq
解释:从 BAM 文件中提取序列,并将其转换为 FASTQ 格式。
示例:将 input.bam
文件中的序列提取并保存为 output.fastq
文件。
修复配对信息
:samtools fixmate in.namesorted.sam out.bam
解释:修复 BAM 文件中成对读取的配对信息。
示例:对按名称排序的 SAM 文件 in.namesorted.sam
进行处理,修复配对信息并输出为 BAM 文件 out.bam
。
samtools flags PAIRED,UNMAP,MUNMAP
解释:解释 BAM 文件中的 FLAG 字段,将其转换为可读形式或数值形式。
示例:解释 PAIRED
(成对读取)、UNMAP
(未比对的读取)和 MUNMAP
(下一个片段未比对)这些 FLAG 的含义。
samtools flagstat aln.sorted.bam
解释:生成 BAM 文件中的 FLAG 字段的统计信息。
示例:统计 aln.sorted.bam
文件中每个 FLAG 的数量,如成对读取、未比对读取等。
samtools fqidx ref.fastq
解释:为 FASTQ 文件生成索引。
示例:为 ref.fastq
文件生成一个 .fai
索引文件,以便快速检索序列。
打印 BAM 文件头
:samtools head in.bam
解释:打印 BAM 文件的头部信息,通常包含文件的元数据信息。
示例:打印 in.bam
文件的头部信息,用于检查文件格式或验证元数据。
samtools idxstats aln.sorted.bam
解释:从 BAM 文件的索引中获取统计信息。
示例:打印 aln.sorted.bam
文件的索引统计信息,如参考序列的长度、映射读取的数量等。
samtools import input.fastq > output.bam
解释:将 FASTQ 文件转换为未比对的 BAM 文件。
示例:将 input.fastq
文件转换为 BAM 格式并保存为 output.bam
。
samtools index aln.sorted.bam
解释:为排序后的 BAM 文件生成索引,便于快速检索特定区域的读取。
示例:为 aln.sorted.bam
生成 .bai
索引文件,允许通过参考序列位置快速查找读取。
samtools markdup in.algnsorted.bam out.bam
解释:在 BAM 文件中标记 PCR 或光学重复的读取。
示例:将 in.algnsorted.bam
文件中的重复读取标记,并将结果输出为 out.bam
。
samtools merge out.bam in1.bam in2.bam in3.bam
解释:将多个 BAM 文件合并为一个文件。
示例:将 in1.bam
、in2.bam
和 in3.bam
合并为一个 out.bam
文件,通常用于将多个样本数据合并。
samtools mpileup -f ref.fasta -r chr3:1,000-2,000 in1.bam in2.bam
解释:生成 pileup 格式的输出文件,显示指定区域内的每个碱基的覆盖情况。
示例:在 in1.bam
和 in2.bam
文件中生成参考序列 ref.fasta
的第3号染色体1,000到2,000碱基的 pileup 信息。
samtools phase input.bam
解释:处理 BAM 文件中的相位信息,将成对读取的相位信息区分开。
示例:为 input.bam
文件中的成对读取处理相位信息,帮助确定各个片段的父母来源。
samtools quickcheck in1.bam in2.cram
解释:快速检查 BAM 或 CRAM 文件是否完整,是否包含有效的头部和 EOF。
示例:快速检查 in1.bam
和 in2.cram
是否包含有效的头部和结尾标记,以确认文件完整性。
samtools reference -o ref.fa in.cram
解释:从 CRAM 文件中提取参考序列信息,生成一个参考基因组文件。
示例:从 in.cram
中提取参考序列,输出为 ref.fa
。
samtools reheader in.header.sam in.bam > out.bam
解释:用新的头部信息替换 BAM 文件的原始头部信息。
示例:用 in.header.sam
中的头部信息替换 in.bam
的头部,并将结果保存为 out.bam
。
samtools reset -o /tmp/reset.bam processed.bam
解释:重置 BAM 文件,移除比对信息和标志,生成未比对的 BAM 文件。
示例:重置 processed.bam
中的比对信息,并将结果保存到 /tmp/reset.bam
。
samtools samples input.bam
解释:列出 BAM 文件中的样本信息。
示例:显示 input.bam
文件中的所有样本名称和相关信息。
samtools sort -T /tmp/aln.sorted -o aln.sorted.bam aln.bam
解释:对 BAM 文件按照左端坐标进行排序,并输出排序后的 BAM 文件。
示例:将 aln.bam
按照坐标排序,结果保存为 aln.sorted.bam
,临时文件保存路径为 /tmp/aln.sorted
。
samtools split merged.bam
解释:根据读取组(Read Group)信息将 BAM 文件拆分成多个文件。
示例:将 merged.bam
文件按读取组信息拆分为多个 BAM 文件。
统计 BAM 文件
:samtools stats aln.sorted.bam
解释:生成 BAM 文件的统计数据,结果包括映射质量、读取长度分布等。
示例:生成 aln.sorted.bam
的统计信息,用于分析读取质量、覆盖率等。
samtools targetcut input.bam
解释:基于读取的覆盖连续性剪切 BAM 文件中的目标区域。
示例:对 input.bam
进行剪切,生成剪切后的 BAM 文件,适用于特定的克隆或扩增子测序数据。
samtools tview aln.sorted.bam ref.fasta
解释:使用基于 ncurses 的文本查看器,显示 BAM 文件中的比对信息。
示例:在终端中查看 aln.sorted.bam
中比对到参考基因组 ref.fasta
的结果,交互式查看对齐情况。
转换 SAM/BAM/CRAM 格式
:samtools view -bt ref_list.txt -o aln.bam aln.sam.gz
解释:将 SAM、BAM 或 CRAM 文件转换为另一种格式,如 BAM 转 SAM,SAM 转 BAM。
示例:将 aln.sam.gz
转换为 BAM 格式 aln.bam
,使用 ref_list.txt
文件作为参考。
好的,接下来是这段 DESCRIPTION(描述) 和 COMMANDS(命令) 部分的翻译。
Samtools
是一组用于操作 SAM(序列比对/映射)、BAM 和 CRAM 格式文件的工具。它可以在这些格式之间进行转换,还能够对文件进行排序、合并和索引,并且能够快速检索任意区域的读取信息。
Samtools
被设计为流式处理工具,它将输入文件 -
视为标准输入(stdin),将输出文件 -
视为标准输出(stdout)。因此,多个命令可以通过 Unix 管道(pipes)组合使用。Samtools
始终将警告和错误消息输出到标准错误输出(stderr)。
Samtools
还可以打开远程 FTP 或 HTTP(S) 服务器上的文件(如果文件名以 ftp://
、http://
等开头)。Samtools
会在当前工作目录中查找索引文件,若索引文件不存在,则会自动下载索引文件。除非特别要求,Samtools
不会检索整个比对文件。
如果需要索引,Samtools
会寻找附加在文件名上的索引后缀(如 in.bam.bai
),如果找不到,它会再次尝试使用没有文件名后缀的文件(如 in.bai
)。不过,如果索引位于完全不同的位置或具有不同的名称,则数据文件名和索引文件名可以通过 ##idx##
语法组合在一起。例如,/data/in.bam##idx##/indices/in.bam.bai
可明确指定数据和索引文件的位置。
每个命令都有单独的手册页面,可以通过如 man samtools-view
或使用较新的 GNU 手册页工具 man samtools view
来查看。以下是各子命令的简要语法和描述。
常见选项在**GLOBAL COMMAND OPTIONS(全局命令选项)**部分有说明。
view
samtools view [选项] in.sam|in.bam|in.cram [region...]
如果未指定选项或区域,将会输出指定输入文件(SAM、BAM 或 CRAM 格式)中的所有比对数据,并以 SAM 格式输出(默认不含头部)。
要查看 SAM、BAM 或 CRAM 文件的头部信息(header),可以使用 samtools view 命令的-H
选项。这个选项只会输出文件的头部部分
,而不会输出比对数据。
samtools view -h 6463-1t.bam|head -n 10
@HD VN:1.0 SO:unsorted
@SQ SN:1 LN:308452471
@SQ SN:2 LN:243675191
@SQ SN:3 LN:238017767
@SQ SN:4 LN:250330460
@SQ SN:5 LN:226353449
@SQ SN:6 LN:181357234
@SQ SN:7 LN:185808916
@SQ SN:8 LN:182411202
@SQ SN:9 LN:163004744
#@HD VN:1.0 SO:unsorted:头部信息,表示文件是 SAM 格式的版本 1.0,且数据未排序。
#@SQ SN:1 LN:308452471:染色体 1 的名称是 "1",长度是 308,452,471 个碱基对。
#@SQ SN:2 LN:243675191:染色体 2 的名称是 "2",长度是 243,675,191 个碱基对。
示例 1:查看所有比对数据
假设你有一个 in.bam 文件,想要查看其中所有的比对数据:
samtools view in.bam
这条命令会将 in.bam 中的所有比对信息以 SAM 格式 输出到终端。
你可以在输入文件名后指定一个或多个空格分隔的区域,以限制输出只包含那些与指定区域重叠的比对。指定区域要求输入文件已按坐标排序并生成索引。
示例 2:指定区域输出比对数据
你可以指定某个区域,比如染色体 1 的 1000 到 2000 碱基区域:
samtools view in.bam chr1:1000-2000
这条命令只会输出位于 chr1 染色体上 1000 到 2000 碱基范围内的比对信息。前提是 in.bam 文件已经按坐标排序并生成了索引文件(通常是 .bai 文件)。
此命令还可以将输出格式从 SAM 转换为 BAM 或 CRAM,因此也可以作为文件格式转换工具。不做演示
samtools tview [-p chr:pos] [-s STR] [-d display] <in.sorted.bam> [ref.fasta]
需要有索引文件
基于 ncurses 库的文本比对查看器。在查看器中,按 ?
可以查看帮助,按 g
可以从某个区域开始查看比对,例如 chr10:10,000,000
或 =10,000,000
(在查看同一参考序列时使用)。
samtools quickcheck [选项] in.sam|in.bam|in.cram [ ... ]
#例
samtools quickcheck *.bam || echo "Some files are corrupted or incomplete"
快速检查输入文件是否完整。检查文件开头是否包含有效头部(适用于所有格式),并检查文件末尾是否有完整的文件结束标记(EOF,仅适用于 BAM 格式)。
该命令不会读取文件中间的数据,因为这样会非常耗时,因此该命令无法检测到文件内部的损坏,但它可以用于在执行更复杂的任务之前检查文件是否被截断。
如果任何输入文件没有有效头部或缺少 EOF 块,该命令将以非零退出代码退出。否则,将成功退出(退出代码为 0)。
samtools head [选项] in.sam|in.bam|in.cram
打印输入文件的头部信息,且可选地输出文件的前几条比对记录。此命令始终按原样显示文件中的头部信息,且不会添加额外的 @PG 头部。
samtools index [-bc] [-m INT] aln.sam.gz|aln.bam|aln.cram [out.index]
为按坐标排序的 SAM、BAM 或 CRAM 文件生成索引,以便快速随机访问。注意,若为 SAM 文件,必须先进行 BGZF 压缩(block gzip file)。
从 Samtools 1.16 版本开始,此命令也可以接受多个比对文件名,并为它们单独生成索引。
该索引在使用 samtools view
和其他类似命令时,通过指定区域参数限制操作区域时是必需的。
如果提供了输出文件名,索引文件将保存为 out.index
。否则,对于 CRAM 文件 aln.cram
,索引文件将生成为 aln.cram.crai
;对于 BAM 或 SAM 文件,索引文件可能为 aln.bam.bai
或 aln.bam.csi
,具体取决于选择的索引格式。
sort
samtools sort [-l level] [-m maxMem] [-o out.bam] [-O format] [-n] [-t tag] [-T tmpprefix] [-@ threads] [in.sam|in.bam|in.cram]
总结:
默认情况下,samtools sort 会按坐标排序。
-n 选项用于按名称排序。
-o 选项指定输出文件。
-m 控制最大内存使用量。
-@ 选项允许使用多线程。
将比对结果按照最左端坐标进行排序,或者在使用 -n
选项时按读段名称进行排序。如果需要,会自动添加或更新适当的 @HD-SO
排序标签到头部信息中。
排序后的输出默认写入标准输出,或者在使用 -o
选项时写入指定的文件(如 out.bam
)。当比对数据不能完全放入内存时(可通过 -m
选项控制内存大小),该命令还会创建临时文件,如 tmpprefix.%d.bam
。
如果你需要按名称分组而不需要完全按字典顺序排序,可以考虑使用 samtools collate
。
需要注意的是,如果排序后的文件要用 samtools index
生成索引,必须使用默认的坐标排序,因此 -n
和 -t
选项与 samtools index
不兼容。
samtools collate [options] in.sam|in.bam|in.cram [<prefix>]
collate 命令将读段按照名称分组并打乱顺序,这是一个比完全按名称排序更快的替代方案。collate
确保具有相同名称的读段被分组在一起,但不保证组与组之间的名称顺序。
该命令输出的文件适用于任何需要将同一个模板的所有读段分组在一起的操作。
samtools idxstats in.sam|in.bam|in.cram
#$ samtools idxstats 6463-1t_reo_sort_GR.bam
1 308452471 2942955 162522
2 243675191 3234974 124714
3 238017767 1518091 40625
4 250330460 20289517 201084
5 226353449 1965540 48470
6 181357234 8769111 48916
7 185808916 13011480 218949
8 182411202 1634882 24605
9 163004744 2381199 29917
10 152435371 1000139 36766
idxstats 命令用于从输入文件的索引文件中检索并打印统计信息。输入文件应该是 BAM 文件,并且事先已经用 samtools index
命令生成了索引。
如果你运行这个命令用于 SAM 文件、CRAM 文件,或未索引的 BAM 文件,idxstats
仍然可以生成相同的统计摘要,但它会通过遍历整个文件实现,因此速度较慢。
输出为 TAB 分隔,每一行包括以下信息:
输出结果会写到标准输出。
samtools flagstat in.sam|in.bam|in.cram
#例子
srun -A 2022099 -p Debug -n 1 -N 1 samtools flagstat 6463-1t_sort_GR.bam
srun: job 1271776 queued and waiting for resources
srun: job 1271776 has been allocated resources
srun -A 2022099 -p Debug -n 1 -N 1 samtools flagstat 6463-1t_sort_GR.bam
# 输出结果:
# 65154635 + 0 in total (QC-passed reads + QC-failed reads)
# 总读取数,其中包括通过和未通过质量控制(QC)的读取数。
# 46718598 + 0 primary
# 主比对读取数,即比对到参考基因组的主要读取数。
# 18436037 + 0 secondary
# 次级比对数,这些读取不是最优比对,而是比对到其他位置的读取。
# 0 + 0 supplementary
# 补充比对数,通常指比对的一部分在其他地方映射的读取片段。
# 0 + 0 duplicates
# 标记为重复的读取数(可能是 PCR 或光学重复)。
# 0 + 0 primary duplicates
# 主比对中的重复读取数。
# 63203357 + 0 mapped (97.01% : N/A)
# 映射到参考基因组的读取数,占总读取数的 97.01%。
# 44767320 + 0 primary mapped (95.82% : N/A)
# 主比对映射的读取数,占总主比对读取数的 95.82%。
# 46718598 + 0 paired in sequencing
# 成对的测序读取数。
# 23359299 + 0 read1
# 第一个读段的读取数。
# 23359299 + 0 read2
# 第二个读段的读取数。
# 42967232 + 0 properly paired (91.97% : N/A)
# 正确配对的成对读取数,占成对测序的 91.97%。
# 43825644 + 0 with itself and mate mapped
# 自身和配对读段均映射到参考序列的读取数。
# 941676 + 0 singletons (2.02% : N/A)
# 仅自身映射的单端读取数,占比 2.02%。
# 69172 + 0 with mate mapped to a different chr
# 配对的另一端映射到不同染色体的读取数。
# 48034 + 0 with mate mapped to a different chr (mapQ>=5)
# 配对的另一端映射到不同染色体且映射质量值大于等于 5 的读取数。
flagstat 命令会完整地遍历输入文件,计算并打印统计信息到标准输出。它主要基于 FLAG 字段 中的位标志来对读取进行分类和统计。
输出包括 13 类的统计数据,每一类的结果都被分为 QC 通过 和 QC 未通过,并以 #PASS + #FAIL
的形式展示,后面附有类别描述。这些统计信息包括:
samtools flags INT|STR[,...]
#提取bam文件中的列,之后使用samtools flags
samtools view ../6463-1z_reo_sort_GR.bam | awk '{print $2}' > flags.txt
head -n 3 flags.txt
#133
#89
#99
cat flags.txt | while read flag; do samtools flags $flag; done
#0x85 133 PAIRED,UNMAP,READ2
#0x59 89 PAIRED,MUNMAP,REVERSE,READ1
#0x63 99 PAIRED,PROPER_PAIR,MREVERSE,READ1
flags 命令用于在 数字表示 和 文本表示 之间进行 FLAG 标志的转换。
常见的 FLAG 标志如下:
数值 | 文本表示 | 描述 |
---|---|---|
0x1 | PAIRED | 该片段属于成对的(或多片段)测序技术 |
0x2 | PROPER_PAIR | 每个片段都正确比对,符合比对程序的标准 |
0x4 | UNMAP | 该片段未比对 |
0x8 | MUNMAP | 模板中的下一个片段未比对 |
0x10 | REVERSE | 序列是反向互补的 |
0x20 | MREVERSE | 模板中下一个片段的序列是反向互补的 |
0x40 | READ1 | 模板中的第一个片段 |
0x80 | READ2 | 模板中的最后一个片段 |
0x100 | SECONDARY | 次级比对(不用于主比对) |
0x200 | QCFAIL | 不通过质量控制的片段 |
0x400 | DUP | PCR 或光学重复片段 |
0x800 | SUPPLEMENTARY | 补充比对(多次比对中的额外片段) |
这个命令可以用来将 FLAG 的数值转换为对应的文本描述,或者将 FLAG 的文本描述转换为对应的数值。
stats
samtools stats [options] in.sam|in.bam|in.cram [region...]
samtools stats 用于从 BAM 文件中收集统计信息,并以文本格式输出。这些统计信息可以通过 plot-bamstats 命令生成图形化的可视化结果。
示例 1:收集 BAM 文件的统计信息
假设你有一个 BAM 文件 sample.bam
,你可以使用以下命令收集其统计信息:
samtools stats sample.bam
这些信息对于评估比对文件的质量非常有帮助。
示例 2:指定基因组区域
如果你只想查看特定区域的统计信息,可以在命令中指定区域:
samtools stats sample.bam chr1:100000-200000
这条命令会只针对 chr1 染色体上 100,000 到 200,000 位置之间的比对数据生成统计结果。
输出结果解析
samtools stats
的输出是一个文本文件,包含了详细的统计信息,比如:
这些统计信息可以帮助你了解比对的覆盖度、碱基分布、质量评分等。
结合 plot-bamstats 使用
生成的统计信息可以使用 plot-bamstats
命令生成图形化展示:
plot-bamstats stats_out.txt
这将根据 samtools stats
的输出生成各种图表,直观展示比对文件的质量。
你对这些示例和解释是否清楚?如果理解了,我们可以继续探讨更多选项或其他相关命令的内容。
samtools bedcov [options] region.bed in1.sam|in1.bam|in1.cram[...]
bedcov 命令用于报告每个由 BED 文件指定的基因组区域的总读取碱基计数(即每个碱基读取深度的总和)。输出的区域按照 BED 文件中的顺序,且为 0-based(基于零的坐标系)。每个输入文件的读取计数会输出在不同的列中。
samtools depth [options] [in1.sam|in1.bam|in1.cram [in2.sam|in2.bam|in2.cram] [...]]
depth 命令计算每个位点或区域的读取深度(read depth)。可以用于查看比对文件中每个碱基位置的覆盖深度。
samtools ampliconstats [options] primers.bed in.sam|in.bam|in.cram[...]
ampliconstats 命令从一个或多个输入的比对文件中收集统计信息,并生成文本格式的表格。输出可以通过 plot-ampliconstats 图形化展示。比对文件应事先经过引物序列的剪切处理,例如通过 samtools ampliconclip
,并且这些引物的位点需要通过 BED 文件指定。
samtools mpileup [-EB] [-C capQcoef] [-r reg] [-f in.fa] [-l list] [-Q minBaseQ] [-q minMapQ] in.bam [in2.bam [...]]
mpileup 命令生成一个或多个 BAM 文件的文本格式 pileup 输出。如果需要生成 VCF 或 BCF 格式的输出,请使用 bcftools mpileup
命令。比对记录按 @RG 头部行中的样本标识符(SM)进行分组。如果没有样本标识符,每个输入文件将被视为一个单独的样本。
可以查看 samtools-mpileup
手册页,了解 pileup 格式及其选项的详细说明。
samtools consensus [options] in.bam
consensus 命令基于比对记录内容,从 SAM、BAM 或 CRAM 文件中生成共识序列。共识序列可以输出为 FASTA、FASTQ 或 pileup 形式。
默认情况下,FASTA 和 FASTQ 格式的输出会为每个非缺口的共识生成一个碱基,因此相对于参考序列的插入会包含,而缺失会被移除。这种行为可以根据需要进行调整。
提供了两种共识调用算法:
我们继续翻译这些命令的相关内容。
samtools reference [options] in.bam
samtools reference
命令基于 SAM、BAM 或 CRAM 文件中的 SEQuence 字段 和 MD:Z: 辅助标签 生成参考序列。对于 CRAM 文件,还可以从嵌入的参考序列块中生成参考序列(前提是该 CRAM 文件是在使用 embed_ref=1
选项时构建的)。
coverage
samtools coverage [options] [in1.sam|in1.bam|in1.cram [in2.sam|in2.bam|in2.cram] [...]]
samtools coverage
命令根据输入文件生成每条染色体的覆盖度直方图或表格,适用于查看不同染色体的覆盖情况。
merge
samtools merge [-nur1f] [-h inh.sam] [-t tag] [-R reg] [-b list] out.bam in1.bam [in2.bam in3.bam ... inN.bam]
samtools merge
用于合并多个已排序的比对文件,生成包含所有输入记录的单个排序输出文件,且保持原有的排序顺序。如果指定了 -h
选项,输入文件的 @SQ
头部信息将被合并到指定的头部文件中,否则这些头部信息将合并为一个复合头部文件。如果 @SQ
头部的顺序不同,输出文件可能需要在合并后重新排序。
输入文件的记录顺序必须与 -n
和 -t
选项的使用一致,否则输出顺序将是不确定的。
samtools split [options] merged.sam|merged.bam|merged.cram
samtools split
命令根据读取组(read group)将文件拆分,生成一个或多个输出文件,每个文件包含一个读取组。输出文件的前缀可以自定义,默认是基于输入文件名的前缀。
samtools cat [-b list] [-h header.sam] [-o out.bam] in1.bam in2.bam [ ... ]
samtools cat
用于连接多个 BAM 或 CRAM 文件。虽然该命令适用于 BAM 或 CRAM 文件,但所有输入文件必须使用相同的格式。输入文件的序列字典必须相同,但该命令不会进行检查。该命令使用与 reheader
类似的技巧,以实现快速的 BAM 文件连接。
samtools import [options] in.fastq [ ... ]
samtools import
将一个或多个 FASTQ 文件 转换为未比对的 SAM、BAM 或 CRAM 格式。这些格式提供了更丰富的能力来跟踪样本元数据(通过 SAM 头部)和每个读取的元数据(通过辅助标签)。你可以使用 samtools fastq
命令来逆转这个转换。
samtools fastq [options] in.bam
samtools fasta [options] in.bam
samtools fastq
和 samtools fasta
命令分别将 BAM 或 CRAM 文件转换为 FASTQ 或 FASTA 格式。根据所使用的命令生成相应格式的输出文件。如果文件名以 .gz
、.bgz
或 .bgzf
结尾,文件将自动压缩。
这些命令要求输入文件已按名称整理。你可以使用 samtools collate
或 samtools sort -n
来确保文件已按名称排列。
samtools faidx <ref.fasta> [region1 [...]]
samtools faidx
命令用于索引 FASTA 格式的参考序列,或者从已索引的参考序列中提取子序列。如果未指定区域,该命令会为文件生成索引,并在磁盘上创建
文件。如果指定了区域,则会提取子序列并以 FASTA 格式输出到标准输出。
输入文件可以采用 BGZF 格式压缩。该命令也可以读取和索引 FASTQ 文件,如果不使用 --fastq
选项,提取的子序列将以 FASTA 格式输出。
samtools fqidx <ref.fastq> [region1 [...]]
samtools fqidx
命令用于索引 FASTQ 格式的参考序列,或者从已索引的参考序列中提取子序列。如果未指定区域,该命令将索引文件并在磁盘上创建
文件。如果指定了区域,则提取的子序列会以 FASTQ 格式打印到标准输出。
输入文件可以采用 BGZF 格式压缩。该命令适用于包含少量条目的 FASTQ 文件,因为如果文件包含数百万短测序读取,生成的索引几乎与原始文件一样大,并且索引搜索会非常慢且占用大量内存。
dict
samtools dict ref.fasta|ref.fasta.gz
samtools dict
命令用于从 FASTA 文件创建序列字典文件。
samtools calmd [-Eeubr] [-C capQcoef] aln.bam ref.fasta
samtools calmd
用于生成 MD 标签。如果 MD 标签已经存在,命令会发出警告,提示生成的 MD 标签与现有标签不同。默认情况下,输出为 SAM 格式。
虽然 calmd
可以读取和写入 CRAM 文件,但在大多数情况下没有必要,因为 CRAM 会动态重新计算 MD 和 NM 标签。唯一的例外是输入和输出 CRAM 文件使用了 no_ref
选项时。
fixmate
samtools fixmate [-rpcm] [-O format] in.nameSrt.bam out.bam
samtools fixmate
命令用于填充基于名称排序的比对文件中的配对坐标、ISIZE 和 配对相关标志。
markdup
samtools markdup [-l length] [-r] [-s] [-T] [-S] in.algsort.bam out.bam
samtools markdup
命令从已经通过 samtools fixmate
处理且坐标排序的文件中标记重复比对。该命令依赖于 MC 和 ms 标签,这些标签是 fixmate
提供的。
samtools rmdup [-sS] <input.srt.bam> <out.bam>
samtools rmdup
命令已经过时,建议使用 samtools markdup
代替。
addreplacerg
samtools addreplacerg [-r rg-line | -R rg-ID] [-m mode] [-l level] [-o out.bam] in.bam
samtools addreplacerg
命令用于在文件中添加或替换读取组(read group)标签。
samtools reheader [-iP] in.header.sam in.bam
samtools reheader
命令将 in.bam 文件中的头部替换为 in.header.sam 中的头部。该命令比使用 BAM→SAM→BAM 转换来替换头部要快得多。
默认情况下,该命令将 BAM 或 CRAM 文件输出到标准输出(stdout),但对于 CRAM 格式文件,可以选择进行就地编辑,直接读取和写入同一文件。此命令不对头部的有效性进行检查,也不检查它是否适合用于与序列数据一起使用。
samtools targetcut [-Q minBaseQ] [-i inPenalty] [-0 em0] [-1 em1] [-2 em2] [-f ref] in.bam
samtools targetcut
命令通过检查读取深度的连续性来识别目标区域,计算目标的单倍体共识序列,并输出每个序列对应于目标的 SAM 文件。当使用 -f
选项时,BAQ 将被应用。该命令仅设计用于从 fosmid pool sequencing 切割 fosmid 克隆。
samtools phase [-AF] [-k len] [-b prefix] [-q minLOD] [-Q minBaseQ] in.bam
samtools phase
命令用于调用和定位异位 SNPs。
samtools depad [-SsCu1] [-T ref.fa] [-o output] in.bam
samtools depad
命令将相对于填充参考比对的 BAM 转换为相对于未填充参考的 BAM。
samtools ampliconclip [-o out.file] [-f stat.file] [--soft-clip] [--hard-clip] [--both-ends] [--strand] [--clipped] [--fail] [--no-PG] -b bed.file in.file
samtools ampliconclip
命令基于 BED 文件的数据在 SAM 兼容文件中剪切读取。
samtools samples [-o out.file] [-i] [-T TAG] [-f refs.fasta] [-F refs_list] [-X]
samtools samples
命令从比对文件中打印样本信息。
samtools reset [-o FILE] [-x/--remove-tag tag_list] [--keep-tag tag_list] [--reject-PG pgid] [--no-RG] [--no-PG] [...]
samtools reset
命令从记录中删除比对信息,生成未比对的 SAM、BAM 或 CRAM 文件。标志被重置,头部标签根据需要更新或删除,辅助标签根据指定的选项进行删除或保留。需要注意的是,排序顺序不会更改。