Phân Tích Cách Sử Dụng Công Cụ Mummer Trong So Sánh Genome

Tổng Quan Về Mummer

Mummer là một bộ công cụ mạnh mẽ trong sinh học tính toán, được sử dụng rộng rãi để so sánh và phân tích sự tương đồng giữa các chuỗi DNA. Công cụ này đặc biệt hiệu quả khi làm việc với các genome có độ tương đồng cao.

Các Luồng Công Việc Chính

1. Nucmer

Đây là thành phần được viết bằng Perl, chuyên dùng để so sánh các chuỗi nucleic acid có quan hệ gần gũi. Công cụ này rất phù hợp để xác định và trực quan hóa các đoạn DNA được bảo tồn cao.

Lưu ý quan trọng: Để nâng cao độ chính xác của nucmer, nên thực hiện mask (che phủ) các đoạn trình tự không quan tâm trước khi đưa vào phân tích. Ngoài ra, có thể điều chỉnh giới hạn uniqueness để giảm số lượng alignment gây ra bởi các đoạn lặp.

2. Promer

Promer hoạt động tương tự như nucmer nhưng thực hiện so sánh ở cấp độ protein sau khi dịch mã genetic. Nguyên lý hoạt động giống với nucmer nhưng xử lý trên chuỗi amino acid.

3. Run-mummer1 Và Run-mummer3

Đây là hai công cụ được viết bằng cshell, phục vụ cho việc so sánh thông thường giữa hai trình tự. Chúng có khả năng tự động nhận diện loại trình tự đầu vào, khác với nucmer và promer cần chỉ định rõ ràng.

  • Run-mummer1: Phù hợp với trường hợp so sánh 1 đối 1, không có tái sắp xếp (rearrangement)
  • Run-mummer3: Phù hợp với trường hợp so sánh 1 đối nhiều, có thể có tái sắp xếp

Cả hai công cụ này đều xuất sắc trong việc so sánh các trình tự DNA có độ tương đồng cao, tìm ra các khác biệt giữa chúng. Điều này làm cho chúng trở nên lý tưởng cho việc phát hiện SNP (Single Nucleotide Polymorphism) hoặc hiệu chỉnh lỗi trình tự.

Chi Tiết Các Tham Số Của Nucmer

Tham Số Khớp (Matching)

--mum, --mumreference (mặc định), --maxmatch
--minmatch/-l: Độ dài tối thiểu của một match đơn lẻ
--forward/-f, --reverse/-r: Chỉ khớp trên链 dương hoặc chỉ khớp trên链 âm

Tham Số Phân Cụm (Clustering)

--mincluster/-c: Độ dài tối thiểu của match để tạo cluster, mặc định 65
--maxgap/-g: Độ dài gap tối đa giữa hai match liền kề, mặc định 90
--diagdiff/-D: Chênh lệch đường chéo tối đa giữa hai match trong một cluster, mặc định 5
--diagfactor/-d: Tham số liên quan đến đường chéo, tính theo độ dài gap, mặc định 0.12

Tham Số Mở Rộng (Extension)

--breaklen/-b: Mức độ mở rộng tại hai đầu của alignment trước khi kết thúc, mặc định 200
--[no]extend: Có cho phép mở rộng hay không, mặc định là có
--[no]optimize: Có tối ưu hóa hay không, mặc định là có. Khi điểm số alignment thấp, công cụ sẽ không kết thúc ngay mà xem xét toàn bộ alignment để tìm cách cải thiện.

Tham Số Khác

--depend: Hiển thị thông tin về dependencies và thoát
--coords: Gọi show-coords để xuất thông tin tọa độ
--prefix/-p: Tiền tố cho tên file xuất ra
--[no]delta: Có xuất file delta hay không, mặc định là có

Các Tham Số Mới Trong Phiên Bản 4

--threads/-t: Hỗ trợ đa lõi processor
--delta=PATH: Chỉ định vị trí file delta thay vì sử dụng thư mục hiện tại
--sam-short=PATH: Lưu kết quả ở định dạng SAM ngắn
--sam-long=PATH: Lưu kết quả ở định dạng SAM dài
--save=PREFIX: Lưu suffix array
--load=PREFIX: Tải suffix array đã lưu

Các Ví Dụ Thực Tế

Trường Hợp 1: So Sánh Hai Genome Hoàn Chỉnh

Khi so sánh hai strain vi khuẩn có độ tương đồng cao, có thể sử dụng lệnh sau:

mummer -mum -b -c genome1.fasta genome2.fasta > result.mums

# -mum: Tính các maximal unique matches trong cả hai trình tự
# -b: Tính cả matches trên strand thuận và đảo
# -c: Báo cáo vị trí của chuỗi bổ sung ngược so với trình tự gốc

Trường Hợp 2: Trình Tự Tương Đồng Cao Không Có Tái Sắp Xếp

run-mummer1 ref_sequence.fasta qry_sequence.fasta output_prefix

# Chỉ báo cáo các matches trên strand âm
run-mummer1 ref_sequence.fasta qry_sequence.fasta output_prefix -r

Trường Hợp 3: Trình Tự Tương Đồng Cao Có Tái Sắp Xếp

run-mummer3 ref_sequence.fasta qry_sequence.fasta output_prefix

Trường Hợp 4: Trình Tự Có Độ Tương Đồng Thấp Hơn

Khi độ tương đồng không quá cao, nucmer là lựa chọn tốt hơn vì nó tập trung vào các điểm giống nhau và cho phép tái sắp xếp, đảo ngược cũng như các đoạn lặp.

