Table of Contents
LUMPY #
배경 #
Choromosome 구조에서의 변화는 인간에서의 유전적 변이 중에서도 매우 중요하다. 이러한 변화들을 Stuctural variations(SVs)라고 하는데, 이는 상대적으로 SNV(SNP, short indel)에 비해 그 크기가 큰(약 100bp 이상)의 DNA elements 들에 대한 구조적으로 다양하게 변화가 있는 유전적인 변이라고 정의할 수 있는데, 대표적으로 deletion, insertion, inversion, translocation 등이 있다.
이러한 SVs 들은 SNV 에 비해서 발생하는 수, 빈도는 상대적으로 매우 작지만, 그 크기가 크고 chromosome 단위로의 유전자의 구조를 바꿀 수 있기 때문에 인간 유전체에 있어 매우 큰 영향을 미치고 있다.
하지만 DNA sequencing 데이터를 이용하여 SVs 를 detection 하기란 그리 쉽지 않다. 왜냐하면 SVs는 그 구조나 크기, 유전적인 컨텐츠 등이 매우 다양하고, 참조 유전체인 REF와 주어진 샘플간의 발견되지 않은 새로운 구조이기 때문이다.
SV detection signals #
DNA-seq 데이터(paired-end)를 이용하여 REF에 alignment를 수행했을 때, 각 SVs 에 대한 몇 가지의 특징적인 정보를 얻을 수 있다.
1. 어떤 위치에서의 Sequence coverage 혹은 read depth의 변화
2. paired-end read들이 서로 상대적으로 중복없이 정렬(read-pair)되는 break point
3. paired-end read들이 쪼개져서 정렬되는 split-read
LUMPY #
LUMPY는 위와 같은 다양한 SV detection signals 들과 기존에 잘 알려진 변이 정보 등을 통계적인 방법을 이용하여 통합함으로써 Structral variation(SV)를 detection 할 수 있는 프로그램이다.
위의 A 그림처럼 LUMPY 는 paired-end, split-read, CNV, known variant 에 대한 정보를 각각 input 정보로 사용하여 각 SV detection signal에 대한 breakpoints를 계산한다. 각 SV detection signal을 통해 생성한 breakpoints 들 간의 overlap 되는 것들을 통합하여 cluster를 구축하고, 그 비율(frequency)를 계산하여 최소 기준 0.1% 이하로 필터링하여 breakpoints region 을 예측한다.
또한 B 그림과 같이 여러 개의 샘플에 대한 SV을 위한 breakpoints 통합도 가능하다.
download 및 install #
git clone --recursive https://github.com/arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
일반적인 수행방법 #
lumpyexpress \
-B my.bam \
-S my.splitters.bam \
-D my.discordants.bam \
-o output.vcf
## -B FILE coordinate-sorted BAM file(s) (comma separated)
## -S FILE split reads BAM file(s) (comma separated)
## -D FILE discordant reads BAM files(s) (comma separated)
## -o STR output [fullBam.bam.vcf]
## -x FILE BED file to exclude
## -P output probability curves for each variant
## -m INT minimum sample weight for a call [4]
## -r FLOAT trim threshold [0]
## -T DIR temp directory [./output_prefix.XXXXXXXXXXXX]
## -k keep temporary files
## -K FILE path to lumpyexpress.config file
(default: same directory as lumpyexpress)
## -v verbose
## -h show this message
LUMPY를 이용한 SV detection workflow #
pre-processing #
- SpeedSeq을 이용하는 방법
SpeedSeq 프로그램을 이용하게 되면 BWA-MEM, mark duplicate, 그리고 LUMPY에 input으로 필요한 split, discordant bam 파일을 자동으로 출력하도록 한다.
speedseq align -R "@RG\tID:id\tSM:sample\tLB:lib" \
human_g1k_v37.fasta \
sample.1.fq \
sample.2.fq
- step-by-step으로 단계별 수행방법
BWA MEM을 통한 alignment를 수행하고, bam 파일에서 discordant하게 mapping 된 read-pair 정보를 추출하고, 이어서 split-read 에 대한 bamfile을 추출할 수 있다.
// align the data
bwa mem -R "@RG\tID:id\tSM:sample\tLB:lib" human_g1k_v37.fasta sample.1.fq sample.2.fq \
| samtools view -S -b - \
> sample.bam
// Extract the discordant paired-end alignments.
samtools view -b -F 1294 sample.bam > sample.discordants.unsorted.bam
// Extract the split-read alignments
samtools view -h sample.bam \
| scripts/extractSplitReads_BwaMem -i stdin \
| samtools view -Sb - \
> sample.splitters.unsorted.bam
// Sort both alignments
samtools sort sample.discordants.unsorted.bam sample.discordants
samtools sort sample.splitters.unsorted.bam sample.splitters
Running LUMPY #
single sample #
lumpyexpress \
-B sample.bam \
-S sample.splitters.bam \
-D sample.discordants.bam \
-o sample.vcf
multiple samples #
lumpyexpress \
-B sample1.bam,sample2.bam,sample3.bam \
-S sample1.splitters.bam,sample2.splitters.bam,sample3.splitters.bam \
-D sample1.discordants.bam,sample2.discordants.bam,sample3.discordants.bam \
-o multi_sample.vcf
Normal-Tumor pair sample #
lumpyexpress \
-B tumor.bam,normal.bam \
-S tumor.splitters.bam,normal.splitters.bam \
-D tumor.discordants.bam,normal.discordants.bam \
-o tumor_normal.vcf
참고 #
<https://github.com/arq5x/lumpy-sv>
<https://genomebiology.biomedcentral.com/articles/10.1186/gb-2014-15-6-r84>