pcglasso 0.1.0__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.
- pcglasso-0.1.0/.github/workflows/ci.yml +48 -0
- pcglasso-0.1.0/.github/workflows/release.yml +169 -0
- pcglasso-0.1.0/.gitignore +20 -0
- pcglasso-0.1.0/CITATION.cff +46 -0
- pcglasso-0.1.0/Cargo.lock +269 -0
- pcglasso-0.1.0/Cargo.toml +26 -0
- pcglasso-0.1.0/PKG-INFO +162 -0
- pcglasso-0.1.0/README.md +142 -0
- pcglasso-0.1.0/pyproject.toml +43 -0
- pcglasso-0.1.0/python/pcglasso/__init__.py +20 -0
- pcglasso-0.1.0/python/pcglasso/_base.py +155 -0
- pcglasso-0.1.0/python/pcglasso/_functional.py +87 -0
- pcglasso-0.1.0/python/pcglasso/estimator.py +160 -0
- pcglasso-0.1.0/src/common.rs +74 -0
- pcglasso-0.1.0/src/d_update.rs +98 -0
- pcglasso-0.1.0/src/lib.rs +92 -0
- pcglasso-0.1.0/src/r_dual.rs +128 -0
- pcglasso-0.1.0/src/r_primal.rs +197 -0
- pcglasso-0.1.0/src/solver.rs +130 -0
- pcglasso-0.1.0/tests/conftest.py +67 -0
- pcglasso-0.1.0/tests/test_api.py +88 -0
- pcglasso-0.1.0/tests/test_determinism.py +15 -0
- pcglasso-0.1.0/tests/test_properties.py +71 -0
- pcglasso-0.1.0/tests/test_solvers.py +53 -0
- pcglasso-0.1.0/tests/test_validation.py +65 -0
- pcglasso-0.1.0/tests/test_warm_start.py +34 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
# Build the extension on every platform and run the test suite, so compile
|
|
4
|
+
# breakage (notably the pyo3/rust-numpy binding surface) and behavioural
|
|
5
|
+
# regressions are caught before a release is ever tagged. Tags do not match
|
|
6
|
+
# the branch filter, so this does not double-run alongside the release
|
|
7
|
+
# workflow.
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
branches: [main, master]
|
|
11
|
+
pull_request:
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: ci-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
build:
|
|
23
|
+
name: build & test (${{ matrix.os }})
|
|
24
|
+
runs-on: ${{ matrix.os }}
|
|
25
|
+
strategy:
|
|
26
|
+
fail-fast: false
|
|
27
|
+
matrix:
|
|
28
|
+
os: [ubuntu-latest, macos-14, windows-latest]
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- uses: actions/setup-python@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: "3.10"
|
|
35
|
+
|
|
36
|
+
- name: Build wheel
|
|
37
|
+
uses: PyO3/maturin-action@v1
|
|
38
|
+
with:
|
|
39
|
+
command: build
|
|
40
|
+
args: --release --out dist
|
|
41
|
+
manylinux: auto
|
|
42
|
+
|
|
43
|
+
- name: Install and run tests
|
|
44
|
+
shell: bash
|
|
45
|
+
run: |
|
|
46
|
+
python -m pip install --upgrade pip
|
|
47
|
+
python -m pip install --find-links dist "pcglasso[test]"
|
|
48
|
+
pytest -q
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
# Tag push (vX.Y.Z) -> build wheels + sdist -> GitHub release -> publish to PyPI.
|
|
4
|
+
# A manual run (workflow_dispatch) only builds, and can optionally publish to
|
|
5
|
+
# TestPyPI for a dry run.
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
tags: ["v*"]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
inputs:
|
|
11
|
+
testpypi:
|
|
12
|
+
description: "Publish the built artifacts to TestPyPI"
|
|
13
|
+
type: boolean
|
|
14
|
+
default: false
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
# Fail fast if the tag does not match the packaged version.
|
|
21
|
+
check-version:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
- name: Verify tag matches pyproject version
|
|
26
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
27
|
+
shell: bash
|
|
28
|
+
run: |
|
|
29
|
+
tag="${GITHUB_REF_NAME#v}"
|
|
30
|
+
ver=$(grep -m1 '^version' pyproject.toml | sed -E 's/.*"(.*)".*/\1/')
|
|
31
|
+
cargo_ver=$(grep -m1 '^version' Cargo.toml | sed -E 's/.*"(.*)".*/\1/')
|
|
32
|
+
echo "tag=$tag pyproject=$ver cargo=$cargo_ver"
|
|
33
|
+
if [ "$tag" != "$ver" ]; then
|
|
34
|
+
echo "::error::Tag v$tag does not match pyproject version $ver"; exit 1
|
|
35
|
+
fi
|
|
36
|
+
if [ "$ver" != "$cargo_ver" ]; then
|
|
37
|
+
echo "::error::pyproject version $ver != Cargo.toml version $cargo_ver"; exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Gate every build/publish job on a green test suite across all platforms.
|
|
41
|
+
test:
|
|
42
|
+
needs: check-version
|
|
43
|
+
name: test (${{ matrix.os }})
|
|
44
|
+
runs-on: ${{ matrix.os }}
|
|
45
|
+
strategy:
|
|
46
|
+
fail-fast: false
|
|
47
|
+
matrix:
|
|
48
|
+
os: [ubuntu-latest, macos-14, windows-latest]
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@v4
|
|
51
|
+
- uses: actions/setup-python@v5
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.10"
|
|
54
|
+
- name: Build wheel
|
|
55
|
+
uses: PyO3/maturin-action@v1
|
|
56
|
+
with:
|
|
57
|
+
command: build
|
|
58
|
+
args: --release --out dist
|
|
59
|
+
manylinux: auto
|
|
60
|
+
- name: Install and run tests
|
|
61
|
+
shell: bash
|
|
62
|
+
run: |
|
|
63
|
+
python -m pip install --upgrade pip
|
|
64
|
+
python -m pip install --find-links dist "pcglasso[test]"
|
|
65
|
+
pytest -q
|
|
66
|
+
|
|
67
|
+
linux:
|
|
68
|
+
needs: test
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
strategy:
|
|
71
|
+
matrix:
|
|
72
|
+
target: [x86_64, aarch64]
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
- uses: actions/setup-python@v5
|
|
76
|
+
with:
|
|
77
|
+
python-version: "3.10"
|
|
78
|
+
- uses: PyO3/maturin-action@v1
|
|
79
|
+
with:
|
|
80
|
+
target: ${{ matrix.target }}
|
|
81
|
+
args: --release --out dist
|
|
82
|
+
manylinux: auto
|
|
83
|
+
- uses: actions/upload-artifact@v4
|
|
84
|
+
with:
|
|
85
|
+
name: wheels-linux-${{ matrix.target }}
|
|
86
|
+
path: dist
|
|
87
|
+
|
|
88
|
+
macos:
|
|
89
|
+
needs: test
|
|
90
|
+
runs-on: macos-14
|
|
91
|
+
steps:
|
|
92
|
+
- uses: actions/checkout@v4
|
|
93
|
+
- uses: actions/setup-python@v5
|
|
94
|
+
with:
|
|
95
|
+
python-version: "3.10"
|
|
96
|
+
- uses: PyO3/maturin-action@v1
|
|
97
|
+
with:
|
|
98
|
+
target: universal2-apple-darwin
|
|
99
|
+
args: --release --out dist
|
|
100
|
+
- uses: actions/upload-artifact@v4
|
|
101
|
+
with:
|
|
102
|
+
name: wheels-macos-universal2
|
|
103
|
+
path: dist
|
|
104
|
+
|
|
105
|
+
windows:
|
|
106
|
+
needs: test
|
|
107
|
+
runs-on: windows-latest
|
|
108
|
+
steps:
|
|
109
|
+
- uses: actions/checkout@v4
|
|
110
|
+
- uses: actions/setup-python@v5
|
|
111
|
+
with:
|
|
112
|
+
python-version: "3.10"
|
|
113
|
+
- uses: PyO3/maturin-action@v1
|
|
114
|
+
with:
|
|
115
|
+
target: x64
|
|
116
|
+
args: --release --out dist
|
|
117
|
+
- uses: actions/upload-artifact@v4
|
|
118
|
+
with:
|
|
119
|
+
name: wheels-windows-x64
|
|
120
|
+
path: dist
|
|
121
|
+
|
|
122
|
+
sdist:
|
|
123
|
+
needs: test
|
|
124
|
+
runs-on: ubuntu-latest
|
|
125
|
+
steps:
|
|
126
|
+
- uses: actions/checkout@v4
|
|
127
|
+
- uses: PyO3/maturin-action@v1
|
|
128
|
+
with:
|
|
129
|
+
command: sdist
|
|
130
|
+
args: --out dist
|
|
131
|
+
- uses: actions/upload-artifact@v4
|
|
132
|
+
with:
|
|
133
|
+
name: wheels-sdist
|
|
134
|
+
path: dist
|
|
135
|
+
|
|
136
|
+
release:
|
|
137
|
+
needs: [linux, macos, windows, sdist]
|
|
138
|
+
runs-on: ubuntu-latest
|
|
139
|
+
permissions:
|
|
140
|
+
contents: write # create the GitHub release
|
|
141
|
+
id-token: write # PyPI trusted publishing (OIDC) — no stored token
|
|
142
|
+
steps:
|
|
143
|
+
- uses: actions/download-artifact@v4
|
|
144
|
+
with:
|
|
145
|
+
path: dist
|
|
146
|
+
merge-multiple: true
|
|
147
|
+
|
|
148
|
+
- name: List artifacts
|
|
149
|
+
run: ls -R dist
|
|
150
|
+
|
|
151
|
+
- name: GitHub release
|
|
152
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
153
|
+
uses: softprops/action-gh-release@v2
|
|
154
|
+
with:
|
|
155
|
+
files: dist/*
|
|
156
|
+
generate_release_notes: true
|
|
157
|
+
|
|
158
|
+
- name: Publish to PyPI
|
|
159
|
+
if: ${{ startsWith(github.ref, 'refs/tags/') && !inputs.testpypi }}
|
|
160
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
161
|
+
with:
|
|
162
|
+
packages-dir: dist
|
|
163
|
+
|
|
164
|
+
- name: Publish to TestPyPI
|
|
165
|
+
if: ${{ inputs.testpypi }}
|
|
166
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
167
|
+
with:
|
|
168
|
+
packages-dir: dist
|
|
169
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Rust
|
|
2
|
+
/target
|
|
3
|
+
Cargo.lock
|
|
4
|
+
|
|
5
|
+
# Python
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*.so
|
|
9
|
+
*.pyd
|
|
10
|
+
build/
|
|
11
|
+
dist/
|
|
12
|
+
*.egg-info/
|
|
13
|
+
.venv/
|
|
14
|
+
.eggs/
|
|
15
|
+
|
|
16
|
+
# PDF extraction cache (exploration only)
|
|
17
|
+
.pdfwork/
|
|
18
|
+
|
|
19
|
+
# Throwaway dev scripts (parity / benchmark)
|
|
20
|
+
scratch/
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: 'If you use this software, please cite it as below.'
|
|
3
|
+
title: 'pcglasso: fast Partial Correlation Graphical LASSO'
|
|
4
|
+
abstract: >-
|
|
5
|
+
A fast Python implementation of the Partial Correlation Graphical LASSO
|
|
6
|
+
(PCGLASSO) with the iterative coordinate-descent core written in Rust
|
|
7
|
+
(PyO3 / maturin).
|
|
8
|
+
type: software
|
|
9
|
+
authors:
|
|
10
|
+
- name: pcglasso-dev
|
|
11
|
+
license: GPL-3.0-or-later
|
|
12
|
+
repository-code: 'https://github.com/shahrozeabbas/pcglasso'
|
|
13
|
+
url: 'https://github.com/shahrozeabbas/pcglasso'
|
|
14
|
+
version: 0.1.0
|
|
15
|
+
keywords:
|
|
16
|
+
- graphical-lasso
|
|
17
|
+
- partial-correlation
|
|
18
|
+
- precision-matrix
|
|
19
|
+
- gaussian-graphical-model
|
|
20
|
+
- sparse-estimation
|
|
21
|
+
references:
|
|
22
|
+
- type: article
|
|
23
|
+
title: Partial correlation graphical LASSO
|
|
24
|
+
authors:
|
|
25
|
+
- family-names: Carter
|
|
26
|
+
- family-names: Rossell
|
|
27
|
+
- family-names: Smith
|
|
28
|
+
journal: Scandinavian Journal of Statistics
|
|
29
|
+
year: 2024
|
|
30
|
+
- type: article
|
|
31
|
+
title: >-
|
|
32
|
+
Existence and optimisation of the partial correlation graphical lasso
|
|
33
|
+
authors:
|
|
34
|
+
- family-names: Carter
|
|
35
|
+
- family-names: Molinari
|
|
36
|
+
year: 2025
|
|
37
|
+
- type: article
|
|
38
|
+
title: >-
|
|
39
|
+
Identifying network hubs with the partial correlation graphical LASSO
|
|
40
|
+
authors:
|
|
41
|
+
- family-names: Bogdan
|
|
42
|
+
- family-names: Chojecki
|
|
43
|
+
- family-names: Hejný
|
|
44
|
+
- family-names: Kołodziejek
|
|
45
|
+
- family-names: Wallin
|
|
46
|
+
year: 2026
|
|
@@ -0,0 +1,269 @@
|
|
|
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 = "heck"
|
|
19
|
+
version = "0.5.0"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "indoc"
|
|
25
|
+
version = "2.0.7"
|
|
26
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
27
|
+
checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
|
|
28
|
+
dependencies = [
|
|
29
|
+
"rustversion",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[[package]]
|
|
33
|
+
name = "libc"
|
|
34
|
+
version = "0.2.186"
|
|
35
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
36
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
37
|
+
|
|
38
|
+
[[package]]
|
|
39
|
+
name = "matrixmultiply"
|
|
40
|
+
version = "0.3.10"
|
|
41
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
+
checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
|
|
43
|
+
dependencies = [
|
|
44
|
+
"autocfg",
|
|
45
|
+
"rawpointer",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[[package]]
|
|
49
|
+
name = "memoffset"
|
|
50
|
+
version = "0.9.1"
|
|
51
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
52
|
+
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
|
53
|
+
dependencies = [
|
|
54
|
+
"autocfg",
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
[[package]]
|
|
58
|
+
name = "ndarray"
|
|
59
|
+
version = "0.16.1"
|
|
60
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
61
|
+
checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841"
|
|
62
|
+
dependencies = [
|
|
63
|
+
"matrixmultiply",
|
|
64
|
+
"num-complex",
|
|
65
|
+
"num-integer",
|
|
66
|
+
"num-traits",
|
|
67
|
+
"portable-atomic",
|
|
68
|
+
"portable-atomic-util",
|
|
69
|
+
"rawpointer",
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
[[package]]
|
|
73
|
+
name = "num-complex"
|
|
74
|
+
version = "0.4.6"
|
|
75
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
76
|
+
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
|
77
|
+
dependencies = [
|
|
78
|
+
"num-traits",
|
|
79
|
+
]
|
|
80
|
+
|
|
81
|
+
[[package]]
|
|
82
|
+
name = "num-integer"
|
|
83
|
+
version = "0.1.46"
|
|
84
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
85
|
+
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
|
86
|
+
dependencies = [
|
|
87
|
+
"num-traits",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[[package]]
|
|
91
|
+
name = "num-traits"
|
|
92
|
+
version = "0.2.19"
|
|
93
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
94
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
95
|
+
dependencies = [
|
|
96
|
+
"autocfg",
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
[[package]]
|
|
100
|
+
name = "numpy"
|
|
101
|
+
version = "0.22.1"
|
|
102
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
103
|
+
checksum = "edb929bc0da91a4d85ed6c0a84deaa53d411abfb387fc271124f91bf6b89f14e"
|
|
104
|
+
dependencies = [
|
|
105
|
+
"libc",
|
|
106
|
+
"ndarray",
|
|
107
|
+
"num-complex",
|
|
108
|
+
"num-integer",
|
|
109
|
+
"num-traits",
|
|
110
|
+
"pyo3",
|
|
111
|
+
"rustc-hash",
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
[[package]]
|
|
115
|
+
name = "once_cell"
|
|
116
|
+
version = "1.21.4"
|
|
117
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
118
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
119
|
+
|
|
120
|
+
[[package]]
|
|
121
|
+
name = "pcglasso"
|
|
122
|
+
version = "0.1.0"
|
|
123
|
+
dependencies = [
|
|
124
|
+
"numpy",
|
|
125
|
+
"pyo3",
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
[[package]]
|
|
129
|
+
name = "portable-atomic"
|
|
130
|
+
version = "1.13.1"
|
|
131
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
132
|
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
133
|
+
|
|
134
|
+
[[package]]
|
|
135
|
+
name = "portable-atomic-util"
|
|
136
|
+
version = "0.2.7"
|
|
137
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
138
|
+
checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
|
|
139
|
+
dependencies = [
|
|
140
|
+
"portable-atomic",
|
|
141
|
+
]
|
|
142
|
+
|
|
143
|
+
[[package]]
|
|
144
|
+
name = "proc-macro2"
|
|
145
|
+
version = "1.0.106"
|
|
146
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
147
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
148
|
+
dependencies = [
|
|
149
|
+
"unicode-ident",
|
|
150
|
+
]
|
|
151
|
+
|
|
152
|
+
[[package]]
|
|
153
|
+
name = "pyo3"
|
|
154
|
+
version = "0.22.6"
|
|
155
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
156
|
+
checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884"
|
|
157
|
+
dependencies = [
|
|
158
|
+
"cfg-if",
|
|
159
|
+
"indoc",
|
|
160
|
+
"libc",
|
|
161
|
+
"memoffset",
|
|
162
|
+
"once_cell",
|
|
163
|
+
"portable-atomic",
|
|
164
|
+
"pyo3-build-config",
|
|
165
|
+
"pyo3-ffi",
|
|
166
|
+
"pyo3-macros",
|
|
167
|
+
"unindent",
|
|
168
|
+
]
|
|
169
|
+
|
|
170
|
+
[[package]]
|
|
171
|
+
name = "pyo3-build-config"
|
|
172
|
+
version = "0.22.6"
|
|
173
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
174
|
+
checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38"
|
|
175
|
+
dependencies = [
|
|
176
|
+
"once_cell",
|
|
177
|
+
"target-lexicon",
|
|
178
|
+
]
|
|
179
|
+
|
|
180
|
+
[[package]]
|
|
181
|
+
name = "pyo3-ffi"
|
|
182
|
+
version = "0.22.6"
|
|
183
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
184
|
+
checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636"
|
|
185
|
+
dependencies = [
|
|
186
|
+
"libc",
|
|
187
|
+
"pyo3-build-config",
|
|
188
|
+
]
|
|
189
|
+
|
|
190
|
+
[[package]]
|
|
191
|
+
name = "pyo3-macros"
|
|
192
|
+
version = "0.22.6"
|
|
193
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
194
|
+
checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453"
|
|
195
|
+
dependencies = [
|
|
196
|
+
"proc-macro2",
|
|
197
|
+
"pyo3-macros-backend",
|
|
198
|
+
"quote",
|
|
199
|
+
"syn",
|
|
200
|
+
]
|
|
201
|
+
|
|
202
|
+
[[package]]
|
|
203
|
+
name = "pyo3-macros-backend"
|
|
204
|
+
version = "0.22.6"
|
|
205
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
206
|
+
checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe"
|
|
207
|
+
dependencies = [
|
|
208
|
+
"heck",
|
|
209
|
+
"proc-macro2",
|
|
210
|
+
"pyo3-build-config",
|
|
211
|
+
"quote",
|
|
212
|
+
"syn",
|
|
213
|
+
]
|
|
214
|
+
|
|
215
|
+
[[package]]
|
|
216
|
+
name = "quote"
|
|
217
|
+
version = "1.0.45"
|
|
218
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
219
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
220
|
+
dependencies = [
|
|
221
|
+
"proc-macro2",
|
|
222
|
+
]
|
|
223
|
+
|
|
224
|
+
[[package]]
|
|
225
|
+
name = "rawpointer"
|
|
226
|
+
version = "0.2.1"
|
|
227
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
228
|
+
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
|
229
|
+
|
|
230
|
+
[[package]]
|
|
231
|
+
name = "rustc-hash"
|
|
232
|
+
version = "1.1.0"
|
|
233
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
234
|
+
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|
235
|
+
|
|
236
|
+
[[package]]
|
|
237
|
+
name = "rustversion"
|
|
238
|
+
version = "1.0.22"
|
|
239
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
240
|
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
241
|
+
|
|
242
|
+
[[package]]
|
|
243
|
+
name = "syn"
|
|
244
|
+
version = "2.0.118"
|
|
245
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
246
|
+
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
|
247
|
+
dependencies = [
|
|
248
|
+
"proc-macro2",
|
|
249
|
+
"quote",
|
|
250
|
+
"unicode-ident",
|
|
251
|
+
]
|
|
252
|
+
|
|
253
|
+
[[package]]
|
|
254
|
+
name = "target-lexicon"
|
|
255
|
+
version = "0.12.16"
|
|
256
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
257
|
+
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
|
258
|
+
|
|
259
|
+
[[package]]
|
|
260
|
+
name = "unicode-ident"
|
|
261
|
+
version = "1.0.24"
|
|
262
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
263
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
264
|
+
|
|
265
|
+
[[package]]
|
|
266
|
+
name = "unindent"
|
|
267
|
+
version = "0.2.4"
|
|
268
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
269
|
+
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "pcglasso"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
description = "Rust core for the Partial Correlation Graphical LASSO (PCGLASSO)"
|
|
6
|
+
license = "GPL-3.0-or-later"
|
|
7
|
+
readme = "README.md"
|
|
8
|
+
|
|
9
|
+
[lib]
|
|
10
|
+
name = "_core"
|
|
11
|
+
crate-type = ["cdylib"]
|
|
12
|
+
|
|
13
|
+
# We depend only on pyo3 and rust-numpy. ndarray is consumed via the
|
|
14
|
+
# `numpy::ndarray` re-export so its version always matches rust-numpy's,
|
|
15
|
+
# and the solver core needs no BLAS/LAPACK backend (pure-Rust wheels).
|
|
16
|
+
#
|
|
17
|
+
# `abi3-py310` builds against CPython's stable ABI: one forward-compatible
|
|
18
|
+
# wheel per platform that works on Python >= 3.10 (no per-version matrix).
|
|
19
|
+
[dependencies]
|
|
20
|
+
pyo3 = { version = "0.22", features = ["extension-module", "abi3-py310"] }
|
|
21
|
+
numpy = "0.22"
|
|
22
|
+
|
|
23
|
+
[profile.release]
|
|
24
|
+
opt-level = 3
|
|
25
|
+
lto = true
|
|
26
|
+
codegen-units = 1
|