中文 · English課程入口 Teaching portalSpectraView 教學頁拉曼顏料分析教材GitHub 原始碼
Orange Data Mining × Spectroscopy

Orange 光譜 Widgets

十一個開源 widgets,把光譜學帶進 Orange 視覺化工作流:貼上 IRUG / SOPRANO 網址直接看光譜、 多譜疊圖合併、算相似度、建光譜庫比對未知物、用 NNLS 拆解混合光譜、尋峰標記XRF 元素標記PLS-DA 判別分析、畫水光譜學 Aquagram——全程拖拉連線、免寫程式。

安裝 Install Widget 教學 真實數據 Demo 範例工作流 新手教材 ▸
Overview

十一個 Widgets,一條龍的光譜鑑定流程

安裝後 Orange 工具箱會多一個 Spectra 分類。輸出的資料表採 Orange-Spectroscopy 慣例 (每一欄=一個波數、每一列=一條光譜),可直接接 PCA、PLS、階層式分群等 Orange 原生流程。

Import Spectrum URL

貼上 IRUG 編號(如 4119)、IRUG/SOPRANO 頁面網址,或 JCAMP-DX / CSV 直接網址——下載、畫圖、輸出資料表,一鍵完成。可連抓多條累積成一組。

Merge Spectra

把多個光譜來源疊在同一張圖,並輸出成一個合併資料表(每列一條光譜、共同波段),方便一次比對或接後續分析。

Load Spectra Files

一鍵吃整包光譜:資料夾或 .zip(免解壓)裡的 JCAMP-DX、CSV、矩陣 CSV、NetCDF .cdf 全部讀進來,輸出一個合併資料表。

Spectrometer

把「相機+繞射光柵」拍到的光譜照片變成校準光譜:影像旋轉、取水平帶讀強度、峰值游標自動找峰對準、一鍵把已知譜線寫進校準表,把像素校準成波長(Theremino 分光儀的核心功能)。

Spectra Similarity

兩組光譜的逐對相似度:Pearson correlation、cosine、光譜角 SAM、Euclidean 距離。自動對齊重疊波段再比較。

Spectral Library

把參考譜收進光譜庫、存成 .speclib 檔(與 SpectraView 桌面版完全互通),未知譜對庫搜尋、輸出排名命中表與最佳匹配。

Mixture Analysis

混合光譜 ≈ Σ cᵢ·參考譜ᵢ 的非負最小平方(NNLS)分解:回報每個成分的係數、百分比與擬合 R²,並疊出擬合曲線與殘差。

Aquagram(水光譜學)

Aquaphotomics 分析:在水的 12 個特徵吸收帶(WAMACs)取正規化吸光度,畫成 12 軸雷達圖,比較不同樣品/擾動下水的氫鍵結構差異。

Peak Finder

自動偵測波峰並在圖上標記位置,量測峰位、峰高、半高寬(FWHM)、顯著度與面積,輸出峰表。門檻與平滑可調。

Fe

XRF Element ID

XRF 能譜(keV)自動尋峰並比對元素特徵譜線(Kα/Kβ/Lα/Lβ,Na–U 53 元素),圖上直接標出「Fe Kα1」等元素標籤。

PLS-DA

偏最小平方判別分析:依類別上色的分數圖、loadings 與 VIP 變數重要性,一眼看出哪些波段把類別分開。

Install

安裝

先搞清楚你的 Orange 是哪一種——這決定安裝方式:
桌面版 App(從 orangedatamining.com 下載的獨立程式,點圖示開)→ 走 方式 A
pip 版 Orange(自己 pip install orange3、用 python -m Orange.canvas 開)→ 走 方式 B
兩者的 Python 環境不同,裝錯環境 widgets 不會出現。

方式 A ── 桌面版 App(最推薦)

用 App 內建的 Add-ons 對話框,從 PyPI 依名稱安裝:

1

開 Add-ons

Orange 選單 Options ▸ Add-ons…

2

Add more… 輸入名稱

按右上 Add more…,輸入 orange-spectra不是 git 網址——這個框只吃 PyPI 名稱),打勾後按 OK。套件已在 PyPI 上(目前 0.7.0)。

