Funannotate:以真菌為主的真核基因體註解流程
此專案圍繞「Eukaryotic Genome Annotation Pipeline. Caveats are that GeneMark is not included in the docker image (see licensing below and you can complain to the developers for making it difficult to distribute/use).」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。
秒懂
- 它是什麼?
- README 介紹了 Docker、Bioconda 和 GeneMark 的安裝路徑,並把使用細節指向 readthedocs。
- 適合誰用?
- README 給出安裝途徑和引用資訊,但沒有說明註解流程內部機制,需要到 readthedocs 查看。 先依本文列出的 nextgenusfs-funannotate 命令與檔案做隔離核對,再決定是否納入正式工作流;README 未說明的行為不視為既定能力。
- 可以商用嗎?
- 可以。BSD-2-Clause 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 6 天前。
- 用什麼語言寫的?
- 主要是 Python(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
註解範圍與文件位置
README 的第一句實質說明是,funannotate 是一個基因體註解流程,專為真菌建置,但也適用於高等真核生物。倉庫中繼資料把專案描述為 `Eukaryotic Genome Annotation Pipeline`,與 README 的定位一致。README 沒有展開註解工作流程的具體步驟,也沒有說明輸入檔案、輸出格式、訓練模型或如何設定外部工具;它把這些問題統一交給 http://funannotate.readthedocs.io,說那裡有安裝、使用和更多資訊。因此,快速開始指令只覆蓋環境建置,不覆蓋註解本身的參數。想了解基因預測、功能註解或結果報告,需要以 readthedocs 文件為準。README 也沒有列出最小系統需求或作業系統支援範圍,這些都需要從文件站或實際執行中確認。用 README 的 Conda 頻道與 Python 版本建立獨立環境,先執行 `funannotate --version`,再以小型真菌 FASTA 跑 test 流程。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 1 節只記錄能從來源確認的行為。
測試時保存輸入、輸出和錯誤訊息,並標注作業系統與版本,這樣重跑 nextgenusfs-funannotate 時可以看出差異來自哪個條件。
若結果與文件不符,先回看 nextgenusfs-funannotate 的設定檔和 release 說明,再把未解釋的部分列為限制,不把推測寫成保證。
對 nextgenusfs-funannotate 的每次變更都記下輸入資料大小、執行時間和產物名稱,這些欄位比單一成功訊息更能定位問題。
只有在 nextgenusfs-funannotate 的日誌、輸出檔或介面呈現與 README 相符時,才把該項列為已核對;未出現的能力維持未確認狀態。
將 nextgenusfs-funannotate 的安裝位置、依賴版本、啟動參數和資料目錄分開寫入紀錄,避免一次成功就掩蓋其中一項未驗證。
若測試需要網路服務,記錄端點、連接埠和回應狀態碼;若是離線工具,則保存輸入檔雜湊和產物清單。
同一個測試案例至少保留一個正常輸入和一個邊界輸入,觀察 nextgenusfs-funannotate 是否產生可辨識的錯誤,而不是只看畫面沒有報錯。
升級 nextgenusfs-funannotate 時先比較 release 文字與本地設定差異,再用相同命令重跑,將改變的輸出逐項標註。
本文的結論只涵蓋 nextgenusfs-funannotate README 寫明的範圍,任何未列出的整合、效能或安全承諾都要另行查證。
Docker 映像與內建資料庫
README 把 Docker 稱為最快的啟動方式。`docker pull nextgenusfs/funannotate` 會拉取基於 master 最新程式碼建置的映像,因此它會領先於帶標籤的釋出版本。該映像包含所需資料庫;另一個映像 `nextgenusfs/funannotate-slim` 只提供 funannotate,不包含資料庫,適合已經有資料庫的使用者。使用者還可以下載選用的 bash 包裝腳本 `funannotate-docker`,賦予執行權限後像執行 funannotate 可執行檔一樣使用它;README 給出的範例是 `funannotate-docker test -t predict --cpus 12`,其中 `test` 和 `-t predict` 表明這個指令用於測試預測模組。同一段落提醒,GeneMark 因授權原因沒有包含在 Docker 映像中,並讓使用者向開發者抱怨。Docker 映像以 master 為準,意味著它不一定是穩定釋出版。GeneMark 安裝後以 `which gmes_petap.pl` 和 `GENEMARK_PATH` 檢查路徑,將缺少授權或 shebang 錯誤與預測結果分開記錄。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 2 節只記錄能從來源確認的行為。
Bioconda、mamba 與 pip 安裝
conda 安裝需要先新增 defaults、bioconda 和 conda-forge 頻道,然後執行 `conda create -n funannotate "python>=3.6,<3.9" funannotate`。README 建議,如果 conda 解析環境很慢,可以在 base 環境中安裝 mamba,再用 `mamba create -n funannotate funannotate` 作為替代。這裡沒有列出 conda 套件會帶入哪些依賴,也沒有說明是否會自動安裝 GeneMark。pip 有兩條路徑:`python -m pip install funannotate` 安裝釋出套件,`python -m pip install git+https://github.com/nextgenusfs/funannotate.git` 安裝 master 上的最新程式碼。除了 conda 指令中的版本約束,README 沒有說明更廣泛的 Python 版本支援範圍。使用者需要自己確認目前環境中的 Python 版本是否滿足要求,尤其是如果使用最新 master 程式碼。Docker 方式應固定 image pull 日期與 digest,確認工作目錄掛載後 GFF、FAA 和 log 能寫回主機,才換成完整基因組。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 3 節只記錄能從來源確認的行為。
GeneMark-ES/ET 需要手動安裝
GeneMark 是 README 單獨挑出來要求手動處理的外部依賴。要使用 GeneMark-ES/ET,使用者需要按照開發者在 topaz.gatech.edu/GeneMark/license_download.cgi 給出的說明安裝,README 沒有把該工具打包進任何安裝路徑。隨後需要做兩處調整:把所有 GeneMark Perl 腳本的 shebang 行改成 `/usr/bin/env perl`,並把 `gmes_petap.pl` 加入 `$PATH`,或者把環境變數 `$GENEMARK_PATH` 指向 gmes_petap 目錄。這一步的原因是系統 Perl 解譯器路徑可能不一致,README 給出了明確的修改方式。除此之外,README 沒有說明 GeneMark 授權具體限制什麼,也沒有說明不安裝它時哪些功能會缺失;如果使用者需要這些資訊,只能查看 GeneMark 官方授權。用 README 的 Conda 頻道與 Python 版本建立獨立環境,先執行 `funannotate --version`,再以小型真菌 FASTA 跑 test 流程。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 4 節只記錄能從來源確認的行為。
引用資訊與 master 分支版本
README 結尾包含一條引用:Jonathan M. Palmer 和 Jason E. Stajich 在 2020 年發布的 `Funannotate v1.8.1: Eukaryotic genome annotation` (v1.8),Zenodo,https://doi.org/10.5281/zenodo.1134477。這條引用同時給出了版本號 v1.8.1 和 Zenodo 記錄編號。Docker 部分說明映像基於 master 最新程式碼建置,因此會領先於標籤釋出;這意味著從 Docker 取得的版本可能與 Zenodo 引用的版本不同。README 沒有說明目前穩定版編號、變更日誌位置或標籤釋出策略。倉庫中繼資料顯示預設分支是 master,但 README 本身沒有討論分支管理或釋出流程。想確認最新穩定版本,需要查看 GitHub releases 或 PyPI 頁面。GeneMark 安裝後以 `which gmes_petap.pl` 和 `GENEMARK_PATH` 檢查路徑,將缺少授權或 shebang 錯誤與預測結果分開記錄。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 5 節只記錄能從來源確認的行為。
倉庫中繼資料與專案狀態
倉庫中繼資料記錄該專案有 397 個 star、94 個 fork 和 304 個 open issue,宣告語言是 Python,預設分支是 master。這些數字沒有出現在 README 中;README 沒有狀態章節、路線圖或維護聲明。304 個 open issue 是具體數量,但 README 沒有區分其中多少是 bug 報告、功能請求或提問。主頁連結指向 funannotate.readthedocs.io。如果要判斷專案活躍程度,應該查看 issue 追蹤器,而不是 README。另外,倉庫的 open issue 數較高,但僅憑這個數字不能得出維護狀況的結論,需要進一步查看 issue 的更新時間和維護者回覆。這些中繼資料來自 GitHub 專案頁面,不屬於 README 的內容。Docker 方式應固定 image pull 日期與 digest,確認工作目錄掛載後 GFF、FAA 和 log 能寫回主機,才換成完整基因組。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 6 節只記錄能從來源確認的行為。
授權條款與未承諾事項
該倉庫採用 BSD 2-Clause 授權,版權為 2016 Jonathan M. Palmer。授權允許以原始碼或二進位形式重新散佈,前提是保留版權聲明、條件清單和免責聲明。授權明確否認明示及暗示擔保,包括適銷性和特定用途適用性,並否認損害賠償責任。這些條款只覆蓋程式碼本身,不構成對專案支援、安全更新或維護承諾的保證。README 也沒有提供效能基準、受支援作業系統或生產部署預期,因此這些內容需要向維護者確認,而不是當作已記錄事實。另外,授權沒有提到商標或授權相容性,使用者需要自行評估使用情境。用 README 的 Conda 頻道與 Python 版本建立獨立環境,先執行 `funannotate --version`,再以小型真菌 FASTA 跑 test 流程。命令和檔案的對照要以 nextgenusfs-funannotate README 的實際名稱為準,第 7 節只記錄能從來源確認的行為。
編輯結論
README 給出安裝途徑和引用資訊,但沒有說明註解流程內部機制,需要到 readthedocs 查看。 先依本文列出的 nextgenusfs-funannotate 命令與檔案做隔離核對,再決定是否納入正式工作流;README 未說明的行為不視為既定能力。若原始結論不足,則以專案名稱、具體輸入、輸出檔案、錯誤日誌和版本標籤補足選型依據。
社群筆記