这篇笔记整理了根据项目实战来学习variant calling(SNP和InDel)的流程。
重测序一键SOP配置参数
| 参数 | 参考格式 | 意义 |
|---|---|---|
| partition | P3 | |
| only_QC | F | |
| ref_db | /path/to/genome_db/Sus_scrofa/Ensembl_V111/03_genome/genome.fa | 参考基因组序列 |
| ref_anno | /path/to/genome_db/Sus_scrofa/Ensembl_V111/03_genome/genome.gff | 参考基因组注释 |
| ref_annotation | NA | |
| SnpEff_version | Sus_scrofa_Ensembl_V111 | |
| chr_num | 65 | 若 >65 则认为 scaffold 多,设 $link="link",否则 "no"。 |
| rmdup | T | |
| population | T | |
| tool | H | |
| node | NA | |
| interval | 30 | |
| maxFailed | 0 | |
| maxProc | 10000 | |
| INPUT | Input | |
| CLEANDATA | CleanData | |
| PROCESSDATA | ProcessData | |
| OUTPUT | Output | |
| DONE | Done | |
| SAMPLE_INFO | Sample_Info.txt | |
| data_QC_threads | 2 | |
| n_base_limit | 5 | |
| overlap_len_require | 30 | |
| length_requried | 15 | |
| map_soft | GPU | |
| mapping_threads | 4 | |
| min_seed_len | 32 | |
| sort_mem | 768M | |
| rmdup_mem | 30G | |
| max_depth | 150 | |
| numGPUs | 1 | |
| GPU | GPU2 | |
| GATK_threads | 10 | |
| GATK_mem | 20G | |
| ploidy | 2 | |
| cut_len | 5000000 | |
| cut_num | 800 | |
| QD | “QD < 2.0” | |
| QUAL | “QUAL < 30.0” | |
| SOR | “SOR > 3.0” | |
| FS | “FS > 60.0” | |
| MQ | “MQ < 40.0” | |
| MQRankSum | “MQRankSum < -12.5” | |
| ReadPosRankSum | “ReadPosRankSum < -8.0” | |
| QD_indel | “QD < 2.0” | |
| QUAL_indel | “QUAL < 30.0” | |
| FS_indel | “FS > 200.0” | |
| ReadPosRankSum_indel | “ReadPosRankSum < -20.0” | |
| SnpEff_db | /path/to/snpEff_4.3/snpEff | SnpEff 安装目录 |
| anno_mem | 80G | |
| ud | 1000 | |
| SV | T | |
| CNV | T | |
| minExpectedGC | 0.35 | |
| maxExpectedGC | 0.55 |
上述参数传递到ACGT101_Reseq.sh,保存为parameter_ACGT101_ReSeq.txt文件:
1 | |
脚本整体功能
脚本用途:
ACGT101_ReSeq_4.6_gpu.pl 是一个自动化重测序(Reseq)分析流程,基于 Slurm + Singularity 容器,在集群环境中完成从原始测序数据到变异结果与统计报告的全流程分析。支持:
- 单个体或群体重测序
- CPU 或 GPU 加速比对(Parabricks)
- GATK UnifiedGenotyper / HaplotypeCaller 两种变异检测模式
- 自动完成 SNP / InDel / SV / CNV 检测与注释,并生成各类统计图表和汇总报告。
主流程步骤
参数读取与环境准备
- 通过
-i parameter_ACGT101_ReSeq.txt读取参数文件(get_params子函数)。 - 加载:
- 集群配置(队列、CPU、内存、GPU 等)
- 输入输出目录(
INPUT / CLEANDATA / PROCESSDATA / OUTPUT / DONE) - 样本信息文件(
SAMPLE_INFO) - 参考基因组与注释文件
- 各软件路径与容器配置(
config.pl与sing_config.pl) - 创建必要目录:
- 原始数据:
INPUT - 质控后数据:
CLEANDATA - 中间结果:
PROCESSDATA - 最终结果:
OUTPUT - 标记步骤完成的
DONE目录 - 当次运行的 shell、log、error 目录:
sh_xxx / log_xxx / error
样本信息与数据列表构建
sample_info(SAMPLE_INFO):
从 Sample_Info.txt 读取样本名和文库名,输出逗号分隔的样本列表 smp_list。
fastq_list:- 在
INPUT下根据smp_list搜索各样本的R1/R2fastq.gz,生成input_list.txt(样本名与对应双端文件路径)。- 输出:
./input_list.txtDONE/fastq_list_PE.done
- 输出:
- 后续在
CLEANDATA中再次调用,得到cleandata_list.txt。- 输出:
OUTPUT/cleandata_list.txtDONE/fastq_list_PE.done(同名 done 文件,表示该步骤完成)
- 输出:
原始数据质控(fastp + FastQC)
- fastp 质控(
data_QC)- 对
input_list.txt中每个样本的 PE 读长进行质控: - 去接头、剪切低质量碱基、去 N 碱基等。
- 输出:
- Clean reads(
CLEANDATA/<sample>/<sample>_CleanData_R1/2.fastq.gz) - fastp 统计
json/html(OUTPUT/fastp_result)- 具体文件名格式:
CLEANDATA/<sample>/<sample>_CleanData_R1.fastq.gzCLEANDATA/<sample>/<sample>_CleanData_R2.fastq.gzOUTPUT/fastp_result/<sample>/<sample>_fastp.jsonOUTPUT/fastp_result/<sample>/<sample>_fastp.htmlDONE/fastp/<sample>_fastp.done
- 对
- 质控统计汇总(
data_stat)- 调用
fastp_stat.py,对所有样本 fastp 报告进行整合,生成OUTPUT/data_stat.txt。- 输出:
OUTPUT/data_stat.txtDONE/data_stat.done
- 调用
- FastQC 质控报告(
data_FastQC)- 对 Clean data 运行 FastQC,输出 zip/html 报告于
OUTPUT/FastQC_result。- 具体文件名格式(每个样本):
OUTPUT/FastQC_result/<sample>/<sample>_CleanData_R1_fastqc.zipOUTPUT/FastQC_result/<sample>/<sample>_CleanData_R2_fastqc.zipDONE/FastQC/<sample>_R1_FastQC.doneDONE/FastQC/<sample>_R2_FastQC.done
- 对 Clean data 运行 FastQC,输出 zip/html 报告于
若
only_QC=T,脚本在比对前退出,只完成 QC 部分。
参考基因组处理与索引构建
- 染色体 GC/长度计算(
ref_GC_len)- 对
ref_db计算 GC 含量、序列长度,输出genome.fa.len。- 输出:
OUTPUT/ref_len/genome.fa.lenDONE/ref_GC_len.done
- 对
- 主要染色体选择与 ID 列表
- 统计注释 GFF 中染色体条数
uu,若>65认为 scaffold 多,需要“连接处理”(link模式)。 - 根据
chr_num从长度信息中筛选主染色体,生成chr_id.txt。- 输出:
OUTPUT/ref_len/chr_id.txt
- 统计注释 GFF 中染色体条数
- 参考基因组精简与重命名(
prepare_ref)- 在
ref_dir/Ref下生成: ref.genome.fa(按主染色体重排/重命名后的参考)ref.genome.gff(复制原 GFF)- 重新计算 GC/len
- 输出(当
link模式触发时会生成/使用):
- 输出(当
<ref_dir>/Ref/ref.genome.fa<ref_dir>/Ref/ref.genome.gff<ref_dir>/Ref/ref.genome.fa.len<ref_dir>/Ref/<原ref文件basename>(拷贝一份原参考到 Ref 目录)<ref_dir>/Ref/id_table.txt(后续坐标还原会用到)DONE/refine_ref.done
- 在
- 构建索引
bwa_index:bwa index -a bwtsw ref.genome.fasamtools_index:samtools faidx ref.genome.fapicard_index:CreateSequenceDictionary生成.dict- 输出(以
ref.genome.fa为例):
- 输出(以
- BWA:
ref.genome.fa.pac / .amb / .ann / .bwt(以及其它 bwa index 相关文件) - samtools:
ref.genome.fa.fai - Picard:
ref.genome.dict DONE/bwa_index.done、DONE/samtools_index.done、DONE/picard_index.done
若 scaffold 数量不多(
<=65),则直接使用原始ref_db。
比对(CPU 或 GPU)
- 判断
map_soft: - CPU:
CPU mapping:bwa mem→samtools view→samtools sort,输出*.sort.bam。- 输出(每个样本):
OUTPUT/<sample>/<sample>.bamOUTPUT/<sample>/<sample>.sort.bamDONE/mapping/<sample>_sam.done、DONE/mapping/<sample>_bam.done、DONE/mapping/<sample>_sort.done
- 备注:中间的
OUTPUT/<sample>/<sample>.sam会在 sort 完成后被清理删除。
- 输出(每个样本):
mark_dup:PicardMarkDuplicates,输出*.rmdup.bam和 metrics。- 输出(每个样本):
OUTPUT/<sample>/<sample>.rmdup.bamOUTPUT/<sample>/<sample>.metricsDONE/mark_dup/<sample>_mark_dup.done
- 输出(每个样本):
- GPU:
GPU mapping_gpu:调用 Parabrickspbrun fq2bam,直接完成比对 + 排序 + MarkDuplicates,输出*.rmdup.bam。 (Parabricks是一款由 NVIDIA 开发的基于 GPU 加速的基因组学分析软件套件,专门用于新一代测序 (NGS) 数据处理的二级分析。它通过 GPU 并行计算将传统的 BWA-MEM、GATK、Mutect2 等 CPU 软件的运行速度提升数十倍,能在一小时内完成全基因组 (WGS) 分析。该软件不仅显著降低了计算成本,还保证了与业界标准工具完全一致的准确性,适用于种系变异、体细胞变异、RNA 序列分析等多种应用场景。)- 输出(每个样本):
OUTPUT/<sample>/<sample>.rmdup.bamOUTPUT/<sample>/<sample>.OUT_DUPLICATE_METRICS.txtDONE/mapping/<sample>_sort.markdup.done
- 输出(每个样本):
插入片段、比对质量与深度统计
insertsize:PicardCollectInsertSizeMetrics,按样本输出插入片段分布图和表。- 输出:
OUTPUT/InsertSize_result/<sample>/<sample>.InsertSizePlot.pdfOUTPUT/InsertSize_result/<sample>/<sample>.InsertSizeMetrics.txt
- 输出:
mapped_stat:samtools flagstat,输出每个样本的比对统计。- 输出:
OUTPUT/<sample>/<sample>_aln_stat.txt
- 输出:
depth_per_site→depth_stat:samtools depth生成碱基水平深度文件。- 输出(中间文件,后续可能会被清理):
OUTPUT/<sample>/<sample>.depth
- 输出(中间文件,后续可能会被清理):
depth_stat.pl汇总成 per-chrom/全基因组平均深度、不同深度的覆盖比例等。- 输出:
OUTPUT/<sample>/<sample>.mean_depth.txtOUTPUT/<sample>/<sample>.depth_frac.txtOUTPUT/<sample>/<sample>.depth_frac_cum.txtOUTPUT/<sample>/<sample>.sample_mean_depth.txt
- 输出:
mean_depth_plot/depth_frac_plot/coverage_stat/coverage_plot:- 取所有样本或子集(>10 个样本时取 10 个子样本)绘制:
- 每条染色体平均深度柱状图
- 输出:
OUTPUT/mean_depth_barplot.txt
- 输出:
- 各深度覆盖位点比例曲线图
- 输出:
OUTPUT/depth_frac.png
- 输出:
- 覆盖度统计与总览图
- 输出:
OUTPUT/coverage_stat_4plot.txtOUTPUT/coverage_plot.png![[Pasted image 20260311095854.png]]
- 输出:
BAM 索引与整体对齐统计汇总
index_bam:对rmdup.bam或sort.bam生成.bai索引。- 输出(每个样本,取决于
rmdup参数):OUTPUT/<sample>/<sample>.rmdup.bam.bai或OUTPUT/<sample>/<sample>.sort.bam.baiDONE/index_bam/<sample>_index_bam.done
- 输出(每个样本,取决于
mapped_cover_stat/mapped_cover_statupload:- 汇总数据量、比对率、去重率、平均深度、覆盖度等到
mapped_cover_stat.txt。- 输出:
OUTPUT/mapped_cover_stat.txtDONE/mapped_cover_stat.done
- 输出:
- 调用 PHP/awk 脚本生成可上传的统计表。
- 输出(项目根目录下):
./data_Stat_tmp.txt./data_Stat_<run_start_time>.txt(带“文库名称/分析路径/运行时间”等列,供上传/展示)
- 输出(项目根目录下):
变异检测:SNP & InDel
根据 tool 和 population 分两大分支。
UnifiedGenotyper 模式(tool=U)
- Realign(
realign)- 对
rmdup.bam或sort.bam做 GATK3RealignerTargetCreator+IndelRealigner,输出*.realign.bam。- 输出(每个样本):
OUTPUT/<sample>/<sample>.realign.intervalsOUTPUT/<sample>/<sample>.realign.bamDONE/realign/<sample>_realign_target.doneDONE/realign/<sample>_realign.done
- 对
- Call 变异
- 若
population=T: gatk_pop:对所有样本联合调用(按染色体拆分),最后CatVariants合并为OUTPUT/pop_variants/pop.vcf。- 输出:
PROCESSDATA/pop_variants/pop.<chr>.gatk.vcf(按染色体拆分的中间 VCF)OUTPUT/pop_variants/pop.vcf(合并后的群体 VCF)DONE/gatk_pop_chr/<chr>_gatk_pop.doneDONE/pop_vcf.done- 若population=F: -gatk_single:对每个样本单独调用,输出sample.vcf。 - 输出(每个样本):OUTPUT/<sample>/<sample>.vcfDONE/gatk_unified_smp/<sample>_gatk_unified_smp.done
- 若
- 按类型拆分
select_snp_gatk3/select_indel_gatk3:- 使用 GATK3
SelectVariants将 VCF 拆成 SNP/INDEL VCF。- 输出:
*.snp.vcf*.indel.vcfDONE/select_snp/*_select_snp.doneDONE/select_indel/*_select_indel.done
- 变异过滤
filter_snp_gatk3/filter_indel_gatk3:- GATK3
VariantFiltration打标签,再用awk保留PASS记录,得到.filtered.vcf。- 输出:
*.filter_label.vcf(带过滤标签)*.filtered.vcf(只保留 PASS)DONE/filter_snp/*_filter_snp.done、DONE/filter_snp/*_filter_snp_awk.doneDONE/filter_indel/*_filter_indel.done、DONE/filter_indel/*_filter_indel_awk.done
HaplotypeCaller 模式(tool=H)
- GVCF 生成(支持 GPU)
- 推荐使用 GPU 版
gatk_gvcf_gpu: - 对每个样本的
rmdup.bam调用 Parabrickshaplotypecaller,输出sample.g.vcf.gz。- 输出(每个样本):
OUTPUT/<sample>/<sample>.g.vcf.gzOUTPUT/<sample>/<sample>.g.vcf.gz.tbiDONE/gatk_gvcf_chr/<sample>_gatk_gvcf.donePROCESSDATA/<sample>/(Parabricks 临时目录)
- 推荐使用 GPU 版
- 合并 Genotype(
genotype_vcf_pop/genotype_vcf_single)- 若
population=T: - 调用
easy_JVC.pl按染色体与区间切分 gVCF,生成多个CombineGVCFs/GenotypeGVCFs的 shell,最后汇总成Final.GenotypeGVCFs.vcf.gz,gunzip 为pop.vcf。- 输出(群体):
OUTPUT/gvcfs.listPROCESSDATA/pop_variants/gatk/shell/CombineGVCFs.shPROCESSDATA/pop_variants/gatk/shell/GenotypeGVCFs.shPROCESSDATA/pop_variants/gatk/shell/GenotypeGVCFs_cat.shPROCESSDATA/pop_variants/gatk/gatk/Final.GenotypeGVCFs.vcf.gzOUTPUT/pop_variants/pop.vcfDONE/pop_vcf_gunzip.done- 若population=F: - 对单样本GenotypeGVCFs输出sample.vcf。 - 输出(每个样本):OUTPUT/<sample>/<sample>.vcfDONE/genotype_vcf_smp/<sample>_genotype_vcf.done
- 若
- 按类型拆分 + 过滤
select_snp/select_indel:GATK4SelectVariants拆分出 SNP/INDEL VCF。filter_snp/filter_indel:GATK4VariantFiltration+awkPASS,输出.filtered.vcf。- 输出:
*.snp.vcf/*.indel.vcf*.filter_label.vcf/*.filtered.vcfDONE/select_snp/*_select_snp.done、DONE/select_indel/*_select_indel.doneDONE/filter_snp/*_filter_snp.done、DONE/filter_indel/*_filter_indel.done
坐标还原(link scaffold 项目)
- 若参考基因组使用
link模式(大量 scaffold 被重新拼接),则: filter_pos_convert/result_pos_convert:- 利用
id_table.txt将在精简参考上的坐标转换回原参考坐标。 - 转换后的 VCF 覆盖原 filtered VCF 供后续注释与统计使用。
- 输出(在过滤结果目录下生成转换目录):
<filtered_vcf_dir>/snp_posconvert/ConvertPos.vcf<filtered_vcf_dir>/indel_posconvert/ConvertPos.vcfDONE/convertpos.done
- 输出(在过滤结果目录下生成转换目录):
SnpEff 建库与功能注释
- 建库(
SnpEff_build)- 调用
SnpEff_db_build.pl,利用ref_db + ref_anno在$SnpEff_db下生成snpEffectPredictor.bin。- 输出:
<SnpEff_db>/data/<SnpEff_version>/snpEffectPredictor.binDONE/SnpEff_build.done
- 调用
- 注释(
anno_variant)
-
对过滤后的 SNP / InDel VCF:
-
SnpEff
ann生成功能注释 VCF 和统计csv/html。 -
extract_ANN.pl提取 ANN 字段生成*.anno.txt。 -
返回所有样本/群体的
*.anno.csv列表。- 输出(对每个输入 VCF,按 prefix 生成):
<prefix>.anno.vcf<prefix>.anno.html<prefix>.anno.csv(-csvStats输出)<prefix>.anno.txt(提取 ANN 后的文本)DONE/anno_variant/*_anno.done、DONE/anno_variant/*_snp_txt.done
- 输出(对每个输入 VCF,按 prefix 生成):
变异统计与绘图
snp_mut_stat:对 SNP VCF 计算 Ti/Tv、Het/Hom 比例等,输出列表和统计。- 输出(每个 SNP VCF):
<prefix>.list<prefix>.stat.txt
- 输出(每个 SNP VCF):
-
snp_stat/indel_stat: - 基于
*.anno.csv统计变异在不同基因区域(exon/intron/UTR…)与功能类别(synonymous/nonsynonymous…)的分布。- 输出(每个
*.anno.csv,按 prefix 生成):<prefix>_pos.txt<prefix>_effect.txt
- 输出(每个
-
snp_plot/indel_plot: - 调用 R 脚本
PieChart.R绘制 SNP / INDEL 功能注释的饼图。- 输出(每个
*.anno.csv,按 prefix 生成):<prefix>_PieChart.png
- 输出(每个
SV 与 CNV 检测
SV(SV=T)
-
call_sv: - 利用
samtools提取配对异常/拆分比对 reads,调用lumpy生成结构变异 VCF(DEL/INS/INV 等)。- 输出(每个样本,位于
OUTPUT/SV_result/<sample>/):<sample>.discordants.unsorted.bam<sample>.discordants.bam<sample>.splitters.unsorted.bam<sample>.splitters.bam<sample>.sv.vcfDONE/call_sv/<sample>_*.done(view/sort/split/split_sort/lumpy 等)
- 输出(每个样本,位于
-
sv_stat: SV_stat.pl对 SV 类型、大小、数量等进行统计。- 输出:
OUTPUT/SV_result/<sample>/<sample>.sv.statDONE/sv_stat/<sample>_sv_stat.done
- 输出:
CNV(CNV=T)
split_fa_chr:将参考基因组按染色体拆分。- 输出:
<ref_dir>/chrs/<chr>.fa(拆分后的每条染色体 fasta)
- 输出:
-
call_CNV: - 调用
call_CNV.pl,利用rmdup.bam、参考序列和 GC 区间,检测 CNV,输出拷贝数变异结果和 ratio 文件。- 输出(每个样本,位于
OUTPUT/CNV_result/<sample>/):<sample>.bam_CNVs<sample>.bam_ratio.txt<sample>.bam.anno_CNVs(与 GFF 交集注释后的 CNV)DONE/call_cnv/<sample>_call_cnv.done
- 输出(每个样本,位于
- 后续用 bedtools 与 GFF 注释(基因区域中 CNV)。
总结报告
-
单样本:
summary_single - 调用
summary_sig.pl生成 Summary 报告。- 输出:
./Summary/(汇总目录,脚本参数-od Summary)DONE/summary_single.done
- 输出:
-
群体:
summary_pop - 调用
summary.pl汇总全项目的各类统计与结果。- 输出:
./Summary/DONE/summary_pop.done
- 输出:
参数说明与选取建议
下表按照模块分类,重点给出用途和实务建议。如无特别说明,默认值一般为经验值,可不改。
核心/项目级参数
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
partition |
Slurm 队列名(分区) | 保持集群管理员给定默认值(如 P3);超大项目可换大内存/大 GPU 分区 |
only_QC |
是否只做质控;T 时 QC 后退出,不做比对与变异 |
只想预览数据质量设 T;正式分析设 F |
population |
是否群体重测序(多样本联合变异检测) | 多样本联合分析设 T;单样本或只关心单样本可设 F |
tool |
变异检测方式:U=UnifiedGenotyper,H=HaplotypeCaller |
混池样本必须 U;常规个体/群体推荐 H(更常用/更准确) |
chr_num |
按参考序列长度排序后,保留最长的 N 条序列作为“主染色体”(用于参考精简、后续分析);不是 scaffold/contig 总数 | 猪:18 常染色体 + X + Y → chr_num=20;其他物种按“常染色体 + 性染色体”填写(如人 24、牛 31) |
参考基因组与注释
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
ref_db |
参考基因组 FASTA | 与注释、SnpEff 版本一致;尽量用同一来源同一版本(Ensembl/NCBI) |
ref_anno |
注释 GFF/GTF | 必须与 ref_db 坐标体系一致;若为 GTF,需确认建库脚本支持 |
ref_annotation |
额外注释占位(脚本中未直接使用) | 保持 NA,除非流程另有要求 |
SnpEff_db |
SnpEff 安装目录 | 通常不改,保持系统配置路径 |
SnpEff_version |
SnpEff 数据库 ID(如 Sus_scrofa_Ensembl_V111) |
必须与 ref_db/ref_anno 版本匹配,否则注释可能错位 |
集群运行配置
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
node |
指定运行节点(可为 NA) |
一般 NA;仅在集群要求固定节点时指定 |
interval |
批量任务轮询/间隔(由配套 slurm 脚本使用) | 默认 30 通常足够;任务极多/队列繁忙可适当调大 |
maxFailed |
允许失败任务阈值 | 0 表示出现失败就中止,便于及时定位问题;需要“容错继续”才放宽 |
maxProc |
最大并行任务数上限 | 与集群资源匹配;默认 10000 通常可不改 |
目录结构
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
INPUT |
原始 FASTQ 目录名 | 在项目目录内运行时保持默认即可 |
CLEANDATA |
质控后 FASTQ 输出目录 | 一般保持默认;磁盘规划特殊时可改为绝对路径 |
PROCESSDATA |
中间文件目录 | 同上 |
OUTPUT |
输出目录 | 同上 |
DONE |
步骤完成标记(.done)目录 |
同上 |
样本信息
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
SAMPLE_INFO |
样本信息文件(默认 Sample_Info.txt),每行 样本名\t文库名,# 为注释 |
样本名需与 INPUT 中 FASTQ 命名/路径规则匹配;样本多时注意空格、隐藏字符 |
原始数据质控参数(fastp)
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
data_QC_threads |
fastp 每样本线程数 | PE150 常规 2 足够;资源充足可 4–8 |
n_base_limit |
允许的 N 碱基数量上限 | 默认 5 常用;数据较差可适当放宽 |
overlap_len_require |
PE reads 重叠长度要求(用于接头识别/纠错) | PE150 常用 30,一般不改 |
length_required |
剪切后最短保留读长 | 默认 15 较宽松;更严格可设 30 |
比对与去重复
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
map_soft |
比对方式:CPU(bwa+samtools+picard)或 GPU(Parabricks) |
有 Parabricks GPU 环境优先 GPU(显著提速);否则 CPU |
mapping_threads |
CPU 比对线程数(bwa/samtools) | 4–16 常见;按节点 CPU 调整 |
min_seed_len |
bwa mem -k 最小 seed 长度 |
常用 32,一般不改 |
sort_mem |
samtools sort 每线程内存(如 768M) |
大基因组/大 BAM 可调到 2G 左右;注意 sort_mem × mapping_threads 不超节点内存 |
rmdup |
后续分析是否使用去重 BAM(rmdup.bam) |
全基因组重测序通常 T;特殊定量场景才考虑 F |
rmdup_mem |
Picard MarkDuplicates 内存(脚本内部作为 picard_mem) |
默认 30G 多数项目安全;样本/基因组更大时可加大 |
深度与覆盖绘图
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
max_depth |
深度分布图横坐标最大深度(仅影响绘图展示) | 常规 10–40×:150 足够;极高深度可适当增大 |
变异检测相关(GATK & GPU)
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
numGPUs |
每个 GPU 任务使用的 GPU 数量 | 常用 1;超大样本/节点多卡才考虑增加 |
GPU |
GPU 队列/分区名 | 与集群实际配置一致(如 GPU2) |
GATK_threads |
GATK 相关任务 CPU 线程数 | 默认 10 合理;按节点资源调整 |
GATK_mem |
GATK/Java 最大内存(如 20G) |
群体/大基因组可 30–60G;内存不足易 OOM |
ploidy |
倍性(--sample-ploidy) |
二倍体一般 2;多倍体按物种调整 |
cut_len |
群体联合 Genotype 时按区间切割长度 | 默认 5 Mb(5000000)折中;任务过大可减小 |
cut_num |
群体联合时每个拆分任务的样本数上限 | 默认 800 适合几百~上千样本;样本极多可减小以降低单任务压力 |
SNP 过滤(hard-filter 表达式)
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
QD |
QD:质量/深度的比值(过滤低 QD) | 常用 QD < 2.0;一般沿用 |
QUAL |
变异质量(过滤低 QUAL) | 常用 QUAL < 30.0;一般沿用 |
SOR |
Strand Odds Ratio(链偏好指标) | 常用 SOR > 3.0;一般沿用 |
FS |
Fisher Strand(链偏好指标) | 常用 FS > 60.0;一般沿用 |
MQ |
Mapping Quality(过滤低 MQ) | 常用 MQ < 40.0;一般沿用 |
MQRankSum |
MQRankSum(比对质量偏倚) | 常用 MQRankSum < -12.5;一般沿用 |
ReadPosRankSum |
ReadPosRankSum(read 位置偏倚) | 常用 ReadPosRankSum < -8.0;一般沿用 |
以上阈值为 GATK 常见 hard-filter 经验值;如需调整建议基于项目深度/验证集评估后再改。
INDEL 过滤(hard-filter 表达式)
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
QD_indel |
INDEL 的 QD 过滤 | 常用 QD < 2.0;一般沿用 |
QUAL_indel |
INDEL 的 QUAL 过滤 | 常用 QUAL < 30.0;一般沿用 |
FS_indel |
INDEL 的 FS 过滤 | 常用 FS > 200.0;一般沿用 |
ReadPosRankSum_indel |
INDEL 的 ReadPosRankSum 过滤 | 常用 ReadPosRankSum < -20.0;一般沿用 |
SnpEff 注释参数
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
anno_mem |
SnpEff/Java 内存 | 群体/大基因组可较大(示例 80G);小项目可下调节省资源 |
ud |
上下游注释范围(bp) | 常用 1000;希望更宽“调控区”可设 2000–5000 |
SV 检测控制
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
SV |
是否运行 SV 检测 | 需要结构变异分析设 T;只关心 SNP/INDEL 可设 F 缩短时间 |
CNV 检测控制
| 参数 | 用途/含义 | 选取建议 |
|---|---|---|
CNV |
是否运行 CNV 检测 | 需要 CNV 分析设 T;否则设 F |
minExpectedGC / maxExpectedGC |
CNV 检测的 GC 含量范围过滤 | 哺乳动物常用 0.35–0.55;GC 分布差异大的物种可根据经验/文献调整 |
实务使用建议(简要)
-
参数最小修改集合(常规哺乳动物重测序项目):
-
根据项目类型设置:
population、tool(混池用U,其他推荐H)。 -
资源相关参数(根据集群环境微调):
-
partition / GPU / numGPUs / GATK_threads / GATK_mem / mapping_threads / sort_mem / rmdup_mem / anno_mem。 -
高级优化:
-
样本数特别多或基因组超大时,可酌情调小
cut_len、cut_num,并加大 GATK 内存/线程,以避免单任务过大或 OOM。