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.
Files changed (43) hide show
  1. structboost-0.1.2/CHANGELOG.md +66 -0
  2. {structboost-0.1.0 → structboost-0.1.2}/CITATION.cff +3 -0
  3. {structboost-0.1.0 → structboost-0.1.2}/PKG-INFO +4 -10
  4. {structboost-0.1.0 → structboost-0.1.2}/README.md +0 -9
  5. {structboost-0.1.0 → structboost-0.1.2}/pyproject.toml +4 -1
  6. structboost-0.1.0/CHANGELOG.md +0 -32
  7. {structboost-0.1.0 → structboost-0.1.2}/.gitignore +0 -0
  8. {structboost-0.1.0 → structboost-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  9. {structboost-0.1.0 → structboost-0.1.2}/CONTRIBUTING.md +0 -0
  10. {structboost-0.1.0 → structboost-0.1.2}/LICENSE +0 -0
  11. {structboost-0.1.0 → structboost-0.1.2}/conftest.py +0 -0
  12. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/__init__.py +0 -0
  13. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_annotation.py +0 -0
  14. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_boosting.py +0 -0
  15. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_decoder.py +0 -0
  16. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_encoder.py +0 -0
  17. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_explorer.py +0 -0
  18. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_io.py +0 -0
  19. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_model.py +0 -0
  20. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_persistence.py +0 -0
  21. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_plotting.py +0 -0
  22. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_simulation.py +0 -0
  23. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_stability.py +0 -0
  24. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_types.py +0 -0
  25. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/_utils.py +0 -0
  26. {structboost-0.1.0 → structboost-0.1.2}/src/structboost/py.typed +0 -0
  27. {structboost-0.1.0 → structboost-0.1.2}/tests/test_allboost.py +0 -0
  28. {structboost-0.1.0 → structboost-0.1.2}/tests/test_annotation.py +0 -0
  29. {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae.py +0 -0
  30. {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_diagnostics.py +0 -0
  31. {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_init.py +0 -0
  32. {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_layer.py +0 -0
  33. {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_persistence.py +0 -0
  34. {structboost-0.1.0 → structboost-0.1.2}/tests/test_bae_transfer.py +0 -0
  35. {structboost-0.1.0 → structboost-0.1.2}/tests/test_batch_integration.py +0 -0
  36. {structboost-0.1.0 → structboost-0.1.2}/tests/test_explorer.py +0 -0
  37. {structboost-0.1.0 → structboost-0.1.2}/tests/test_linear_ceiling.py +0 -0
  38. {structboost-0.1.0 → structboost-0.1.2}/tests/test_obs_encoding.py +0 -0
  39. {structboost-0.1.0 → structboost-0.1.2}/tests/test_public_api.py +0 -0
  40. {structboost-0.1.0 → structboost-0.1.2}/tests/test_resolve_mandatory.py +0 -0
  41. {structboost-0.1.0 → structboost-0.1.2}/tests/test_rng_isolation.py +0 -0
  42. {structboost-0.1.0 → structboost-0.1.2}/tests/test_simulation.py +0 -0
  43. {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.0
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.0"
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"]
@@ -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