Skip to main content

orange-assay — plate-image & dose-response widgets for Orange Data Mining

English | 中文

Three Orange Data Mining widgets that turn assay plate photos into tables and fit dose-response curves — without writing code. The image core reuses the coffee-ring-analyzer algorithm, so results match its Streamlit / mobile / CLI versions. Sibling package to orange-spectra.

Widget What it does
Microplate Reader Read a microtitre-plate photo (6–384 wells) into a per-well table: mean intensity, or thresholded count / intensity, with well labels (A1…H12).
Coffee-Ring Reader Quantify a spotted-assay (coffee-ring) plate: per-cell area/intensity over a grid, blank-column (col 0) normalization and replicate averaging → a concentration / ratio table.
Dose-Response Fit Fit a 3- or 4-parameter logistic curve to any concentration + signal table and report EC50, LOD and R², with the fitted curve overlaid on the points.

The outputs are ordinary Orange Tables, so they plug straight into Data Table, scatter plots, PCA, or the classification widgets — e.g. the Dose-Response Fit widget accepts either reader's output, or any colorimetric assay you already have in a spreadsheet.

Pipeline

Microplate Reader ─wells──┐
                          ├──► Dose-Response Fit ──► EC50 / LOD / curve
Coffee-Ring Reader ─cells─┘        (also: PCA · PLS-DA · Data Table)

Install

Works on Windows, macOS (Apple Silicon & Intel), and Linux — pure Python (numpy / scipy / matplotlib / Pillow / Orange3).

A. Desktop App (from orangedatamining.com): Options ▸ Add-ons… ▸ Add more…, type orange-assay, tick it, OK, restart.

B. pip Orange:

pip install orange-assay
python -m Orange.canvas

After restarting Orange, an Assay category with the three widgets appears in the toolbox. Each widget has an ℹ How to use box, and F1 opens its online help page. Full tutorial: https://tai-shengyeh.github.io/spectraview/assay.html (English).

Traditional-Chinese Windows note: if the Add-ons dialog crashes with UnicodeDecodeError: 'cp950' codec…, install from a command prompt instead: "…\Programs\Orange\python.exe" -m pip install orange-assay, then restart Orange (or set the PYTHONUTF8=1 environment variable).

Quick start

  1. Microplate Reader → choose a plate photo → pick the format (e.g. 96) → Wells output → Data Table.
  2. Or Coffee-Ring Reader → choose a spotted-plate photo → set rows × columns (column 0 = blank) → enter the concentrations → Cells output.
  3. Feed either output to Dose-Response Fit → pick the concentration and signal columns → read EC50 / LOD / R² and the fitted curve.

Tests

python tests/test_core.py                                   # pure logic
QT_QPA_PLATFORM=offscreen python tests/test_widgets.py      # widget smoke tests

License

MIT.


中文說明

orange-assay — Orange Data Mining 盤面影像與劑量反應 widgets

English | 中文

三個 Orange Data Mining widgets,把檢測盤照片 變成資料表並擬合劑量反應曲線——全程拖拉、免寫程式。影像核心重用 coffee-ring-analyzer 的演算法,結果與其 Streamlit/手機/CLI 版本一致。與 orange-spectra 為姊妹套件。

Widget 功能
Microplate Reader 讀微孔盤照片(6–384 孔)成每孔一列的表:平均亮度,或閾值面積/強度,附孔位標籤(A1…H12)。
Coffee-Ring Reader 量化點樣(咖啡環)盤:格點逐格取面積/強度、除以同列 blank(第 0 欄)、平均重複列 → 濃度/比值 表。
Dose-Response Fit 對任何 濃度+訊號 表擬合 3 或 4 參數邏輯曲線,回報 EC50、LOD、R²,並把擬合曲線疊在資料點上。

輸出都是一般的 Orange Table,可直接接 Data Table、散佈圖、PCA 或分類 widget; Dose-Response Fit 接受兩個 reader 的輸出,也吃你已在試算表裡的比色法數據。

工作流程

Microplate Reader ─wells──┐
                          ├──► Dose-Response Fit ──► EC50 / LOD / 曲線
Coffee-Ring Reader ─cells─┘        (也可接 PCA · PLS-DA · Data Table)

安裝

可在 Windows、macOS(Apple 晶片與 Intel)、Linux 執行——純 Python (numpy / scipy / matplotlib / Pillow / Orange3)。

A. 桌面版 App:Options ▸ Add-ons… ▸ Add more… 輸入 orange-assay → 打勾 → OK → 重啟。

B. pip 版 Orange:

pip install orange-assay
python -m Orange.canvas

重啟後工具箱會出現 Assay 分類(3 個 widgets)。每個 widget 都有 「ℹ 說明」盒子,按 F1 會開線上說明頁。教學網頁:https://tai-shengyeh.github.io/spectraview/assay.html(English)。

繁體中文 Windows 注意: 若 Add-ons 對話框出現 UnicodeDecodeError: 'cp950' codec… 崩潰,改用命令列安裝: "…\Programs\Orange\python.exe" -m pip install orange-assay,再重開 Orange (或設環境變數 PYTHONUTF8=1)。

快速上手

  1. Microplate Reader → 選盤面照片 → 選規格(如 96)→ Wells 輸出 → Data Table。
  2. 或 Coffee-Ring Reader → 選點樣盤照片 → 設列×欄(第 0 欄=blank)→ 填濃度 → Cells 輸出。
  3. 任一輸出接 Dose-Response Fit → 選濃度與訊號欄 → 讀 EC50/LOD/R² 與曲線。

測試

python tests/test_core.py                                   # 純邏輯
QT_QPA_PLATFORM=offscreen python tests/test_widgets.py      # widget 煙霧測試

授權

MIT。

Metadata

Release files for orange-assay 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for orange-assay 0.1.1
File Size Uploaded Provenance Actions
orange_assay-0.1.1.tar.gz 20.6 kB With provenance Details for orange_assay-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for orange-assay 0.1.1
File Interpreter ABI Platform Actions
orange_assay-0.1.1-py3-none-any.whl Python 3 none any Details for orange_assay-0.1.1-py3-none-any.whl

Total release size: 43.1 kB

Release files / orange_assay-0.1.1.tar.gz

Download URL orange_assay-0.1.1.tar.gz
Size 20.6 kB
Tags Source
SHA-256 checksum
How to use checksums
94fdc806f96790d1e3a8f1734c08b46ba19d7d62369836e14ded15e4c8dd89f2
BLAKE2b-256 checksum
How to use checksums
837ad7b1cd44fca0126e6740c5f7337fc2fc951b069257a3d13937a18d8a3b73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release files / orange_assay-0.1.1-py3-none-any.whl

Download URL orange_assay-0.1.1-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f69e03c11ff3c33c904ec4e945c0a991ffc7a4512e63d27f9dfdfcb885f7b2f
BLAKE2b-256 checksum
How to use checksums
6dc96067c2b1bdd8ab9cc2d6759aadf9207051c254bac2473e14bceb4341ff89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Security for orange-assay 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for orange_assay-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page