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.
Files changed (49) hide show
  1. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank/GUI.py +69 -5
  2. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank/__init__.py +1 -1
  3. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/PKG-INFO +10 -8
  4. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/requires.txt +3 -3
  5. {featurerank-0.1.4 → featurerank-0.1.5}/PKG-INFO +10 -8
  6. {featurerank-0.1.4 → featurerank-0.1.5}/README.md +7 -5
  7. {featurerank-0.1.4 → featurerank-0.1.5}/pyproject.toml +3 -3
  8. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank/__main__.py +0 -0
  9. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/SOURCES.txt +0 -0
  10. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/dependency_links.txt +0 -0
  11. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/entry_points.txt +0 -0
  12. {featurerank-0.1.4 → featurerank-0.1.5}/FeatureRank.egg-info/top_level.txt +0 -0
  13. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/EvaluatePaperDimensionReduction.py +0 -0
  14. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/FeatureBlockDatasetTools.py +0 -0
  15. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/FeatureRank.py +0 -0
  16. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateAccuracyBoxplotFromList.py +0 -0
  17. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClassificationFigure.py +0 -0
  18. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClusterClassificationSummaryFigure.py +0 -0
  19. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateClusterFigure1.py +0 -0
  20. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateConfusionMatrixPanel.py +0 -0
  21. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreatePrecisionRecallPanel.py +0 -0
  22. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateRegressionFigure2.py +0 -0
  23. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Figure_Scripts/CreateRocPanel.py +0 -0
  24. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/GeneratePaperDimensionReduction.py +0 -0
  25. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/PaperDimensionReductionCommon.py +0 -0
  26. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunAutoencoder.py +0 -0
  27. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunBlockFeatureSelection.py +0 -0
  28. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunDimensionReduction.py +0 -0
  29. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/RunFeatureRankCV.py +0 -0
  30. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/Simple.py +0 -0
  31. {featurerank-0.1.4 → featurerank-0.1.5}/scripts/__init__.py +0 -0
  32. {featurerank-0.1.4 → featurerank-0.1.5}/setup.cfg +0 -0
  33. {featurerank-0.1.4 → featurerank-0.1.5}/src/AutoencoderFeatureSelection.py +0 -0
  34. {featurerank-0.1.4 → featurerank-0.1.5}/src/Classification.py +0 -0
  35. {featurerank-0.1.4 → featurerank-0.1.5}/src/Clustering.py +0 -0
  36. {featurerank-0.1.4 → featurerank-0.1.5}/src/Config.py +0 -0
  37. {featurerank-0.1.4 → featurerank-0.1.5}/src/DataLoader.py +0 -0
  38. {featurerank-0.1.4 → featurerank-0.1.5}/src/DivideCombine.py +0 -0
  39. {featurerank-0.1.4 → featurerank-0.1.5}/src/Experiment.py +0 -0
  40. {featurerank-0.1.4 → featurerank-0.1.5}/src/Models.py +0 -0
  41. {featurerank-0.1.4 → featurerank-0.1.5}/src/OutputPaths.py +0 -0
  42. {featurerank-0.1.4 → featurerank-0.1.5}/src/Preprocessing.py +0 -0
  43. {featurerank-0.1.4 → featurerank-0.1.5}/src/Regression.py +0 -0
  44. {featurerank-0.1.4 → featurerank-0.1.5}/src/Reporting.py +0 -0
  45. {featurerank-0.1.4 → featurerank-0.1.5}/src/Runtime.py +0 -0
  46. {featurerank-0.1.4 → featurerank-0.1.5}/src/Utils.py +0 -0
  47. {featurerank-0.1.4 → featurerank-0.1.5}/src/Workflow.py +0 -0
  48. {featurerank-0.1.4 → featurerank-0.1.5}/src/__init__.py +0 -0
  49. {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 _worker_python() -> Path:
70
- """Find a project virtual-environment interpreter before the system one."""
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
- return next((candidate for candidate in candidates if candidate.is_file()), candidates[-1])
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",
@@ -11,7 +11,7 @@ import sys
11
11
 
12
12
  from .GUI import Launch
13
13
 
14
- __version__ = "0.1.4"
14
+ __version__ = "0.1.5"
15
15
 
16
16
 
17
17
  def _run_cli(arguments: list[str] | None = None) -> None:
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: FeatureRank
3
- Version: 0.1.4
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.14,>=3.10
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 supports 64-bit Python 3.10, 3.11, 3.12, and 3.13 on desktop
35
- Windows, Linux, and macOS systems. Python 3.14 is not supported yet. Intel
36
- macOS users should use Python 3.12 or earlier because newer TensorFlow releases
37
- do not provide an Intel macOS wheel. Check the Python version first:
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.4`. Because PyPI releases cannot be
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.4
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.14,>=3.10
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 supports 64-bit Python 3.10, 3.11, 3.12, and 3.13 on desktop
35
- Windows, Linux, and macOS systems. Python 3.14 is not supported yet. Intel
36
- macOS users should use Python 3.12 or earlier because newer TensorFlow releases
37
- do not provide an Intel macOS wheel. Check the Python version first:
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.4`. Because PyPI releases cannot be
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 supports 64-bit Python 3.10, 3.11, 3.12, and 3.13 on desktop
19
- Windows, Linux, and macOS systems. Python 3.14 is not supported yet. Intel
20
- macOS users should use Python 3.12 or earlier because newer TensorFlow releases
21
- do not provide an Intel macOS wheel. Check the Python version first:
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.4`. Because PyPI releases cannot be
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.4"
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.14"
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