FeatureRank 0.1.4__tar.gz → 0.1.5__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.
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank/GUI.py +69 -5
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank/__init__.py +1 -1
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/PKG-INFO +10 -8
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/requires.txt +3 -3
- {featurerank-0.1.4 → featurerank-0.1.5}/PKG-INFO +10 -8
- {featurerank-0.1.4 → featurerank-0.1.5}/README.md +7 -5
- {featurerank-0.1.4 → featurerank-0.1.5}/pyproject.toml +3 -3
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank/__main__.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/SOURCES.txt +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/dependency_links.txt +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/entry_points.txt +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/top_level.txt +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/EvaluatePaperDimensionReduction.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/FeatureBlockDatasetTools.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/FeatureRank.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateAccuracyBoxplotFromList.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClassificationFigure.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClusterClassificationSummaryFigure.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClusterFigure1.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateConfusionMatrixPanel.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreatePrecisionRecallPanel.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateRegressionFigure2.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateRocPanel.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/GeneratePaperDimensionReduction.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/PaperDimensionReductionCommon.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunAutoencoder.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunBlockFeatureSelection.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunDimensionReduction.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunFeatureRankCV.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Simple.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/scripts/__init__.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/setup.cfg +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/AutoencoderFeatureSelection.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Classification.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Clustering.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Config.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/DataLoader.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/DivideCombine.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Experiment.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Models.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/OutputPaths.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Preprocessing.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Regression.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Reporting.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Runtime.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Utils.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/Workflow.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/src/__init__.py +0 -0
- {featurerank-0.1.4 → featurerank-0.1.5}/tests/test_feature_rank_refactor.py +0 -0
|
@@ -9,6 +9,7 @@ from __future__ import annotations
|
|
|
9
9
|
import os
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
import queue
|
|
12
|
+
import shutil
|
|
12
13
|
import subprocess
|
|
13
14
|
import sys
|
|
14
15
|
import threading
|
|
@@ -66,17 +67,74 @@ def _resolve_dataset_path(dataset: str) -> str:
|
|
|
66
67
|
return dataset
|
|
67
68
|
|
|
68
69
|
|
|
69
|
-
def
|
|
70
|
-
"""
|
|
70
|
+
def _supported_python(path: Path) -> bool:
|
|
71
|
+
"""Return whether an interpreter can run the TensorFlow worker."""
|
|
72
|
+
try:
|
|
73
|
+
result = subprocess.run(
|
|
74
|
+
[str(path), "-c", "import sys; print(f'{sys.version_info[0]}.{sys.version_info[1]}')"],
|
|
75
|
+
stdin=subprocess.DEVNULL,
|
|
76
|
+
stdout=subprocess.PIPE,
|
|
77
|
+
stderr=subprocess.DEVNULL,
|
|
78
|
+
text=True,
|
|
79
|
+
timeout=5,
|
|
80
|
+
check=False,
|
|
81
|
+
)
|
|
82
|
+
except (OSError, subprocess.TimeoutExpired):
|
|
83
|
+
return False
|
|
84
|
+
try:
|
|
85
|
+
major, minor = (int(part) for part in result.stdout.strip().split(".", maxsplit=1))
|
|
86
|
+
except (ValueError, TypeError):
|
|
87
|
+
return False
|
|
88
|
+
return (3, 10) <= (major, minor) < (3, 14)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _discover_compatible_python() -> list[Path]:
|
|
92
|
+
"""Find an installed Python 3.13–3.10 for a Python 3.14 GUI process."""
|
|
93
|
+
candidates: list[Path] = []
|
|
94
|
+
versions = ("3.13", "3.12", "3.11", "3.10")
|
|
95
|
+
if os.name == "nt":
|
|
96
|
+
launcher = shutil.which("py")
|
|
97
|
+
if launcher:
|
|
98
|
+
for version in versions:
|
|
99
|
+
try:
|
|
100
|
+
result = subprocess.run(
|
|
101
|
+
[launcher, f"-{version}", "-c", "import sys; print(sys.executable)"],
|
|
102
|
+
stdin=subprocess.DEVNULL,
|
|
103
|
+
stdout=subprocess.PIPE,
|
|
104
|
+
stderr=subprocess.DEVNULL,
|
|
105
|
+
text=True,
|
|
106
|
+
timeout=5,
|
|
107
|
+
check=False,
|
|
108
|
+
)
|
|
109
|
+
except (OSError, subprocess.TimeoutExpired):
|
|
110
|
+
continue
|
|
111
|
+
executable = result.stdout.strip()
|
|
112
|
+
if executable:
|
|
113
|
+
candidates.append(Path(executable))
|
|
114
|
+
else:
|
|
115
|
+
for version in versions:
|
|
116
|
+
executable = shutil.which(f"python{version}")
|
|
117
|
+
if executable:
|
|
118
|
+
candidates.append(Path(executable))
|
|
119
|
+
return candidates
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _worker_python() -> Path | None:
|
|
123
|
+
"""Find a compatible interpreter before falling back to the current one."""
|
|
71
124
|
project_root = Path(__file__).resolve().parent.parent
|
|
72
125
|
executable_name = "python.exe" if os.name == "nt" else "python"
|
|
73
|
-
candidates =
|
|
126
|
+
candidates = [
|
|
74
127
|
Path.cwd() / ".venv" / ("Scripts" if os.name == "nt" else "bin") / executable_name,
|
|
75
128
|
project_root / ".venv" / ("Scripts" if os.name == "nt" else "bin") / executable_name,
|
|
76
129
|
Path(sys.executable).with_name("python"),
|
|
77
130
|
Path(sys.executable),
|
|
78
|
-
|
|
79
|
-
|
|
131
|
+
]
|
|
132
|
+
if sys.version_info >= (3, 14):
|
|
133
|
+
candidates.extend(_discover_compatible_python())
|
|
134
|
+
for candidate in candidates:
|
|
135
|
+
if candidate.is_file() and _supported_python(candidate):
|
|
136
|
+
return candidate
|
|
137
|
+
return None
|
|
80
138
|
|
|
81
139
|
|
|
82
140
|
def _open_folder(path: Path) -> None:
|
|
@@ -408,6 +466,12 @@ class FeatureRankGUI:
|
|
|
408
466
|
save_details=False,
|
|
409
467
|
)
|
|
410
468
|
python_executable = _worker_python()
|
|
469
|
+
if python_executable is None:
|
|
470
|
+
raise RuntimeError(
|
|
471
|
+
"Python 3.14 GUI acildi, ancak TensorFlow worker'i icin Python 3.13, "
|
|
472
|
+
"3.12, 3.11 veya 3.10 bulunamadi. FeatureRank'i calistirmak icin "
|
|
473
|
+
"desteklenen bir Python surumu kurun."
|
|
474
|
+
)
|
|
411
475
|
command = [
|
|
412
476
|
str(python_executable),
|
|
413
477
|
"-m",
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: FeatureRank
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Summary: Autoencoder-based feature ranking and selection workflows
|
|
5
5
|
Author: Sercan
|
|
6
6
|
License: MIT
|
|
7
|
-
Requires-Python: <3.
|
|
7
|
+
Requires-Python: <3.15,>=3.10
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
Requires-Dist: numpy>=2.0
|
|
10
10
|
Requires-Dist: pandas>=2.0
|
|
11
11
|
Requires-Dist: numexpr>=2.10.2
|
|
12
12
|
Requires-Dist: scikit-learn>=1.4
|
|
13
13
|
Requires-Dist: matplotlib>=3.8
|
|
14
|
-
Requires-Dist: tensorflow<2.22,>=2.21; platform_system != "Darwin" or platform_machine != "x86_64"
|
|
14
|
+
Requires-Dist: tensorflow<2.22,>=2.21; python_version < "3.14" and (platform_system != "Darwin" or platform_machine != "x86_64")
|
|
15
15
|
Requires-Dist: tensorflow<2.17,>=2.16.2; platform_system == "Darwin" and platform_machine == "x86_64" and python_version < "3.13"
|
|
16
16
|
|
|
17
17
|
# FeatureRank
|
|
@@ -31,10 +31,12 @@ unsupervised clustering.
|
|
|
31
31
|
|
|
32
32
|
## PyPI installation and GUI (end users)
|
|
33
33
|
|
|
34
|
-
FeatureRank
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
FeatureRank's GUI can be imported on 64-bit Python 3.10–3.14 desktop systems.
|
|
35
|
+
The TensorFlow worker currently runs on Python 3.10–3.13. When the GUI is
|
|
36
|
+
started from Python 3.14, it automatically looks for an installed compatible
|
|
37
|
+
Python worker. Intel macOS users should use Python 3.12 or earlier because
|
|
38
|
+
newer TensorFlow releases do not provide an Intel macOS wheel. Check the
|
|
39
|
+
Python version first:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
42
|
python3 --version
|
|
@@ -81,7 +83,7 @@ GPU-specific dependencies are listed in
|
|
|
81
83
|
[`requirements-gpu.txt`](requirements-gpu.txt). Hardware notes are available in
|
|
82
84
|
[`GPU_SETUP.md`](GPU_SETUP.md).
|
|
83
85
|
|
|
84
|
-
The repository metadata is version `0.1.
|
|
86
|
+
The repository metadata is version `0.1.5`. Because PyPI releases cannot be
|
|
85
87
|
replaced in place, publish this version (or a newer one) to the existing
|
|
86
88
|
`FeatureRank` project when you release the refactor. If an environment still
|
|
87
89
|
shows an older FeatureRank version, upgrade it with the command above or use the local
|
|
@@ -4,8 +4,8 @@ numexpr>=2.10.2
|
|
|
4
4
|
scikit-learn>=1.4
|
|
5
5
|
matplotlib>=3.8
|
|
6
6
|
|
|
7
|
-
[:platform_system != "Darwin" or platform_machine != "x86_64"]
|
|
8
|
-
tensorflow<2.22,>=2.21
|
|
9
|
-
|
|
10
7
|
[:platform_system == "Darwin" and platform_machine == "x86_64" and python_version < "3.13"]
|
|
11
8
|
tensorflow<2.17,>=2.16.2
|
|
9
|
+
|
|
10
|
+
[:python_version < "3.14" and (platform_system != "Darwin" or platform_machine != "x86_64")]
|
|
11
|
+
tensorflow<2.22,>=2.21
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: FeatureRank
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Summary: Autoencoder-based feature ranking and selection workflows
|
|
5
5
|
Author: Sercan
|
|
6
6
|
License: MIT
|
|
7
|
-
Requires-Python: <3.
|
|
7
|
+
Requires-Python: <3.15,>=3.10
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
Requires-Dist: numpy>=2.0
|
|
10
10
|
Requires-Dist: pandas>=2.0
|
|
11
11
|
Requires-Dist: numexpr>=2.10.2
|
|
12
12
|
Requires-Dist: scikit-learn>=1.4
|
|
13
13
|
Requires-Dist: matplotlib>=3.8
|
|
14
|
-
Requires-Dist: tensorflow<2.22,>=2.21; platform_system != "Darwin" or platform_machine != "x86_64"
|
|
14
|
+
Requires-Dist: tensorflow<2.22,>=2.21; python_version < "3.14" and (platform_system != "Darwin" or platform_machine != "x86_64")
|
|
15
15
|
Requires-Dist: tensorflow<2.17,>=2.16.2; platform_system == "Darwin" and platform_machine == "x86_64" and python_version < "3.13"
|
|
16
16
|
|
|
17
17
|
# FeatureRank
|
|
@@ -31,10 +31,12 @@ unsupervised clustering.
|
|
|
31
31
|
|
|
32
32
|
## PyPI installation and GUI (end users)
|
|
33
33
|
|
|
34
|
-
FeatureRank
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
FeatureRank's GUI can be imported on 64-bit Python 3.10–3.14 desktop systems.
|
|
35
|
+
The TensorFlow worker currently runs on Python 3.10–3.13. When the GUI is
|
|
36
|
+
started from Python 3.14, it automatically looks for an installed compatible
|
|
37
|
+
Python worker. Intel macOS users should use Python 3.12 or earlier because
|
|
38
|
+
newer TensorFlow releases do not provide an Intel macOS wheel. Check the
|
|
39
|
+
Python version first:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
42
|
python3 --version
|
|
@@ -81,7 +83,7 @@ GPU-specific dependencies are listed in
|
|
|
81
83
|
[`requirements-gpu.txt`](requirements-gpu.txt). Hardware notes are available in
|
|
82
84
|
[`GPU_SETUP.md`](GPU_SETUP.md).
|
|
83
85
|
|
|
84
|
-
The repository metadata is version `0.1.
|
|
86
|
+
The repository metadata is version `0.1.5`. Because PyPI releases cannot be
|
|
85
87
|
replaced in place, publish this version (or a newer one) to the existing
|
|
86
88
|
`FeatureRank` project when you release the refactor. If an environment still
|
|
87
89
|
shows an older FeatureRank version, upgrade it with the command above or use the local
|
|
@@ -15,10 +15,12 @@ unsupervised clustering.
|
|
|
15
15
|
|
|
16
16
|
## PyPI installation and GUI (end users)
|
|
17
17
|
|
|
18
|
-
FeatureRank
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
FeatureRank's GUI can be imported on 64-bit Python 3.10–3.14 desktop systems.
|
|
19
|
+
The TensorFlow worker currently runs on Python 3.10–3.13. When the GUI is
|
|
20
|
+
started from Python 3.14, it automatically looks for an installed compatible
|
|
21
|
+
Python worker. Intel macOS users should use Python 3.12 or earlier because
|
|
22
|
+
newer TensorFlow releases do not provide an Intel macOS wheel. Check the
|
|
23
|
+
Python version first:
|
|
22
24
|
|
|
23
25
|
```bash
|
|
24
26
|
python3 --version
|
|
@@ -65,7 +67,7 @@ GPU-specific dependencies are listed in
|
|
|
65
67
|
[`requirements-gpu.txt`](requirements-gpu.txt). Hardware notes are available in
|
|
66
68
|
[`GPU_SETUP.md`](GPU_SETUP.md).
|
|
67
69
|
|
|
68
|
-
The repository metadata is version `0.1.
|
|
70
|
+
The repository metadata is version `0.1.5`. Because PyPI releases cannot be
|
|
69
71
|
replaced in place, publish this version (or a newer one) to the existing
|
|
70
72
|
`FeatureRank` project when you release the refactor. If an environment still
|
|
71
73
|
shows an older FeatureRank version, upgrade it with the command above or use the local
|
|
@@ -4,19 +4,19 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "FeatureRank"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.5"
|
|
8
8
|
description = "Autoencoder-based feature ranking and selection workflows"
|
|
9
9
|
readme = "Readme.md"
|
|
10
10
|
authors = [{ name = "Sercan" }]
|
|
11
11
|
license = { text = "MIT" }
|
|
12
|
-
requires-python = ">=3.10,<3.
|
|
12
|
+
requires-python = ">=3.10,<3.15"
|
|
13
13
|
dependencies = [
|
|
14
14
|
"numpy>=2.0",
|
|
15
15
|
"pandas>=2.0",
|
|
16
16
|
"numexpr>=2.10.2",
|
|
17
17
|
"scikit-learn>=1.4",
|
|
18
18
|
"matplotlib>=3.8",
|
|
19
|
-
"tensorflow>=2.21,<2.22; platform_system != 'Darwin' or platform_machine != 'x86_64'",
|
|
19
|
+
"tensorflow>=2.21,<2.22; python_version < '3.14' and (platform_system != 'Darwin' or platform_machine != 'x86_64')",
|
|
20
20
|
"tensorflow>=2.16.2,<2.17; platform_system == 'Darwin' and platform_machine == 'x86_64' and python_version < '3.13'",
|
|
21
21
|
]
|
|
22
22
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateAccuracyBoxplotFromList.py
RENAMED
|
File without changes
|
{featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClassificationFigure.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateConfusionMatrixPanel.py
RENAMED
|
File without changes
|
{featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreatePrecisionRecallPanel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|