由 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"\t"$2]; next}(($1"\t"$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