Skip to content

VarScan #

Find similar titles

NGS 데이터에서 유전변이를 탐지하는 대표적인 프로그램 가운데 하나.

WGS, WES 등 NGS 데이터에 대한 플랫폼 독립적인 mutation caller 프로그램으로써, Illumina, SOLiD, Life/PGM, Roche/454, 등 장비로 부터 데이터를 받아 분석할 수 있다.

다음과 같은 유전변이의 탐지가 가능하다.

  • Germline variants (SNPs an dindels) in individual samples or pools of samples.
  • Multi-sample variants (shared or private) in multi-sample datasets (with mpileup).
  • Somatic mutations, LOH events, and germline variants in tumor-normal pairs.
  • Somatic copy number alterations (CNAs) in tumor-normal exome data.

기능 요약 #

Germline variants #

Commands

  • mpileup2snp
  • mpileup2indel
  • mpileup2cns
  • pileup2snp
  • pileup2indel
  • pileup2cns

명령행 예제

$ samtools mpileup -B -f [reference] [bam] | java -jar VarScan.v2.2.jar mpileup2snp

Somatic mutations #

Commands

  • somatic

명령행 예제

$ samtools pileup -f [reference] [normal_bam] > normal.pileup
$ samtools pileup -f [reference] [tumor_bam] > tumor.pileup
$ java -jar VarScan.jar somatic [normal_pileup] [tumor_pileup]

CNV #

Commands

  • copynumber

명령행예제

$ samtools pileup -f [reference] [normal_bam] > normal.pileup
$ samtools pileup -f [reference] [tumor_bam] > tumor.pileup
$ java -jar VarScan.jar copynumber [normal_pileup] [tumor_pileup] [outfile]

Tumor/normal CNA with DNAcopy #

Tumor BAM파일과 정상 BAM 파일을 함께 SAMtools로 mpileup 파일을 만들고, copynumber와 capyCaller 명령을 수행한 후, DNAcopy로 segmentation 한다.

$ samtools mpileup -q 1 -f ref.fa normal.bam tumor.bam | java -jar VarScan.jar copynumber varScan --mpileup 1 --output-file varScan.copynumber
$ java -jar VarScan.jar copyCaller varScan.copynumber --output-file varScan.copynumber.called
$ R
> library(DNAcopy)
> cn <- read.table('varScan.copynumber.called', header=TRUE)
> CNA.object <- CNA(genomdat=cn[,7], chrom=cn[,1], maploc=cn[,2],
                    data.type = 'logratio')
> CNA.smoothed <- smooth.CNA(CNA.object)
> segs <- segment(CNA.smoothed, verbose=0, alpha=0.01, nperm=10000,
                  min.width=2, undo.splits="sdundo", undo.SD=3)
> psegs <- segments.p(segs)
> write.table(psegs, file="varScan.copynumber.called.cbs", 
              row.names=FALSE, col.names=TRUE, quote=FALSE, sep="\t")

VarScan과 함께 제공되는 Perl script 파일 mergeSegments.pl 을 이용하여 머지한다. (스크립트 파일을 일부 수정해야 함. 김형용이 수정한 파일은 mergeSegments-hygkim.pl)

$ perl mergeSegment-hygkim.pl --ref-arm-sizes hg19.arm --output-basename varScam.copynumber.called.cbs varScam.copynumber.called.cbs

위 명령에 사용되는 arm 길이 파일 (hg19.arm)은 다음과 같다.

1    1   125000000   p
1    125000001   249250621   q
2    1   93300000    p
2    93300001    243199373   q
3    1   91000000    p
3    91000001    198022430   q
4    1   50400000    p
4    50400001    191154276   q
5    1   48400000    p
5    48400001    180915260   q
6    1   61000000    p
6    61000001    171115067   q
7    1   59900000    p
7    59900001    159138663   q
8    1   45600000    p
8    45600001    146364022   q
9    1   49000000    p
9    49000001    141213431   q
10   1   40200000    p
10   40200001    135534747   q
11   1   53700000    p
11   53700001    135006516   q
12   1   35800000    p
12   35800001    133851895   q
13   1   17900000    p
13   17900001    115169878   q
14   1   17600000    p
14   17600001    107349540   q
15   1   19000000    p
15   19000001    102531392   q
16   1   36600000    p
16   36600001    90354753    q
17   1   24000000    p
17   24000001    81195210    q
18   1   17200000    p
18   17200001    78077248    q
19   1   26500000    p
19   26500001    59128983    q
20   1   27500000    p
20   27500001    63025520    q
21   1   13200000    p
21   13200001    48129895    q
22   1   14700000    p
22   14700001    51304566    q
X    1   60600000    p
X    60600001    155270560   q
Y    1   12500000    p
Y    12500001    59373566    q

de novo mutations (trios) #

명령행예제

$ samtools mpileup -B -f [reference] [bam] > trio.mpileup
$ java -jar VarScan.v2.2.jar trio trio.mpileup
0.0.1_20230725_7_v68