hapc 2.3.0__tar.gz → 2.3.1__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.
- {hapc-2.3.0 → hapc-2.3.1}/CMakeLists.txt +8 -2
- {hapc-2.3.0/python/hapc.egg-info → hapc-2.3.1}/PKG-INFO +29 -4
- {hapc-2.3.0 → hapc-2.3.1}/README.md +28 -3
- hapc-2.3.1/pyproject.toml +70 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc/__init__.py +1 -1
- {hapc-2.3.0 → hapc-2.3.1/python/hapc.egg-info}/PKG-INFO +29 -4
- {hapc-2.3.0 → hapc-2.3.1}/setup.py +10 -0
- hapc-2.3.0/pyproject.toml +0 -36
- {hapc-2.3.0 → hapc-2.3.1}/LICENSE +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/MANIFEST.in +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc/ate.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc/core.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc/cv.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc/single.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc.egg-info/SOURCES.txt +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc.egg-info/dependency_links.txt +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc.egg-info/not-zip-safe +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc.egg-info/requires.txt +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/python/hapc.egg-info/top_level.txt +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/setup.cfg +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/bindings.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/cross_kernel.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/cv_classi.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/cv_fast_pchal.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/cv_fast_pchal_python.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/fast_pchal.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/hapc_core.hpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/logistic_call.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/mkernel.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/pcghal_call.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/pcghal_classi_call.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/pcghal_cv.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/pcghal_cv_classi_cpp.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/pcghal_cv_cpp.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/pchal_design.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/r_bindings.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/ridge_wrappers.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/single_pcghal_cpp.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/src/single_pchar.cpp +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/tests/test_api.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/tests/test_ate.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/tests/test_ate_hapc_diagnostics_example.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/tests/test_core.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/tests/test_logistic_regression.py +0 -0
- {hapc-2.3.0 → hapc-2.3.1}/tests/test_r_vs_python_alpha.py +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
cmake_minimum_required(VERSION 3.
|
|
1
|
+
cmake_minimum_required(VERSION 3.18)
|
|
2
2
|
project(hapc)
|
|
3
3
|
|
|
4
4
|
set(CMAKE_CXX_STANDARD 17)
|
|
@@ -15,7 +15,13 @@ endif()
|
|
|
15
15
|
# Python3_EXECUTABLE from setup.py so the build always targets the *same*
|
|
16
16
|
# interpreter that pip is using. Without this CMake may discover a newer/
|
|
17
17
|
# older system Python and produce a .so tagged for the wrong ABI.
|
|
18
|
-
|
|
18
|
+
#
|
|
19
|
+
# Use Development.Module (headers only), NOT the full Development component:
|
|
20
|
+
# the latter also requires Development.Embed -> libpython, which manylinux
|
|
21
|
+
# images deliberately do not ship (extension modules must not link libpython).
|
|
22
|
+
# Requiring full Development makes the manylinux build fail with
|
|
23
|
+
# "Could NOT find Python3 (missing: Python3_LIBRARIES Development.Embed)".
|
|
24
|
+
find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED)
|
|
19
25
|
message(STATUS "Python3_EXECUTABLE: ${Python3_EXECUTABLE}")
|
|
20
26
|
message(STATUS "Python3_VERSION: ${Python3_VERSION}")
|
|
21
27
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hapc
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Highly Adaptive Principal Components
|
|
5
5
|
Home-page: https://github.com/meixide/hapc
|
|
6
6
|
Author: Carlos García Meixide
|
|
@@ -51,16 +51,41 @@ A fast and flexible machine learning library for nonparametric high-dimensional
|
|
|
51
51
|
pip install hapc
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
Prebuilt wheels are published for Linux (manylinux2014, x86_64), macOS
|
|
55
|
+
(Intel + Apple Silicon) and Windows, for CPython 3.8–3.12. No compiler,
|
|
56
|
+
CMake or Eigen is needed when a wheel is available.
|
|
57
|
+
|
|
58
|
+
### Linux / HPC clusters
|
|
59
|
+
|
|
60
|
+
The Linux wheels use the **manylinux2014** baseline (glibc 2.17), so
|
|
61
|
+
`pip install hapc` works out of the box on HPC login/compute nodes —
|
|
62
|
+
no `conda` toolchain, `devtoolset`, or sysroot setup required:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pip install hapc
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If you must build from the source distribution (niche architecture, very
|
|
69
|
+
old Python, or an air-gapped node), provide a C++17 compiler and either
|
|
70
|
+
let CMake fetch Eigen automatically (needs network) or install Eigen and
|
|
71
|
+
let `find_package(Eigen3)` find it:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# with conda compilers (recommended on HPC)
|
|
75
|
+
conda install -c conda-forge cxx-compiler cmake eigen
|
|
76
|
+
pip install hapc --no-binary hapc
|
|
77
|
+
```
|
|
78
|
+
|
|
54
79
|
### Install from GitHub (latest development version)
|
|
55
80
|
|
|
56
81
|
```bash
|
|
57
|
-
pip install git+https://github.com/
|
|
82
|
+
pip install git+https://github.com/meixide/hapc.git
|
|
58
83
|
```
|
|
59
84
|
|
|
60
85
|
Or with editable install for development:
|
|
61
86
|
|
|
62
87
|
```bash
|
|
63
|
-
git clone https://github.com/
|
|
88
|
+
git clone https://github.com/meixide/hapc.git
|
|
64
89
|
cd hapc
|
|
65
90
|
pip install -e .
|
|
66
91
|
```
|
|
@@ -201,7 +226,7 @@ Cross-validation to select lambda.
|
|
|
201
226
|
Contributions welcome! The C++ core is shared between R and Python packages.
|
|
202
227
|
|
|
203
228
|
```bash
|
|
204
|
-
git clone https://github.com/
|
|
229
|
+
git clone https://github.com/meixide/hapc.git
|
|
205
230
|
cd hapc
|
|
206
231
|
pip install -e .
|
|
207
232
|
pytest
|
|
@@ -17,16 +17,41 @@ A fast and flexible machine learning library for nonparametric high-dimensional
|
|
|
17
17
|
pip install hapc
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
Prebuilt wheels are published for Linux (manylinux2014, x86_64), macOS
|
|
21
|
+
(Intel + Apple Silicon) and Windows, for CPython 3.8–3.12. No compiler,
|
|
22
|
+
CMake or Eigen is needed when a wheel is available.
|
|
23
|
+
|
|
24
|
+
### Linux / HPC clusters
|
|
25
|
+
|
|
26
|
+
The Linux wheels use the **manylinux2014** baseline (glibc 2.17), so
|
|
27
|
+
`pip install hapc` works out of the box on HPC login/compute nodes —
|
|
28
|
+
no `conda` toolchain, `devtoolset`, or sysroot setup required:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install hapc
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
If you must build from the source distribution (niche architecture, very
|
|
35
|
+
old Python, or an air-gapped node), provide a C++17 compiler and either
|
|
36
|
+
let CMake fetch Eigen automatically (needs network) or install Eigen and
|
|
37
|
+
let `find_package(Eigen3)` find it:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# with conda compilers (recommended on HPC)
|
|
41
|
+
conda install -c conda-forge cxx-compiler cmake eigen
|
|
42
|
+
pip install hapc --no-binary hapc
|
|
43
|
+
```
|
|
44
|
+
|
|
20
45
|
### Install from GitHub (latest development version)
|
|
21
46
|
|
|
22
47
|
```bash
|
|
23
|
-
pip install git+https://github.com/
|
|
48
|
+
pip install git+https://github.com/meixide/hapc.git
|
|
24
49
|
```
|
|
25
50
|
|
|
26
51
|
Or with editable install for development:
|
|
27
52
|
|
|
28
53
|
```bash
|
|
29
|
-
git clone https://github.com/
|
|
54
|
+
git clone https://github.com/meixide/hapc.git
|
|
30
55
|
cd hapc
|
|
31
56
|
pip install -e .
|
|
32
57
|
```
|
|
@@ -167,7 +192,7 @@ Cross-validation to select lambda.
|
|
|
167
192
|
Contributions welcome! The C++ core is shared between R and Python packages.
|
|
168
193
|
|
|
169
194
|
```bash
|
|
170
|
-
git clone https://github.com/
|
|
195
|
+
git clone https://github.com/meixide/hapc.git
|
|
171
196
|
cd hapc
|
|
172
197
|
pip install -e .
|
|
173
198
|
pytest
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=65", "wheel", "cmake>=3.18", "pybind11>=2.6"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "hapc"
|
|
7
|
+
version = "2.3.1"
|
|
8
|
+
description = "Highly Adaptive Principal Components"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "Carlos García Meixide", email = "cgmeixide@gmail.com"}
|
|
13
|
+
]
|
|
14
|
+
license = {text = "MIT"}
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Programming Language :: Python :: 3.8",
|
|
18
|
+
"Programming Language :: Python :: 3.9",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
]
|
|
24
|
+
dependencies = [
|
|
25
|
+
"numpy>=1.24,<2.3",
|
|
26
|
+
"scikit-learn>=1.0",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.optional-dependencies]
|
|
30
|
+
dev = ["pytest", "pytest-cov", "black", "flake8"]
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://github.com/meixide/hapc"
|
|
34
|
+
Documentation = "https://github.com/meixide/hapc#readme"
|
|
35
|
+
Repository = "https://github.com/meixide/hapc.git"
|
|
36
|
+
Issues = "https://github.com/meixide/hapc/issues"
|
|
37
|
+
|
|
38
|
+
[tool.cibuildwheel]
|
|
39
|
+
# Build CPython 3.8–3.12 only; skip PyPy and musl (HPC/desktop targets are glibc).
|
|
40
|
+
build = "cp38-* cp39-* cp310-* cp311-* cp312-*"
|
|
41
|
+
skip = ["pp*", "*-musllinux*"]
|
|
42
|
+
build-verbosity = 1
|
|
43
|
+
# Smoke-test every wheel: install it (pulling numpy/scikit-learn) and import the
|
|
44
|
+
# compiled extension. Catches wrong-ABI / unresolved-symbol wheels before publish.
|
|
45
|
+
test-command = "python -c \"import hapc; print(hapc.__version__)\""
|
|
46
|
+
# NOTE: the latest scipy (transitive via scikit-learn) no longer ships a
|
|
47
|
+
# manylinux2014 wheel, so the in-container smoke test would try to compile it
|
|
48
|
+
# from source and fail. We force scipy to resolve from a binary wheel via
|
|
49
|
+
# PIP_ONLY_BINARY=scipy, set in the workflow and passed into the Linux container
|
|
50
|
+
# (see .github/workflows/build-and-publish.yml). It must apply to the wheel
|
|
51
|
+
# install itself, which is why it lives in the env rather than test-requires.
|
|
52
|
+
|
|
53
|
+
[tool.cibuildwheel.linux]
|
|
54
|
+
archs = ["x86_64"]
|
|
55
|
+
# manylinux2014 -> glibc 2.17 baseline + bundled libstdc++ via auditwheel, so the
|
|
56
|
+
# wheel installs and runs unmodified on any HPC cluster (glibc >= 2.17), no
|
|
57
|
+
# compiler / conda toolchain / sysroot required.
|
|
58
|
+
manylinux-x86_64-image = "manylinux2014"
|
|
59
|
+
|
|
60
|
+
[tool.cibuildwheel.macos]
|
|
61
|
+
# Build fat universal2 wheels (x86_64 + arm64) from a single runner. CMake does
|
|
62
|
+
# not honour the interpreter's arch flags, so the arch is forced explicitly via
|
|
63
|
+
# CMAKE_ARGS below (setup.py appends $CMAKE_ARGS to the cmake invocation).
|
|
64
|
+
# delocate then verifies both slices are present, which is what caught the old
|
|
65
|
+
# single-arch-but-universal2-tagged wheels.
|
|
66
|
+
archs = ["universal2"]
|
|
67
|
+
environment = { CMAKE_ARGS = "-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64" }
|
|
68
|
+
|
|
69
|
+
[tool.cibuildwheel.windows]
|
|
70
|
+
archs = ["AMD64"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hapc
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Highly Adaptive Principal Components
|
|
5
5
|
Home-page: https://github.com/meixide/hapc
|
|
6
6
|
Author: Carlos García Meixide
|
|
@@ -51,16 +51,41 @@ A fast and flexible machine learning library for nonparametric high-dimensional
|
|
|
51
51
|
pip install hapc
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
Prebuilt wheels are published for Linux (manylinux2014, x86_64), macOS
|
|
55
|
+
(Intel + Apple Silicon) and Windows, for CPython 3.8–3.12. No compiler,
|
|
56
|
+
CMake or Eigen is needed when a wheel is available.
|
|
57
|
+
|
|
58
|
+
### Linux / HPC clusters
|
|
59
|
+
|
|
60
|
+
The Linux wheels use the **manylinux2014** baseline (glibc 2.17), so
|
|
61
|
+
`pip install hapc` works out of the box on HPC login/compute nodes —
|
|
62
|
+
no `conda` toolchain, `devtoolset`, or sysroot setup required:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pip install hapc
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If you must build from the source distribution (niche architecture, very
|
|
69
|
+
old Python, or an air-gapped node), provide a C++17 compiler and either
|
|
70
|
+
let CMake fetch Eigen automatically (needs network) or install Eigen and
|
|
71
|
+
let `find_package(Eigen3)` find it:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# with conda compilers (recommended on HPC)
|
|
75
|
+
conda install -c conda-forge cxx-compiler cmake eigen
|
|
76
|
+
pip install hapc --no-binary hapc
|
|
77
|
+
```
|
|
78
|
+
|
|
54
79
|
### Install from GitHub (latest development version)
|
|
55
80
|
|
|
56
81
|
```bash
|
|
57
|
-
pip install git+https://github.com/
|
|
82
|
+
pip install git+https://github.com/meixide/hapc.git
|
|
58
83
|
```
|
|
59
84
|
|
|
60
85
|
Or with editable install for development:
|
|
61
86
|
|
|
62
87
|
```bash
|
|
63
|
-
git clone https://github.com/
|
|
88
|
+
git clone https://github.com/meixide/hapc.git
|
|
64
89
|
cd hapc
|
|
65
90
|
pip install -e .
|
|
66
91
|
```
|
|
@@ -201,7 +226,7 @@ Cross-validation to select lambda.
|
|
|
201
226
|
Contributions welcome! The C++ core is shared between R and Python packages.
|
|
202
227
|
|
|
203
228
|
```bash
|
|
204
|
-
git clone https://github.com/
|
|
229
|
+
git clone https://github.com/meixide/hapc.git
|
|
205
230
|
cd hapc
|
|
206
231
|
pip install -e .
|
|
207
232
|
pytest
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from setuptools import setup, find_packages, Extension
|
|
4
4
|
from setuptools.command.build_ext import build_ext
|
|
5
5
|
import os
|
|
6
|
+
import shlex
|
|
6
7
|
import subprocess
|
|
7
8
|
import sys
|
|
8
9
|
from pathlib import Path
|
|
@@ -44,6 +45,15 @@ class CMakeBuild(build_ext):
|
|
|
44
45
|
build_args = ['--config', cfg]
|
|
45
46
|
|
|
46
47
|
cmake_args += ['-DCMAKE_BUILD_TYPE=' + cfg]
|
|
48
|
+
|
|
49
|
+
# Honour the conventional CMAKE_ARGS env var (set by cibuildwheel/conda).
|
|
50
|
+
# Used to force universal2 macOS builds via
|
|
51
|
+
# CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64", which CMake cannot
|
|
52
|
+
# infer from the (single-arch) build interpreter on its own.
|
|
53
|
+
extra_cmake_args = os.environ.get('CMAKE_ARGS')
|
|
54
|
+
if extra_cmake_args:
|
|
55
|
+
cmake_args += shlex.split(extra_cmake_args)
|
|
56
|
+
|
|
47
57
|
# Add parallel build flag only on non-Windows platforms
|
|
48
58
|
# On Windows, MSBuild doesn't support -j flag and handles parallelization automatically
|
|
49
59
|
if sys.platform != 'win32':
|
hapc-2.3.0/pyproject.toml
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=65", "wheel", "cmake>=3.15", "pybind11>=2.6"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "hapc"
|
|
7
|
-
version = "2.3.0"
|
|
8
|
-
description = "Highly Adaptive Principal Components"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.8"
|
|
11
|
-
authors = [
|
|
12
|
-
{name = "Carlos García Meixide", email = "cgmeixide@gmail.com"}
|
|
13
|
-
]
|
|
14
|
-
license = {text = "MIT"}
|
|
15
|
-
classifiers = [
|
|
16
|
-
"Programming Language :: Python :: 3",
|
|
17
|
-
"Programming Language :: Python :: 3.8",
|
|
18
|
-
"Programming Language :: Python :: 3.9",
|
|
19
|
-
"Programming Language :: Python :: 3.10",
|
|
20
|
-
"Programming Language :: Python :: 3.11",
|
|
21
|
-
"Programming Language :: Python :: 3.12",
|
|
22
|
-
"Operating System :: OS Independent",
|
|
23
|
-
]
|
|
24
|
-
dependencies = [
|
|
25
|
-
"numpy>=1.24,<2.3",
|
|
26
|
-
"scikit-learn>=1.0",
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
[project.optional-dependencies]
|
|
30
|
-
dev = ["pytest", "pytest-cov", "black", "flake8"]
|
|
31
|
-
|
|
32
|
-
[project.urls]
|
|
33
|
-
Homepage = "https://github.com/meixide/hapc"
|
|
34
|
-
Documentation = "https://github.com/meixide/hapc#readme"
|
|
35
|
-
Repository = "https://github.com/meixide/hapc.git"
|
|
36
|
-
Issues = "https://github.com/meixide/hapc/issues"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|