pysauce 0.3.2__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 (41) hide show
  1. pysauce-0.3.2/.github/workflows/CI.yml +59 -0
  2. pysauce-0.3.2/.github/workflows/publish.yml +135 -0
  3. pysauce-0.3.2/.gitignore +52 -0
  4. pysauce-0.3.2/CHANGELOG.md +41 -0
  5. pysauce-0.3.2/CITATION.cff +39 -0
  6. pysauce-0.3.2/Cargo.lock +321 -0
  7. pysauce-0.3.2/Cargo.toml +25 -0
  8. pysauce-0.3.2/LICENSE +21 -0
  9. pysauce-0.3.2/PKG-INFO +181 -0
  10. pysauce-0.3.2/README.md +144 -0
  11. pysauce-0.3.2/benchmarks/test_speed.py +70 -0
  12. pysauce-0.3.2/conda/meta.yaml +43 -0
  13. pysauce-0.3.2/examples/01_xi_r.ipynb +330 -0
  14. pysauce-0.3.2/examples/02_redshift_space.ipynb +303 -0
  15. pysauce-0.3.2/examples/03_npoint.ipynb +393 -0
  16. pysauce-0.3.2/pyproject.toml +59 -0
  17. pysauce-0.3.2/python/pysauce/__init__.py +58 -0
  18. pysauce-0.3.2/python/pysauce/_pysauce.pyi +35 -0
  19. pysauce-0.3.2/python/pysauce/analytic.py +87 -0
  20. pysauce-0.3.2/python/pysauce/estimators.py +453 -0
  21. pysauce-0.3.2/python/pysauce/py.typed +0 -0
  22. pysauce-0.3.2/rustfmt.toml +2 -0
  23. pysauce-0.3.2/sauce/binning.rs +274 -0
  24. pysauce-0.3.2/sauce/grid.rs +494 -0
  25. pysauce-0.3.2/sauce/lib.rs +32 -0
  26. pysauce-0.3.2/sauce/npoint.rs +498 -0
  27. pysauce-0.3.2/sauce/pairs.rs +696 -0
  28. pysauce-0.3.2/sauce/python.rs +383 -0
  29. pysauce-0.3.2/sauce/traverse.rs +1073 -0
  30. pysauce-0.3.2/sauce/validate.rs +172 -0
  31. pysauce-0.3.2/tests/reference.py +164 -0
  32. pysauce-0.3.2/tests/test_analytic.py +94 -0
  33. pysauce-0.3.2/tests/test_corrfunc.py +134 -0
  34. pysauce-0.3.2/tests/test_edge_cases.py +287 -0
  35. pysauce-0.3.2/tests/test_estimators.py +378 -0
  36. pysauce-0.3.2/tests/test_geometry_sweep.py +167 -0
  37. pysauce-0.3.2/tests/test_npoint.py +187 -0
  38. pysauce-0.3.2/tests/test_pairs.py +206 -0
  39. pysauce-0.3.2/tests/test_partition_matrix.py +63 -0
  40. pysauce-0.3.2/tests/test_sparse_estimates.py +178 -0
  41. pysauce-0.3.2/tests/test_validation.py +164 -0
