第 04 章:AI 輔助生醫管線 — 用我的 skill 做 FASTQ 質控並讀懂報告
本章用第 03 章 Lab 11 做好的 skill my-nano4-slurm,請 AI Agent(Antigravity 內建 Agent、Codex 或 Claude Code)對 FASTQ 定序資料執行 FastQC 與 MultiQC 品質控制,並和 Agent 一起讀懂報告。您只需要說出想完成的分析,指令與 Slurm 腳本交給 Agent;您負責判斷 Agent 的計畫與結論是否合理。
第 5 節另外保留一套在登入節點手動執行的質控腳本,作為對照組,也是第 03 章 Lab 9(容器)需要的資料來源。
IMPORTANT
💡 跨領域通用學習聲明 (Case Study Disclaimer):
本章以「生醫基因定序 FASTQ 質控」作為具象化的端到端 (End-to-End) 數據處理示範案例。
非生醫背景的讀者請放心:無論您的真實研究是計算流體力學 (OpenFOAM)、分子動力學 (GROMACS/LAMMPS)、有限元素分析 (ANSYS) 還是深度學習模型訓練 (PyTorch),本章所傳授的:
- 如何給予 AI Agent 結構化 Prompt 自動產生處理流程
- 如何在登入節點以微型資料快速驗證管線邏輯 (Prototyping)
- 如何利用 VS Code 連接埠轉送在瀏覽器預覽互動式報表
- 如何讀懂報告中的品質指標,而不只是「看到」報告(§7 練習)
這套「數據拉取 ➔ 批次分析 ➔ 結果可視化」的核心架構與思維,可延伸應用到多數科學運算領域。
NOTE
本章實作檔案位於教材 repository。若重新開啟終端機,先回到教材根目錄:
cd "$HOME/Nano4-Docs"📌 目錄 (Table of Contents)
- 1. 生醫資訊前處理概念:FASTQ、FastQC 與 MultiQC
- 2. 用我的 skill 請 AI Agent 做質控(第二堂主線)
- 3. 請 AI Agent 撰寫分析腳本 (Prompt 提示詞技巧)
- 4. 檔案結構與腳本說明
- 5. 對照組:在登入節點手動執行質控流程
- 6. 檢視互動式報告:連接埠轉送與本機預覽
- 7. 練習:讀懂 MultiQC 報告
- 8. 登入節點之限制與進入 Slurm 排程的必要性
1. 生醫資訊前處理概念:FASTQ、FastQC 與 MultiQC
在生物資訊(Bioinformatics)與次世代定序(NGS、16S 擴增子定序、總體基因體學)研究中:
- FASTQ 檔案:定序儀(如 Illumina、PacBio、ONT)輸出的標準格式,每個 Read 由 4 行組成:
@Header:定序儀機型與座標資訊Sequence:鹼基序列(A, T, C, G, N)+:分隔符號Quality:對應每個鹼基的 Phred 品質分數(ASCII 字元編碼)
- FastQC:針對單一 FASTQ 樣本進行品質檢驗,檢查項目包括:
- Per Base Sequence Quality(鹼基品質分數曲線,Q30 代表 99.9% 準確率)
- Per Base Sequence Content(ATCG 比例均衡度)
- Per Sequence GC Content(GC 含量分佈,檢驗是否有外源物種污染)
- Adapter Content(接頭序列殘留程度)
- MultiQC:如果分析 30~100 個樣本,逐一開啟 FastQC HTML 報告耗時費力。MultiQC 能夠一鍵掃描整個目錄,將所有樣本的 FastQC 數據聚合為一份互動式網頁報告!
2. 用我的 skill 請 AI Agent 做質控(第二堂主線)
NOTE
需要先完成第 03 章 Lab 10–11:/work/<帳號>/slurm_lab 已建立,my-nano4-slurm 已用 install_my_skill.sh 複製給三個 Agent。
在 Antigravity 用 File ➔ Open Folder 開啟
/work/<帳號>/slurm_lab,選一個 Agent 開新對話(新對話才會讀到最新的 skill)。用自然語言說出您的分析需求:
text請使用 my-nano4-slurm skill。fastq_raw/ 裡是 4 個 16S 定序樣本,我想知道它們的定序品質好不好、適不適合做後續分析。 請用 FastQC 檢查每個樣本,再用 MultiQC 彙整成一份報告,結果放在 qc_skill/。 送出前先告訴我你的計畫;跑完後告訴我報告的位置,並用白話說明:每個樣本有幾條 reads、品質分數如何、有沒有需要注意的警告。對照您的 skill,檢查 Agent 這次有沒有不需要提醒就做對:
檢查項目 ✅ / ❌ 先說明計畫,等您同意才送出 GOV115088+ngs62g+-c 8 --mem=62Gmodule purge,FastQC 一起載入biology/JDK/26.0.1用 sbatch送到計算節點;確認 FastQC 報告數量等於樣本數用白話回報結果與報告位置 若還有 ❌,請 Agent 說明原因並修正,再請它把這次的教訓補進 my-nano4-slurm,然後重新執行
install_my_skill.sh。這就是 skill 的成長方式:每用一次,就更少犯錯。依第 6 節打開 Agent 產生的 MultiQC 報告(第 6 節方式 A 可以在腳本後面加上報告所在的資料夾),完成第 7 節的練習,並把您的答案和 Agent 的白話解讀互相比對:Agent 說的和報告上看到的一致嗎?
TIP
讀報告時,也可以直接問 Agent:「sample_04 的 Per Sequence GC Content 為什麼是紅色?這代表樣本不能用嗎?」請它用報告中的數據回答,您再對照圖表確認。
3. 請 AI Agent 撰寫分析腳本 (Prompt 提示詞技巧)
若沒有現成的 skill,也可以用一段具體、具備架構要求的提示詞請 Agent(Antigravity 內建 Agent、Codex 或 Claude Code)撰寫腳本:
你是一位熟悉生物資訊分析與 Linux HPC 環境的工程師。
我目前在國網中心 Nano4 登入節點上,需要建立一套 FASTQ 資料前處理與品質控制(QC)管線。
請幫我編寫一個 Bash 腳本 `run_qc_pipeline.sh`,要求包含以下步驟:
1. 自動下載 QIIME 2 Moving Pictures 的示範 FASTQ 資料,存放在 `./fastq_raw/`。
2. 使用 Nano4 官方模組 `module load biology/JDK/26.0.1 biology/FastQC/0.11.9 biology/MultiQC` 載入 FastQC 與 MultiQC,找不到時要明確報錯停止。
3. 批次對 `./fastq_raw/` 下的所有 FASTQ 檔案執行 FastQC 分析,輸出至 `./fastqc_out/`。
4. 使用 MultiQC 彙整 `./fastqc_out/` 下的所有分析數據,生成 `./multiqc_out/multiqc_report.html`。
5. 包含完善的錯誤處理(set -euo pipefail),並在結尾輸出報告路徑。(完整提示詞可見 prompts/ai_prompt_bio_pipeline.md)
這是示範用 prompt,讓你練習如何向 AI 描述需求。第 5 節的對照組請使用本章已提供、驗證過的
run_fastqc_multiqc.sh;你可以拿 AI 產生的run_qc_pipeline.sh和它比較差異。
4. 檔案結構與腳本說明
04-ai-assisted-bio-pipeline/
├── README.md # 本章完整教學手冊
├── prompts/
│ └── ai_prompt_bio_pipeline.md # AI Agent 引導提示詞範本
├── scripts/
│ ├── download_demo_fastq.sh # [1] 自動準備/取樣 4 組示範 FASTQ 檔案
│ ├── run_fastqc_multiqc.sh # [2] 執行 FastQC 分析與 MultiQC 聚合
│ └── view_multiqc_report.sh # [3] 啟動 HTTP 服務並引導 VS Code 轉送預覽
└── demo_data/ # 資料與報告存放區
├── fastq_raw/ # 原始 FASTQ 檔案 (*.fastq.gz)
├── fastqc_out/ # FastQC 輸出產物 (*_fastqc.zip)
└── multiqc_out/ # MultiQC 匯總產物 (multiqc_report.html)5. 對照組:在登入節點手動執行質控流程
這是不經過 AI、也不經過 Slurm 的手動版本:4 個微型樣本直接在登入節點跑,只需數秒。第三堂的第 03 章 Lab 9(容器)會用到這裡產生的 demo_data/fastqc_out/,請在 Lab 9 之前執行一次。
按下 Ctrl + ` 展開整合式終端機:
步驟 1:下載示範 FASTQ 資料
cd "$HOME/Nano4-Docs/04-ai-assisted-bio-pipeline/scripts"
bash download_demo_fastq.shrepository 已附 4 組示範樣本(sample_01_R1.fastq.gz ~ sample_04_R1.fastq.gz,各 1000 條 reads),此腳本會直接沿用;若檔案不存在,才會下載 QIIME 2 Moving Pictures 資料並重新拆分。
NOTE
質控腳本會以 module load biology/JDK/26.0.1 biology/FastQC/0.11.9 biology/MultiQC 載入 Nano4 官方模組,執行真正的 FastQC 與 MultiQC。4 個微型樣本在登入節點只需數秒、使用 4 核心,符合登入節點微型測試規範。
步驟 2:執行質控管線
bash run_fastqc_multiqc.sh執行日誌輸出範例:
========================================================
🔬 [1/3] 檢查 FASTQ 原始資料與質控工具...
FastQC 執行檔 : /work/envstack/apps/application/biology/FastQC/fastqc_v0.11.9/bin/fastqc
MultiQC 執行檔: /work/envstack/apps/application/biology/MultiQC/multiqc_v1.35/bin/multiqc
========================================================
🧬 [2/3] 執行 FastQC 品質控制分析...
========================================================
Analysis complete for sample_01_R1.fastq.gz
...
Analysis complete for sample_04_R1.fastq.gz
📊 [3/3] 執行 MultiQC 彙整產生單一 HTML 報告...
========================================================
/// MultiQC 🔍 v1.35
fastqc | Found 4 reports
write_results | Report : demo_data/multiqc_out/multiqc_report.html
multiqc | MultiQC complete
--------------------------------------------------------
🎉 質控管線執行完畢!
MultiQC 報告位置: demo_data/multiqc_out/multiqc_report.html實際畫面中的報告路徑會顯示為完整的絕對路徑(例如
/home/<帳號>/Nano4-Docs/04-ai-assisted-bio-pipeline/scripts/../demo_data/multiqc_out/multiqc_report.html),指的是同一個檔案。
6. 檢視互動式報告:連接埠轉送與本機預覽
產生的 multiqc_report.html 位於遠端 Nano4 伺服器上。在 Antigravity / VS Code Remote-SSH 架構下,有兩種預覽方式:
方式 A:一鍵啟動預覽並透過連接埠轉送 (Port Forwarding)
cd "$HOME/Nano4-Docs/04-ai-assisted-bio-pipeline/scripts"
bash view_multiqc_report.sh # 第 5 節對照組的報告
bash view_multiqc_report.sh /work/$USER/slurm_lab/qc_skill/<報告所在資料夾> # 第 2 節 Agent 產生的報告終端機提示:
========================================================
📊 MultiQC HTML 報告預覽服務已啟動!
========================================================
主機節點 : 25a-lgn01
分配埠號 : 43821
--------------------------------------------------------
👉 檢視報告方式 (VS Code Remote-SSH 使用者推薦):
1. VS Code 終端機通常會跳出提示:「在瀏覽器中開啟通訊埠 43821」
2. 若無提示,請切換至 VS Code 下方面板「連接埠 (Ports)」頁籤
點擊「轉送通訊埠 (Forward a Port)」並輸入 43821
3. 在筆電瀏覽器打開:http://localhost:43821/multiqc_report.html
========================================================點擊連結即可直接在個人電腦瀏覽器中操作互動式圖表、縮放品質曲線、下載統計圖檔!
看完報告後,請關閉在登入節點背景執行的預覽服務:
tmux kill-session -t svc-multiqc-report方式 B:VS Code 檔案總管直接下載
在左側檔案總管找到 multiqc_report.html(第 2 節:/work/<帳號>/slurm_lab/qc_skill/ 底下;第 5 節:Nano4-Docs/04-ai-assisted-bio-pipeline/demo_data/multiqc_out/),按右鍵 ➔ 選擇 「下載... (Download...)」,存至筆電桌面雙擊打開!
7. 練習:讀懂 MultiQC 報告
打開第 6 節的 MultiQC 報告,回答下列問題(約 5–10 分鐘):
- General Statistics 表格:4 個樣本各有幾條 reads?GC 含量大約是多少?
- Sequence Length Distribution:reads 的長度範圍是多少?為什麼這一項會出現黃色警告?
- Per Base Sequence Quality:4 個樣本的品質分數落在哪個顏色區域?整體品質好不好?
- Status Checks 熱圖:哪個樣本的哪一項出現紅色(fail)?其他 3 個樣本同一項是什麼顏色?
- 綜合判斷:第 4 題的紅色代表這個樣本不能用嗎?(提示:每個樣本只有 1000 條 reads。)
參考答案(先自己作答再展開)
- 每個樣本 1000 條 reads(第 03 章 Lab 8 算出的數字也是 1000);GC 含量約 46–47%。
- 長度介於約 50–101 bp。FastQC 預期所有 reads 一樣長,長度不一致就會給警告;定序資料經過品質修剪(trimming)後長度不一很常見,通常不是問題。
- 4 個樣本都落在綠色區域(
pass),定序品質良好。 sample_04_R1的 Per Sequence GC Content 為紅色(fail);其他 3 個樣本同一項為黃色(warn)。sample_04_R1另外還有 Overrepresented Sequences 警告。- 不一定。GC 含量分布需要足夠的 reads 才會平滑;只有 1000 條 reads 時分布很容易有鋸齒,就會觸發警告或失敗。FastQC 的紅黃綠是提醒「去看這張圖」,不是自動淘汰樣本;真正判斷要看完整資料與實驗設計。
8. 登入節點之限制與進入 Slurm 排程的必要性
第 5 節在登入節點上執行微型樣本(4 個樣本、各 1000 條 Reads)僅花費數秒鐘,是驗證程式碼邏輯的極佳方式。
然而,在真實科研專案中:
- 真實樣本文庫通常有 數十到數千個樣本。
- 每個 FASTQ 壓縮檔動輒 數百 MB 到數十 GB。
- 若直接在登入節點執行大型 FastQC、BWA 比對、SAMtools 排序或 QIIME 2 DADA2 去噪,會佔用高達數十個 CPU 核心與幾百 GB 記憶體,導致整台登入節點卡死。
- 國網中心官方安全鐵律:登入節點上執行超過 5 分鐘的重度運算,系統守護程式將會自動無預警強制清除該用戶的所有行程(Killed)!
這也是第 2 節一開始就請 AI Agent 把分析寫成 Slurm 批次作業、派送到 Nano4 的 ngs62g 計算節點執行的原因(本課程唯一使用的佇列,每個作業固定 -c 8 --mem=62G)。
💡 學習脈絡導讀 (Roadmap):
- 在 第 03 章,您學會了 Nano4 的 Slurm 語法,並把和 AI Agent 合作的經驗存成
my-nano4-slurm。- 本章用這個 skill 完成了 FASTQ 質控與報告判讀。
- 在 第 05 章(第三堂),我們請 AI Agent 把登入節點的分析流程重構為離線與外網直連兩種 Slurm 管線;第 06 章再把您的 skill 和課程提供的 Skills 比較。