3

重啟 Orange

工具箱出現 Spectra 分類的 11 個 widgets。

Add-ons 對話框失敗?(如繁中 Windows 的 cp950 編碼問題,見 FAQ)可改用「命令列安裝進 App 環境」:找到 App 的 Python(如 …\Orange\python.exe)執行 python.exe -m pip install orange-spectra

方式 B ── pip 版 Orange

# 1) Orange 與 Qt 綁定(缺 PyQt5 會出現 "PyQt5 ... not available" 而開不了)
pip install orange3 PyQt5 PyQtWebEngine

# 2) orange-spectra widgets(從 PyPI 裝;要最新開發版才用 git 網址)
pip install orange-spectra

# 3) 啟動(用這個指令,不要點桌面 App 圖示——那是另一個環境)
python -m Orange.canvas
常見錯誤:
ImportError: PyQt5 … not available → 少裝 Qt,補 pip install PyQt5 PyQtWebEngine
▸ Add-ons 的 Add more… 貼 git 網址得到「packages were not found」→ 那個框只接受 PyPI 名稱,git 網址請走方式 B 的 pip install
裝一次就好,不用每次都裝。安裝是一次性的——裝完之後每次開 Orange, Spectra 分類的 11 個 widgets 都在,直接用。
只有要「更新」到新版時才需要重裝: pip install --upgrade orange-spectra, 然後完全關掉 Orange 再重開
▸ 每個 widget 左上角都有 「ℹ 說明 How to use」盒子與 「📖 開啟線上教學」按鈕, 不會用時點一下就能學。
Widget guide

Widget 逐一教學

Import Spectrum URL — 從網址匯入光譜

