数据的准备

此篇是遗传全外显子数据分析流程,适用于临床遗传全外显子数据分析。抛开历史包袱,使用在我个人认知中的更新的技术栈。

原始数据

这里使用SRR14724513,这是一个NA12878的数据,使用的是安捷伦的SureSelect v7探针,测序深度大概是50X。

使用这个数据是因为方便我们下游进行一个NA12878 Benchmark,以及他表明了使用的探针,可以比较容易找到对应的bed文件。

下载数据,并使用sratools将数据拆分为fastq。

wget https://sra-pub-run-odp.s3.amazonaws.com/sra/SRR14724513/SRR14724513

使用sratoolkit中的fastq-dump拆分数据

fastq-dump --split-3 --gzip ./SRR14724513

下载bed文件

二代测序中WES的湿实验一般是探针捕获,我们需要去计算探针的捕获效率,也需要知道我们感兴趣的靶向区域的覆盖度、深度等质控信息,因此必须要有探针所在的区域信息,因此需要去获取bed文件。尽管都是"全外显子",但每个厂家之间的探针还是存在差异的,比如,会对一些难以检测的区域进行特殊设计,如用侧翼探针进行覆盖,又或者是探针密度增加等。

安捷伦现在主推的V8+NCV和CREV4还会把一些临床关注的内含子加入到区域中。

对于上面的数据,我们下载安捷伦的V7 bed。安捷伦的探针可以在他的线上系统找到,但由于这个系统需要注册,这里在github里找到一份。

这份教程基于hg38,因此我下载了hg38版本。

现在,我们有原始数据bed文件了。

这个bed文件中包含了track抬头,建议把抬头注释掉,或者删除。

参考数据库包

流程所需的参考数据统一打包,可以从HuggingFace下载(pzweuj/SchemaBio_Bundle),包含以下内容:

  • 参考基因组FASTA:GRCh37或GRCh38
  • BWA-MEM2索引.bwt.2bit.64等索引文件
  • VEP Cache:合并版Cache(包含Ensembl和RefSeq转录本)
  • Schema Bundle:包含ClinVar VCF、cytoBand BED、GnomAD v4.1 filtered VCF、Pangolin VCF、EVOScore2 VCF、AlphaMissense v3 VCF
# 示例目录结构
ref_dir/
├── GRCh38.d1.vd1.fa
├── GRCh38.d1.vd1.fa.bwt.2bit.64
├── GRCh38.d1.vd1.fa.fai
├── GRCh38.d1.vd1.fa.pac
└── ...

cache_dir/
└── homo_sapiens_merged_vep_113_GRCh38/

schema_bundle/
├── hg38_clinvar_20260415.vcf.gz
├── hg38_cytoBand.bed.gz
├── hg38_gnomad.v4.1.filtered.vcf.gz
├── hg38_pangolin.vcf.gz
├── hg38_EVOScore2.vcf.gz
└── hg38_AlphaMissense.v3.vcf.gz

BED文件处理

不同的工具和分析步骤需要不同的bed文件。原始的探针bed文件可能包含"chr"前缀,或者线粒体标注为"chrM"而非"MT",需要进行标准化处理。

去除chr前缀

在GRCh38中,有些bed文件使用"chr1"格式,有些使用"1"格式,需要统一。同时将"chrM"转换为"MT":

# 去除chr前缀,chrM转为MT
sed 's/^chr//' input.bed | sed 's/^MT$/MT/' > fixed.bed

也可以使用脚本批量处理,自动修复零长度区域等问题。

外显子bed制作

除了探针bed,我们还需要一个外显子水平的bed,用于CNV分析的窗口划分。这里基于NCBI MANE Select注释来制作:

# 下载MANE GFF
wget https://ftp.ncbi.nlm.nih.gov/refseq/MANE/MANE_human/release_1.3/MANE.GRCh38.v1.3.refseq_genomic.gff.gz
gunzip MANE.GRCh38.v1.3.refseq_genomic.gff.gz

从GFF中提取外显子区域并转为bed格式,然后使用bedtools merge去除重叠区域:

bedtools merge -i GRCh38.NCBI.ManeSelect.Exon.bed > GRCh38.NCBI.ManeSelect.Exon.merge.bed

CNVKit靶向区域bed

CNV分析还需要一个与探针区域取交集后的靶向bed,用于区分target和antitarget:

bedtools intersect -b probe.bed -a Gencode.GRCh38.cnvkit.target.bed -wa -u > target.bed

样本指纹

样本指纹用于追踪样本身份,防止样本混淆。使用Pengelly等人发表的24-SNP身份鉴定面板,通过bcftools对这24个位点进行基因分型:

bcftools mpileup \
    -f GRCh38.d1.vd1.fa \
    -R pengelly_snp.txt \
    --annotate FORMAT/AD,FORMAT/DP \
    bam/SRR14724513.markdup.bam | \
bcftools call -m -Ov -o fingerprint.vcf

这个指纹信息会在后续的QC汇总报告中使用,也可以跨样本来追踪身份一致性。

原始数据质控

测序过程中,由于种种影响,原始数据里可能会存在低质量的接头序列、碱基、低质量reads等,一般需要先对数据进行一次过滤,获得高质量的数据。

这里使用fastp进行过滤。线程数上限为16。

fastp \
    -i rawdata/SRR14724513_1.fastq.gz \
    -I rawdata/SRR14724513_2.fastq.gz \
    -o cleandata/SRR14724513_R1.clean.fq.gz \
    -O cleandata/SRR14724513_R2.clean.fq.gz \
    -w 16 \
    -j qc/SRR14724513.fastp_stats.json \
    -h qc/SRR14724513.fastp_stats.html \
    --detect_adapter_for_pe

fastp会自动检测接头序列,生成JSON和HTML格式的质控报告。