User Tools

Site Tools


whole-genome_alignment

Whole-genome alignment (MUMmer)

MUMmer는 suffix tree algorithm을 이용하여 genome sequence 수준의 alignment를 생성하는 도구이다. 발표된지는 매우 오래되었으나 매우 완성도가 높아서 여전히 많은 프로그램에서 활용되고 있다. 기본 컨셉트는 20 nt의 짧은 exact match(-l 옵션으로 조정 가능)을 reference와 query genome 모두에서 찾아내는 것이다. MUMmer는 alignment를 시각화하는 도구는 탑재하고 있지 않으므로 gnuplot에 의존한다. 핵심 프로그램인 mummer는 짧은 exact match(20 bp)의 단위를 빠르게 탐색하는 역할을 하며, 이들이 어떤 기준을 충족하여 모여있으면 이를 확장해 나가는 alignment generator script(예: nucmer)와 기타 utility가 패키지에 포함된다.

20 bp의 match는 genome에 반복하여 나타날 수 있다. 이론상으로는 하나의 20 bp는 4^20 = 1.1×10^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로 할 수 있는 작업

  1. Aligning two finished sequences (highly similar with/without rearrangements, fairly similar/dissimilar sequences)
  2. Aligning two draft sequences
  3. Mapping a draft sequence to a finished sequence
  4. SNP detection
  5. 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.

Whole genome alignment (teaching material)

whole-genome_alignment.txt · Last modified: 2021/03/17 13:09 by 127.0.0.1