輸出:Spectra(Table,每列一條光譜)
  1. 在輸入框貼上來源,按 Fetch & add
    • IRUG 編號:4119(=http://www.irug.org/jcamp-details?id=4119,PB15 酞菁藍 Raman 譜)
    • SOPRANO 頁面網址(比利時 KIK-IRPA 顏料 Raman 資料庫)
    • JCAMP-DX(AFFN)或兩欄 CSV 的直接網址
  2. 右側即時畫出光譜(IR/Raman 慣例:波數由高至低)。
  3. 重複 Fetch 可累積多條光譜;清單可移除單條或全部清空。多條光譜會自動重採樣到共同波段。
原理:IRUG 網頁沒有下載檔——光譜其實藏在頁面互動圖(jqPlot)的 <script> 裡("波數:強度" 配對);SOPRANO 藏在 Dygraph 資料陣列;也支援 Plotly / Highcharts / Chart.js 等互動圖內嵌的 x/y 陣列(如 INFRA-ART 等資料庫)。widget 直接解析網頁原始碼還原數據。

Spectrometer — 影像分光(相機+繞射光柵)

輸出:Spectra(單一光譜的 Table)
  1. Choose spectrum photo… 選一張相機+繞射光柵拍到的光譜照片。若彩色條是直的(手機直拍很常見),用 Rotate 旋轉 轉 90°/270° 讓色散方向變水平——旋轉是無損的(只換軸、不內插)。
  2. Channel(luminance/R/G/B/sum)與 Strip centre / height 選要取的水平帶(上圖黃框)。
  3. Peak cursor 峰值游標:widget 會自動找峰(Min prominence / distance / Smoothing 可調),按「◀ 前一峰/下一峰 ▶」在峰之間跳,游標會吸附到 ±4 px 內的次像素峰位;左下角即時讀出 pixel、強度與 λ。
  4. 校準:游標對準一個認得的譜線 → 在 λ = 下拉選波長(內建日光燈特徵線 405.4/435.8/546.1 汞、611.6 銪,也可手動輸入)→ 按 寫進校準表 ↓。重複 2–3 條線後選 linear/quadratic 擬合;也可直接手填 像素=波長 對。留空則 x 軸維持像素。
  5. Status 的 R² 檢查校準品質:linear 擬合 R² 應接近 1(≥0.999),某點配錯譜線 R² 會明顯掉下來。注意「點數 = 次數+1」時 R²=1 是必然(exact fit 警告),不能當品質指標——加第 4 條線再看。
  6. Zoom plot to the calibrated range 只顯示校準區間(多項式在校準點外會發散,只影響顯示、不影響輸出);輸出接 Similarity / Library / Peak Finder / Data Table。
圖上三種線怎麼讀:紅色虛線=校準表裡的參考波長;灰色點線=自動偵測到的峰;紅色實線=游標位置(畫在擬合後的波長上)。游標停在校準點上時,實線與虛線的間距就是該點的擬合殘差——差越多代表那個 pixel=nm 配對越可疑。等效 Theremino Spectrometer 的核心,但處理拍好的照片(非即時串流);同機況照片可沿用同一組校準點。

Load Spectra Files — 批次載入光譜檔

輸出:Spectra(合併 Table,每列一條光譜、共同波段)
  1. Add files… / Add folder… / Add .zip… 加入來源;資料夾會掃描所有光譜檔(可含子資料夾),.zip 免解壓直接讀。
  2. 支援:JCAMP-DX(AFFN)、兩欄 CSV/TSV、矩陣 CSV(SpectraView「合併匯出」兩種版面都行)、NetCDF .cdf/.nc(classic 格式——applewine 等 chemometrics 資料集、ANDI 層析匯出)。
  3. 右側疊圖預覽全部光譜;輸出接 Similarity / Library / PLS-DA / Data Table。
NetCDF 讀法:取檔內最大的 2 維數值變數當資料矩陣(每列一條光譜),自動找長度相符的一維變數(wavelength / wavenumber / time…)當 x 軸;無法解析的檔會略過並提示。像 Kimmel Center FTIR library 這種「一包 zip 很多檔」直接 Add .zip 即可。

Merge Spectra — 多光譜疊圖合併

輸入:Spectra(可接多個來源) 輸出:Spectra(合併後的 Table)
  1. 把多個來源接到 Spectra 輸入——多個 Import Spectrum URL、Orange 的 File、或任何欄名=波數的 Table。
  2. 右側即時疊圖;Normalize each(none / max=1 / area=1 / SNV)讓不同強度的譜可比較,Stack offset 只把顯示往上錯開、不改數值。
  3. 輸出是一個合併 Table(每列一條光譜、共同重疊波段),可接 Similarity / Library / Mixture / PLS-DA。
這是 SpectraView 桌面版「開多檔疊圖+合併匯出」的 Orange 版:輸出取所有光譜的重疊波段內插到共同格點;完全沒重疊才報錯。

Spectra Similarity — 光譜相似度

輸入:Data(待比對光譜)、References(參考光譜,可省略) 輸出:Scores(逐對分數表)、Similarity Matrix(寬矩陣)
  1. 接上 Data 與 References:輸出 Data × References 每一對的四個指標。
  2. 只接 Data:改為 Data 內部兩兩互比(適合看一批樣品彼此像不像)。
  3. 排序依據可選 correlation / cosine(越大越像)或 SAM / Euclidean(越小越像)。
  4. Similarity Matrix 輸出(0.7.1 起)=「Sort scores by」所選指標的 Data × References 寬矩陣(只接 Data 時為 n×n 對稱矩陣、對角線=1)——接 Orange 原生 Heat Map widget 直接畫相似度熱圖,接 Data Table 看矩陣數字。
指標意義特性
correlationPearson 相關係數對位移與縮放都不敏感,鑑定最常用
cosine向量夾角餘弦對縮放不敏感
SAM光譜角(弧度)遙測/高光譜常用,越小越像
euclid單位化後歐氏距離直觀的「形狀差多少」

Spectral Library — 光譜庫建立與比對

輸入:Spectra(要入庫的參考譜)、Query(未知譜) 輸出:Hits(排名表)、Best Match(最佳匹配譜)、Library(整個庫)
  1. 把參考譜接到 Spectra 輸入,按 Add input spectra to library 入庫。
  2. Save… 存成 .speclibLoad… 載入既有庫——檔案格式與 SpectraView 桌面版相同
  3. Add built-in 一鍵載入內建庫(下拉選庫名→按鈕):
    糖類/食品添加物 NIR 庫(9 條;0.7.2 起隨套件內建、離線可用)——教學 Demo ②③ 用的就是這個庫。
    UCL 顏料拉曼庫(55 種,Bell, Clark & Gibbs 1997)——第一次按會直接向 UCL 官網下載(連不上時自動改抓 Internet Archive 存檔),之後讀本機快取、離線可用;因授權考量套件本身不含該資料。
  4. 未知譜接 Query:Hits 輸出每個 query 對每筆庫藏的排名與四個相似度指標,接 Data Table widget 即可檢視。
  5. Library 輸出把整個庫變成資料表——可以直接接 Mixture Analysis 當參考譜,或接 Spectra 檢視。
  6. 實例:硃砂樣品接 Query,最佳比對就是 Vermilion(HgS)。小訣竅:庫裡是未經基線校正的原始強度,未知譜先做基線校正(如 ALS)再查詢,correlation 會明顯拉開。發表時請引用 Bell, Clark & Gibbs, Spectrochim. Acta A 53 (1997) 2159。

Mixture Analysis — 混合光譜成分分析

輸入:Mixture(混合譜,取第一列)、References(純物質參考譜) 輸出:Composition(成分係數/比例)、Fit(擬合譜+殘差)
  1. 混合譜接 Mixture、一組純物質參考譜接 References
  2. 用非負最小平方(NNLS)解 mixture ≈ Σ cᵢ·refᵢ (+ offset);係數強制 ≥ 0,符合物理意義。
  3. widget 內直接顯示成分表(係數、百分比)與 R²;圖上疊出混合譜、擬合線與殘差。
  4. Composition 輸出接 Data TableBar Plot 畫成分比例;Fit 輸出含 mixture / NNLS fit / residual 三列。
教學重點:殘差若仍有明顯峰形,代表庫裡少了某個成分——這正是「參考譜不完整」的視覺證據。

Aquagram — 水光譜學(aquaphotomics)雷達圖

輸入:Data(NIR 光譜,需涵蓋約 1300–1600 nm 的水吸收區) 輸出:Aquagram Coordinates(每列一條光譜、12 個 WAMACs 欄)

Aquaphotomics(Tsenkova)用水在近紅外的 12 個特徵吸收帶(WAMACs,water matrix coordinates,約 1336–1522 nm)當「水的指紋」,把樣品在這 12 個座標的正規化吸光度畫成雷達圖,比較不同狀態(溫度、濃度、品種…擾動)下水的氫鍵結構變化。做法參考 NIRPY Research 的 aquagram 教學

  1. 接上 NIR 光譜(可先用 Import Spectrum URL / File 載入,或接 Orange-Spectroscopy 的前處理)。
  2. 選正規化方式:
    • raw:直接取 12 個波段的吸光度。
    • snv:先對每條光譜做 SNV(標準常態變量),再取值。
    • aquagram(預設,經典正規化):SNV 後,對整組樣品在每個波段做標準化 (值−均值)/標準差——0 就是這組的平均水譜,往外 = 該波段吸光度高於平均、往內 = 低於平均。
  3. 右側即時畫出 12 軸雷達圖,每條光譜一條線;WAMACs 波段可在輸入框自訂(預設標準 12 帶)。
  4. Aquagram Coordinates 輸出是 n×12 的資料表,可再接 PCA、分群或 Data Table 做量化比較。
波段說明:預設 12 WAMACs(nm)=1342, 1364, 1372, 1382, 1398, 1410, 1438, 1444, 1464, 1474, 1492, 1516;分別對應水的不同氫鍵物種(自由水 OH、S₀–S₄ 水簇、水合等)。若光譜單位不是 nm 或未涵蓋此區,widget 會提示波段落在範圍外。

Peak Finder — 波峰偵測與標記

輸入:Data(光譜 Table) 輸出:Peaks(position, height, FWHM, prominence, area)
  1. 接上光譜,圖上立刻以三角形+數字標出每個峰的位置。
  2. Min height / Min prominence(都是訊號全幅的 %)調高可濾掉雜訊小峰;Min distance(x 單位)避免相鄰的重複峰。
  3. Smoothing window(Savitzky-Golay 點數,0=關)只影響偵測——峰高仍讀原始訊號,不會被平滑壓低。
  4. Peaks 輸出接 Data Table:每列一個峰(所屬光譜、峰位、峰高、FWHM、顯著度、高斯估計面積)。
與 SpectraView 相同演算法(Analyze ▸ Find peaks):scipy 的 find_peaks 找極大值、peak_widths 在半高處量 FWHM。IR/Raman 鑑定常拿峰位表對照文獻特徵峰。

Fe XRF Element ID — XRF 光譜元素標記

輸入:Data(XRF 能譜,x 軸=keV) 輸出:Elements(元素比對表)
  1. 接上已校正能量軸(keV)的 XRF 譜;widget 自動尋峰。
  2. 每個峰在容差(Energy tolerance,預設 0.10 keV)內比對特徵譜線資料庫——Kα1/Kβ1/Lα1/Lβ1(X-ray Data Booklet 參考值,Na–U 共 53 個元素)。
  3. 圖上直接標「Fe Kα1」「Pb Lα1」等;比不到的峰標「?」。Lines 選單可限定只比 K 線或 L 線。
  4. Elements 輸出表列出每峰的所有候選(峰能量、譜線能量、Δ、峰高、元素、譜線名)——接 Data Table 檢視。
判讀提示:同一元素的 Kβ(或 Lβ)若也出現,可佐證判定;重疊峰(如 Pb Lα1 10.55 keV 與 As Kα1 10.54 keV)要靠第二條線區分。顏料分析常見:鉛白(Pb)、朱砂(Hg)、鐵紅(Fe)、鈦白(Ti)、鋅白(Zn)。

PLS-DA — 偏最小平方判別分析

輸入:Data(含類別 target 的光譜 Table) 輸出:Scores、Loadings、VIP、Predictions
  1. 資料要有類別變數:File/Datasets 載入後,用 Select Columns 把類別欄拖到 Target 再接進來。
  2. widget 把類別 one-hot 編碼後做 PLS2(NIPALS 演算法),分數圖依類別上色;標題顯示訓練準確率,狀態欄有混淆矩陣。
  3. Components 調潛在變數數目(太多會過擬合——準確率永遠 100% 就是警訊)。
  4. VIP 輸出(已排序):VIP > 1 常視為重要變數——這就是「哪些波數把類別分開」的答案。
  5. Predictions 輸出=原資料表+預測類別 meta,可接 Orange 原生評估 widget。
誠實評估:這裡顯示的是訓練集準確率,會偏樂觀。要報告真實效能,請用 Orange 的 Test & Score(交叉驗證)搭配 Logistic Regression 等學習器比較;PLS-DA 的價值在分數圖的可視化與 VIP 的波段解釋。
Live demo · 真實數據跑出結果

用內建範例資料實際跑一遍

下面所有圖與數字都是用真實範例資料(9 種糖類/添加物的 NIR 光譜——0.7.2 起 用 Spectral Library 的 Add built-in 一鍵載入,亦即 repo 的 examples/sugars_nir.speclib) 與真實玉米 NIR,實際用這些 widgets 的演算法跑出來的,不是示意圖。你在自己電腦照做會得到一樣的結果。

① Import Spectrum URL → 一次載入一組光譜

把 9 條糖類 NIR 參考譜載進來、疊在同一張圖(每列一條光譜的 Table)。

9 sugar NIR spectra

② Spectra Similarity → 9×9 相關係數熱圖

對 9 條糖譜兩兩算 correlation。化學上合理:蔗糖 vs 果糖 ≈ 0.99(蔗糖=葡萄糖+果糖), 糖類 vs 咖啡因 ≈ 0.71 明顯拉開。

correlation heatmap
Spectral LibraryAdd built-in:糖類 NIR 庫
Library
Spectra SimilaritySort by: correlation
Similarity Matrix
Heat MapOrange 原生 widget
在 Orange 裡重現這張圖:照上面接線即可——Similarity Matrix 輸出(0.7.1 起)就是 9×9 相關係數矩陣, 數值與本圖完全相同(上圖本身是用同一演算法以 matplotlib 排版輸出)。
Heat Map 設定:Clustering 的 Rows/Columns 選 (None)(本圖是字母序;開 Clustering 也很有教學價值——糖類自動聚成一群、咖啡因自己一群)、 Row Annotations 選 spectrum(列名顯示光譜名)、Color 挑一個紅黃綠系色盤(Orange 沒有與 matplotlib 一模一樣的配色)。 Heat Map 不會在格內印數字——把 Similarity Matrix 再接一個 Data Table 就能看到每格的相關係數。

③ Spectral Library → 未知糖比對排名

unknown_glucose.csv 對 9 種糖的庫搜尋,第一名正確命中 glucose(correlation = 1.0000)

library search ranking
排名命中correlation
1glucose1.0000
2sucrose0.9562
3fructose0.9533
9caffeine0.7078

④ Mixture Analysis → NNLS 拆解真實 CGL NIR 混合譜

用 Eigenvector 的 CGL 三成分 NIR 混合設計casein/glucose/lactate,1104–2496 nm):先用校正集以古典最小平方(CLS)估出三成分的純光譜, 再對一條真實測試混合譜做 NNLS 拆解。擬合 R² = 1.0000,回推比例與參考 wt% 相當接近。

