structboost 0.1.0__tar.gz → 0.1.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.
- structboost-0.1.2/CHANGELOG.md +66 -0
- {structboost-0.1.0 → structboost-0.1.2}/CITATION.cff +3 -0
- {structboost-0.1.0 → structboost-0.1.2}/PKG-INFO +4 -10
- {structboost-0.1.0 → structboost-0.1.2}/README.md +0 -9
- {structboost-0.1.0 → structboost-0.1.2}/pyproject.toml +4 -1
- structboost-0.1.0/CHANGELOG.md +0 -32
- {structboost-0.1.0 → structboost-0.1.2}/.gitignore +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/CODE_OF_CONDUCT.md +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/CONTRIBUTING.md +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/LICENSE +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/conftest.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/__init__.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_annotation.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_boosting.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_decoder.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_encoder.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_explorer.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_io.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_model.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_persistence.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_plotting.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_simulation.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_stability.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_types.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_utils.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/src/structboost/py.typed +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_allboost.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_annotation.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_diagnostics.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_init.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_layer.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_persistence.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_transfer.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_batch_integration.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_explorer.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_linear_ceiling.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_obs_encoding.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_public_api.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_resolve_mandatory.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_rng_isolation.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_simulation.py +0 -0
- {structboost-0.1.0 → structboost-0.1.2}/tests/test_stability.py +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
## Changelog
|
|
2
|
+
|
|
3
|
+
Releases follow [semantic versioning](https://semver.org). While the project is
|
|
4
|
+
pre-1.0, a minor bump may break API.
|
|
5
|
+
|
|
6
|
+
### [0.1.2] - 2026-08-03
|
|
7
|
+
|
|
8
|
+
Project metadata gains `Documentation` and `Changelog` links. PyPI renders
|
|
9
|
+
`project.urls` as the sidebar next to the project description, and it carried
|
|
10
|
+
only the repository and the issue tracker — so the documentation site, where
|
|
11
|
+
every substantive explanation lives, was reachable from the README body but not
|
|
12
|
+
from the navigation beside it. Both targets are verified live.
|
|
13
|
+
|
|
14
|
+
As with 0.1.1, nothing in the package changed: `project.urls` reaches users only
|
|
15
|
+
through an upload, so correcting it in the repository has no effect until a
|
|
16
|
+
release carries it.
|
|
17
|
+
|
|
18
|
+
### [0.1.1] - 2026-08-03
|
|
19
|
+
|
|
20
|
+
A metadata release. No code in `structboost` changed; every difference is in
|
|
21
|
+
what the package says about itself.
|
|
22
|
+
|
|
23
|
+
The PyPI page is the reason for it. A project's long description is baked into
|
|
24
|
+
the uploaded artifacts and is immutable per release, so 0.1.0 shipped with a
|
|
25
|
+
README announcing "Not on PyPI yet" and directing readers to a pinned TestPyPI
|
|
26
|
+
install. Correcting the file in git does not touch the published page — only a
|
|
27
|
+
new release does. A `0.1.0.post1` would have expressed "packaging only" more
|
|
28
|
+
precisely, but post-releases are handled inconsistently by downstream tooling
|
|
29
|
+
and the versioning policy here is plain `MAJOR.MINOR.PATCH`.
|
|
30
|
+
|
|
31
|
+
Python 3.13 is tested and advertised. `requires-python = ">=3.10"` never had an
|
|
32
|
+
upper bound, so pip already installed on 3.13 while the CI matrix stopped at
|
|
33
|
+
3.12 — support permitted but never exercised. The matrix now covers it, and the
|
|
34
|
+
classifier list says what the requirement already allowed. 3.14 is left out
|
|
35
|
+
until the `[bae]` extra's wheels are dependably available there.
|
|
36
|
+
|
|
37
|
+
`CITATION.cff` gains `version` and `date-released`, which a citation file for a
|
|
38
|
+
released version cannot do without, plus a `url` for the documentation site.
|
|
39
|
+
|
|
40
|
+
### [0.1.0] - 2026-07-31
|
|
41
|
+
|
|
42
|
+
First public release.
|
|
43
|
+
|
|
44
|
+
Batch integration is one argument. `BAE.fit(batch_key=...)` names the covariate,
|
|
45
|
+
following scVI's spelling, and `batch_integration_mode` chooses between
|
|
46
|
+
`"decoder"`, `"encoder"` and `"both"`, defaulting to `"both"`. No `batch_key`
|
|
47
|
+
means no integration, and naming a mode without one raises rather than quietly
|
|
48
|
+
integrating nothing.
|
|
49
|
+
|
|
50
|
+
`"encoder"` names the half of the model the mechanism protects, not a tensor the
|
|
51
|
+
covariate is fed to: it enters the boosting design as a mandatory regressor so
|
|
52
|
+
gene selection is not confounded by it. `transform` remains gene-only and needs
|
|
53
|
+
no covariate labels under any mode.
|
|
54
|
+
|
|
55
|
+
The ridge that stabilizes near-collinear covariates is `BAEConfig.nuisance_ridge`.
|
|
56
|
+
It is a numerical knob rather than a modelling one, so it sits with the other
|
|
57
|
+
algorithm settings.
|
|
58
|
+
|
|
59
|
+
The `test` extra pulls the runtime dependencies. The sdist carries `tests/` and
|
|
60
|
+
`conftest.py` so that downstream packagers can run the suite at build time, and
|
|
61
|
+
with pytest alone that did not work: 360 of the 411 test functions sit behind an
|
|
62
|
+
`importorskip` for torch or anndata, so `pip install .[test] && pytest` ran ~51
|
|
63
|
+
tests, skipped the rest and reported success. Installing `[test]` now brings in
|
|
64
|
+
`[bae]`, so a green build means the suite actually ran. Documenting the
|
|
65
|
+
requirement in `CONTRIBUTING.md` instead was rejected, because the reader who
|
|
66
|
+
needs it is an automated build script rather than a person.
|
|
@@ -2,8 +2,11 @@ cff-version: 1.2.0
|
|
|
2
2
|
message: "If you use structboost in your research, please cite it."
|
|
3
3
|
title: "structboost"
|
|
4
4
|
type: software
|
|
5
|
+
version: "0.1.2"
|
|
6
|
+
date-released: "2026-08-03"
|
|
5
7
|
license: MIT
|
|
6
8
|
authors:
|
|
7
9
|
- family-names: Brunn
|
|
8
10
|
given-names: Niklas
|
|
9
11
|
repository-code: "https://github.com/NiklasBrunn/structboost"
|
|
12
|
+
url: "https://niklasbrunn.github.io/structboost"
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: structboost
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Boosting Autoencoders (BAE) and componentwise L2 boosting utilities for scverse-style workflows.
|
|
5
5
|
Project-URL: Homepage, https://github.com/NiklasBrunn/structboost
|
|
6
|
+
Project-URL: Documentation, https://niklasbrunn.github.io/structboost
|
|
6
7
|
Project-URL: Repository, https://github.com/NiklasBrunn/structboost
|
|
7
8
|
Project-URL: Issues, https://github.com/NiklasBrunn/structboost/issues
|
|
9
|
+
Project-URL: Changelog, https://niklasbrunn.github.io/structboost/changelog.html
|
|
8
10
|
Author: Niklas Brunn
|
|
9
11
|
License: MIT License
|
|
10
12
|
|
|
@@ -37,6 +39,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
37
39
|
Classifier: Programming Language :: Python :: 3.10
|
|
38
40
|
Classifier: Programming Language :: Python :: 3.11
|
|
39
41
|
Classifier: Programming Language :: Python :: 3.12
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
40
43
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
41
44
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
42
45
|
Requires-Python: >=3.10
|
|
@@ -127,15 +130,6 @@ pip install structboost # allboost only, NumPy-only
|
|
|
127
130
|
| `plot` | matplotlib | the `plot_*` functions |
|
|
128
131
|
| `io` | pyarrow | Parquet encoder-weight files |
|
|
129
132
|
|
|
130
|
-
Not on PyPI yet. Until it is, install from source or from TestPyPI. Pin the
|
|
131
|
-
version: TestPyPI also carries older pre-release builds under this name, and an
|
|
132
|
-
unpinned install resolves to one of those rather than to the current code.
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
pip install --index-url https://test.pypi.org/simple/ \
|
|
136
|
-
--extra-index-url https://pypi.org/simple/ "structboost[bae]==0.1.0"
|
|
137
|
-
```
|
|
138
|
-
|
|
139
133
|
See [Installation](https://niklasbrunn.github.io/structboost/installation.html)
|
|
140
134
|
for the from-source and development setups.
|
|
141
135
|
|
|
@@ -55,15 +55,6 @@ pip install structboost # allboost only, NumPy-only
|
|
|
55
55
|
| `plot` | matplotlib | the `plot_*` functions |
|
|
56
56
|
| `io` | pyarrow | Parquet encoder-weight files |
|
|
57
57
|
|
|
58
|
-
Not on PyPI yet. Until it is, install from source or from TestPyPI. Pin the
|
|
59
|
-
version: TestPyPI also carries older pre-release builds under this name, and an
|
|
60
|
-
unpinned install resolves to one of those rather than to the current code.
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
pip install --index-url https://test.pypi.org/simple/ \
|
|
64
|
-
--extra-index-url https://pypi.org/simple/ "structboost[bae]==0.1.0"
|
|
65
|
-
```
|
|
66
|
-
|
|
67
58
|
See [Installation](https://niklasbrunn.github.io/structboost/installation.html)
|
|
68
59
|
for the from-source and development setups.
|
|
69
60
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "structboost"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.2"
|
|
8
8
|
description = "Boosting Autoencoders (BAE) and componentwise L2 boosting utilities for scverse-style workflows."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -20,6 +20,7 @@ classifiers = [
|
|
|
20
20
|
"Programming Language :: Python :: 3.10",
|
|
21
21
|
"Programming Language :: Python :: 3.11",
|
|
22
22
|
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
23
24
|
"Topic :: Scientific/Engineering :: Bio-Informatics",
|
|
24
25
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
25
26
|
]
|
|
@@ -72,8 +73,10 @@ docs = [
|
|
|
72
73
|
|
|
73
74
|
[project.urls]
|
|
74
75
|
Homepage = "https://github.com/NiklasBrunn/structboost"
|
|
76
|
+
Documentation = "https://niklasbrunn.github.io/structboost"
|
|
75
77
|
Repository = "https://github.com/NiklasBrunn/structboost"
|
|
76
78
|
Issues = "https://github.com/NiklasBrunn/structboost/issues"
|
|
79
|
+
Changelog = "https://niklasbrunn.github.io/structboost/changelog.html"
|
|
77
80
|
|
|
78
81
|
[tool.hatch.build.targets.wheel]
|
|
79
82
|
packages = ["src/structboost"]
|
structboost-0.1.0/CHANGELOG.md
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
## Changelog
|
|
2
|
-
|
|
3
|
-
Releases follow [semantic versioning](https://semver.org). While the project is
|
|
4
|
-
pre-1.0, a minor bump may break API.
|
|
5
|
-
|
|
6
|
-
### [0.1.0] - 2026-07-31
|
|
7
|
-
|
|
8
|
-
First public release.
|
|
9
|
-
|
|
10
|
-
Batch integration is one argument. `BAE.fit(batch_key=...)` names the covariate,
|
|
11
|
-
following scVI's spelling, and `batch_integration_mode` chooses between
|
|
12
|
-
`"decoder"`, `"encoder"` and `"both"`, defaulting to `"both"`. No `batch_key`
|
|
13
|
-
means no integration, and naming a mode without one raises rather than quietly
|
|
14
|
-
integrating nothing.
|
|
15
|
-
|
|
16
|
-
`"encoder"` names the half of the model the mechanism protects, not a tensor the
|
|
17
|
-
covariate is fed to: it enters the boosting design as a mandatory regressor so
|
|
18
|
-
gene selection is not confounded by it. `transform` remains gene-only and needs
|
|
19
|
-
no covariate labels under any mode.
|
|
20
|
-
|
|
21
|
-
The ridge that stabilizes near-collinear covariates is `BAEConfig.nuisance_ridge`.
|
|
22
|
-
It is a numerical knob rather than a modelling one, so it sits with the other
|
|
23
|
-
algorithm settings.
|
|
24
|
-
|
|
25
|
-
The `test` extra pulls the runtime dependencies. The sdist carries `tests/` and
|
|
26
|
-
`conftest.py` so that downstream packagers can run the suite at build time, and
|
|
27
|
-
with pytest alone that did not work: 360 of the 411 test functions sit behind an
|
|
28
|
-
`importorskip` for torch or anndata, so `pip install .[test] && pytest` ran ~51
|
|
29
|
-
tests, skipped the rest and reported success. Installing `[test]` now brings in
|
|
30
|
-
`[bae]`, so a green build means the suite actually ran. Documenting the
|
|
31
|
-
requirement in `CONTRIBUTING.md` instead was rejected, because the reader who
|
|
32
|
-
needs it is an automated build script rather than a person.
|
|
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
|