orange-assay 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.4
2
+ Name: orange-assay
3
+ Version: 0.1.0
4
+ Summary: Orange Data Mining widgets for plate-image assays: microplate & coffee-ring readers and 3PL/4PL dose-response curve fitting (EC50, LOD).
5
+ Author: Tai-Sheng Yeh
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/Tai-ShengYeh/spectraview/tree/main/orange-assay
8
+ Project-URL: Tutorial, https://tai-shengyeh.github.io/spectraview/assay.html
9
+ Keywords: orange3,orange3 add-on,assay,microplate,elisa,coffee-ring,dose-response,ec50,image-analysis
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Topic :: Scientific/Engineering
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: numpy>=1.23
17
+ Requires-Dist: scipy>=1.9
18
+ Requires-Dist: matplotlib>=3.6
19
+ Requires-Dist: Pillow>=9.0
20
+ Requires-Dist: Orange3>=3.34
21
+
22
+ # orange-assay — plate-image & dose-response widgets for Orange Data Mining
23
+
24
+ **English** | [中文](#中文說明)
25
+
26
+ Three [Orange Data Mining](https://orangedatamining.com/) widgets that turn
27
+ **assay plate photos** into tables and fit **dose-response curves** — without
28
+ writing code. The image core reuses the
29
+ [coffee-ring-analyzer](https://github.com/Tai-ShengYeh/coffee-ring-analyzer)
30
+ algorithm, so results match its Streamlit / mobile / CLI versions. Sibling
31
+ package to [orange-spectra](https://pypi.org/project/orange-spectra/).
32
+
33
+ | Widget | What it does |
34
+ |---|---|
35
+ | **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). |
36
+ | **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. |
37
+ | **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. |
38
+
39
+ The outputs are ordinary Orange `Table`s, so they plug straight into Data
40
+ Table, scatter plots, PCA, or the classification widgets — e.g. the
41
+ **Dose-Response Fit** widget accepts either reader's output, or any colorimetric
42
+ assay you already have in a spreadsheet.
43
+
44
+ ## Pipeline
45
+
46
+ ```
47
+ Microplate Reader ─wells──┐
48
+ ├──► Dose-Response Fit ──► EC50 / LOD / curve
49
+ Coffee-Ring Reader ─cells─┘ (also: PCA · PLS-DA · Data Table)
50
+ ```
51
+
52
+ ## Install
53
+
54
+ Works on **Windows, macOS (Apple Silicon & Intel), and Linux** — pure Python
55
+ (numpy / scipy / matplotlib / Pillow / Orange3).
56
+
57
+ **A. Desktop App** (from orangedatamining.com):
58
+ `Options ▸ Add-ons… ▸ Add more…`, type **`orange-assay`**, tick it, **OK**,
59
+ restart.
60
+
61
+ **B. pip Orange**:
62
+
63
+ ```bash
64
+ pip install orange-assay
65
+ python -m Orange.canvas
66
+ ```
67
+
68
+ After restarting Orange, an **Assay** category with the three widgets appears in
69
+ the toolbox. Each widget has an **ℹ How to use** box, and **F1** opens its
70
+ online help page.
71
+
72
+ > **Traditional-Chinese Windows note:** if the Add-ons dialog crashes with
73
+ > `UnicodeDecodeError: 'cp950' codec…`, install from a command prompt instead:
74
+ > `"…\Programs\Orange\python.exe" -m pip install orange-assay`, then restart
75
+ > Orange (or set the `PYTHONUTF8=1` environment variable).
76
+
77
+ ## Quick start
78
+
79
+ 1. **Microplate Reader** → choose a plate photo → pick the format (e.g. 96) →
80
+ *Wells* output → Data Table.
81
+ 2. Or **Coffee-Ring Reader** → choose a spotted-plate photo → set rows × columns
82
+ (column 0 = blank) → enter the concentrations → *Cells* output.
83
+ 3. Feed either output to **Dose-Response Fit** → pick the concentration and
84
+ signal columns → read EC50 / LOD / R² and the fitted curve.
85
+
86
+ ## Tests
87
+
88
+ ```bash
89
+ python tests/test_core.py # pure logic
90
+ QT_QPA_PLATFORM=offscreen python tests/test_widgets.py # widget smoke tests
91
+ ```
92
+
93
+ ## License
94
+
95
+ MIT.
96
+
97
+ ---
98
+
99
+ <a name="中文說明"></a>
100
+
101
+ # orange-assay — Orange Data Mining 盤面影像與劑量反應 widgets
102
+
103
+ [English](#orange-assay--plate-image--dose-response-widgets-for-orange-data-mining) | **中文**
104
+
105
+ 三個 [Orange Data Mining](https://orangedatamining.com/) widgets,把**檢測盤照片**
106
+ 變成資料表並擬合**劑量反應曲線**——全程拖拉、免寫程式。影像核心重用
107
+ [coffee-ring-analyzer](https://github.com/Tai-ShengYeh/coffee-ring-analyzer)
108
+ 的演算法,結果與其 Streamlit/手機/CLI 版本一致。與
109
+ [orange-spectra](https://pypi.org/project/orange-spectra/) 為姊妹套件。
110
+
111
+ | Widget | 功能 |
112
+ |---|---|
113
+ | **Microplate Reader** | 讀微孔盤照片(6–384 孔)成每孔一列的表:平均亮度,或閾值面積/強度,附孔位標籤(A1…H12)。 |
114
+ | **Coffee-Ring Reader** | 量化點樣(咖啡環)盤:格點逐格取面積/強度、除以同列 blank(第 0 欄)、平均重複列 → `濃度/比值` 表。 |
115
+ | **Dose-Response Fit** | 對任何 `濃度+訊號` 表擬合 3 或 4 參數邏輯曲線,回報 **EC50**、**LOD**、**R²**,並把擬合曲線疊在資料點上。 |
116
+
117
+ 輸出都是一般的 Orange `Table`,可直接接 Data Table、散佈圖、PCA 或分類 widget;
118
+ **Dose-Response Fit** 接受兩個 reader 的輸出,也吃你已在試算表裡的比色法數據。
119
+
120
+ ## 工作流程
121
+
122
+ ```
123
+ Microplate Reader ─wells──┐
124
+ ├──► Dose-Response Fit ──► EC50 / LOD / 曲線
125
+ Coffee-Ring Reader ─cells─┘ (也可接 PCA · PLS-DA · Data Table)
126
+ ```
127
+
128
+ ## 安裝
129
+
130
+ 可在 **Windows、macOS(Apple 晶片與 Intel)、Linux** 執行——純 Python
131
+ (numpy / scipy / matplotlib / Pillow / Orange3)。
132
+
133
+ **A. 桌面版 App**:`Options ▸ Add-ons… ▸ Add more…` 輸入 **`orange-assay`** →
134
+ 打勾 → OK → 重啟。
135
+
136
+ **B. pip 版 Orange**:
137
+
138
+ ```bash
139
+ pip install orange-assay
140
+ python -m Orange.canvas
141
+ ```
142
+
143
+ 重啟後工具箱會出現 **Assay** 分類(3 個 widgets)。每個 widget 都有
144
+ 「**ℹ 說明**」盒子,按 **F1** 會開線上說明頁。
145
+
146
+ > **繁體中文 Windows 注意:** 若 Add-ons 對話框出現
147
+ > `UnicodeDecodeError: 'cp950' codec…` 崩潰,改用命令列安裝:
148
+ > `"…\Programs\Orange\python.exe" -m pip install orange-assay`,再重開 Orange
149
+ > (或設環境變數 `PYTHONUTF8=1`)。
150
+
151
+ ## 快速上手
152
+
153
+ 1. **Microplate Reader** → 選盤面照片 → 選規格(如 96)→ *Wells* 輸出 → Data Table。
154
+ 2. 或 **Coffee-Ring Reader** → 選點樣盤照片 → 設列×欄(第 0 欄=blank)→ 填濃度
155
+ → *Cells* 輸出。
156
+ 3. 任一輸出接 **Dose-Response Fit** → 選濃度與訊號欄 → 讀 EC50/LOD/R² 與曲線。
157
+
158
+ ## 測試
159
+
160
+ ```bash
161
+ python tests/test_core.py # 純邏輯
162
+ QT_QPA_PLATFORM=offscreen python tests/test_widgets.py # widget 煙霧測試
163
+ ```
164
+
165
+ ## 授權
166
+
167
+ MIT。
@@ -0,0 +1,146 @@
1
+ # orange-assay — plate-image & dose-response widgets for Orange Data Mining
2
+
3
+ **English** | [中文](#中文說明)
4
+
5
+ Three [Orange Data Mining](https://orangedatamining.com/) widgets that turn
6
+ **assay plate photos** into tables and fit **dose-response curves** — without
7
+ writing code. The image core reuses the
8
+ [coffee-ring-analyzer](https://github.com/Tai-ShengYeh/coffee-ring-analyzer)
9
+ algorithm, so results match its Streamlit / mobile / CLI versions. Sibling
10
+ package to [orange-spectra](https://pypi.org/project/orange-spectra/).
11
+
12
+ | Widget | What it does |
13
+ |---|---|
14
+ | **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). |
15
+ | **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. |
16
+ | **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. |
17
+
18
+ The outputs are ordinary Orange `Table`s, so they plug straight into Data
19
+ Table, scatter plots, PCA, or the classification widgets — e.g. the
20
+ **Dose-Response Fit** widget accepts either reader's output, or any colorimetric
21
+ assay you already have in a spreadsheet.
22
+
23
+ ## Pipeline
24
+
25
+ ```
26
+ Microplate Reader ─wells──┐
27
+ ├──► Dose-Response Fit ──► EC50 / LOD / curve
28
+ Coffee-Ring Reader ─cells─┘ (also: PCA · PLS-DA · Data Table)
29
+ ```
30
+
31
+ ## Install
32
+
33
+ Works on **Windows, macOS (Apple Silicon & Intel), and Linux** — pure Python
34
+ (numpy / scipy / matplotlib / Pillow / Orange3).
35
+
36
+ **A. Desktop App** (from orangedatamining.com):
37
+ `Options ▸ Add-ons… ▸ Add more…`, type **`orange-assay`**, tick it, **OK**,
38
+ restart.
39
+
40
+ **B. pip Orange**:
41
+
42
+ ```bash
43
+ pip install orange-assay
44
+ python -m Orange.canvas
45
+ ```
46
+
47
+ After restarting Orange, an **Assay** category with the three widgets appears in
48
+ the toolbox. Each widget has an **ℹ How to use** box, and **F1** opens its
49
+ online help page.
50
+
51
+ > **Traditional-Chinese Windows note:** if the Add-ons dialog crashes with
52
+ > `UnicodeDecodeError: 'cp950' codec…`, install from a command prompt instead:
53
+ > `"…\Programs\Orange\python.exe" -m pip install orange-assay`, then restart
54
+ > Orange (or set the `PYTHONUTF8=1` environment variable).
55
+
56
+ ## Quick start
57
+
58
+ 1. **Microplate Reader** → choose a plate photo → pick the format (e.g. 96) →
59
+ *Wells* output → Data Table.
60
+ 2. Or **Coffee-Ring Reader** → choose a spotted-plate photo → set rows × columns
61
+ (column 0 = blank) → enter the concentrations → *Cells* output.
62
+ 3. Feed either output to **Dose-Response Fit** → pick the concentration and
63
+ signal columns → read EC50 / LOD / R² and the fitted curve.
64
+
65
+ ## Tests
66
+
67
+ ```bash
68
+ python tests/test_core.py # pure logic
69
+ QT_QPA_PLATFORM=offscreen python tests/test_widgets.py # widget smoke tests
70
+ ```
71
+
72
+ ## License
73
+
74
+ MIT.
75
+
76
+ ---
77
+
78
+ <a name="中文說明"></a>
79
+
80
+ # orange-assay — Orange Data Mining 盤面影像與劑量反應 widgets
81
+
82
+ [English](#orange-assay--plate-image--dose-response-widgets-for-orange-data-mining) | **中文**
83
+
84
+ 三個 [Orange Data Mining](https://orangedatamining.com/) widgets,把**檢測盤照片**
85
+ 變成資料表並擬合**劑量反應曲線**——全程拖拉、免寫程式。影像核心重用
86
+ [coffee-ring-analyzer](https://github.com/Tai-ShengYeh/coffee-ring-analyzer)
87
+ 的演算法,結果與其 Streamlit/手機/CLI 版本一致。與
88
+ [orange-spectra](https://pypi.org/project/orange-spectra/) 為姊妹套件。
89
+
90
+ | Widget | 功能 |
91
+ |---|---|
92
+ | **Microplate Reader** | 讀微孔盤照片(6–384 孔)成每孔一列的表:平均亮度,或閾值面積/強度,附孔位標籤(A1…H12)。 |
93
+ | **Coffee-Ring Reader** | 量化點樣(咖啡環)盤:格點逐格取面積/強度、除以同列 blank(第 0 欄)、平均重複列 → `濃度/比值` 表。 |
94
+ | **Dose-Response Fit** | 對任何 `濃度+訊號` 表擬合 3 或 4 參數邏輯曲線,回報 **EC50**、**LOD**、**R²**,並把擬合曲線疊在資料點上。 |
95
+
96
+ 輸出都是一般的 Orange `Table`,可直接接 Data Table、散佈圖、PCA 或分類 widget;
97
+ **Dose-Response Fit** 接受兩個 reader 的輸出,也吃你已在試算表裡的比色法數據。
98
+
99
+ ## 工作流程
100
+
101
+ ```
102
+ Microplate Reader ─wells──┐
103
+ ├──► Dose-Response Fit ──► EC50 / LOD / 曲線
104
+ Coffee-Ring Reader ─cells─┘ (也可接 PCA · PLS-DA · Data Table)
105
+ ```
106
+
107
+ ## 安裝
108
+
109
+ 可在 **Windows、macOS(Apple 晶片與 Intel)、Linux** 執行——純 Python
110
+ (numpy / scipy / matplotlib / Pillow / Orange3)。
111
+
112
+ **A. 桌面版 App**:`Options ▸ Add-ons… ▸ Add more…` 輸入 **`orange-assay`** →
113
+ 打勾 → OK → 重啟。
114
+
115
+ **B. pip 版 Orange**:
116
+
117
+ ```bash
118
+ pip install orange-assay
119
+ python -m Orange.canvas
120
+ ```
121
+
122
+ 重啟後工具箱會出現 **Assay** 分類(3 個 widgets)。每個 widget 都有
123
+ 「**ℹ 說明**」盒子,按 **F1** 會開線上說明頁。
124
+
125
+ > **繁體中文 Windows 注意:** 若 Add-ons 對話框出現
126
+ > `UnicodeDecodeError: 'cp950' codec…` 崩潰,改用命令列安裝:
127
+ > `"…\Programs\Orange\python.exe" -m pip install orange-assay`,再重開 Orange
128
+ > (或設環境變數 `PYTHONUTF8=1`)。
129
+
130
+ ## 快速上手
131
+
132
+ 1. **Microplate Reader** → 選盤面照片 → 選規格(如 96)→ *Wells* 輸出 → Data Table。
133
+ 2. 或 **Coffee-Ring Reader** → 選點樣盤照片 → 設列×欄(第 0 欄=blank)→ 填濃度
134
+ → *Cells* 輸出。
135
+ 3. 任一輸出接 **Dose-Response Fit** → 選濃度與訊號欄 → 讀 EC50/LOD/R² 與曲線。
136
+
137
+ ## 測試
138
+
139
+ ```bash
140
+ python tests/test_core.py # 純邏輯
141
+ QT_QPA_PLATFORM=offscreen python tests/test_widgets.py # widget 煙霧測試
142
+ ```
143
+
144
+ ## 授權
145
+
146
+ MIT。
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.4
2
+ Name: orange-assay
3
+ Version: 0.1.0
4
+ Summary: Orange Data Mining widgets for plate-image assays: microplate & coffee-ring readers and 3PL/4PL dose-response curve fitting (EC50, LOD).
5
+ Author: Tai-Sheng Yeh
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/Tai-ShengYeh/spectraview/tree/main/orange-assay
8
+ Project-URL: Tutorial, https://tai-shengyeh.github.io/spectraview/assay.html
9
+ Keywords: orange3,orange3 add-on,assay,microplate,elisa,coffee-ring,dose-response,ec50,image-analysis
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Topic :: Scientific/Engineering
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: numpy>=1.23
17
+ Requires-Dist: scipy>=1.9
18
+ Requires-Dist: matplotlib>=3.6
19
+ Requires-Dist: Pillow>=9.0
20
+ Requires-Dist: Orange3>=3.34
21
+
22
+ # orange-assay — plate-image & dose-response widgets for Orange Data Mining
23
+
24
+ **English** | [中文](#中文說明)
25
+
26
+ Three [Orange Data Mining](https://orangedatamining.com/) widgets that turn
27
+ **assay plate photos** into tables and fit **dose-response curves** — without
28
+ writing code. The image core reuses the
29
+ [coffee-ring-analyzer](https://github.com/Tai-ShengYeh/coffee-ring-analyzer)
30
+ algorithm, so results match its Streamlit / mobile / CLI versions. Sibling
31
+ package to [orange-spectra](https://pypi.org/project/orange-spectra/).
32
+
33
+ | Widget | What it does |
34
+ |---|---|
35
+ | **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). |
36
+ | **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. |
37
+ | **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. |
38
+
39
+ The outputs are ordinary Orange `Table`s, so they plug straight into Data
40
+ Table, scatter plots, PCA, or the classification widgets — e.g. the
41
+ **Dose-Response Fit** widget accepts either reader's output, or any colorimetric
42
+ assay you already have in a spreadsheet.
43
+
44
+ ## Pipeline
45
+
46
+ ```
47
+ Microplate Reader ─wells──┐
48
+ ├──► Dose-Response Fit ──► EC50 / LOD / curve
49
+ Coffee-Ring Reader ─cells─┘ (also: PCA · PLS-DA · Data Table)
50
+ ```
51
+
52
+ ## Install
53
+
54
+ Works on **Windows, macOS (Apple Silicon & Intel), and Linux** — pure Python
55
+ (numpy / scipy / matplotlib / Pillow / Orange3).
56
+
57
+ **A. Desktop App** (from orangedatamining.com):
58
+ `Options ▸ Add-ons… ▸ Add more…`, type **`orange-assay`**, tick it, **OK**,
59
+ restart.
60
+
61
+ **B. pip Orange**:
62
+
63
+ ```bash
64
+ pip install orange-assay
65
+ python -m Orange.canvas
66
+ ```
67
+
68
+ After restarting Orange, an **Assay** category with the three widgets appears in
69
+ the toolbox. Each widget has an **ℹ How to use** box, and **F1** opens its
70
+ online help page.
71
+
72
+ > **Traditional-Chinese Windows note:** if the Add-ons dialog crashes with
73
+ > `UnicodeDecodeError: 'cp950' codec…`, install from a command prompt instead:
74
+ > `"…\Programs\Orange\python.exe" -m pip install orange-assay`, then restart
75
+ > Orange (or set the `PYTHONUTF8=1` environment variable).
76
+
77
+ ## Quick start
78
+
79
+ 1. **Microplate Reader** → choose a plate photo → pick the format (e.g. 96) →
80
+ *Wells* output → Data Table.
81
+ 2. Or **Coffee-Ring Reader** → choose a spotted-plate photo → set rows × columns
82
+ (column 0 = blank) → enter the concentrations → *Cells* output.
83
+ 3. Feed either output to **Dose-Response Fit** → pick the concentration and
84
+ signal columns → read EC50 / LOD / R² and the fitted curve.
85
+
86
+ ## Tests
87
+
88
+ ```bash
89
+ python tests/test_core.py # pure logic
90
+ QT_QPA_PLATFORM=offscreen python tests/test_widgets.py # widget smoke tests
91
+ ```
92
+
93
+ ## License
94
+
95
+ MIT.
96
+
97
+ ---
98
+
99
+ <a name="中文說明"></a>
100
+
101
+ # orange-assay — Orange Data Mining 盤面影像與劑量反應 widgets
102
+
103
+ [English](#orange-assay--plate-image--dose-response-widgets-for-orange-data-mining) | **中文**
104
+
105
+ 三個 [Orange Data Mining](https://orangedatamining.com/) widgets,把**檢測盤照片**
106
+ 變成資料表並擬合**劑量反應曲線**——全程拖拉、免寫程式。影像核心重用
107
+ [coffee-ring-analyzer](https://github.com/Tai-ShengYeh/coffee-ring-analyzer)
108
+ 的演算法,結果與其 Streamlit/手機/CLI 版本一致。與
109
+ [orange-spectra](https://pypi.org/project/orange-spectra/) 為姊妹套件。
110
+
111
+ | Widget | 功能 |
112
+ |---|---|
113
+ | **Microplate Reader** | 讀微孔盤照片(6–384 孔)成每孔一列的表:平均亮度,或閾值面積/強度,附孔位標籤(A1…H12)。 |
114
+ | **Coffee-Ring Reader** | 量化點樣(咖啡環)盤:格點逐格取面積/強度、除以同列 blank(第 0 欄)、平均重複列 → `濃度/比值` 表。 |
115
+ | **Dose-Response Fit** | 對任何 `濃度+訊號` 表擬合 3 或 4 參數邏輯曲線,回報 **EC50**、**LOD**、**R²**,並把擬合曲線疊在資料點上。 |
116
+
117
+ 輸出都是一般的 Orange `Table`,可直接接 Data Table、散佈圖、PCA 或分類 widget;
118
+ **Dose-Response Fit** 接受兩個 reader 的輸出,也吃你已在試算表裡的比色法數據。
119
+
120
+ ## 工作流程
121
+
122
+ ```
123
+ Microplate Reader ─wells──┐
124
+ ├──► Dose-Response Fit ──► EC50 / LOD / 曲線
125
+ Coffee-Ring Reader ─cells─┘ (也可接 PCA · PLS-DA · Data Table)
126
+ ```
127
+
128
+ ## 安裝
129
+
130
+ 可在 **Windows、macOS(Apple 晶片與 Intel)、Linux** 執行——純 Python
131
+ (numpy / scipy / matplotlib / Pillow / Orange3)。
132
+
133
+ **A. 桌面版 App**:`Options ▸ Add-ons… ▸ Add more…` 輸入 **`orange-assay`** →
134
+ 打勾 → OK → 重啟。
135
+
136
+ **B. pip 版 Orange**:
137
+
138
+ ```bash
139
+ pip install orange-assay
140
+ python -m Orange.canvas
141
+ ```
142
+
143
+ 重啟後工具箱會出現 **Assay** 分類(3 個 widgets)。每個 widget 都有
144
+ 「**ℹ 說明**」盒子,按 **F1** 會開線上說明頁。
145
+
146
+ > **繁體中文 Windows 注意:** 若 Add-ons 對話框出現
147
+ > `UnicodeDecodeError: 'cp950' codec…` 崩潰,改用命令列安裝:
148
+ > `"…\Programs\Orange\python.exe" -m pip install orange-assay`,再重開 Orange
149
+ > (或設環境變數 `PYTHONUTF8=1`)。
150
+
151
+ ## 快速上手
152
+
153
+ 1. **Microplate Reader** → 選盤面照片 → 選規格(如 96)→ *Wells* 輸出 → Data Table。
154
+ 2. 或 **Coffee-Ring Reader** → 選點樣盤照片 → 設列×欄(第 0 欄=blank)→ 填濃度
155
+ → *Cells* 輸出。
156
+ 3. 任一輸出接 **Dose-Response Fit** → 選濃度與訊號欄 → 讀 EC50/LOD/R² 與曲線。
157
+
158
+ ## 測試
159
+
160
+ ```bash
161
+ python tests/test_core.py # 純邏輯
162
+ QT_QPA_PLATFORM=offscreen python tests/test_widgets.py # widget 煙霧測試
163
+ ```
164
+
165
+ ## 授權
166
+
167
+ MIT。
@@ -0,0 +1,21 @@
1
+ README.md
2
+ pyproject.toml
3
+ orange_assay.egg-info/PKG-INFO
4
+ orange_assay.egg-info/SOURCES.txt
5
+ orange_assay.egg-info/dependency_links.txt
6
+ orange_assay.egg-info/entry_points.txt
7
+ orange_assay.egg-info/requires.txt
8
+ orange_assay.egg-info/top_level.txt
9
+ orangeassay/__init__.py
10
+ orangeassay/core.py
11
+ orangeassay/widgets/__init__.py
12
+ orangeassay/widgets/_help.py
13
+ orangeassay/widgets/owcoffeering.py
14
+ orangeassay/widgets/owdoseresponse.py
15
+ orangeassay/widgets/owmicroplate.py
16
+ orangeassay/widgets/icons/category.svg
17
+ orangeassay/widgets/icons/coffeering.svg
18
+ orangeassay/widgets/icons/doseresponse.svg
19
+ orangeassay/widgets/icons/microplate.svg
20
+ tests/test_core.py
21
+ tests/test_widgets.py
@@ -0,0 +1,8 @@
1
+ [orange.canvas.help]
2
+ html-index = orangeassay.widgets:WIDGET_HELP_PATH
3
+
4
+ [orange.widgets]
5
+ Assay = orangeassay.widgets
6
+
7
+ [orange3.addon]
8
+ orange-assay = orangeassay
@@ -0,0 +1,5 @@
1
+ numpy>=1.23
2
+ scipy>=1.9
3
+ matplotlib>=3.6
4
+ Pillow>=9.0
5
+ Orange3>=3.34
@@ -0,0 +1 @@
1
+ orangeassay
@@ -0,0 +1,3 @@
1
+ """orange-assay: Orange Data Mining widgets for plate-image & dose-response assays."""
2
+
3
+ __version__ = "0.1.0"