NNLS unmixing of a real CGL NIR mixture
成分NNLS 回推比例參考 wt%
casein31.3%31.3%
glucose33.9%37.6%
lactate34.7%31.1%
自己重現/在 Orange 裡實跑:examples/cgl_mixture_nnls.py 會產生這張圖,並輸出 cgl_components.speclib(3 條純成分參考譜)與 cgl_mixture.csv(一條混合譜)——用 Load Spectra Files 載入接 Mixture Analysis 的 References、載入混合譜接 Mixture,即可在 Orange 裡跑同一次 NNLS 拆解。
(純光譜是用 CLS 從真實資料估的近似值,所以回推比例與參考值有數 % 的合理差異;光譜擬合本身 R²≈1。)

⑤ Aquagram → 真實玉米 NIR 水光譜雷達圖

用真實玉米近紅外光譜(依水分含量分低/高兩組),在 12 個 WAMACs 取正規化吸光度畫成 aquagram(雷達圖)。

real corn NIR aquagram
Example workflows

三個課堂範例工作流

① 看譜:貼網址 → 光譜 → 資料表

Import Spectrum URL輸入 4119(IRUG PB15)
Spectra
Data Table檢視數據

最短路徑:一個 widget 就能「貼上網址看光譜」;再接 Orange-Spectroscopy 的 Spectra widget 或 Line Plot 可另行檢視。