nucmer --maxgap=500 --mincluster=100 --prefix=output_prefix reference.fasta query.fasta

# --maxgap: Gap tối đa giữa hai match là 500
# --mincluster: Cần ít nhất 100 match để tạo thành một cluster

Nucmer hỗ trợ so sánh nhiều đối nhiều, nhưng phổ biến nhất vẫn là so sánh nhiều đối một.

Trường Hợp 5: Sử Dụng Dịch Thuật Amino Acid

promer --prefix=output_prefix reference.fasta query.fasta

Trường Hợp 6: So Sánh Gene Draft (Cấp độ Scaffold Hoặc Contig)

Bước đầu tiên là lọc bỏ các trình tự ngắn hơn 1kb:

# Lọc các contig ngắn hơn 1kb
awk -c fastx '{if (length($seq) > 1000) print ">"$name "\n"$seq}' assembly1.fasta > assembly1_1kb.fa

awk -c fastx '{if (length($seq) > 1000) print ">"$name "\n"$seq}' assembly2.fasta > assembly2_1kb.fa

Sau đó chạy nucmer:

nucmer --prefix comparison assembly1_1kb.fa assembly2_1kb.fa &

Quá trình này có thể mất thời gian vì số lượng contig thường rất lớn (ví dụ: 20,000 contig).

Trường Hợp 7: So Sánh Một Genome Hoàn Chỉnh Với Gene Draft

nucmer --prefix comparison complete_genome.fasta draft_assembly.fasta

Sử Dụng Dnadiff

Trong phiên bản 4, có thêm công cụ dnadiff giúp đơn giản hóa quy trình. Công cụ này đóng gói nucmer và các công cụ xử lý dữ liệu khác, với rất ít tham số nhưng cung cấp đầu ra rất đầy đủ.

# Khi đã có file delta
dnadiff -d comparison.delta

# Khi chưa có file delta
dnadiff comparison complete_genome.fasta draft_assembly.fasta

Đây là lựa chọn lý tưởng khi không biết bắt đầu từ đâu.

Sử Dụng Delta-filter

Công cụ delta-filter giúp lọc kết quả alignment theo nhiều tiêu chí:

-i: Độ tương đồng tối thiểu [0,100], mặc định 0
-l: Độ dài match tối thiểu, mặc định 0
-u: Độ duy nhất của alignment tối thiểu [0,100], mặc định 0
-o: Độ chồng chéo tối đa, áp dụng cho -r và -q [0,100], mặc định 100
-g: Cho phép 1 đối 1 toàn cục, không cho phép tái sắp xếp
-1: Cho phép 1 đối 1 với tái sắp xếp, là giao của -r và -q
-m: Cho phép nhiều đối nhiều với tái sắp xếp, là hợp của -r và -q
-q: Chỉ giữ lại vị trí tốt nhất của mỗi query trên reference, cho phép nhiều query chồng lên nhau
-r: Chỉ giữ lại vị trí tốt nhất của mỗi reference trên query, cho phép nhiều reference chồng lên nhau

Hiển Thị Tọa Độ Với Show-coords

show-coords -r comparison.delta.filter > comparison.coord

# -r: Sắp xếp theo refID, ngược lại có -q sắp xếp theo queryID

Ứng Dụng Thực Tế Hoàn Chỉnh

Bước 1: Chạy Nucmer

nucmer --maxmatch -c 100 -b 500 -l 50 ref_genome.fasta qry_genome.fasta > alignment_output.delta

#--maxmatch: Sử dụng tất cả các anchor matches, bất kể tính duy nhất
#--mincluster/-c: Độ dài tối thiểu để tạo cluster, mặc định 65
#--breaklen/-b: Mức độ mở rộng tại hai đầu alignment, mặc định 200
#--minmatch/-l: Độ dài tối thiểu của một match đơn lẻ

Bư�ước 2: Lọc Kết Quả

delta-filter -1 -m -i 90 -l 100 alignment_output.delta > filtered_output.delta

#-1: 1 đối 1 với tái sắp xếp, giao của -r và -q
#-m: Nhiều đối nhiều với tái sắp xếp, hợp của -r và -q
#-i: Độ tương đồng tối thiểu 90%
#-l: Độ dài match tối thiểu 100

Bước 3: Xuất Tọa Độ

show-coords -THrd filtered_output.delta > filtered_output.coords

#-T: Chuyển đổi sang định dạng tab-separated
#-H: Không in header
#-r: Sắp xếp theo ID và tọa độ của reference
#-d: Hiển thị hướng alignment trong cột bổ sung

Bước 4: Vẽ Biểu Đồ Đồng Tuyến (Collinearity Plot)

Cần cài đặt trước các công cụ gnuplot và ps2pdf:

# Vẽ đồ thị dạng postscript
mummerplot --postscript filtered_output.delta

# Chuyển đổi sang PDF
ps2pdf output.ps output.pdf

Kết Luận

Mummer là một bộ công cụ rất mạnh và linh hoạt trong việc so sánh genome. Tùy thuộc vào mức độ tương đồng và loại biến thể cần phát hiện mà người dùng có thể chọn công cụ phù hợp: nucmer cho trình tự có độ tương đồng vừa phải, promer khi cần so sánh ở cấp độ protein, hoặc run-mummer1/3 cho các trường hợp đặc biệt.

Đăng vào ngày 10 tháng 6 lúc 16:02