Skip to content
顯微成像與病理

用 Potato 做顯微成像與病理標註

在多通道 OME-Zarr 和 OME-TIFF 影像上為已分割的細胞分類,或在十億畫素切片上勾畫區域,再把每位標註者的區域匯出供 QuPath 使用。

Potato 在瀏覽器中顯示多通道熒光顯微影像和全切片病理掃描圖,標註者可以為已分割的細胞分類,在十億畫素切片上勾畫區域,並修正從 QuPath 或 ASAP 匯入的區域。Potato 免費開源,執行在你自己的伺服器上,並把每位標註者的區域匯出為 QuPath 可讀的 GeoJSON。

判讀切片是一種判斷,受過訓練的判讀者也會給出不同的結論。在一項研究中,115 名病理醫生對乳腺活檢切片給出了 6,900 個診斷,其中 75.3% 與由三名病理專家組成的小組確定的參考診斷一致,非典型增生病例的一致率為 48%(Elmore et al., 2015)。因此,報告各類別細胞計數或病灶面積的研究,能從每幅影像安排多名標註者、並給出標註者之間的一致性數值中獲益。Potato 執行的正是這類研究:把每幅影像或切片發給你設定人數的標註者,並把每位標註者的細胞和區域存在該標註者的名下。Potato 讀取在別處生成的分割結果,例如 Cellpose 或 StarDist 的標籤影像,自己不執行任何分割模型。

Potato 中的顯微成像與病理任務

熒光顯微影像使用 Potato 2.13 新增的 microscopy 方案,明場切片則在深度縮放檢視器中使用 image_annotation 方案。

任務Potato 的做法文件
為已分割的細胞分類標註者在標籤影像上點選一個細胞,按 1 到 9 中的某個鍵為它指定類別顯微影像
在篩選中為表型評分在高內涵篩選板的某個視野(例如 plate.ome.zarr/A/1/0)上執行設定了 tools: [] 的只標細胞任務顯微影像
在熒光影像上勾畫區域用矩形、多邊形和點工具標出受損組織或碎屑等區域,每個區域對應一個 z 切片和一個時間點顯微影像
標註全切片影像SVS、NDPI、MRXS 以及 openslide 可讀的其他切片格式,逐個瓦片開啟,可繪製框、多邊形和點深度縮放
修正來自 QuPath 或 ASAP 的區域potato import 讀取 QuPath GeoJSON 或 ASAP XML,並在每張切片上把這些區域顯示為預標註顯微影像
細胞類別的一致性所有標註者的逐細胞類別寫在同一個 CSV 檔案中,可用於計算 Cohen's kappa 或 Fleiss' kappa標註者間一致性

一項由三名標註者完成的標記物評分研究

下面的配置讓三名標註者把每個視野中的每個細胞核判為標記物陽性或標記物陰性,細胞核取自影像 OME-Zarr labels/ 組中的 nuclei 項。顯微影像頁面列出了所有選項。

yaml
annotation_task_name: "Marker scoring"
task_dir: .
media_directory: media
output_annotation_dir: annotation_output
data_files: [data/fields.json]    # each item names one OME-Zarr image in "image"
item_properties: {id_key: id, text_key: note}
user_config:
  allow_all_users: true
 
num_annotators_per_item: 3
 
annotation_schemes:
  - annotation_type: microscopy
    name: marker
    description: "Call every nucleus in the field positive or negative for the marker."
    tools: []                     # cells only, no region tools
    label_image: nuclei           # entry of the image's labels/ group
    labels:
      - {name: "marker positive", color: "#f03e3e"}
      - {name: "marker negative", color: "#4dabf7"}
    channels:
      - {name: DAPI, label: "DAPI (nuclei)"}
      - {index: 1, contrast: [100, 3000]}
    min_cells: 20
    label_requirement: {required: true}

num_annotators_per_item: 3 把每個視野發給三名標註者。設定 tools: [] 後,區域工具被隱藏,兩個類別作用於細胞。第二個 channels 項為標記物通道(從 0 開始計數)設定初始對比度視窗。min_cells 與 label_requirement 同時設定時,標註者為 20 個細胞分類之前,Next 一直不可用。

匯入影像與匯出標註

OME-Zarr 是開放顯微環境(Open Microscopy Environment)的分塊、多尺度影像格式;OME-TIFF 是一種 TIFF 檔案,其 OME-XML 頭部給出通道和維度的名稱。影像路徑相對於媒體目錄,Potato 根據格式選擇讀取器:

  • OME-Zarr。 0.4 和 0.5 版本通過 zarr-python 開啟,標籤影像取自儲存中的 labels/ 組。
  • OME-TIFF。 檔案通過 tifffile 開啟,金字塔以 SubIFD 形式儲存時也能開啟。OME-TIFF 沒有存放標籤影像的標準位置,因此每個條目要另外指定一個整數標籤 TIFF。
  • 全切片影像。 SVS、NDPI、MRXS 以及 openslide 可讀的其他格式需要 wsi 可選依賴,按切片自帶的金字塔逐個瓦片開啟。

