zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Strelka2 call Somatic 流程--肿瘤基因组测序数据分析专栏

2023-03-15 23:24:48 时间

简介

由 illumina 公司开发,用于突变检测,可以检测 somatic 和 germline ,通常来说,该软件对于小片段的 indel 检测效果比 Mutect2 更好,现在很多文章会使用 Mutect2 + Strelka2 取交集来检测 Somatic Mutation 的方法。这里简单介绍该软件的安装和使用方法。文章发表在 https://www.nature.com/articles/s41592-018-0051-x

下载和安装

安装教程在:

https://github.com/Illumina/strelka/blob/v2.9.x/docs/userGuide/installation.md 一个大前提是,该程序依赖于 python2 环境,所以请在python2 下运行。另外需要注意的是,不同的Linux操作系统,安装方法不同。对于 Ubuntu 系统,安装方法如下:

cd ~/biosoft
wget -c https://github.com/Illumina/strelka/releases/download/v2.9.10/strelka-2.9.10.release_src.tar.bz2
tar -jxf strelka-2.9.10.release_src.tar.bz2
mkdir build  strelka2
cd build
# 注意修改安装路径
../strelka-2.9.10.release_src/configure --jobs=4 --prefix=${HOME}/biosoft/strelka2
make -j4 install

检查安装是否成功,如果可以运行成功,则证明安装没问题:

bash ${HOME}/biosoft/strelka2/bin/runStrelkaSomaticWorkflowDemo.bash

对于 CentOS 系统,可以直接下载二进制版本,解压之后便可直接使用:

# download strelka binary
wget https://github.com/Illumina/strelka/releases/download/v2.9.10/strelka-2.9.10.centos6_x86_64.tar.bz2
# decompress
tar -xvjf strelka-2.9.10.centos6_x86_64.tar.bz2
# run demo to check successful installation
bash strelka-2.9.10.centos6_x86_64/bin/runStrelkaSomaticWorkflowDemo.bash
bash strelka-2.9.10.centos6_x86_64/bin/runStrelkaGermlineWorkflowDemo.bash

实际运行

前面只是运行了测试代码,检测软件是否安装成功,下面就是进行实际使用了。参考: https://github.com/Illumina/strelka/blob/v2.9.x/docs/userGuide/quickStart.md strelka 在使用的时候分为两步,第一步构建 config ,第二步运行流程: 对于 germline 位点,示例用法是:

# configuration
${STRELKA_INSTALL_PATH}/bin/configureStrelkaGermlineWorkflow.py 
    --bam sample1.bam 
    --bam sample2.bam 
    --referenceFasta hg38.fa 
    --runDir demo_germline

# execution on a single local machine with 20 parallel jobs
demo_germline/runWorkflow.py -m local -j 20

对于 somatic 位点,示例用法是:

# configuration
${STRELKA_INSTALL_PATH}/bin/configureStrelkaSomaticWorkflow.py 
    --normalBam normal.bam 
    --tumorBam tumor.bam 
    --referenceFasta hg38.fa 
    --runDir demo_somatic
# execution on a single local machine with 20 parallel jobs
demo_somatic/runWorkflow.py -m local -j 20

在构建 config 这一步时,需要注意一点,对于肿瘤外显子或者靶向测序,都需要一个 bed 文件,因为只关心落在外显子或者 bed 区域的突变,可以用 --callRegions bed 指定,然后再搭配 --exome 或者 --targeted 参数。需要注意的是,bed 文件是有要求的,要有对应的索引文件 tbi,这就要求要用 tabix 对 bgzip 压缩过后的 bed 文件进行构建 tbi 索引:

bgzip Agilent_v6_hg38.bed
tabix -b bed Agilent_v6_hg38.bed.gz

除此之外,为了更加灵敏地检测 indel 位点,软件还建议先运行 Manta ,并将 Manta 的运行结果传递给 --indelCandidates 参数。关于 manta 的安装和使用,和 Strelka2 相似,这里不做冗余介绍。 其中 -m 指定运行的模式,有 local 和 sge 两个,一般选择 local 指在单个节点上多个核心运行,sge 指在集群上多节点并行, -j 指调用多少个 cpu 核心,默认是调用所有的。运行过程中会弹出很多日志信息,可以用 1 和 2 捕获并重定向。

实际使用的脚本是(其中变量要进行自定义或者传参):

STRELKA_INSTALL_PATH=${HOME}/biosoft/strelka2
database=${HOME}/database
GENOME=${database}/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta
bed=Agilent_v6_hg38.bed.gz

# configuration
mkdir 6.strelka/${tumor}
${STRELKA_INSTALL_PATH}/bin/configureStrelkaSomaticWorkflow.py 
    --indelCandidates 6.manta/${tumor}/results/variants/candidateSmallIndels.vcf.gz 
    --tumorBam   5.gatk/${tumor}_bqsr.bam 
    --normalBam 5.gatk/${normal}_bqsr.bam 
    --referenceFasta ${GENOME}            
    --callRegions ${bed}                  
    --exome                               
    --runDir 6.strelka/${tumor}           
    1>6.strelka/${tumor}/${tumor}_strelka.log 2>&1
# execution on a single local machine with 20 parallel jobs
python2 6.strelka/${tumor}/runWorkflow.py -m local -j 4 1>6.strelka/${tumor}/${tumor}_strelka.log 2>&1

结果

结果会有很多输出,主要是两个压缩后的 vcf 文件,分别为 snv 和 indel 的结果:

$ ls 6.strelka/${tumor}/*/*
6.strelka/${tumor}/results/stats:
runStats.tsv  runStats.xml

6.strelka/${tumor}/results/variants:
somatic.indels.vcf.gz  somatic.indels.vcf.gz.tbi  somatic.snvs.vcf.gz  somatic.snvs.vcf.gz.tbi

6.strelka/${tumor}/workspace/pyflow.data:
logs  state

当然,如果想对 mutect2 和 strelka2 的结果取交集的话,也是可以的,用下面的代码就行:

# 合并 mutect2 和 strelka2 的结果,保留两者的共同突变位点,保留 mutect2 vcf 文件的header和其他信息
mkdir 6.somatic
zcat 6.strelka/${tumor}/results/variants/*gz | grep '^chr' | grep 'PASS' |sort -V >6.strelka/${tumor}/results/variants/${tumor}_filter.vcf
cat 6.mutect/${tumor}_filter.vcf | grep '^#' >6.somatic/${tumor}_filter.vcf
awk 'NR==FNR {A[$1"	"$2]; next}(($1"	"$2) in A)' 6.strelka/${tumor}/results/variants/${tumor}_filter.vcf  6.mutect/${tumor}_filter.vcf >>6.somatic/${tumor}_filter.vcf

参考:https://github.com/Illumina/strelka