hyper-fingerprints 0.2.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.
- hyper_fingerprints-0.2.1/.github/workflows/ci.yml +201 -0
- hyper_fingerprints-0.2.1/.gitignore +10 -0
- hyper_fingerprints-0.2.1/CHANGELOG.md +84 -0
- hyper_fingerprints-0.2.1/CLAUDE.md +6 -0
- hyper_fingerprints-0.2.1/Cargo.lock +339 -0
- hyper_fingerprints-0.2.1/Cargo.toml +18 -0
- hyper_fingerprints-0.2.1/DEVELOP.md +193 -0
- hyper_fingerprints-0.2.1/LICENSE +21 -0
- hyper_fingerprints-0.2.1/PKG-INFO +14 -0
- hyper_fingerprints-0.2.1/README.md +226 -0
- hyper_fingerprints-0.2.1/RUST_EXTENSION.md +479 -0
- hyper_fingerprints-0.2.1/banner.png +0 -0
- hyper_fingerprints-0.2.1/build.sh +73 -0
- hyper_fingerprints-0.2.1/examples/00_quickstart.ipynb +373 -0
- hyper_fingerprints-0.2.1/experiments/benchmark_fps.py +416 -0
- hyper_fingerprints-0.2.1/experiments/molecules.smi +10000 -0
- hyper_fingerprints-0.2.1/experiments/profile_hdf.py +343 -0
- hyper_fingerprints-0.2.1/experiments/results/benchmark.csv +28 -0
- hyper_fingerprints-0.2.1/experiments/results/benchmark.png +0 -0
- hyper_fingerprints-0.2.1/experiments/results/profile_hdf.csv +8 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/VERSION +1 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/__init__.py +32 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/_core.pyi +73 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/codebook.py +51 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/encoder.py +380 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/features.py +173 -0
- hyper_fingerprints-0.2.1/hyper_fingerprints/utils.py +161 -0
- hyper_fingerprints-0.2.1/noxfile.py +41 -0
- hyper_fingerprints-0.2.1/pyproject.toml +36 -0
- hyper_fingerprints-0.2.1/release.sh +107 -0
- hyper_fingerprints-0.2.1/src/lib.rs +704 -0
- hyper_fingerprints-0.2.1/tests/benchmark_encoder.py +88 -0
- hyper_fingerprints-0.2.1/tests/fixtures/benchmark_torch.json +266 -0
- hyper_fingerprints-0.2.1/tests/fixtures/regression_data.npz +0 -0
- hyper_fingerprints-0.2.1/tests/generate_fixtures.py +121 -0
- hyper_fingerprints-0.2.1/tests/test_encoder.py +227 -0
- hyper_fingerprints-0.2.1/tests/test_features.py +87 -0
- hyper_fingerprints-0.2.1/tests/test_regression.py +158 -0
- hyper_fingerprints-0.2.1/tests/test_rust_backend.py +224 -0
- hyper_fingerprints-0.2.1/uv.lock +956 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# CI: build wheels for all platforms, run tests, publish to PyPI on tags.
|
|
2
|
+
#
|
|
3
|
+
# How it works:
|
|
4
|
+
#
|
|
5
|
+
# 1. TRIGGERS:
|
|
6
|
+
# - Push to master: builds wheels + runs tests (no publish)
|
|
7
|
+
# - Pull request: builds wheels + runs tests (no publish)
|
|
8
|
+
# - Tag push (v*): builds wheels + runs tests + publishes to PyPI
|
|
9
|
+
# - Manual trigger: builds wheels + runs tests (optionally publish)
|
|
10
|
+
#
|
|
11
|
+
# 2. BUILD JOBS (linux, macos, windows):
|
|
12
|
+
# Each uses PyO3/maturin-action which:
|
|
13
|
+
# - Installs Rust + maturin inside the runner
|
|
14
|
+
# - For Linux: runs inside a manylinux Docker container (glibc compat)
|
|
15
|
+
# - For macOS/Windows: builds natively on the runner
|
|
16
|
+
# - Produces an abi3 wheel (one wheel per platform, all Python 3.9+)
|
|
17
|
+
# - Uploads the wheel as a GitHub Actions artifact
|
|
18
|
+
#
|
|
19
|
+
# 3. TEST JOB:
|
|
20
|
+
# Downloads the Linux x86_64 wheel, installs it in a fresh venv,
|
|
21
|
+
# and runs the full pytest suite. This catches packaging issues
|
|
22
|
+
# (missing files, broken imports, etc.)
|
|
23
|
+
#
|
|
24
|
+
# 4. RELEASE JOB (tag pushes only):
|
|
25
|
+
# Downloads all wheel artifacts + sdist, publishes to PyPI.
|
|
26
|
+
# Uses PyPI trusted publishing (OIDC) -- no API token needed.
|
|
27
|
+
# Set up at: https://pypi.org/manage/project/.../settings/publishing/
|
|
28
|
+
#
|
|
29
|
+
# Prerequisites for PyPI publishing:
|
|
30
|
+
# 1. Create the project on PyPI
|
|
31
|
+
# 2. Add a "trusted publisher" for this GitHub repo:
|
|
32
|
+
# - Owner: <github-user>
|
|
33
|
+
# - Repository: hyper-fingerprints
|
|
34
|
+
# - Workflow: ci.yml
|
|
35
|
+
# - Environment: release
|
|
36
|
+
# 3. Push a tag: git tag v0.1.0 && git push origin v0.1.0
|
|
37
|
+
|
|
38
|
+
name: CI
|
|
39
|
+
|
|
40
|
+
on:
|
|
41
|
+
push:
|
|
42
|
+
branches: [master]
|
|
43
|
+
tags: ['v*']
|
|
44
|
+
pull_request:
|
|
45
|
+
workflow_dispatch:
|
|
46
|
+
|
|
47
|
+
permissions:
|
|
48
|
+
contents: read
|
|
49
|
+
|
|
50
|
+
jobs:
|
|
51
|
+
# -----------------------------------------------------------------------
|
|
52
|
+
# Build Linux wheels (manylinux, x86_64 + aarch64)
|
|
53
|
+
# -----------------------------------------------------------------------
|
|
54
|
+
linux:
|
|
55
|
+
runs-on: ${{ matrix.target == 'aarch64' && 'ubuntu-22.04' || 'ubuntu-22.04' }}
|
|
56
|
+
strategy:
|
|
57
|
+
matrix:
|
|
58
|
+
target: [x86_64, aarch64]
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@v6
|
|
61
|
+
- uses: actions/setup-python@v6
|
|
62
|
+
with:
|
|
63
|
+
python-version: '3.11'
|
|
64
|
+
|
|
65
|
+
- name: Build wheels
|
|
66
|
+
uses: PyO3/maturin-action@v1
|
|
67
|
+
with:
|
|
68
|
+
target: ${{ matrix.target }}
|
|
69
|
+
# -i python3.11: tell maturin which interpreter to use inside the
|
|
70
|
+
# manylinux container so it produces abi3 wheels (not cp38)
|
|
71
|
+
args: --release --out dist -i python3.11
|
|
72
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
73
|
+
manylinux: auto
|
|
74
|
+
|
|
75
|
+
- name: Upload wheels
|
|
76
|
+
uses: actions/upload-artifact@v6
|
|
77
|
+
with:
|
|
78
|
+
name: wheels-linux-${{ matrix.target }}
|
|
79
|
+
path: dist
|
|
80
|
+
|
|
81
|
+
# -----------------------------------------------------------------------
|
|
82
|
+
# Build macOS wheels (arm64 native, x86_64 cross-compiled)
|
|
83
|
+
# -----------------------------------------------------------------------
|
|
84
|
+
macos:
|
|
85
|
+
runs-on: macos-latest
|
|
86
|
+
strategy:
|
|
87
|
+
matrix:
|
|
88
|
+
target: [x86_64, aarch64]
|
|
89
|
+
steps:
|
|
90
|
+
- uses: actions/checkout@v6
|
|
91
|
+
- uses: actions/setup-python@v6
|
|
92
|
+
with:
|
|
93
|
+
python-version: '3.11'
|
|
94
|
+
|
|
95
|
+
- name: Build wheels
|
|
96
|
+
uses: PyO3/maturin-action@v1
|
|
97
|
+
with:
|
|
98
|
+
target: ${{ matrix.target }}
|
|
99
|
+
args: --release --out dist
|
|
100
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
101
|
+
|
|
102
|
+
- name: Upload wheels
|
|
103
|
+
uses: actions/upload-artifact@v6
|
|
104
|
+
with:
|
|
105
|
+
name: wheels-macos-${{ matrix.target }}
|
|
106
|
+
path: dist
|
|
107
|
+
|
|
108
|
+
# -----------------------------------------------------------------------
|
|
109
|
+
# Build Windows wheels (x86_64)
|
|
110
|
+
# -----------------------------------------------------------------------
|
|
111
|
+
windows:
|
|
112
|
+
runs-on: windows-latest
|
|
113
|
+
steps:
|
|
114
|
+
- uses: actions/checkout@v6
|
|
115
|
+
- uses: actions/setup-python@v6
|
|
116
|
+
with:
|
|
117
|
+
python-version: '3.11'
|
|
118
|
+
|
|
119
|
+
- name: Build wheels
|
|
120
|
+
uses: PyO3/maturin-action@v1
|
|
121
|
+
with:
|
|
122
|
+
target: x64
|
|
123
|
+
args: --release --out dist
|
|
124
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
125
|
+
|
|
126
|
+
- name: Upload wheels
|
|
127
|
+
uses: actions/upload-artifact@v6
|
|
128
|
+
with:
|
|
129
|
+
name: wheels-windows-x64
|
|
130
|
+
path: dist
|
|
131
|
+
|
|
132
|
+
# -----------------------------------------------------------------------
|
|
133
|
+
# Build source distribution
|
|
134
|
+
# -----------------------------------------------------------------------
|
|
135
|
+
sdist:
|
|
136
|
+
runs-on: ubuntu-latest
|
|
137
|
+
steps:
|
|
138
|
+
- uses: actions/checkout@v6
|
|
139
|
+
- name: Build sdist
|
|
140
|
+
uses: PyO3/maturin-action@v1
|
|
141
|
+
with:
|
|
142
|
+
command: sdist
|
|
143
|
+
args: --out dist
|
|
144
|
+
- name: Upload sdist
|
|
145
|
+
uses: actions/upload-artifact@v6
|
|
146
|
+
with:
|
|
147
|
+
name: wheels-sdist
|
|
148
|
+
path: dist
|
|
149
|
+
|
|
150
|
+
# -----------------------------------------------------------------------
|
|
151
|
+
# Test: install the Linux wheel and run pytest
|
|
152
|
+
# -----------------------------------------------------------------------
|
|
153
|
+
test:
|
|
154
|
+
needs: [linux]
|
|
155
|
+
runs-on: ubuntu-latest
|
|
156
|
+
steps:
|
|
157
|
+
- uses: actions/checkout@v6
|
|
158
|
+
- uses: actions/setup-python@v6
|
|
159
|
+
with:
|
|
160
|
+
python-version: '3.11'
|
|
161
|
+
|
|
162
|
+
- name: Download Linux x86_64 wheel
|
|
163
|
+
uses: actions/download-artifact@v7
|
|
164
|
+
with:
|
|
165
|
+
name: wheels-linux-x86_64
|
|
166
|
+
path: dist
|
|
167
|
+
|
|
168
|
+
- name: Install wheel and test dependencies
|
|
169
|
+
run: |
|
|
170
|
+
pip install dist/hyper_fingerprints-*.whl
|
|
171
|
+
pip install pytest pytest-cov
|
|
172
|
+
|
|
173
|
+
- name: Run tests
|
|
174
|
+
run: pytest tests/ -v
|
|
175
|
+
|
|
176
|
+
# -----------------------------------------------------------------------
|
|
177
|
+
# Publish to PyPI (only on tag push)
|
|
178
|
+
# -----------------------------------------------------------------------
|
|
179
|
+
release:
|
|
180
|
+
name: Publish to PyPI
|
|
181
|
+
runs-on: ubuntu-latest
|
|
182
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
183
|
+
needs: [linux, macos, windows, sdist, test]
|
|
184
|
+
environment: release
|
|
185
|
+
permissions:
|
|
186
|
+
id-token: write # required for trusted publishing
|
|
187
|
+
steps:
|
|
188
|
+
- name: Download all wheel artifacts
|
|
189
|
+
uses: actions/download-artifact@v7
|
|
190
|
+
with:
|
|
191
|
+
pattern: wheels-*
|
|
192
|
+
merge-multiple: true
|
|
193
|
+
path: dist
|
|
194
|
+
|
|
195
|
+
- name: List artifacts
|
|
196
|
+
run: ls -lh dist/
|
|
197
|
+
|
|
198
|
+
- name: Publish to PyPI
|
|
199
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
200
|
+
with:
|
|
201
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
|
6
|
+
|
|
7
|
+
## [0.2.1] - 2026-04-01
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- CI: pass `-i python3.11` to maturin in manylinux builds to produce correct
|
|
12
|
+
`abi3` wheel tags (was producing `cp38` wheels due to container default Python)
|
|
13
|
+
- CI: use `macos-latest` for macOS x86_64 builds (`macos-13` runner unavailable)
|
|
14
|
+
|
|
15
|
+
## [0.2.0] - 2026-04-01
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **Rust extension backend** for ~22x end-to-end encoding speedup
|
|
20
|
+
- `encode_batch_rs`: HRR message-passing via `realfft` (r2c/c2r FFT) with
|
|
21
|
+
molecule-level rayon parallelism and row-level FFT parallelism
|
|
22
|
+
- `prepare_batch_rs`: SMILES parsing and atom feature extraction via the
|
|
23
|
+
`purr` crate, replacing RDKit for the Rust path (~23x faster than Python
|
|
24
|
+
stages 1-4)
|
|
25
|
+
- GIL released during all Rust computation (`py.detach()`)
|
|
26
|
+
- Thread-local FFT scratch buffers to avoid allocation and contention
|
|
27
|
+
- **Configurable atom features** via `features` parameter on `Encoder`
|
|
28
|
+
- `features=["element", "degree", "charge", "hydrogens", "aromatic"]` (default)
|
|
29
|
+
- Any subset in any order; codebook size adapts automatically
|
|
30
|
+
- Feature registry in `features.py` with named extractors
|
|
31
|
+
- Works with both Python and Rust backends
|
|
32
|
+
- **Backend selection** via `backend` parameter on `Encoder`
|
|
33
|
+
- `"auto"` (default): use Rust if available, else NumPy
|
|
34
|
+
- `"rust"`: require Rust extension
|
|
35
|
+
- `"numpy"`: force pure-Python path
|
|
36
|
+
- **Cross-backend test suite** (`tests/test_rust_backend.py`)
|
|
37
|
+
- Parameterized regression tests across both backends
|
|
38
|
+
- Edge case tests: single-atom, disconnected graphs, charged atoms,
|
|
39
|
+
all supported elements, depth 0/1, large batches, normalize mode
|
|
40
|
+
- 35 new tests (76 total Python + 9 Rust `#[cfg(test)]`)
|
|
41
|
+
- **Benchmarking experiments** (`experiments/`)
|
|
42
|
+
- `benchmark_fps.py`: configurable sweep comparing Morgan, HDF-Rust, and
|
|
43
|
+
HDF-Python across fingerprint sizes with console table, CSV, and plot output
|
|
44
|
+
- `profile_hdf.py`: per-stage timing breakdown of the HDF pipeline for
|
|
45
|
+
both backends with stacked bar chart
|
|
46
|
+
- `molecules.smi`: 10,000 PubChem molecules for benchmarking
|
|
47
|
+
- **Build and release infrastructure**
|
|
48
|
+
- `build.sh`: build release wheels and sdist
|
|
49
|
+
- `release.sh`: bump version, test, tag, and push (CI publishes to PyPI)
|
|
50
|
+
- `nox -s build_test`: build wheel, install in clean venv, run full test suite
|
|
51
|
+
- GitHub Actions CI (`.github/workflows/ci.yml`): builds wheels for
|
|
52
|
+
Linux (x86_64, aarch64), macOS (x86_64, arm64), Windows (x64),
|
|
53
|
+
runs tests, and publishes to PyPI on tag push via trusted publishing
|
|
54
|
+
- Type stubs for the Rust module (`hyper_fingerprints/_core.pyi`)
|
|
55
|
+
- `DEVELOP.md` with development setup, CI, and release documentation
|
|
56
|
+
- `RUST_EXTENSION.md` with design notes and implementation status
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
|
|
60
|
+
- Build backend switched from hatchling to maturin (Rust toolchain required)
|
|
61
|
+
- `FeatureEncoder.encode()` refactored to use `encode_indices()` internally
|
|
62
|
+
- `features.py` refactored from hardcoded extraction to registry-based system
|
|
63
|
+
- `Encoder.save()` / `Encoder.load()` now persists the `features` list
|
|
64
|
+
(backward compatible: old files without `features` key default to all 5)
|
|
65
|
+
|
|
66
|
+
## [0.1.0] - 2026-03-14
|
|
67
|
+
|
|
68
|
+
Initial release.
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
|
|
72
|
+
- `Encoder` class for encoding molecules into fixed-size HRR hypervectors
|
|
73
|
+
- `encode()` for order-N fingerprints via message passing
|
|
74
|
+
- `encode_joint()` for combined order-0 + order-N representations
|
|
75
|
+
- `Encoder.save()` / `Encoder.load()` for persisting encoders as `.npz` files
|
|
76
|
+
- `cosine_similarity()` helper for pairwise vector comparison
|
|
77
|
+
- Configurable atom vocabulary, dimension, depth, and normalization
|
|
78
|
+
- 5-feature atom scheme: atom type, degree, formal charge, total Hs, aromaticity
|
|
79
|
+
- Deterministic codebook generation via seeded RNG
|
|
80
|
+
- Batch encoding of multiple molecules in a single call
|
|
81
|
+
- Support for both SMILES strings and RDKit `Mol` objects as input
|
|
82
|
+
- Regression test suite for numerical stability
|
|
83
|
+
- Multi-version testing with nox (Python 3.9-3.13)
|
|
84
|
+
- Quickstart notebook (`examples/00_quickstart.ipynb`)
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "autocfg"
|
|
7
|
+
version = "1.5.0"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "crossbeam-deque"
|
|
13
|
+
version = "0.8.6"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
|
|
16
|
+
dependencies = [
|
|
17
|
+
"crossbeam-epoch",
|
|
18
|
+
"crossbeam-utils",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
[[package]]
|
|
22
|
+
name = "crossbeam-epoch"
|
|
23
|
+
version = "0.9.18"
|
|
24
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
25
|
+
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
|
26
|
+
dependencies = [
|
|
27
|
+
"crossbeam-utils",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[[package]]
|
|
31
|
+
name = "crossbeam-utils"
|
|
32
|
+
version = "0.8.21"
|
|
33
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
34
|
+
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|
35
|
+
|
|
36
|
+
[[package]]
|
|
37
|
+
name = "either"
|
|
38
|
+
version = "1.15.0"
|
|
39
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
40
|
+
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
|
41
|
+
|
|
42
|
+
[[package]]
|
|
43
|
+
name = "heck"
|
|
44
|
+
version = "0.5.0"
|
|
45
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
46
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
47
|
+
|
|
48
|
+
[[package]]
|
|
49
|
+
name = "hyper_fingerprints_rs"
|
|
50
|
+
version = "0.1.0"
|
|
51
|
+
dependencies = [
|
|
52
|
+
"ndarray",
|
|
53
|
+
"num-complex",
|
|
54
|
+
"numpy",
|
|
55
|
+
"purr",
|
|
56
|
+
"pyo3",
|
|
57
|
+
"rayon",
|
|
58
|
+
"realfft",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[[package]]
|
|
62
|
+
name = "libc"
|
|
63
|
+
version = "0.2.183"
|
|
64
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
65
|
+
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
|
|
66
|
+
|
|
67
|
+
[[package]]
|
|
68
|
+
name = "matrixmultiply"
|
|
69
|
+
version = "0.3.10"
|
|
70
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
71
|
+
checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
|
|
72
|
+
dependencies = [
|
|
73
|
+
"autocfg",
|
|
74
|
+
"rawpointer",
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
[[package]]
|
|
78
|
+
name = "ndarray"
|
|
79
|
+
version = "0.17.2"
|
|
80
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
81
|
+
checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
|
|
82
|
+
dependencies = [
|
|
83
|
+
"matrixmultiply",
|
|
84
|
+
"num-complex",
|
|
85
|
+
"num-integer",
|
|
86
|
+
"num-traits",
|
|
87
|
+
"portable-atomic",
|
|
88
|
+
"portable-atomic-util",
|
|
89
|
+
"rawpointer",
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
[[package]]
|
|
93
|
+
name = "num-complex"
|
|
94
|
+
version = "0.4.6"
|
|
95
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
96
|
+
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
|
97
|
+
dependencies = [
|
|
98
|
+
"num-traits",
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
[[package]]
|
|
102
|
+
name = "num-integer"
|
|
103
|
+
version = "0.1.46"
|
|
104
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
105
|
+
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
|
106
|
+
dependencies = [
|
|
107
|
+
"num-traits",
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
[[package]]
|
|
111
|
+
name = "num-traits"
|
|
112
|
+
version = "0.2.19"
|
|
113
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
114
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
115
|
+
dependencies = [
|
|
116
|
+
"autocfg",
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
[[package]]
|
|
120
|
+
name = "numpy"
|
|
121
|
+
version = "0.28.0"
|
|
122
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
123
|
+
checksum = "778da78c64ddc928ebf5ad9df5edf0789410ff3bdbf3619aed51cd789a6af1e2"
|
|
124
|
+
dependencies = [
|
|
125
|
+
"libc",
|
|
126
|
+
"ndarray",
|
|
127
|
+
"num-complex",
|
|
128
|
+
"num-integer",
|
|
129
|
+
"num-traits",
|
|
130
|
+
"pyo3",
|
|
131
|
+
"pyo3-build-config",
|
|
132
|
+
"rustc-hash",
|
|
133
|
+
]
|
|
134
|
+
|
|
135
|
+
[[package]]
|
|
136
|
+
name = "once_cell"
|
|
137
|
+
version = "1.21.4"
|
|
138
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
139
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
140
|
+
|
|
141
|
+
[[package]]
|
|
142
|
+
name = "portable-atomic"
|
|
143
|
+
version = "1.13.1"
|
|
144
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
145
|
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
146
|
+
|
|
147
|
+
[[package]]
|
|
148
|
+
name = "portable-atomic-util"
|
|
149
|
+
version = "0.2.6"
|
|
150
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
151
|
+
checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3"
|
|
152
|
+
dependencies = [
|
|
153
|
+
"portable-atomic",
|
|
154
|
+
]
|
|
155
|
+
|
|
156
|
+
[[package]]
|
|
157
|
+
name = "primal-check"
|
|
158
|
+
version = "0.3.4"
|
|
159
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
160
|
+
checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08"
|
|
161
|
+
dependencies = [
|
|
162
|
+
"num-integer",
|
|
163
|
+
]
|
|
164
|
+
|
|
165
|
+
[[package]]
|
|
166
|
+
name = "proc-macro2"
|
|
167
|
+
version = "1.0.106"
|
|
168
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
169
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
170
|
+
dependencies = [
|
|
171
|
+
"unicode-ident",
|
|
172
|
+
]
|
|
173
|
+
|
|
174
|
+
[[package]]
|
|
175
|
+
name = "purr"
|
|
176
|
+
version = "0.9.0"
|
|
177
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
178
|
+
checksum = "f65ecf8f6541cb5191a715bcd065373e1d49dfc64ad39f6a3d2cba4c8c20108a"
|
|
179
|
+
|
|
180
|
+
[[package]]
|
|
181
|
+
name = "pyo3"
|
|
182
|
+
version = "0.28.2"
|
|
183
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
184
|
+
checksum = "cf85e27e86080aafd5a22eae58a162e133a589551542b3e5cee4beb27e54f8e1"
|
|
185
|
+
dependencies = [
|
|
186
|
+
"libc",
|
|
187
|
+
"once_cell",
|
|
188
|
+
"portable-atomic",
|
|
189
|
+
"pyo3-build-config",
|
|
190
|
+
"pyo3-ffi",
|
|
191
|
+
"pyo3-macros",
|
|
192
|
+
]
|
|
193
|
+
|
|
194
|
+
[[package]]
|
|
195
|
+
name = "pyo3-build-config"
|
|
196
|
+
version = "0.28.2"
|
|
197
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
198
|
+
checksum = "8bf94ee265674bf76c09fa430b0e99c26e319c945d96ca0d5a8215f31bf81cf7"
|
|
199
|
+
dependencies = [
|
|
200
|
+
"target-lexicon",
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
[[package]]
|
|
204
|
+
name = "pyo3-ffi"
|
|
205
|
+
version = "0.28.2"
|
|
206
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
207
|
+
checksum = "491aa5fc66d8059dd44a75f4580a2962c1862a1c2945359db36f6c2818b748dc"
|
|
208
|
+
dependencies = [
|
|
209
|
+
"libc",
|
|
210
|
+
"pyo3-build-config",
|
|
211
|
+
]
|
|
212
|
+
|
|
213
|
+
[[package]]
|
|
214
|
+
name = "pyo3-macros"
|
|
215
|
+
version = "0.28.2"
|
|
216
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
217
|
+
checksum = "f5d671734e9d7a43449f8480f8b38115df67bef8d21f76837fa75ee7aaa5e52e"
|
|
218
|
+
dependencies = [
|
|
219
|
+
"proc-macro2",
|
|
220
|
+
"pyo3-macros-backend",
|
|
221
|
+
"quote",
|
|
222
|
+
"syn",
|
|
223
|
+
]
|
|
224
|
+
|
|
225
|
+
[[package]]
|
|
226
|
+
name = "pyo3-macros-backend"
|
|
227
|
+
version = "0.28.2"
|
|
228
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
229
|
+
checksum = "22faaa1ce6c430a1f71658760497291065e6450d7b5dc2bcf254d49f66ee700a"
|
|
230
|
+
dependencies = [
|
|
231
|
+
"heck",
|
|
232
|
+
"proc-macro2",
|
|
233
|
+
"pyo3-build-config",
|
|
234
|
+
"quote",
|
|
235
|
+
"syn",
|
|
236
|
+
]
|
|
237
|
+
|
|
238
|
+
[[package]]
|
|
239
|
+
name = "quote"
|
|
240
|
+
version = "1.0.45"
|
|
241
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
242
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
243
|
+
dependencies = [
|
|
244
|
+
"proc-macro2",
|
|
245
|
+
]
|
|
246
|
+
|
|
247
|
+
[[package]]
|
|
248
|
+
name = "rawpointer"
|
|
249
|
+
version = "0.2.1"
|
|
250
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
251
|
+
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
|
252
|
+
|
|
253
|
+
[[package]]
|
|
254
|
+
name = "rayon"
|
|
255
|
+
version = "1.11.0"
|
|
256
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
257
|
+
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
|
|
258
|
+
dependencies = [
|
|
259
|
+
"either",
|
|
260
|
+
"rayon-core",
|
|
261
|
+
]
|
|
262
|
+
|
|
263
|
+
[[package]]
|
|
264
|
+
name = "rayon-core"
|
|
265
|
+
version = "1.13.0"
|
|
266
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
267
|
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
|
|
268
|
+
dependencies = [
|
|
269
|
+
"crossbeam-deque",
|
|
270
|
+
"crossbeam-utils",
|
|
271
|
+
]
|
|
272
|
+
|
|
273
|
+
[[package]]
|
|
274
|
+
name = "realfft"
|
|
275
|
+
version = "3.5.0"
|
|
276
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
277
|
+
checksum = "f821338fddb99d089116342c46e9f1fbf3828dba077674613e734e01d6ea8677"
|
|
278
|
+
dependencies = [
|
|
279
|
+
"rustfft",
|
|
280
|
+
]
|
|
281
|
+
|
|
282
|
+
[[package]]
|
|
283
|
+
name = "rustc-hash"
|
|
284
|
+
version = "2.1.2"
|
|
285
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
286
|
+
checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
|
|
287
|
+
|
|
288
|
+
[[package]]
|
|
289
|
+
name = "rustfft"
|
|
290
|
+
version = "6.4.1"
|
|
291
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
292
|
+
checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89"
|
|
293
|
+
dependencies = [
|
|
294
|
+
"num-complex",
|
|
295
|
+
"num-integer",
|
|
296
|
+
"num-traits",
|
|
297
|
+
"primal-check",
|
|
298
|
+
"strength_reduce",
|
|
299
|
+
"transpose",
|
|
300
|
+
]
|
|
301
|
+
|
|
302
|
+
[[package]]
|
|
303
|
+
name = "strength_reduce"
|
|
304
|
+
version = "0.2.4"
|
|
305
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
306
|
+
checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
|
|
307
|
+
|
|
308
|
+
[[package]]
|
|
309
|
+
name = "syn"
|
|
310
|
+
version = "2.0.117"
|
|
311
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
312
|
+
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
313
|
+
dependencies = [
|
|
314
|
+
"proc-macro2",
|
|
315
|
+
"quote",
|
|
316
|
+
"unicode-ident",
|
|
317
|
+
]
|
|
318
|
+
|
|
319
|
+
[[package]]
|
|
320
|
+
name = "target-lexicon"
|
|
321
|
+
version = "0.13.5"
|
|
322
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
323
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
324
|
+
|
|
325
|
+
[[package]]
|
|
326
|
+
name = "transpose"
|
|
327
|
+
version = "0.2.3"
|
|
328
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
329
|
+
checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e"
|
|
330
|
+
dependencies = [
|
|
331
|
+
"num-integer",
|
|
332
|
+
"strength_reduce",
|
|
333
|
+
]
|
|
334
|
+
|
|
335
|
+
[[package]]
|
|
336
|
+
name = "unicode-ident"
|
|
337
|
+
version = "1.0.24"
|
|
338
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
339
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "hyper_fingerprints_rs"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
|
|
7
|
+
[lib]
|
|
8
|
+
name = "_core"
|
|
9
|
+
crate-type = ["cdylib"]
|
|
10
|
+
|
|
11
|
+
[dependencies]
|
|
12
|
+
pyo3 = { version = "0.28", features = ["abi3-py39", "extension-module"] }
|
|
13
|
+
numpy = "0.28"
|
|
14
|
+
ndarray = "0.17"
|
|
15
|
+
purr = "0.9"
|
|
16
|
+
realfft = "3.5"
|
|
17
|
+
num-complex = "0.4"
|
|
18
|
+
rayon = "1.10"
|