变异检测与统计¶
1) 从 BAM 检测变异¶
- 作用: 输出规范化、可索引查询的 VCF。
- 计算方法: bcftools 依次运行 mpileup、call 和 norm。
- API:
dnakit.bioinformatics.ngs.call_variants(bam, reference, output_directory, ploidy=2, config=None) - 输入: 已排序并索引的 BAM、带
.fai的参考 FASTA、明确的倍性;bcftools 在 PATH 中;新输出目录。 - 输出: 返回
ToolResult,包含后端backend、产物路径artifacts和运行日志log。 - 示例代码:
from dnakit.bioinformatics.ngs import call_variants
result = call_variants("aligned.bam", "reference.fa", "new_variants", ploidy=2)
print(result.artifacts["variants.vcf.gz"])
- 示例结果:
返回 ToolResult;artifacts['variants.vcf.gz'] 是压缩 VCF 路径,同时生成索引。外部程序示例未执行。
依赖与说明:FAQ。
2) 按过滤条件统计 VCF 变异数量¶
- 作用: 按过滤条件统计 VCF 变异数量。
- 处理方法: 先用 bcftools view 过滤,再用 bcftools stats 统计变异记录。
- API:
dnakit.databases.vcf_count_variants(*, operation=None, vcf_path, pass_only=None, regions=None, min_qual=None, include_expr=None, verbose=True) - 输入: 必须提供
vcf_path。 需本地 VCF/BCF 文件,且 PATH 中有bcftools。 运行前准备示例涉及的本地文件与外部程序,并将路径替换为自己的输入或输出位置。 - 输出: 返回字典,包含
status,data,metadata等字段。 - 示例代码:
import dnakit
result = dnakit.databases.vcf_count_variants(
operation='count_variants',
vcf_path='/tmp/sample.vcf.gz',
min_qual=30,
verbose=False,
)
print(result)
- 示例结果: 返回结构如下,实际记录随输入和数据源变化。
返回结构节选;<…> 表示类型占位符,非本次查询的实测数据。
3) 规范化 VCF 变异表示与多等位位点¶
- 作用: 规范化 VCF 变异表示与多等位位点。
- 处理方法: 用 bcftools norm 拆分或合并多等位位点;提供参考时左对齐,并比较前后统计。
- API:
dnakit.databases.vcf_normalize(*, operation=None, vcf_path, multiallelics=None, reference_fasta=None, verbose=True) - 输入: 必须提供
vcf_path。 需本地 VCF/BCF 文件,且 PATH 中有bcftools。 运行前准备示例涉及的本地文件与外部程序,并将路径替换为自己的输入或输出位置。 - 输出: 返回字典,包含
status,data,metadata等字段。 - 示例代码:
import dnakit
result = dnakit.databases.vcf_normalize(
operation='normalize',
vcf_path='/tmp/sample.vcf.gz',
multiallelics='split',
verbose=False,
)
print(result)
- 示例结果: 返回结构如下,实际记录随输入和数据源变化。
返回结构节选;<…> 表示类型占位符,非本次查询的实测数据。
{
"status": "success",
"data": {
"before": "<variant counts>",
"after": "<variant counts>",
"left_aligned": "<bool>",
"multiallelics": "<str>"
},
"metadata": "<dict>"
}
4) 汇总 VCF 变异类型与样本基因型统计¶
- 作用: 汇总 VCF 变异类型与样本基因型统计。
- 处理方法: 对筛选后的 VCF 调用 bcftools stats,解析变异类型和样本统计。
- API:
dnakit.databases.vcf_summary_stats(*, operation=None, vcf_path, pass_only=None, regions=None, min_qual=None, include_expr=None, verbose=True) - 输入: 必须提供
vcf_path。 需本地 VCF/BCF 文件,且 PATH 中有bcftools。 运行前准备示例涉及的本地文件与外部程序,并将路径替换为自己的输入或输出位置。 - 输出: 返回字典,包含
status,data,metadata等字段。 - 示例代码:
import dnakit
result = dnakit.databases.vcf_summary_stats(
operation='summary_stats',
vcf_path='/tmp/sample.vcf.gz',
pass_only=True,
verbose=False,
)
print(result)
- 示例结果: 返回结构如下,实际记录随输入和数据源变化。
返回结构节选;<…> 表示类型占位符,非本次查询的实测数据。
{
"status": "success",
"data": "<variant and sample statistics; filters_applied>",
"metadata": "<dict>"
}
5) 计算满足注释与频率条件的编码变异比例¶
- 作用: 计算满足注释与频率条件的编码变异比例。
- 处理方法: 以编码区变异为分母,统计满足注释及 VAF 阈值的比例。
- API:
dnakit.databases.coding_variant_fraction(*, file, vaf_threshold=None, annotation=None, header_rows=None, vaf_col=None, so_col=None, verbose=True) - 输入: 必须提供
file。 - 输出: 返回字典,包含
total_variants,vaf_filtered,coding_variants_below_vaf,matching_annotation等字段。 - 示例代码:
import dnakit
result = dnakit.databases.coding_variant_fraction(
file='/tmp/tu_variants_demo.csv',
vaf_threshold=0.3,
annotation='synonymous_variant',
header_rows=1,
verbose=False,
)
print(result)
- 示例结果: 返回结构如下,实际记录随输入和数据源变化。
返回结构节选;<…> 表示类型占位符,非本次查询的实测数据。