② 鑑定:建庫 → 未知譜比對

Import Spectrum URL抓多條參考譜
Spectra
Spectral Library入庫 → Save .speclib
Hits
Data Table排名結果
File / Import URL未知樣品譜
Query

未知譜從第二個來源(File widget 讀 CSV,或再開一個 Import URL)接到 Library 的 Query.speclib 檔和 SpectraView 桌面版、教學範例庫完全互通。

③ 定量:混合譜成分分析

Import Spectrum URL混合樣品譜
Mixture
Mixture AnalysisNNLS 分解
Composition
Bar Plot成分比例圖
Spectral LibraryLibrary 輸出當參考譜
References

參考譜可以來自光譜庫的 Library 輸出——「建庫」與「拆混合物」自然銜接成一條流程。

Integration

與 SpectraView、Orange-Spectroscopy 的整合

互通點說明
.speclib 光譜庫Orange 裡存的庫,SpectraView 桌面版直接 Library ▸ Load library… 開啟;反之亦然(如 examples/sugars_nir.speclib)。
資料表格式欄名=波數、每列一條光譜——與 Orange-Spectroscopy 及 SpectraView 的「合併匯出 X-matrix」相同,匯出 CSV 可雙向載入。
演算法相似度四指標與 NNLS 的定義和 SpectraView 完全一致,桌面版與 Orange 版結果可互相驗證。
下游分析Spectra 輸出可直接接 Orange 的 PCA、PLS(化學計量學)、距離矩陣、階層式分群等 widgets。
FAQ

