Chưa từng viết một dòng lệnh nào? Không sao. Bài này nói về sinh học và về pipeline: vì sao đọc toàn bộ hệ gen trả lời được những câu hỏi mà PCR không thể, lắp ráp và chú giải nghĩa là gì, và nf-core/bacass biến FASTQ thô thành một bộ genome hoàn chỉnh như thế nào. Pipeline được chạy trên nền tảng Omicslab — nếu bạn chưa từng chạy pipeline nf-core ở đó, hãy đọc trước bài đồng hành Cách chạy pipeline nf-core trên nền tảng Omicslab.
Hãy tưởng tượng bạn đang làm luận văn về một chủng vi khuẩn kháng kháng sinh. Bạn cần trả lời hai câu hỏi: nó kháng loại kháng sinh nào, và vì sao nó kháng được — để từ đó giải thích cơ chế và đề xuất hướng xử lý.
Cách kiểm tra nhanh nhất, PCR, lại không giúp được trong tình huống này.
PCR hoạt động theo nguyên tắc "phải biết trước, rồi mới dò". Muốn chạy một phản ứng PCR, bạn phải đã biết trình tự cần tìm để thiết kế mồi (primer). Nói cách khác:
Lúc đó, giải pháp thay thế là đọc toàn bộ hệ gen thay vì chỉ dò một điểm. Bạn không cần biết trước phải tìm gì, vì toàn bộ thông tin đã nằm trong dữ liệu trình tự.
Máy giải trình tự không đọc được cả nhiễm sắc thể trong một lần. Nó trả về hàng triệu reads — những mảnh trình tự ngắn (dữ liệu Illumina) hoặc dài (Oxford Nanopore, PacBio) — giống như một cuốn sách bị xé thành hàng triệu mảnh giấy nhỏ, mỗi mảnh lại có phần chữ chồng lên mảnh bên cạnh.
Lắp ráp hệ gen (genome assembly) là việc tìm những đoạn chồng nhau đó để ghép các mảnh thành câu chữ liền mạch. Kết quả là một bộ genome gần như hoàn chỉnh: toàn bộ gene, đột biến và plasmid của chủng vi khuẩn — kể cả những thứ chưa ai từng biết. Sau đó, chú giải (annotation) gắn nhãn cho hệ gen để biết đoạn nào là gene, gene nào mã cho protein gì, và từ đó truy ra cơ chế kháng thuốc.
Minh hoạ với hệ gen 9 nucleotide (3 amino acid): giải trình tự, lắp ráp de novo, rồi đối chiếu với tham chiếu — một nucleotide đổi làm đổi amino acid.
Quá trình sinh học này gồm ba bước:
Điểm quan trọng cho câu chuyện PCR ở trên: so sánh với tham chiếu chỉ tìm được khác biệt so với cái đã biết. Một gene hoàn toàn mới sẽ không nằm trong tham chiếu — nên ta cần lắp ráp de novo rồi chú giải để phát hiện nó.
| Thuật ngữ | Hiểu đơn giản là |
|---|---|
| Read | Một mảnh trình tự máy đọc được |
| Độ phủ (coverage) | Trung bình mỗi vị trí trong hệ gen được đọc bao nhiêu lần — càng cao càng chắc |
| Contig | Một đoạn trình tự liền mạch đã ghép xong |
| N50 | Chỉ số cho biết các contig dài ngắn ra sao; N50 càng lớn, bộ lắp ráp càng liền mạch |
| Short-read | Đọc ngắn, chính xác, rẻ (ví dụ Illumina) |
| Long-read | Đọc dài, giúp ghép qua các vùng lặp (ví dụ Nanopore, PacBio) |
| Hybrid | Dùng cả đọc ngắn lẫn đọc dài cho kết quả tốt nhất |
| Chú giải | Gắn nhãn cho hệ gen: đâu là gene, chức năng gì |
Hệ gen vi khuẩn nhỏ — thường chỉ 2–8 triệu cặp base và thường chỉ có một nhiễm sắc thể vòng. Vì vậy việc lắp ráp vi khuẩn dễ hơn nhiều so với hệ gen người, và đây là bài toán lý tưởng để bắt đầu.
nf-core/bacass là một quy trình chung được cộng đồng xây dựng để lắp ráp và chú giải hệ gen vi khuẩn.
Nó nhận dữ liệu thô (FASTQ) và tự động chạy mọi bước cần thiết: kiểm tra chất lượng, cắt tỉa, lắp ráp, kiểm tra nhiễm chéo, đánh giá chất lượng bộ lắp ráp và chú giải.
Nguồn: nf-core/bacass (metromap), giấy phép MIT.
Nhìn vào metromap (bản đồ quy trình) ở trên, bạn có thể hình dung toàn bộ hành trình như một tuyến tàu điện với các ga:
| Chặng | Việc được làm tự động |
|---|---|
| Kiểm tra & cắt tỉa | FastQC, FastP cho đọc ngắn; NanoPlot/PycoQC, PoreChop/Filtlong cho đọc dài |
| Lắp ráp | Unicycler, MEGAHIT (ngắn); Flye, Canu, Raven, Miniasm, Dragonflye, Autocycler (dài) |
| Kiểm tra nhiễm chéo | Kraken2 và Kmerfinder để xác nhận mẫu không lẫn loài khác |
| Đánh giá bộ lắp ráp | QUAST và BUSCO — cho biết bộ lắp ráp tốt đến đâu |
| Chú giải | Prokka, Bakta hoặc DFAST — gắn nhãn gene và chức năng |
Mỗi chặng có thể được bật/tắt bằng các tham số đơn giản, nên bạn không phải chạy những bước chưa cần.
Quy trình hỗ trợ ba kiểu dữ liệu:
bacass cần một samplesheet: một bảng đơn giản (định dạng TSV, phân tách bằng dấu tab) cho biết mỗi mẫu có những tệp nào.
Sáu cột:
| Cột | Ý nghĩa |
|---|---|
ID |
Tên mẫu, không dấu cách |
R1, R2 |
Đọc ngắn xuôi và ngược; điền NA nếu không có |
LongFastQ |
Đọc dài; điền NA nếu không có |
Fast5 |
Thư mục Fast5 (nếu cần đánh bóng bộ lắp ráp); thường để NA |
GenomeSize |
Kích thước hệ gen ước tính, ví dụ 2.8m cho 2,8 triệu cặp base |
Một samplesheet thật đã có sẵn trong workspace omicslab — nhấp đúp tệp .tsv để xem nội dung: mỗi dòng là một mẫu, R1/R2 trỏ tới các tệp FASTQ.
Cần chỉnh sửa? Bấm Edit để mở bảng tính ngay trên nền tảng — thêm dòng, thêm cột và lưu lại thẳng vào workspace.
Ví dụ một samplesheet trộn đủ ba kiểu dữ liệu:
| ID | R1 | R2 | LongFastQ | Fast5 | GenomeSize |
|---|---|---|---|---|---|
shortreads |
./data/S1_R1.fastq.gz |
./data/S1_R2.fastq.gz |
NA | NA | NA |
longreads |
NA | NA | ./data/S1_long_fastq.gz |
NA | 2.8m |
shortNlong |
./data/S1_R1.fastq.gz |
./data/S1_R2.fastq.gz |
./data/S1_long_fastq.gz |
NA | 2.8m |
Chưa có dữ liệu? Xem mục sau để tải bộ dữ liệu mẫu miễn phí của nf-core và chạy thử trước.
Bài đồng hành Cách chạy pipeline nf-core trên nền tảng Omicslab mô tả từng bước phần cơ học — tạo workspace, tải dữ liệu, thêm pipeline, xem log và chi phí. Riêng với bacass, điều bạn cần quyết định là dữ liệu đầu vào và các lựa chọn dưới đây.
Bắt đầu với bộ dữ liệu mẫu miễn phí của nf-core. nf-core cung cấp sẵn một bộ dữ liệu vi khuẩn nhỏ cho chính pipeline này:
Tải samplesheet cùng các tệp FASTQ mà nó trỏ tới lên nền tảng, rồi chọn:
| Tham số | Chọn gì cho lần chạy đầu |
|---|---|
input |
Samplesheet bạn đã tải lên |
assembly_type |
short cho dữ liệu Illumina, long cho Nanopore/PacBio, hybrid khi có cả hai |
assembler |
unicycler (đọc ngắn), flye (đọc dài), dragonflye (hybrid) — hoặc bộ lắp ráp khác mà pipeline hỗ trợ |
annotation_tool |
prokka (nhanh, quen thuộc), bakta hoặc dfast |
busco_lineage |
bacteria_odb10 (mặc định) |
kraken2db |
Chỉ cần khi giữ bước kiểm tra nhiễm chéo |
skip_kraken2, skip_kmerfinder |
Bật cho lần chạy thử đầu tiên; khi đã quen hãy bật lại đầy đủ |
Bấm Run, theo dõi log Nextflow chạy trực tiếp trên trình duyệt, và mở lại job trong Lịch sử khi hoàn tất. Bộ dữ liệu mẫu 100 MB dùng cho các hình dưới đây hoàn tất trong khoảng 30 phút với chi phí 13.318 VND.
Lần đầu chạy, hãy dùng một mẫu duy nhất với bộ dữ liệu mẫu của nf-core. Khi mọi thứ trơn tru, hãy thêm nhiều mẫu vào cùng samplesheet — nền tảng sẽ tự chạy song song.
Sau khi quy trình hoàn tất, bạn nhận được một thư mục kết quả gọn gàng:
| Kết quả | Cho bạn biết điều gì |
|---|---|
*_assembly.fasta |
Trình tự bộ genome đã lắp ráp |
| Báo cáo QUAST | Số contig, N50, tổng độ dài — chất lượng bộ lắp ráp |
| Báo cáo BUSCO | Tỉ lệ gene thiết yếu được tìm thấy — độ hoàn chỉnh |
| Báo cáo Kraken2 / Kmerfinder | Mẫu có bị lẫn loài khác không |
Tệp chú giải (.gff, .gbk) |
Vị trí gene và chức năng dự đoán |
| Báo cáo MultiQC | Bản tổng hợp tất cả báo cáo trong một trang |
Để thấy quy trình này mạnh đến đâu, hãy xem một nghiên cứu có thật. Năm 2026, một nhóm nghiên cứu Việt Nam và quốc tế công bố trên PLOS Neglected Tropical Diseases kết quả giải trình tự 47 chủng vi khuẩn Burkholderia pseudomallei — tác nhân gây bệnh melioidosis. Các chủng được thu thập tại Bệnh viện Đa khoa tỉnh Hà Tĩnh năm 2020, cùng với mẫu đất và hai mẫu từ động vật.
Điểm đáng chú ý: họ dựng hệ gen bằng đúng quy trình nf-core/bacass mà bài này hướng dẫn — FastP cắt tỉa, Unicycler lắp ráp, Prokka chú giải — rồi mới phân tích sâu hơn.
Từ bộ genome đã lắp ráp, nhóm nghiên cứu:
Kết quả nổi bật: 60% ca bệnh thuộc một chủng duy nhất (ST 41), và các chủng này liên hệ chặt chẽ với mẫu đất cùng khu vực — gợi ý con đường lây từ môi trường sang người.
Điều đáng học: đây chính là kiểu câu hỏi mà PCR khó trả lời. Không ai biết trước "vùng gene ST 41" tồn tại để thiết kế mồi — nó chỉ lộ ra sau khi đọc toàn bộ hệ gen.
Norris MH, Au La TH, Metrailer MC, và cộng sự (2026). Expanding the molecular epidemiology of melioidosis in North Central Vietnam. PLOS Neglected Tropical Diseases, 20(2), e0013945. doi.org/10.1371/journal.pntd.0013945
Toàn bộ dữ liệu của nghiên cứu được công khai tại NCBI SRA, mã PRJNA1180080.
Bạn có hai cách để bắt đầu ngay từ đây:
PRJNA1180080 (hoặc dùng bộ dữ liệu mẫu của nf-core), đưa lên nền tảng và chạy nf-core/bacass theo hướng dẫn nền tảng. Bạn sẽ đi đúng con đường nhóm nghiên cứu đã đi — và có thể tự kiểm chứng kết quả.Không có một quy trình duy nhất đúng cho mọi câu hỏi. Hãy thử, so sánh và tự rút ra cách làm phù hợp — nền tảng không khóa bạn vào một danh sách công cụ cố định.
Có kết quả hay thắc mắc? Chia sẻ với chúng tôi tại contact@omicslab.io.
nf-core/bacass.