Potato 在瀏覽器中為化學家提供結構編輯器和譜圖檢視器,標註者可以校正從專利和論文中識別出的結構,繪製按標準答案評分的結構,標記反應中心等原子,並在 NMR、IR 和質譜譜圖上拾取峰並積分。Potato 免費開源,執行在你自己的伺服器上,並把結構匯出為 SD 檔案、把峰匯出為 CSV 檔案,每條記錄都存在相應標註者的名下。
光學化學結構識別(OCSR)把專利或論文中的分子圖轉換為機器可讀的結構。OCSR 模型 MolScribe 在公開基準上的準確率為 76% 到 93%(Qian et al., 2023),因此由專利構建的資料集需要有人把每個識別出的結構與原圖逐一核對。線上化學教學中,大多數關於化學結構的問題無法按對錯二分來評分,而當可以接受一定容差時,與預期結構做嚴格比較就會失效(Plyer et al., 2022)。Potato 把每個結構評為對或錯,標準答案可以忽略立體化學,也可以只要求包含某個子結構。Potato 不執行任何 OCSR 模型,研究載入的是其他工具生成的識別結構和處理後的譜圖。
Potato 中的化學任務
chemical_structure 和 peak_picking 方案以及 molecule 和 spectrum 顯示類型是 Potato 2.13 新增的,連結頁面給出了配置。
| 任務 | Potato 的做法 | 文件 |
|---|---|---|
| 校正 OCSR 輸出 | 編輯器開啟時載入識別出的結構,旁邊是原始插圖,標註者修正識別錯誤的原子、鍵和立體中心 | 化學結構 |
| 為手繪結構評分 | 學生用滑鼠繪製或鍵入 SMILES 字串,Potato 在伺服器上把每份繪製結果與 SMILES、molfile、InChIKey 或 SMARTS 標準答案比對評分 | 化學結構 |
| 標記反應中心或代謝位點 | molecule 顯示類型配合 viewer_selection 方案,按索引儲存每個選中的原子,旁邊可以用固定高亮顯示模型預測的原子 | 化學結構 |
| NMR 峰拾取與積分 | 點選拾取一個峰,在 Integrate 模式下拖動對一個多重峰積分,每個峰可以填寫歸屬和多重性等欄位 | 譜圖 |
| 稽核自動峰拾取程式的結果 | 程式給出的峰作為建議載入,標註者逐一接受或拒絕每個建議峰 | 譜圖 |
| 標註 IR 和質譜譜圖 | IR 透射譜上取極小值,質心化的 mzML 掃描和 JCAMP-DX 峰表則以棒狀譜顯示 | 譜圖 |
一項由兩名標註者完成的結構校正研究
下面的配置讓兩名標註者檢查從專利插圖中識別出的每個結構,每名標註者標記識別錯誤的原子,校正結構,並評價識別品質。化學結構頁面列出了所有選項和條目格式。
annotation_task_name: "Patent structure check"
task_dir: .
media_directory: media
output_annotation_dir: annotation_output
data_files: [data/structures.json] # each item: figure, OCSR SMILES, true SMILES
item_properties: {id_key: id, text_key: note}
user_config:
allow_all_users: true
num_annotators_per_item: 2
instance_display:
layout:
direction: horizontal
fields:
- key: page_image # the figure cropped from the patent
type: image
label: "Source image"
- key: ocsr_smiles # what the OCSR tool produced
type: molecule
label: "Recognized structure"
annotation_schemes:
- annotation_type: viewer_selection
name: wrong_atoms
description: "Mark the atoms the recognizer got wrong"
viewer_field: ocsr_smiles
labels: ["wrong element", "wrong bond or charge", "wrong stereo"]
- annotation_type: chemical_structure
name: corrected
description: "Correct the structure so it matches the source image"
prefill_field: ocsr_smiles
answer_field: true_smiles # graded in the export, never sent to the page
rdkit: false # OpenChemLib only, graded by the chemistry extra
label_requirement: {required: true}
- annotation_type: radio
name: verdict
description: "How good was the recognition?"
labels: ["Correct", "Minor errors", "Wrong structure"]
label_requirement: {required: true}num_annotators_per_item: 2 把每個結構發給兩名標註者。Potato 會從頁面收到的所有內容中刪除 true_smiles。設定 rdkit: false 後,瀏覽器只載入 OpenChemLib,由 chemistry 可選依賴(pip install 'potato-annotation[chemistry]')在匯出時為每個校正後的結構評分。在匯出中把 answer_correct 與 changed 對照,可以區分標註者漏掉的錯誤和標註者引入的錯誤。
匯入結構和譜圖,匯出答案
結構欄位存放 SMILES 字串、molfile 文本,或者 .mol、.sdf 或 .smi 檔案的名稱。譜圖由 Potato 伺服器從媒體目錄讀取,副檔名決定使用哪個讀取器:
- JCAMP-DX。
.jdx、.dx和.jcamp檔案無需額外安裝即可開啟,包括壓縮的##XYDATA、峰表,以及 Bruker 和 MestReNova 寫出的##NTUPLES形式。 - mzML。 質譜執行檔案需要
spectra可選依賴(pip install 'potato-annotation[spectra]')才能開啟,條目可以指定執行中的某一個掃描。 - CSV 和文本。 兩列,先 x 後 y,可選的表頭行給出單位。
chemistry 匯出寫出每個答案一行的 chemical_structures.csv、包含每個答案 molfile 的 chemical_structures.sdf,以及每個選中原子一行的 molecule_atoms.csv。peak_table 匯出寫出 peaks.csv 和 peaks.jsonl,每個峰、每個積分割槽域和每個被拒絕的建議各佔一行:
python -m potato.export --config config.yaml --format chemistry --output out/
python -m potato.export --config config.yaml --format peak_table --output out/Potato 的一致性指標不覆蓋 chemical_structure、viewer_selection 或 peak_picking 方案。要比較兩名標註者給出的結構,可以按 instance_id 和 schema 匹配 chemical_structures.csv 中的行,再比較 inchikey。對於峰,在 ppm 或 cm⁻¹ 的容差範圍內匹配 peaks.csv 中同一條目的行;已接受和已拒絕建議的數量給出每名標註者對峰拾取程式結果的接受率。
與 ChemDraw、RDKit 及 Mnova 的分工
ChemDraw 是 Revvity Signals 的商業繪圖軟體,斯坦福等大學購買了全校授權,適合為論文和學位論文繪製結構。RDKit 是面向 C++ 和 Python 的開源化學資訊學軟體,適合對匯出的結構做指令碼化分析。Mestrelab 的 Mnova NMR 處理和分析來自多家譜儀廠商的一維和二維 NMR 資料,適合把原始資料處理成譜圖。NMRium 在瀏覽器中處理來自 JCAMP-DX 檔案、Bruker 資料夾和 JEOL 檔案的 NMR 譜圖,並提供用於教學的結構解析練習。當多名標註者回答同樣的條目時,Potato 更合適,因為 Potato 把每個結構或每張譜圖分配給設定人數的標註者,用帶評分的練習條目培訓標註者,並把每位標註者的答案分開匯出。一種做法是先在 Mnova 中處理譜圖,把譜圖儲存為 JCAMP-DX,再讓標註者在 Potato 中拾取峰。
藉助程式設計智慧體搭建研究
potato-skill 1.2.0 認得 chemical_structure、molecule、peak_picking 和 spectrum 這些名稱,並指導 Claude Code、Codex 或 Cursor 完成研究設計這一側的工作,例如向標註者問什麼、每個條目由幾名標註者檢視、培訓和注意力檢查,以及匯出。這個技能目前還沒有記錄結構和譜圖格式、標準答案模式、顯示選項,以及 chemistry 和 spectra 可選依賴。請讓智慧體參考化學結構和譜圖頁面,或這些頁面的 Markdown 副本(例如 https://www.potatoannotator.com/docs/annotation-types/spectra.md),以瞭解格式和選項。
常見問題
標註者能否對照專利插圖核對 DECIMER 或 MolScribe 的輸出?
能。每個條目給出從專利中裁出的插圖和 OCSR 工具生成的 SMILES 字串,編輯器開啟時載入識別出的結構,旁邊是這幅插圖。標註者標記識別錯誤的原子並校正結構。未改動的結構儲存時帶有 changed: false,匯出中的 answer_correct 表示每個儲存的結構是否與真實結構一致。
標準答案能區分立體異構體嗎?
能,預設如此。精確模式比較標準 InChIKey,在某個立體中心上構型畫錯的結構無法通過標準答案。在結構型鍵上加 ignore_stereo: true 後,只比較 InChIKey 的第一個 14 字元段,預期結構的任何立體異構體都能通過。第一段只編碼連線關係。
Potato 能讀取 XYDATA 經過壓縮的 JCAMP-DX 檔案嗎?
能。Potato 讀取所有 ASDF 形式的 ##XYDATA,包括 SQZ、DIF 和 DUP 壓縮,並檢查每個續行開頭的 DIF Y 值檢查,檢查失敗的檔案會被視為損壞而拒絕。二維 NMR、JCAMP-CS 結構和沒有橫座標的 FID 不會被讀取。
延伸閱讀
- 化學結構:編輯器、標準答案和匯出檔案
- 譜圖:所有譜圖格式、顯示選項和匯出列
- 培訓階段和品質控制:帶評分的練習條目和金標準結構
- 你需要多少位標註者?:選擇每個條目的標註者人數
- 生命科學:本站關於變異稽核、蛋白質結構和生物醫學文本的頁面
參考文獻
- Qian et al. (2023). MolScribe: Robust Molecular Structure Recognition with Image-to-Graph Generation. Journal of Chemical Information and Modeling 63(7). https://doi.org/10.1021/acs.jcim.2c01480
- Plyer et al. (2022). Implementation of a soft grading system for chemistry in a Moodle plugin. Journal of Cheminformatics 14. https://doi.org/10.1186/s13321-022-00645-0