常見問題

桌面版 Add-ons 安裝失敗:UnicodeDecodeError: 'cp950' codec can't decode…?

這是 Orange 桌面版在繁體中文 Windows(系統代碼頁 cp950/Big5)上的已知問題:Add-ons 對話框讀取 pip 輸出時用 cp950 解碼,遇到 UTF-8 字元(如進度條「━」)就中斷。跟裝哪個套件無關。兩種解法:

  1. 用命令列裝進 App 環境(推薦、最快)——開「命令提示字元」執行:
    "C:\Users\你的帳號\AppData\Local\Programs\Orange\python.exe" -m pip install orange-spectra
    跑完完全關閉再重開 Orange 即可。更新版本同理加 --upgrade
  2. 讓 Python 走 UTF-8——「編輯系統環境變數 ▸ 環境變數 ▸(使用者變數)新增」:名稱 PYTHONUTF8、值 1;重開 Orange 後 Add-ons 對話框就能正常用。
要每次用都重新 pip 安裝嗎?

不用。安裝是一次性的——裝完之後每次開 Orange,Spectra 分類的 11 個 widgets 都在,直接用。 只有要更新到新版時才重裝(pip install --upgrade orange-spectra), 且重裝後要完全關掉 Orange 再重開才會生效。

Spectrometer:游標紅線為何對不到校準的紅色虛線?