@@ -0,0 +1,59 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ lint:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: '3.12'
21
+ - run: pip install ruff black
22
+ - run: ruff check python tests benchmarks
23
+ - run: black --check python tests benchmarks
24
+ - run: cargo fmt --check
25
+ - run: cargo clippy --all-targets -- -D warnings
26
+
27
+ rust-tests:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+ - uses: actions/setup-python@v5
32
+ id: python
33
+ with:
34
+ python-version: '3.12'
35
+ - name: Run cargo test
36
+ env:
37
+ PYO3_PYTHON: ${{ steps.python.outputs.python-path }}
38
+ LD_LIBRARY_PATH: ${{ env.pythonLocation }}/lib
39
+ run: cargo test
40
+
41
+ python-tests:
42
+ runs-on: ubuntu-latest
43
+ strategy:
44
+ matrix:
45
+ python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
46
+ steps:
47
+ - uses: actions/checkout@v4
48
+ - uses: actions/setup-python@v5
49
+ with:
50
+ python-version: ${{ matrix.python-version }}
51
+ - name: Build wheel
52
+ uses: PyO3/maturin-action@v1
53
+ with:
54
+ command: build
55
+ args: --release --out dist
56
+ container: off
57
+ - run: sudo apt-get install -y libgsl-dev # needed to build Corrfunc
58
+ - run: pip install dist/pysauce-*.whl pytest pytest-cov Corrfunc
59
+ - run: pytest --cov=pysauce --cov-report=term-missing
@@ -0,0 +1,135 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ linux:
11
+ runs-on: ubuntu-22.04
12
+ strategy:
13
+ matrix:
14
+ target: [x86_64, x86, aarch64, armv7, s390x, ppc64le]
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: '3.9'
20
+ - uses: PyO3/maturin-action@v1
21
+ with:
22
+ target: ${{ matrix.target }}
23
+ args: --release --out dist
24
+ manylinux: auto
25
+ - uses: actions/upload-artifact@v4
26
+ with:
27
+ name: wheels-linux-${{ matrix.target }}
28
+ path: dist
29
+
30
+ musllinux:
31
+ runs-on: ubuntu-22.04
32
+ strategy:
33
+ matrix:
34
+ target: [x86_64, x86, aarch64, armv7]
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+ - uses: actions/setup-python@v5
38
+ with:
39
+ python-version: '3.9'
40
+ - uses: PyO3/maturin-action@v1
41
+ with:
42
+ target: ${{ matrix.target }}
43
+ args: --release --out dist
44
+ manylinux: musllinux_1_2
45
+ - uses: actions/upload-artifact@v4
46
+ with:
47
+ name: wheels-musllinux-${{ matrix.target }}
48
+ path: dist
49
+
50
+ windows:
51
+ runs-on: ${{ matrix.platform.runner }}
52
+ strategy:
53
+ matrix:
54
+ platform:
55
+ - runner: windows-latest
56
+ target: x64
57
+ python_arch: x64
58
+ - runner: windows-latest
59
+ target: x86
60
+ python_arch: x86
61
+ - runner: windows-11-arm
62
+ target: aarch64
63
+ python_arch: arm64
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+ - uses: actions/setup-python@v5
67
+ with:
68
+ python-version: '3.11'
69
+ architecture: ${{ matrix.platform.python_arch }}
70
+ - uses: PyO3/maturin-action@v1
71
+ with:
72
+ target: ${{ matrix.platform.target }}
73
+ args: --release --out dist
74
+ - uses: actions/upload-artifact@v4
75
+ with:
76
+ name: wheels-windows-${{ matrix.platform.target }}
77
+ path: dist
78
+
79
+ macos:
80
+ runs-on: macos-latest
81
+ strategy:
82
+ matrix:
83
+ target: [x86_64, aarch64]
84
+ steps:
85
+ - uses: actions/checkout@v4
86
+ - uses: actions/setup-python@v5
87
+ with:
88
+ python-version: '3.9'
89
+ - uses: PyO3/maturin-action@v1
90
+ with:
91
+ target: ${{ matrix.target }}
92
+ args: --release --out dist
93
+ - uses: actions/upload-artifact@v4
94
+ with:
95
+ name: wheels-macos-${{ matrix.target }}
96
+ path: dist
97
+
98
+ sdist:
99
+ runs-on: ubuntu-latest
100
+ steps:
101
+ - uses: actions/checkout@v4
102
+ - uses: PyO3/maturin-action@v1
103
+ with:
104
+ command: sdist
105
+ args: --out dist
106
+ - uses: actions/upload-artifact@v4
107
+ with:
108
+ name: wheels-sdist
109
+ path: dist
110
+
111
+ publish:
112
+ name: Publish to PyPI
113
+ runs-on: ubuntu-latest
114
+ needs: [linux, musllinux, windows, macos, sdist]
115
+ environment: pypi
116
+ permissions:
117
+ id-token: write
118
+ contents: write
119
+ attestations: write
120
+ steps:
121
+ - uses: actions/download-artifact@v4
122
+ with:
123
+ merge-multiple: true
124
+ path: dist
125
+ - name: Generate artifact attestation
126
+ uses: actions/attest-build-provenance@v2
127
+ with:
128
+ subject-path: dist/*
129
+ - name: Create GitHub Release
130
+ uses: softprops/action-gh-release@v2
131
+ with:
132
+ files: dist/*
133
+ generate_release_notes: true
134
+ - name: Publish to PyPI
135
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,52 @@
1
+ # Rust
2
+ /target
3
+ # machine-specific build flags
4
+ .cargo/config.toml
5
+
6
+ # Python
7
+ __pycache__/
8
+ *.py[cod]
9
+ *.so
10
+ *.egg-info/
11
+ .venv/
12
+ venv/
13
+ .env
14
+ .env.*
15
+ build/
16
+ dist/
17
+ uv.lock
18
+
19
+ # Tests and linters
20
+ .pytest_cache/
21
+ .ruff_cache/
22
+ .mypy_cache/
23
+ .hypothesis/
24
+ .coverage
25
+ .coverage.*
26
+ htmlcov/
27
+ .benchmarks/
28
+
29
+ # Jupyter
30
+ .ipynb_checkpoints/
31
+
32
+ # Editors and OS
33
+ .idea/
34
+ .vscode/
35
+ *.swp
36
+ *.swo
37
+ *~
38
+ .DS_Store
39
+
40
+ # Batch-job output
41
+ slurm-*.out
42
+ slurm-*.err
43
+ *.log
44
+
45
+ # Data files
46
+ *.npy
47
+ *.npz
48
+ *.h5
49
+ *.hdf5
50
+ *.fits
51
+ *.pkl
52
+ *.parquet
@@ -0,0 +1,41 @@
1
+ # Changelog
2
+
3
+ ## 0.3.2 (2026-11-11)
4
+
5
+ - `count_npoint` can count one of `n_shards` shares of the work for N >= 3,
6
+ to split a calculation across jobs. The shares sum to the full count.
7
+ - New `count_pairs_1d_partition_matrix`: pair counts for every pair of
8
+ partitions.
9
+ - New `count_npoint3_smu` and `compute_npcf3_smu`: triplets binned by longest
10
+ side and its orientation to the line of sight.
11
+ - The estimators require `N <= m <= k`.
12
+ - Faster pair and N-point counting. Counts are unchanged.
13
+ - The core was rewritten and is tested against brute force and Corrfunc.
14
+
15
+ ## 0.3.1 (2026-07-04)
16
+
17
+ - Fixed the bin lookup for N >= 3: tuples with a diameter close to a bin edge
18
+ could be counted in the neighbouring bin. Pair counts were not affected.
19
+ - Invalid input raises `ValueError`.
20
+ - The GIL is released while counting.
21
+ - Package renamed to `pysauce`.
22
+
23
+ ## 0.3.0 (2026-06-11)
24
+
25
+ - New `count_npoint3_shape` and `compute_npcf3_shape`: triplets binned by size
26
+ and shape.
27
+
28
+ ## 0.2.0 (2026-05-30)
29
+
30
+ - `compute_npcf` takes `scale_method` ("scale-up" or "scale-down") and returns
31
+ `zeta`, the corrected counts divided by the number of N-tuples.
32
+
33
+ ## 0.1.1 (2026-05-28)
34
+
35
+ - `compute_xi_smu` returns the analytic random counts, the multipoles and the
36
+ bin centres.
37
+
38
+ ## 0.1.0 (2026-05-27)
39
+
40
+ - First release: pair counters in r, (r_p, pi) and (s, mu), the N-tuple
41
+ counter, and the sparse-partition estimators.
@@ -0,0 +1,39 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it using the metadata below."
3
+ type: software
4
+ title: "SaUCE: Sparse and Unbiased Clustering Estimator"
5
+ version: 0.3.2
6
+ license: MIT
7
+ url: "https://github.com/OscarHickman/SaUCE"
8
+ repository-code: "https://github.com/OscarHickman/SaUCE"
9
+ authors:
10
+ - family-names: Hickman
11
+ given-names: Oscar
12
+ affiliation: "Institute for Computational Cosmology, Durham University"
13
+ email: oscar.hickman17@alumni.imperial.ac.uk
14
+ keywords:
15
+ - cosmology
16
+ - galaxy clustering
17
+ - correlation functions
18
+ - N-body simulations
19
+ - astronomy
20
+ abstract: >
21
+ Correlation function counters for galaxy catalogues drawn from sparse
22
+ subsets of periodic N-body simulations. Computes xi(r), xi(s, mu)
23
+ multipoles, and high-order N-point functions with unbiased corrections for
24
+ statistical under-sampling in m-of-k sparse samples.
25
+ references:
26
+ - type: article
27
+ title: "Less is More: Unbiased Galaxy Clustering from Fewer Merger Trees"
28
+ authors:
29
+ - family-names: Hickman
30
+ given-names: Oscar J.
31
+ year: 2026
32
+ status: preprint
33
+ - type: article
34
+ title: "SaUCE for the N-point Correlation Function: Unbiased Higher-Order Galaxy Clustering from Fewer Merger Trees"
35
+ authors:
36
+ - family-names: Hickman
37
+ given-names: Oscar J.
38
+ year: 2026
39
+ status: in-preparation
@@ -0,0 +1,321 @@
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.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
10
+
11
+ [[package]]
12
+ name = "cfg-if"
13
+ version = "1.0.4"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
16
+
17
+ [[package]]
18
+ name = "crossbeam-deque"
19
+ version = "0.8.6"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
22
+ dependencies = [
23
+ "crossbeam-epoch",
24
+ "crossbeam-utils",
25
+ ]
26
+
27
+ [[package]]
28
+ name = "crossbeam-epoch"
29
+ version = "0.9.18"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
32
+ dependencies = [
33
+ "crossbeam-utils",
34
+ ]
35
+
36
+ [[package]]
37
+ name = "crossbeam-utils"
38
+ version = "0.8.21"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
41
+
42
+ [[package]]
43
+ name = "either"
44
+ version = "1.16.0"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
47
+
48
+ [[package]]
49
+ name = "heck"
50
+ version = "0.5.0"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
53
+
54
+ [[package]]
55
+ name = "indoc"
56
+ version = "2.0.7"
57
+ source = "registry+https://github.com/rust-lang/crates.io-index"
58
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
59
+ dependencies = [
60
+ "rustversion",
61
+ ]
62
+
63
+ [[package]]
64
+ name = "libc"
65
+ version = "0.2.186"
66
+ source = "registry+https://github.com/rust-lang/crates.io-index"
67
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
68
+
69
+ [[package]]
70
+ name = "matrixmultiply"
71
+ version = "0.3.10"
72
+ source = "registry+https://github.com/rust-lang/crates.io-index"
73
+ checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
74
+ dependencies = [
75
+ "autocfg",
76
+ "rawpointer",
77
+ ]
78
+
79
+ [[package]]
80
+ name = "memoffset"
81
+ version = "0.9.1"
82
+ source = "registry+https://github.com/rust-lang/crates.io-index"
83
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
84
+ dependencies = [
85
+ "autocfg",
86
+ ]
87
+
88
+ [[package]]
89
+ name = "ndarray"
90
+ version = "0.16.1"
91
+ source = "registry+https://github.com/rust-lang/crates.io-index"
92
+ checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841"
93
+ dependencies = [
94
+ "matrixmultiply",
95
+ "num-complex",
96
+ "num-integer",
97
+ "num-traits",
98
+ "portable-atomic",
99
+ "portable-atomic-util",
100
+ "rawpointer",
101
+ ]
102
+
103
+ [[package]]
104
+ name = "num-complex"
105
+ version = "0.4.6"
106
+ source = "registry+https://github.com/rust-lang/crates.io-index"
107
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
108
+ dependencies = [
109
+ "num-traits",
110
+ ]
111
+
112
+ [[package]]
113
+ name = "num-integer"
114
+ version = "0.1.46"
115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
116
+ checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
117
+ dependencies = [
118
+ "num-traits",
119
+ ]
120
+
121
+ [[package]]
122
+ name = "num-traits"
123
+ version = "0.2.19"
124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
125
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
126
+ dependencies = [
127
+ "autocfg",
128
+ ]
129
+
130
+ [[package]]
131
+ name = "numpy"
132
+ version = "0.23.0"
133
+ source = "registry+https://github.com/rust-lang/crates.io-index"
134
+ checksum = "b94caae805f998a07d33af06e6a3891e38556051b8045c615470a71590e13e78"
135
+ dependencies = [
136
+ "libc",
137
+ "ndarray",
138
+ "num-complex",
139
+ "num-integer",
140
+ "num-traits",
141
+ "pyo3",
142
+ "rustc-hash",
143
+ ]
144
+
145
+ [[package]]
146
+ name = "once_cell"
147
+ version = "1.21.4"
148
+ source = "registry+https://github.com/rust-lang/crates.io-index"
149
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
150
+
151
+ [[package]]
152
+ name = "portable-atomic"
153
+ version = "1.13.1"
154
+ source = "registry+https://github.com/rust-lang/crates.io-index"
155
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
156
+
157
+ [[package]]
158
+ name = "portable-atomic-util"
159
+ version = "0.2.7"
160
+ source = "registry+https://github.com/rust-lang/crates.io-index"
161
+ checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
162
+ dependencies = [
163
+ "portable-atomic",
164
+ ]
165
+
166
+ [[package]]
167
+ name = "proc-macro2"
168
+ version = "1.0.106"
169
+ source = "registry+https://github.com/rust-lang/crates.io-index"
170
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
171
+ dependencies = [
172
+ "unicode-ident",
173
+ ]
174
+
175
+ [[package]]
176
+ name = "pyo3"
177
+ version = "0.23.5"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872"
180
+ dependencies = [
181
+ "cfg-if",
182
+ "indoc",
183
+ "libc",
184
+ "memoffset",
185
+ "once_cell",
186
+ "portable-atomic",
187
+ "pyo3-build-config",
188
+ "pyo3-ffi",
189
+ "pyo3-macros",
190
+ "unindent",
191
+ ]
192
+
193
+ [[package]]
194
+ name = "pyo3-build-config"
195
+ version = "0.23.5"
196
+ source = "registry+https://github.com/rust-lang/crates.io-index"
197
+ checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb"
198
+ dependencies = [
199
+ "once_cell",
200
+ "target-lexicon",
201
+ ]
202
+
203
+ [[package]]
204
+ name = "pyo3-ffi"
205
+ version = "0.23.5"
206
+ source = "registry+https://github.com/rust-lang/crates.io-index"
207
+ checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d"
208
+ dependencies = [
209
+ "libc",
210
+ "pyo3-build-config",
211
+ ]
212
+
213
+ [[package]]
214
+ name = "pyo3-macros"
215
+ version = "0.23.5"
216
+ source = "registry+https://github.com/rust-lang/crates.io-index"
217
+ checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da"
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.23.5"
228
+ source = "registry+https://github.com/rust-lang/crates.io-index"
229
+ checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028"
230
+ dependencies = [
231
+ "heck",
232
+ "proc-macro2",
233
+ "pyo3-build-config",
234
+ "quote",
235
+ "syn",
236
+ ]
237
+
238
+ [[package]]
239
+ name = "pysauce"
240
+ version = "0.3.2"
241
+ dependencies = [
242
+ "numpy",
243
+ "pyo3",
244
+ "rayon",
245
+ ]
246
+
247
+ [[package]]
248
+ name = "quote"
249
+ version = "1.0.46"
250
+ source = "registry+https://github.com/rust-lang/crates.io-index"
251
+ checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
252
+ dependencies = [
253
+ "proc-macro2",
254
+ ]
255
+
256
+ [[package]]
257
+ name = "rawpointer"
258
+ version = "0.2.1"
259
+ source = "registry+https://github.com/rust-lang/crates.io-index"
260
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
261
+
262
+ [[package]]
263
+ name = "rayon"
264
+ version = "1.12.0"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
267
+ dependencies = [
268
+ "either",
269
+ "rayon-core",
270
+ ]
271
+
272
+ [[package]]
273
+ name = "rayon-core"
274
+ version = "1.13.0"
275
+ source = "registry+https://github.com/rust-lang/crates.io-index"
276
+ checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
277
+ dependencies = [
278
+ "crossbeam-deque",
279
+ "crossbeam-utils",
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 = "rustversion"
290
+ version = "1.0.22"
291
+ source = "registry+https://github.com/rust-lang/crates.io-index"
292
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
293
+
294
+ [[package]]
295
+ name = "syn"
296
+ version = "2.0.118"
297
+ source = "registry+https://github.com/rust-lang/crates.io-index"
298
+ checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
299
+ dependencies = [
300
+ "proc-macro2",
301
+ "quote",
302
+ "unicode-ident",
303
+ ]
304
+
305
+ [[package]]
306
+ name = "target-lexicon"
307
+ version = "0.12.16"
308
+ source = "registry+https://github.com/rust-lang/crates.io-index"
309
+ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
310
+
311
+ [[package]]
312
+ name = "unicode-ident"
313
+ version = "1.0.24"
314
+ source = "registry+https://github.com/rust-lang/crates.io-index"
315
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
316
+
317
+ [[package]]
318
+ name = "unindent"
319
+ version = "0.2.4"
320
+ source = "registry+https://github.com/rust-lang/crates.io-index"
321
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
@@ -0,0 +1,25 @@
1
+ [package]
2
+ name = "pysauce"
3
+ version = "0.3.2"
4
+ edition = "2021"
5
+ description = "Pair and N-point counters for sparse partitions of periodic simulation boxes"
6
+ license = "MIT"
7
+ repository = "https://github.com/OscarHickman/SaUCE"
8
+ readme = "README.md"
9
+
10
+ [lib]
11
+ name = "_pysauce"
12
+ crate-type = ["cdylib"]
13
+ path = "sauce/lib.rs"
14
+
15
+ [dependencies]
16
+ # The "extension-module" feature is enabled by maturin (see pyproject.toml) so
17
+ # that `cargo test` can link against libpython.
18
+ pyo3 = { version = "0.23", features = ["abi3-py39"] }
19
+ numpy = "0.23"
20
+ rayon = "1"
21
+
22
+ [profile.release]
23
+ lto = true
24
+ codegen-units = 1
25
+ panic = "abort"
pysauce-0.3.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Oscar Hickman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.