orangeplsda 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,304 @@
1
+ Metadata-Version: 2.4
2
+ Name: orangeplsda
3
+ Version: 0.1.0
4
+ Summary: PLS-DA & OPLS-DA with S-Plot — classification, biomarker discovery, and orthogonal signal correction for Orange3
5
+ Author: Philipp Weller
6
+ Author-email: philipp.weller@googlemail.com
7
+ Project-URL: Source, https://github.com/philippweller/WellerLab/tree/main/orange-plsda-addon
8
+ Project-URL: Bug Tracker, https://github.com/philippweller/WellerLab/issues
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
14
+ Description-Content-Type: text/markdown
15
+ Requires-Dist: Orange3>=3.40.0
16
+ Requires-Dist: numpy
17
+ Requires-Dist: scikit-learn
18
+ Dynamic: author
19
+ Dynamic: author-email
20
+ Dynamic: classifier
21
+ Dynamic: description
22
+ Dynamic: description-content-type
23
+ Dynamic: project-url
24
+ Dynamic: requires-dist
25
+ Dynamic: summary
26
+
27
+ # orange-plsda-addon
28
+
29
+ PLS-DA & OPLS-DA für **Orange3** — Leistungsstarke Klassifikations-Widgets für
30
+ die multivariate Analyse (Chemometrie, Biomarker-Findung).
31
+
32
+ - **PLS-DA** (Partial Least Squares Discriminant Analysis) — Klassifikation
33
+ mittels `PLSRegression` mit One-hot-kodiertem Ziel
34
+ - **OPLS-DA** (Orthogonal PLS-DA, Trygg & Wold 2002) — trennt prädiktive von
35
+ orthogonaler (klassen-unabhängiger) Variation
36
+
37
+ Beide Widgets erscheinen in Orange unter der Kategorie **PLS-DA**, direkt
38
+ neben dem eingebauten PLS-R.
39
+
40
+ ---
41
+
42
+ ## ⚡ Automatischer Installer (empfohlen)
43
+
44
+ Dieses Paket ist Teil des **WellerLab**-Monorepos
45
+ (`github.com/philippweller/WellerLab`). Der gemeinsame Installer
46
+ `orange-install.py` (auf Repo-Ebene) findet **Oranges eigenes Python**
47
+ automatisch und installiert das Paket korrekt (macOS / Windows / Linux). Kein
48
+ manuelles Pfad-Raten mehr:
49
+
50
+ ```bash
51
+ # PLS-DA installieren:
52
+ python orange-install.py plsda
53
+
54
+ # NMR-Add-on installieren:
55
+ python orange-install.py nmr
56
+
57
+ # nur zeigen, welches Python erkannt wurde:
58
+ python orange-install.py --show
59
+
60
+ # bestehende Installation prüfen:
61
+ python orange-install.py --check plsda
62
+ ```
63
+
64
+ Läuft mit **jedem** Python (nur Standardbibliothek). Klappt die
65
+ Auto-Erkennung ausnahmsweise nicht:
66
+
67
+ ```bash
68
+ python orange-install.py --python /pfad/zum/orange/python
69
+ ```
70
+
71
+ > ▶️ **Direkt ausführen ohne Clone** (das Add-on wird trotzdem via GitHub
72
+ > installiert):
73
+ > ```bash
74
+ > curl -fsSL https://raw.githubusercontent.com/philippweller/WellerLab/main/orange-install.py -o orange-install.py && python3 orange-install.py plsda
75
+ > ```
76
+
77
+ Das Tool bedient auch den **Windows-`--no-user`-Fall** automatisch, sodass
78
+ das Add-on in Oranges eigene `site-packages` landet statt in die unsichtbare
79
+ User-Site.
80
+
81
+ ---
82
+
83
+ ## 📋 Voraussetzungen
84
+
85
+ | Voraussetzung | Hinweis |
86
+ |---|---|
87
+ | Orange3 ≥ 3.40 installiert | Unter **Hilfe → Über** die Version prüfen |
88
+ | Internet-Zugriff auf GitHub | zum Herunterladen des Repos |
89
+
90
+ > ⚠️ **Wichtig:** Es muss immer **Oranges eigenes Python** verwendet werden,
91
+ > nicht `/usr/bin/python3`! Sonst wird das Add-on in der falschen Python-Umgebung
92
+ > installiert und Orange findet es nicht.
93
+
94
+ ---
95
+
96
+ ## 🔍 Oranges eingebettetes Python finden (wichtig!)
97
+
98
+ Der Pfad zu Oranges Python **hängt von der Orange-Version ab**. Je nachdem
99
+ ob Orange mit Python 3.11 oder 3.12 gebaut wurde, heißt das Binary
100
+ `python3`, `python3.11` oder `python3.12`.
101
+
102
+ **Sichere Methode — das echte Python-Binary lokalisieren:**
103
+
104
+ ```bash
105
+ ls /Applications/Orange.app/Contents/Frameworks/Python.framework/Versions/
106
+ # zeigt z.B.: 3.12 und Current -> 3.12
107
+
108
+ # Dann das echte Binary finden:
109
+ find /Applications/Orange.app -name "python3*" -type f 2>/dev/null | grep -i bin
110
+ ```
111
+
112
+ Typische gültige Pfade (je nach Version):
113
+
114
+ | Orange mit | Python-Binary |
115
+ |---|---|
116
+ | Python 3.11 | `.../Versions/Current/bin/python3` |
117
+ | Python 3.11 (nur versioniert) | `.../Versions/Current/bin/python3.11` |
118
+ | Python 3.12 | `.../Versions/Current/bin/python3.12` |
119
+ | Intel-Mac mit 3.12 | `.../Versions/Current/bin/python3.12-intel64` |
120
+
121
+ > `Current` ist ein Symlink zur installierten Version (`Current -> 3.12`),
122
+ > funktioniert also in allen Fällen. Ersetze in den Befehlen unten
123
+ > `ORANGEPY` durch **den** gefundenen Pfad.
124
+
125
+ ---
126
+
127
+ ## 🚀 Installation (Schritt für Schritt)
128
+
129
+ ### macOS (Orange.app als `.app` installiert)
130
+
131
+ **Schritt 1 — Oranges eingebettetes Python prüfen:**
132
+
133
+ Öffne einen Terminal und führe aus (nutze den Pfad aus dem Abschnitt
134
+ [Oranges eingebettetes Python finden](#-oranges-eingebettetes-python-finden-wichtig);
135
+ je nach Orange-Version heißt das Binary `python3`, `python3.11` oder `python3.12`):
136
+
137
+ ```bash
138
+ /Applications/Orange.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3.12 --version
139
+ ```
140
+
141
+ Es sollte eine Python-3.x-Version ausgeben. Notiere dir diesen Pfad — er wird
142
+ in den nächsten Schritten gebraucht (im Folgenden abgekürzt als `ORANGEPY`).
143
+
144
+ **Schritt 2 — Add-on von GitHub installieren:**
145
+
146
+ ```bash
147
+ ORANGEPY=/Applications/Orange.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3.12
148
+ $ORANGEPY -m pip install git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
149
+ ```
150
+
151
+ **Schritt 3 — Installation prüfen (optional, empfohlen):**
152
+
153
+ ```bash
154
+ $ORANGEPY -c "from orangeplsda import PLSDALearner; print('OK')"
155
+ ```
156
+
157
+ Wenn `OK` erscheint, ist das Paket korrekt installiert.
158
+
159
+ **Schritt 4 — In Orange öffnen:**
160
+
161
+ Orange starten. Die Widgets **PLS-DA** und **OPLS-DA** erscheinen in der
162
+ Widget-Leiste unter **PLS-DA**. Du musst Orange nicht neu starten — es reicht,
163
+ das Canvas-Fenster erneut zu öffnen.
164
+
165
+ ---
166
+
167
+ ### Windows (Orange über den "Orange Command Prompt")
168
+
169
+ **Schritt 1 — Orange Command Prompt öffnen:**
170
+
171
+ Startmenü → *Orange* → *Orange Command Prompt* (bzw. *Qt Console*).
172
+
173
+ **Schritt 2 — Installieren:**
174
+
175
+ ```cmd
176
+ python -m pip install git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
177
+ ```
178
+
179
+ **Schritt 3 — Prüfen:**
180
+
181
+ ```cmd
182
+ python -c "from orangeplsda import PLSDALearner; print('OK')"
183
+ ```
184
+
185
+ **Schritt 4 — Orange öffnen** und unter **PLS-DA** nachschauen.
186
+
187
+ ---
188
+
189
+ ### Linux / Conda / Venv
190
+
191
+ **Schritt 1 — Umgebung aktivieren:**
192
+
193
+ ```bash
194
+ conda activate orange # oder: source .venv/bin/activate
195
+ ```
196
+
197
+ **Schritt 2 — Installieren:**
198
+
199
+ ```bash
200
+ pip install git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
201
+ ```
202
+
203
+ **Schritt 3 — Prüfen:**
204
+
205
+ ```bash
206
+ python -c "from orangeplsda import PLSDALearner; print('OK')"
207
+ ```
208
+
209
+ **Schritt 4 — Orange starten** und das Widget suchen.
210
+
211
+ ---
212
+
213
+ ## 🔄 Updates einspielen (bei neuen Versionen)
214
+
215
+ Auf **jedem** Rechner, auf dem das Add-on installiert ist:
216
+
217
+ **Schritt 1 — aktuelle Version installieren (Überschreibt die alte):**
218
+
219
+ ```bash
220
+ # macOS
221
+ $ORANGEPY -m pip install --upgrade --force-reinstall git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
222
+ ```
223
+
224
+ ```bash
225
+ # Windows / Linux / Conda
226
+ python -m pip install --upgrade --force-reinstall git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
227
+ ```
228
+
229
+ **Schritt 2 — Orange neu starten**, damit die neuen Widget-Versionen geladen werden.
230
+
231
+ > Hinweis: `--force-reinstall` wird empfohlen, da Orange die Widgets beim
232
+ > Canvas-Öffnen zwischenspeichert.
233
+
234
+ ---
235
+
236
+ ## 🗑️ Deinstallation
237
+
238
+ ```bash
239
+ # macOS
240
+ $ORANGEPY -m pip uninstall orangeplsda -y
241
+ ```
242
+
243
+ ```bash
244
+ # Windows / Linux / Conda
245
+ python -m pip uninstall orangeplsda -y
246
+ ```
247
+
248
+ Danach Orange neu starten — die Widgets sind verschwunden.
249
+
250
+ ---
251
+
252
+ ## 🧪 Kurzer Funktionstest (Entwickler)
253
+
254
+ Mit Oranges Python auf einem der mitgelieferten Datensätze:
255
+
256
+ ```bash
257
+ python -c "
258
+ from Orange.data import Table
259
+ from Orange.base import Model
260
+ from orangeplsda import PLSDALearner
261
+ from orangeplsda.oplsda_learner import OPLSDALearner
262
+ for L, kw in [(PLSDALearner, dict(n_components=2)),
263
+ (OPLSDALearner, dict(n_components=1, n_ortho=1))]:
264
+ t = Table('iris'); m = L(**kw)(t)
265
+ p, pr = m(t, ret=Model.ValueProbs)
266
+ print(L.__name__, round(float((p == t.Y.flatten()).mean()), 3), pr.shape)
267
+ "
268
+ ```
269
+
270
+ Erwartete Ausgabe (beispielhaft, kann leicht abweichen):
271
+
272
+ ```
273
+ PLSDALearner 0.813 (150, 3)
274
+ OPLSDALearner 0.8 (150, 3)
275
+ ```
276
+
277
+ ---
278
+
279
+ ## 🛠️ Fehlerbehebung
280
+
281
+ | Problem | Lösung |
282
+ |---|---|
283
+ | "`python3` ist nicht vorhanden" / Datei nicht gefunden | Das Binary heißt je nach Orange-Version `python3`, `python3.11` oder `python3.12` (z.B. Orange mit Python 3.12). Mit `find /Applications/Orange.app -name "python3*" -type f` den echten Namen ermitteln. |
284
+ | `from orangeplsda import ...` schlägt fehl | Du hast `/usr/bin/python3` statt Oranges Python benutzt. Siehe Schritt 1 oben. |
285
+ | Widget erscheint nicht in Orange | Gelöschte `*.egg-info`/`__pycache__` prüfen; Orange vollständig neu starten; `pip show orangeplsda` ausführen. |
286
+ | `Host key verification failed` beim pip install | Läuft nur bei einem gepushten SSH-Workflow, nicht bei `git+https://`. Nutze die https-URL. |
287
+ | alte Version bleibt | `pip install --force-reinstall` verwenden (siehe Updates). |
288
+
289
+ ---
290
+
291
+ ## 📦 Entwicklung / Repo lokal ausprobieren
292
+
293
+ ```bash
294
+ git clone git@github.com:philippweller/orange-plsda-addon.git
295
+ cd orange-plsda-addon
296
+ # Editable-Install mit Oranges Python:
297
+ $ORANGEPY -m pip install -e .
298
+ ```
299
+
300
+ ---
301
+
302
+ ## 📄 Lizenz
303
+
304
+ MIT © Philipp Weller
@@ -0,0 +1,278 @@
1
+ # orange-plsda-addon
2
+
3
+ PLS-DA & OPLS-DA für **Orange3** — Leistungsstarke Klassifikations-Widgets für
4
+ die multivariate Analyse (Chemometrie, Biomarker-Findung).
5
+
6
+ - **PLS-DA** (Partial Least Squares Discriminant Analysis) — Klassifikation
7
+ mittels `PLSRegression` mit One-hot-kodiertem Ziel
8
+ - **OPLS-DA** (Orthogonal PLS-DA, Trygg & Wold 2002) — trennt prädiktive von
9
+ orthogonaler (klassen-unabhängiger) Variation
10
+
11
+ Beide Widgets erscheinen in Orange unter der Kategorie **PLS-DA**, direkt
12
+ neben dem eingebauten PLS-R.
13
+
14
+ ---
15
+
16
+ ## ⚡ Automatischer Installer (empfohlen)
17
+
18
+ Dieses Paket ist Teil des **WellerLab**-Monorepos
19
+ (`github.com/philippweller/WellerLab`). Der gemeinsame Installer
20
+ `orange-install.py` (auf Repo-Ebene) findet **Oranges eigenes Python**
21
+ automatisch und installiert das Paket korrekt (macOS / Windows / Linux). Kein
22
+ manuelles Pfad-Raten mehr:
23
+
24
+ ```bash
25
+ # PLS-DA installieren:
26
+ python orange-install.py plsda
27
+
28
+ # NMR-Add-on installieren:
29
+ python orange-install.py nmr
30
+
31
+ # nur zeigen, welches Python erkannt wurde:
32
+ python orange-install.py --show
33
+
34
+ # bestehende Installation prüfen:
35
+ python orange-install.py --check plsda
36
+ ```
37
+
38
+ Läuft mit **jedem** Python (nur Standardbibliothek). Klappt die
39
+ Auto-Erkennung ausnahmsweise nicht:
40
+
41
+ ```bash
42
+ python orange-install.py --python /pfad/zum/orange/python
43
+ ```
44
+
45
+ > ▶️ **Direkt ausführen ohne Clone** (das Add-on wird trotzdem via GitHub
46
+ > installiert):
47
+ > ```bash
48
+ > curl -fsSL https://raw.githubusercontent.com/philippweller/WellerLab/main/orange-install.py -o orange-install.py && python3 orange-install.py plsda
49
+ > ```
50
+
51
+ Das Tool bedient auch den **Windows-`--no-user`-Fall** automatisch, sodass
52
+ das Add-on in Oranges eigene `site-packages` landet statt in die unsichtbare
53
+ User-Site.
54
+
55
+ ---
56
+
57
+ ## 📋 Voraussetzungen
58
+
59
+ | Voraussetzung | Hinweis |
60
+ |---|---|
61
+ | Orange3 ≥ 3.40 installiert | Unter **Hilfe → Über** die Version prüfen |
62
+ | Internet-Zugriff auf GitHub | zum Herunterladen des Repos |
63
+
64
+ > ⚠️ **Wichtig:** Es muss immer **Oranges eigenes Python** verwendet werden,
65
+ > nicht `/usr/bin/python3`! Sonst wird das Add-on in der falschen Python-Umgebung
66
+ > installiert und Orange findet es nicht.
67
+
68
+ ---
69
+
70
+ ## 🔍 Oranges eingebettetes Python finden (wichtig!)
71
+
72
+ Der Pfad zu Oranges Python **hängt von der Orange-Version ab**. Je nachdem
73
+ ob Orange mit Python 3.11 oder 3.12 gebaut wurde, heißt das Binary
74
+ `python3`, `python3.11` oder `python3.12`.
75
+
76
+ **Sichere Methode — das echte Python-Binary lokalisieren:**
77
+
78
+ ```bash
79
+ ls /Applications/Orange.app/Contents/Frameworks/Python.framework/Versions/
80
+ # zeigt z.B.: 3.12 und Current -> 3.12
81
+
82
+ # Dann das echte Binary finden:
83
+ find /Applications/Orange.app -name "python3*" -type f 2>/dev/null | grep -i bin
84
+ ```
85
+
86
+ Typische gültige Pfade (je nach Version):
87
+
88
+ | Orange mit | Python-Binary |
89
+ |---|---|
90
+ | Python 3.11 | `.../Versions/Current/bin/python3` |
91
+ | Python 3.11 (nur versioniert) | `.../Versions/Current/bin/python3.11` |
92
+ | Python 3.12 | `.../Versions/Current/bin/python3.12` |
93
+ | Intel-Mac mit 3.12 | `.../Versions/Current/bin/python3.12-intel64` |
94
+
95
+ > `Current` ist ein Symlink zur installierten Version (`Current -> 3.12`),
96
+ > funktioniert also in allen Fällen. Ersetze in den Befehlen unten
97
+ > `ORANGEPY` durch **den** gefundenen Pfad.
98
+
99
+ ---
100
+
101
+ ## 🚀 Installation (Schritt für Schritt)
102
+
103
+ ### macOS (Orange.app als `.app` installiert)
104
+
105
+ **Schritt 1 — Oranges eingebettetes Python prüfen:**
106
+
107
+ Öffne einen Terminal und führe aus (nutze den Pfad aus dem Abschnitt
108
+ [Oranges eingebettetes Python finden](#-oranges-eingebettetes-python-finden-wichtig);
109
+ je nach Orange-Version heißt das Binary `python3`, `python3.11` oder `python3.12`):
110
+
111
+ ```bash
112
+ /Applications/Orange.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3.12 --version
113
+ ```
114
+
115
+ Es sollte eine Python-3.x-Version ausgeben. Notiere dir diesen Pfad — er wird
116
+ in den nächsten Schritten gebraucht (im Folgenden abgekürzt als `ORANGEPY`).
117
+
118
+ **Schritt 2 — Add-on von GitHub installieren:**
119
+
120
+ ```bash
121
+ ORANGEPY=/Applications/Orange.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3.12
122
+ $ORANGEPY -m pip install git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
123
+ ```
124
+
125
+ **Schritt 3 — Installation prüfen (optional, empfohlen):**
126
+
127
+ ```bash
128
+ $ORANGEPY -c "from orangeplsda import PLSDALearner; print('OK')"
129
+ ```
130
+
131
+ Wenn `OK` erscheint, ist das Paket korrekt installiert.
132
+
133
+ **Schritt 4 — In Orange öffnen:**
134
+
135
+ Orange starten. Die Widgets **PLS-DA** und **OPLS-DA** erscheinen in der
136
+ Widget-Leiste unter **PLS-DA**. Du musst Orange nicht neu starten — es reicht,
137
+ das Canvas-Fenster erneut zu öffnen.
138
+
139
+ ---
140
+
141
+ ### Windows (Orange über den "Orange Command Prompt")
142
+
143
+ **Schritt 1 — Orange Command Prompt öffnen:**
144
+
145
+ Startmenü → *Orange* → *Orange Command Prompt* (bzw. *Qt Console*).
146
+
147
+ **Schritt 2 — Installieren:**
148
+
149
+ ```cmd
150
+ python -m pip install git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
151
+ ```
152
+
153
+ **Schritt 3 — Prüfen:**
154
+
155
+ ```cmd
156
+ python -c "from orangeplsda import PLSDALearner; print('OK')"
157
+ ```
158
+
159
+ **Schritt 4 — Orange öffnen** und unter **PLS-DA** nachschauen.
160
+
161
+ ---
162
+
163
+ ### Linux / Conda / Venv
164
+
165
+ **Schritt 1 — Umgebung aktivieren:**
166
+
167
+ ```bash
168
+ conda activate orange # oder: source .venv/bin/activate
169
+ ```
170
+
171
+ **Schritt 2 — Installieren:**
172
+
173
+ ```bash
174
+ pip install git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
175
+ ```
176
+
177
+ **Schritt 3 — Prüfen:**
178
+
179
+ ```bash
180
+ python -c "from orangeplsda import PLSDALearner; print('OK')"
181
+ ```
182
+
183
+ **Schritt 4 — Orange starten** und das Widget suchen.
184
+
185
+ ---
186
+
187
+ ## 🔄 Updates einspielen (bei neuen Versionen)
188
+
189
+ Auf **jedem** Rechner, auf dem das Add-on installiert ist:
190
+
191
+ **Schritt 1 — aktuelle Version installieren (Überschreibt die alte):**
192
+
193
+ ```bash
194
+ # macOS
195
+ $ORANGEPY -m pip install --upgrade --force-reinstall git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
196
+ ```
197
+
198
+ ```bash
199
+ # Windows / Linux / Conda
200
+ python -m pip install --upgrade --force-reinstall git+https://github.com/philippweller/WellerLab.git@main#subdirectory=orange-plsda-addon
201
+ ```
202
+
203
+ **Schritt 2 — Orange neu starten**, damit die neuen Widget-Versionen geladen werden.
204
+
205
+ > Hinweis: `--force-reinstall` wird empfohlen, da Orange die Widgets beim
206
+ > Canvas-Öffnen zwischenspeichert.
207
+
208
+ ---
209
+
210
+ ## 🗑️ Deinstallation
211
+
212
+ ```bash
213
+ # macOS
214
+ $ORANGEPY -m pip uninstall orangeplsda -y
215
+ ```
216
+
217
+ ```bash
218
+ # Windows / Linux / Conda
219
+ python -m pip uninstall orangeplsda -y
220
+ ```
221
+
222
+ Danach Orange neu starten — die Widgets sind verschwunden.
223
+
224
+ ---
225
+
226
+ ## 🧪 Kurzer Funktionstest (Entwickler)
227
+
228
+ Mit Oranges Python auf einem der mitgelieferten Datensätze:
229
+
230
+ ```bash
231
+ python -c "
232
+ from Orange.data import Table
233
+ from Orange.base import Model
234
+ from orangeplsda import PLSDALearner
235
+ from orangeplsda.oplsda_learner import OPLSDALearner
236
+ for L, kw in [(PLSDALearner, dict(n_components=2)),
237
+ (OPLSDALearner, dict(n_components=1, n_ortho=1))]:
238
+ t = Table('iris'); m = L(**kw)(t)
239
+ p, pr = m(t, ret=Model.ValueProbs)
240
+ print(L.__name__, round(float((p == t.Y.flatten()).mean()), 3), pr.shape)
241
+ "
242
+ ```
243
+
244
+ Erwartete Ausgabe (beispielhaft, kann leicht abweichen):
245
+
246
+ ```
247
+ PLSDALearner 0.813 (150, 3)
248
+ OPLSDALearner 0.8 (150, 3)
249
+ ```
250
+
251
+ ---
252
+
253
+ ## 🛠️ Fehlerbehebung
254
+
255
+ | Problem | Lösung |
256
+ |---|---|
257
+ | "`python3` ist nicht vorhanden" / Datei nicht gefunden | Das Binary heißt je nach Orange-Version `python3`, `python3.11` oder `python3.12` (z.B. Orange mit Python 3.12). Mit `find /Applications/Orange.app -name "python3*" -type f` den echten Namen ermitteln. |
258
+ | `from orangeplsda import ...` schlägt fehl | Du hast `/usr/bin/python3` statt Oranges Python benutzt. Siehe Schritt 1 oben. |
259
+ | Widget erscheint nicht in Orange | Gelöschte `*.egg-info`/`__pycache__` prüfen; Orange vollständig neu starten; `pip show orangeplsda` ausführen. |
260
+ | `Host key verification failed` beim pip install | Läuft nur bei einem gepushten SSH-Workflow, nicht bei `git+https://`. Nutze die https-URL. |
261
+ | alte Version bleibt | `pip install --force-reinstall` verwenden (siehe Updates). |
262
+
263
+ ---
264
+
265
+ ## 📦 Entwicklung / Repo lokal ausprobieren
266
+
267
+ ```bash
268
+ git clone git@github.com:philippweller/orange-plsda-addon.git
269
+ cd orange-plsda-addon
270
+ # Editable-Install mit Oranges Python:
271
+ $ORANGEPY -m pip install -e .
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 📄 Lizenz
277
+
278
+ MIT © Philipp Weller
@@ -0,0 +1,10 @@
1
+ """
2
+ orangeplsda - PLS-DA (Partial Least Squares Discriminant Analysis) for Orange3.
3
+
4
+ Provides a classification learner and widget for PLS-DA.
5
+ """
6
+
7
+ from .plsda_learner import PLSDALearner, PLSDAModel
8
+ from .oplsda_learner import OPLSDALearner, OPLSDAModel
9
+
10
+ __all__ = ["PLSDALearner", "PLSDAModel", "OPLSDALearner", "OPLSDAModel"]