紅色虛線畫在你「填進校準表的參考波長」上,游標紅線畫在「擬合後該像素換算的波長」上——兩者的間距就是擬合殘差。 差距明顯(如好幾 nm)通常代表某個 pixel=nm 配對錯了譜線:把 Fit 切回 linear 看 R²(應 ≥0.999), 用峰值游標重新對準實際的峰再「寫進校準表」。另外「◀ 前一峰/下一峰 ▶」只在偵測到的峰之間跳; 太弱的譜線要先調低 Min prominence 才找得到。

不會用某個 widget,怎麼學?

每個 widget 左上角都有 「ℹ 說明 How to use」盒子(簡短中英說明)和 「📖 開啟線上教學」按鈕, 點按鈕就會開這頁對應段落。也可先看上面的 真實數據 Demo 看每個 widget 實際跑出什麼。

抓 IRUG 失敗(連線錯誤)怎麼辦?

先確認瀏覽器打得開該頁;校內網路有時擋外部站台。仍失敗時,可在瀏覽器用 SpectraView 桌面版的 File ▸ Import from URL / IRUG… 匯入後存成 CSV,再用 Orange 的 File widget 載入。

JCAMP-DX 檔抓下來是亂碼/解析失敗?

URL 匯入支援 AFFN(純數字)JCAMP;壓縮格式(SQZ/DIF/DUP)請用 SpectraView 開啟(它有完整解碼器)後匯出 CSV。

兩條光譜波段不同能比較嗎?

可以。相似度與 NNLS 都會先取重疊波段、內插到共同格點再計算;完全沒有重疊才會回報錯誤。

可以先做基線校正/平滑再比對嗎?

建議可以:接 Orange-Spectroscopy 的 Preprocess Spectra widget(含基線、SNV、Savitzky-Golay 等)在比對之前處理;或先在 SpectraView 做 airPLS 再匯出。

Getting started

第一次做光譜分析?先看這份教材

本頁是 11 個 widget 的參考手冊;如果你還不知道「扣基線、找峰、比對譜庫」在做什麼, 建議先走一遍入門教材,再回來查 widget 的細節。

📘 拉曼光譜顏料分析入門

寫給大一零基礎的教材,用真實顏料光譜資料把 扣基線 → 找峰 → 比對譜庫 → 混合物解混整條流程走一遍。 同一件事有三條路線可選:PythonR、以及用本頁的 widget 完全不寫程式

內容 5 篇 26 章 ・ 8 張圖表 ・ 50 題互動測驗(含學習儀表板與成績單匯出) ・ 10 個可下載的教學光譜檔 ・ Python 與 R 分析腳本
  1. 第四篇專門講怎麼把本頁的 widget 串成分析流程:Load Spectra Files → Peak Finder → Spectra Similarity → Spectral Library → Mixture Analysis。
  2. 第五篇有三個真實案例,以及「自動化程式一定會犯的三種錯」—— 這是初學者最需要知道、卻最少人講的部分。

開始閱讀 ▸