Skip to content

LUMPY #

Find similar titles

12회 업데이트 됨.

Edit
  • 최초 작성자
    Tuohy
  • 최근 업데이트
    green

LUMPY #

배경 #

Choromosome 구조에서의 변화는 인간에서의 유전적 변이 중에서도 매우 중요하다. 이러한 변화들을 Stuctural variations(SVs)라고 하는데, 이는 상대적으로 SNV(SNP, short indel)에 비해 그 크기가 큰(약 100bp 이상)의 DNA elements 들에 대한 구조적으로 다양하게 변화가 있는 유전적인 변이라고 정의할 수 있는데, 대표적으로 deletion, insertion, inversion, translocation 등이 있다.

Image

이러한 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

Image

LUMPY #

LUMPY는 위와 같은 다양한 SV detection signals 들과 기존에 잘 알려진 변이 정보 등을 통계적인 방법을 이용하여 통합함으로써 Structral variation(SV)를 detection 할 수 있는 프로그램이다.

Image

위의 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 프로그램을 이용하게 되면 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>

0.0.1_20230725_7_v68