====== Whole-genome alignment (MUMmer) ====== [[http://mummer.sourceforge.net/|MUMmer]]는 suffix tree algorithm을 이용하여 genome sequence 수준의 alignment를 생성하는 도구이다. 발표된지는 매우 오래되었으나 매우 완성도가 높아서 여전히 많은 프로그램에서 활용되고 있다. 기본 컨셉트는 20 nt의 짧은 exact match(-l 옵션으로 조정 가능)을 reference와 query genome 모두에서 찾아내는 것이다. MUMmer는 alignment를 시각화하는 도구는 탑재하고 있지 않으므로 [[http://www.gnuplot.info/|gnuplot]]에 의존한다. 핵심 프로그램인 mummer는 짧은 exact match(20 bp)의 단위를 빠르게 탐색하는 역할을 하며, 이들이 어떤 기준을 충족하여 모여있으면 이를 확장해 나가는 alignment generator script(예: nucmer)와 기타 utility가 패키지에 포함된다. 20 bp의 match는 genome에 반복하여 나타날 수 있다. 이론상으로는 하나의 20 bp는 4^20 = 1.1x10^12, 즉 약 1.1 테라염기쌍마다 한번씩 나타날 것이겠지만 말이다. 반복하여 나타나는 match의 처리는 다음의 옵션으로 조정한다. \-mum compute maximal matches that are unique in both sequences -mumcand same as -mumreference -mumreference compute maximal matches that are unique in the reference- sequence but not necessarily in the query-sequence (default) -maxmatch compute all maximal matches regardless of their uniqueness ===== MUMmer로 할 수 있는 작업 ===== - Aligning two finished sequences (highly similar with/without rearrangements, fairly similar/dissimilar sequences) - Aligning two draft sequences - Mapping a draft sequence to a finished sequence - SNP detection - Identifying repeats 부속 프로그램이 매우 많으므로 PATH 환경변수에 설정해 둔다. $ export PATH=$PATH:/usr/local/Bio/MUMmer3.23 GUI 프로그램(gnuplot과 evince)를 실행해야 하므로 윈도우측에서 Xming을 실행해 둔다. ===== 샘플 서열의 다운로드 ===== (주의) 2015년 연말을 지나면서 NCBI의 genome sequence URL이 바뀌었음. 교재의 주소는 이를 미처 반영하지 못하였으므로 이것을 따르기 바람. $ wget ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF_000237325.1_ASM23732v1/GCF_000237325.1_ASM23732v1_genomic.gbff.gz $ gzip -d GCF_000237325.1_ASM23732v1_genomic.gbff.gz $ seqret GCF_000237325.1_ASM23732v1_genomic.gbff M1.fa $ wget ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF_000146875.3_ASM14687v2/GCF_000146875.3_ASM14687v2_genomic.gbff.gz $ gzip -d GCF_000146875.3_ASM14687v2_genomic.gbff.gz $ seqret GCF_000146875.3_ASM14687v2_genomic.gbff E681.fa $ wget ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF_000007805.1_ASM780v1/GCF_000007805.1_ASM780v1_genomic.gbff.gz $ gzip -d GCF_000007805.1_ASM780v1_genomic.gbff.gz $ seqret GCF_000007805.1_ASM780v1_genomic.gbff DC3000.fa $ wget ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF_001006455.1_PSt_v01/GCF_001006455.1_PSt_v01_genomic.gbff.gz $ gzip -d GCF_001006455.1_PSt_v01_genomic.gbff.gz $ seqret GCF_001006455.1_PSt_v01_genomic.gbff ATCC11528.fa ===== Comparison of two finished genome sequences ===== ==== [1] MUMmer 사용 ==== $ mummer -mum -b -c E681.fa M1.fa > mummer.mums $ mummerplot -p mum mummer.mums (gnuplot 화면이 열림) $ mummerplot --postscript -p test mummer.mums (--png 가능) $ evince test.ps (또는 $ eog test.png) $ gv test.ps (우분투에서 evince 실행에 에러 발생) 또는 $ gpicview test.png (우분투에서 eog 실행에 에러 발생) $ mummerplot -x "[0,100000]" -y "[0,100000]" mummer.mums ==== [2] Nucmer 사용 ==== MUMmer를 가장 편하게 사용하는 것은 alignment generator인 nucmer Perl script를 쓰는 것이다. 일정 기준에 맞게 인접한 maximal exact match는 하나로 병합할 수 있는데, 이는 -g(maxgap; default 90)과 -l(min length; default 20)으로 조정 가능하다. show-coords는 alignment block의 위치를 표시한다. -c는 결과에 percent coverage 포함, -l은 결과에 서열 길이 포함, -r은 reference coordinate에 맞춤을 의미한다. $ nucmer -p nucmer_test E681.fa M1.fa $ mummerplot nucmer_test.delta $ mummerplot --postscript -p nucmer_test nucmer_test.delta $ evince nucmer_test.ps $ show-coords -r -c -l nucmer_test.delta ===== Finished 서열에 draft(as queries) 정렬하기 ===== ==== [1] Draft sequence 재정렬하지 않기 ==== $ nucmer -p test1 DC3000.fa ATCC11528.fa $ mummerplot --postscript -p test1 test1.delta $ evince test1.ps ==== [2] Draft sequence를 reference에 맞추어 재정렬하기 ==== $ /usr/local/Bio/bin/run-mummer4.sh test2 DC3000.fa ATCC11528.fa (reference 서열은 반드시 하나여야 함) $ evince test2.ps [[run_mummer4.sh]]는 내가 만든 스크립트이다. ===== Mummer가 전부는 아니다! ===== 여러 genome의 동시 비교라면 progressMauve도 있다. 결과물인 xmfa의 포맷에 대해서도 이해가 필요하다. ===== 참고자료 ===== MUMmer의 input과 output. {{ :mummer.png?600 |}} [[https://github.com/widdowquinn/Teaching/blob/master/Comparative_Genomics_and_Visualisation/Part_1/whole_genome_alignment/whole_genome_alignments_A.md|Whole genome alignment (teaching material)]]