熒光影像的讀取器需要 pip install 'potato-annotation[microscopy]'。對於熒光影像,microscopy 匯出寫出每個區域都帶有 user_id 的 microscopy_rois.geojson、每個已分類細胞一行的 microscopy_cells.csv,並把每位標註者的類別寫成 OME-Zarr 標籤影像。對於切片,下面第一條命令根據一個 QuPath GeoJSON 檔案和同名切片建立修正項目,第二條命令把每位標註者的區域寫回 QuPath GeoJSON:

bash
potato import -i case_01.geojson --image-dir /data/slides -o case-project
python -m potato.export -c case-project/config.yaml -f qupath_geojson -o out/qupath

切片匯出為每位標註者的每張切片寫出一個檔案,-f asap_xml 則改為寫出 ASAP XML。Potato 的一致性指標不覆蓋 microscopy 方案。按 instance_id、label_image 和 label_id 匹配 microscopy_cells.csv 中的行,就得到每個細胞一行、包含每位標註者類別的表格,可用於計算兩名標註者的 Cohen's kappa 或更多標註者的 Fleiss' kappa。對於用 image_annotation 方案繪製的切片區域,Potato 會就框和多邊形報告幾何一致性。

與 QuPath、napari 及 OMERO 的分工

QuPath 是用於生物影像分析的開源軟體,內建細胞和組織檢測,常用於數字病理研究,適合在大量切片上檢測和測量細胞。napari 是一款面向 Python 的快速、互動式多維影像檢視器,可以在 NumPy 或 Zarr 陣列上疊加點、多邊形和分割結果並加以編輯,適合在指令碼化分析中完成的標註。OMERO 是用於儲存、檢視、整理、分析和共享顯微影像的中央儲存庫,適合把所有影像放在一臺伺服器上的成像核心平臺。當多名標註者標註同樣的影像時,Potato 更合適,因為 Potato 把每幅影像或切片分配給設定人數的標註者,在正式條目之前培訓標註者,並把每位標註者的工作分開匯出。一種做法是先在 Cellpose 或 QuPath 中分割細胞,再在 Potato 中為細胞分類,最後在 QuPath 中開啟匯出的 GeoJSON。

藉助程式設計智慧體搭建研究

potato-skill 1.2.0 認得 microscopy 這個方案名稱,並指導 Claude Code、Codex 或 Cursor 完成研究設計這一側的工作,例如向標註者問什麼、每幅影像由幾名標註者分類、培訓和注意力檢查,以及匯出。這個技能目前還沒有記錄 OME-Zarr、OME-TIFF 和切片格式、方案選項,以及 microscopy 和 wsi 可選依賴。請讓智慧體參考顯微影像和深度縮放頁面,或這些頁面的 Markdown 副本(例如 https://www.potatoannotator.com/docs/annotation-types/microscopy.md),以瞭解格式和選項。

常見問題

能否匯入 MRXS 或 SVS 切片上已有的標註,讓標註者修正?

能,前提是標註為 QuPath GeoJSON 或 ASAP XML 格式。potato import 把每個區域檔案與同名切片配對,例如 case_01.geojson 與 case_01.mrxs,並在深度縮放檢視器中把這些區域顯示為預標註。

在不同縮放級別下繪製的區域,在 QuPath 中能與切片對齊嗎?

能。無論標註者在什麼放大倍數下繪製,Potato 都把每個區域儲存為相對於切片全解析度寬度和高度的比例值,qupath_geojson 匯出再把這些比例值換算為 0 級切片畫素。QuPath 的“Import objects”要求同一張切片的 0 級畫素座標,每個標籤匯入後成為一個 QuPath 分類。

每位標註者的細胞類別能否作為標籤影像儲存到 OME-Zarr 檔案中?

能。microscopy 匯出把每位標註者的類別寫成位於 labels/<schema>__<user> 的 OME-Zarr 標籤影像,其中每個細胞 id 都替換為該細胞的類別編號,每個類別帶有一個 image-label 顏色。把這個目錄複製到源影像的 labels/ 目錄中,並把它的名稱加入源影像 labels/ 組的 labels 列表。

延伸閱讀

參考文獻

  1. Elmore et al. (2015). Diagnostic Concordance Among Pathologists Interpreting Breast Biopsy Specimens. JAMA 313(11). https://doi.org/10.1001/jama.2015.1405

從這裡開始

其他領域

全部應用場景