참고: 이는 LUMPY 0.2.13이며 기본 파일이 BAM이 아닌 CRAM일 때lumpyexpress가 작동할 수 있도록 추가 변경 사항이 포함되어 있습니다. LUMPY 자체는 아직 CRAM을 입력으로 지원하지 않으므로 분할자와 불일치 항목은 여전히 BAM 파일이어야 합니다. 이를 위해서는 hexdump 명령을 사용할 수 있어야 합니다.
LUMPY에 대한 질문과 토론을 원하시면 다음 포럼을 방문하세요:
https://groups.google.com/forum/#!forum/lumpy-discuss
구조적 변형 발견을 위한 확률적 프레임워크.
Ryan M Layer, Colby Chiang, Aaron R Quinlan 및 Ira M Hall. 2014. "LUMPY: 구조적 변형 발견을 위한 확률적 프레임워크." 게놈 생물학 15(6): R84. doi:10.1186/gb-2014-15-6-r84.
smoove는 lumpy
및 관련 도구의 모범 사례를 수집하고 아래 설명된 lumpyexpress
보다 실행 시간이 짧고 위양성 비율이 낮기 때문에 lumpy
실행하는 데 권장되는 방법입니다.
다운로드 및 설치
git clone --recursive https://github.com/arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
LUMPY Express 실행
lumpyexpress
-B my.bam
-S my.splitters.bam
-D my.discordants.bam
-o output.vcf
기본 설치 방법:
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Costom zlib로 설치(gzopen64 컴파일 오류):
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
export ZLIB_PATH="/usr/lib/x86_64-linux-gnu/"; #when /usr/lib/x86_64-linux-gnu/libz.so
make
cp bin/* /usr/local/bin/.
표준 분석을 위한 자동화된 중단점 감지.
usage: lumpyexpress [options]
필수 인수
-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 Express는 scripts/lumpyexpress.config에 경로가 지정된 여러 외부 프로그램을 실행합니다. 이 구성은lumpyexpress와 동일한 디렉터리에 있거나 -K 플래그를 사용하여 명시적으로 지정되어야 합니다.
설치 Makefile은lumpyexpress.config 파일을 자동 생성하여 "bin" 디렉터리에 저장합니다.
LUMPY Express는 BWA-MEM 정렬 BAM 파일을 입력으로 예상합니다. BAM 헤더의 @RG 태그를 사용하여 샘플, 라이브러리 및 읽기 그룹 정보를 자동으로 구문 분석합니다. 각 BAM 파일에는 정확히 하나의 샘플이 포함되어야 합니다.
최소 입력은 좌표 정렬 BAM 파일(-B)이며, LUMPY Express는 LUMPY를 실행하기 전에 SAMBLASTER를 사용하여 분할기와 불일치를 추출합니다. 선택적으로 사용자는 더 빠른 분석을 위해 SAMBLASTER 추출을 우회하는 좌표 정렬 분할자(-S) 및 불일치(-D) BAM 파일을 제공할 수 있습니다.
LUMPY Express는 VCF 사양 4.2에 따라 VCF 파일을 생성합니다.
고급 사용자를 위한 유연하고 사용자 정의 가능한 중단점 감지.
usage: lumpy [options]
옵션
-g Genome file (defines chromosome order)
-e Show evidence for each call
-w File read windows size (default 1000000)
-mw minimum weight across all samples for a call
-msw minimum per-sample weight for a call
-tt trim threshold
-x exclude file bed file
-t temp file prefix, must be to a writeable directory
-P output probability curve for each variant
-b output as BEDPE instead of VCF
-sr bam_file:,
id:,
back_distance:,
min_mapping_threshold:,
weight:,
min_clip:,
read_group:
-pe bam_file:,
id:,
histo_file:,
mean:,
stdev:,
read_length:,
min_non_overlap:,
discordant_z:,
back_distance:,
min_mapping_threshold:,
weight:,
read_group:
-bedpe bedpe_file:,
id:,
weight:
BWA-MEM 정렬을 수행하고, 중복을 표시하고, 분할되고 일치하지 않는 읽기 쌍을 추출하는 SpeedSeq로 데이터를 정렬하는 것이 좋습니다.
speedseq align -R "@RGtID:idtSM:sampletLB:lib"
human_g1k_v37.fasta
sample.1.fq
sample.2.fq
그렇지 않으면 데이터가 BWA-MEM과 정렬될 수 있습니다.
# Align the data
bwa mem -R "@RGtID:idtSM:sampletLB:lib" human_g1k_v37.fasta sample.1.fq sample.2.fq
| samblaster --excludeDups --addMateTags --maxSplitCount 2 --minNonOverlap 20
| 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
LUMPY에는 두 가지 실행 대안이 있습니다. LUMPY Express는 표준 분석을 위한 단순화된 래퍼입니다. LUMPY(전통)는 고급 사용자 및 전문 실험을 위해 더욱 맞춤화 가능합니다.
사전 추출된 분할자 및 불일치 항목이 포함된 단일 샘플에서 LUMPY Express 실행
lumpyexpress
-B sample.bam
-S sample.splitters.bam
-D sample.discordants.bam
-o sample.vcf
사전 추출된 스플리터 및 불일치 항목이 포함된 여러 샘플에서 LUMPY Express를 공동으로 실행하세요.
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
종양-정상 쌍에 대해 LUMPY Express 실행
lumpyexpress
-B tumor.bam,normal.bam
-S tumor.splitters.bam,normal.splitters.bam
-D tumor.discordants.bam,normal.discordants.bam
-o tumor_normal.vcf
먼저 BAM 파일의 각 라이브러리에 대한 경험적 삽입 크기 통계를 생성합니다.
samtools view -r readgroup1 sample.bam
| tail -n+100000
| scripts/pairend_distro.py
-r 101
-X 4
-N 10000
-o sample.lib1.histo
위 스크립트(scripts/pairend_distro.py)는 평균과 표준 편차를 화면에 표시합니다. 이 예에서는 평균이 500이고 표준 편차가 50이라고 가정합니다.
페어드 엔드 및 분할 읽기로 LUMPY를 실행합니다.
lumpy
-mw 4
-tt 0
-pe id:sample,bam_file:sample.discordants.bam,histo_file:sample.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample,bam_file:sample.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> sample.vcf
여러 라이브러리가 포함된 BAM 파일에서 LUMPY를 실행합니다.
lumpy
-mw 4
-tt 0
-pe id:sample,read_group:rg1,bam_file:sample.discordants.bam,histo_file:sample.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample,read_group:rg2,bam_file:sample.discordants.bam,histo_file:sample.lib2.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample,bam_file:sample.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> sample.vcf
여러 라이브러리가 포함된 여러 샘플에서 LUMPY를 실행하세요.
lumpy
-mw 4
-tt 0
-pe id:sample1,bam_file:sample1.discordants.bam,read_group:rg1,read_group:rg2,histo_file:sample1.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample1,bam_file:sample1.discordants.bam,read_group:rg3,histo_file:sample1.lib2.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample2,bam_file:sample2.discordants.bam,read_group:rg4,histo_file:sample2.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample1,bam_file:sample1.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample2,bam_file:sample2.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> multi_sample.vcf
복잡성이 낮은 영역을 제외하고 LUMPY를 실행합니다.
Heng Li는 https://doi.org/10.1093/bioinformatics/btu356의 "높은 적용 범위 샘플에서 변형 호출의 아티팩트에 대한 더 나은 이해를 위해" 논문의 보충 정보에서 복잡성이 낮은 영역 세트를 제공합니다.
unzip btu356_Supplementary_Data.zip
unzip btu356-suppl_data.zip
lumpy
-mw 4
-tt 0.0
-x btu356_LCR-hs37d5.bed/btu356_LCR-hs37d5.bed
-pe bam_file:sample.discordants.bam,histo_file:sample.pe.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
-sr bam_file:sample.sr.sort.bam,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
> sample.exclude.vcf
적용 범위가 매우 높은 지역을 제외하고 LUMPY를 실행하세요.
제외 영역 옵션을 사용하여 덩어리가 특정 영역을 무시하도록 지시할 수 있습니다. 이 예에서는 적용 범위가 매우 높은 지역을 찾아서 제외합니다. 먼저 get_coverages.py 스크립트를 사용하여 sr 및 pe bam 파일의 최소, 최대 및 평균 적용 범위를 찾고 두 파일에 대한 적용 범위 프로필을 만듭니다.
python ../scripts/get_coverages.py
sample.pe.sort.bam
sample.sr.sort.bam
# sample.pe.sort.bam.coverage min:1 max:14 mean(non-zero):2.35557521272
# sample.sr.sort.bam.coverage min:1 max:7 mean(non-zero):1.08945936729
이 출력에서 우리는 적용 범위가 10배 이상인 지역을 제외하도록 선택합니다. 제외 파일을 생성하려면 get_exclude_regions.py 스크립트를 사용하여 제외.bed 파일을 생성합니다.
python ../scripts/get_exclude_regions.py
10
exclude.bed
sample.pe.sort.bam
sample.sr.sort.bam
이제 제외(-x) 옵션을 사용하여lumpy를 다시 실행합니다.
lumpy
-mw 4
-tt 0.0
-x exclude.bed
-pe bam_file:sample.discordants.bam,histo_file:sample.pe.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
-sr bam_file:sample.sr.sort.bam,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
> sample.exclude.vcf
SVTyper는 베이지안 최대 우도 알고리즘을 사용하여 LUMPY 출력 VCF 파일에서 유전자형을 호출할 수 있습니다.
svtyper
-B sample.bam
-S sample.splitters.bam
-i sample.vcf
> sample.gt.vcf
test/test.sh
스크립트는 여러 시뮬레이션 데이터 세트에 대해 덩어리를 실행하고 결과를 알려진 올바른 결과와 비교합니다. 샘플 데이터 세트는 http://layerlab.org/lumpy/data.tar.gz에서 찾을 수 있습니다. 이 타르 볼은 최상위 레벨의lumpy 디렉토리로 추출되어야 합니다. test/test.sh
스크립트는 LUMPY를 실행하기 전에 이 디렉터리가 있는지 확인합니다.
덩어리진 프로세스가 있는 모든 bam 파일은 위치 정렬되어야 합니다. bam이 올바르게 정렬되었는지 확인하려면 check_sorting.py 스크립트를 사용하세요.
python ../scripts/check_sorting.py
pe.pos_sorted.bam
sr.pos_sorted.bam
pe.name_sorted.bam
# pe.pos_sorted.bam
# in order
# sr.pos_sorted.bam
# in order
# pe.name_sorted.bam
# out of order: chr10 102292476 occurred after chr10 102292893