gpjax 0.12.2__tar.gz → 0.13.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.
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/auto-label.yml +34 -34
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/build_docs.yml +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/commit-lint.yml +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/integration.yml +2 -2
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/pr_greeting.yml +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/release.yml +10 -10
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/ruff.yml +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/security-analysis.yml +2 -2
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/test_docs.yml +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/workflows/tests.yml +3 -3
- {gpjax-0.12.2 → gpjax-0.13.0}/PKG-INFO +18 -10
- {gpjax-0.12.2 → gpjax-0.13.0}/README.md +15 -6
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/installation.md +14 -2
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/stylesheets/extra.css +17 -4
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/__init__.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/approximations/rff.py +2 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/base.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/base.py +1 -30
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/matern12.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/matern32.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/matern52.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/mean_functions.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/mkdocs.yml +15 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/pyproject.toml +4 -5
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_base.py +3 -2
- {gpjax-0.12.2 → gpjax-0.13.0}/uv.lock +312 -723
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/ISSUE_TEMPLATE/02_FEATURE_REQUEST.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/ISSUE_TEMPLATE/03_CODEBASE_IMPROVEMENT.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/ISSUE_TEMPLATE/04_DOCS_IMPROVEMENT.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/codecov.yml +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/commitlint.config.js +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/dependabot.yml +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/labeler.yml +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/labels.yml +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/pull_request_template.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.github/release-drafter.yml +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/.gitignore +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/CITATION.bib +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/LICENSE.txt +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/Makefile +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/CODE_OF_CONDUCT.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/GOVERNANCE.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/contributing.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/design.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/index.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/index.rst +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/javascripts/katex.js +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/refs.bib +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/scripts/gen_examples.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/scripts/gen_pages.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/scripts/notebook_converter.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/scripts/sharp_bits_figure.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/sharp_bits.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/GP.pdf +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/GP.svg +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/bijector_figure.svg +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/css/gpjax_theme.css +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/favicon.ico +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/gpjax.mplstyle +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/gpjax_logo.pdf +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/gpjax_logo.svg +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/jaxkern/lato.ttf +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/jaxkern/logo.png +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/jaxkern/logo.svg +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/jaxkern/main.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/step_size_figure.png +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/static/step_size_figure.svg +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/docs/stylesheets/permalinks.css +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/backend.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/barycentres/barycentre_gp.gif +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/barycentres.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/classification.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/collapsed_vi.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/constructing_new_kernels.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/data/max_tempeature_switzerland.csv +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/data/yacht_hydrodynamics.data +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/deep_kernels.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/gpjax.mplstyle +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/graph_kernels.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/intro_to_gps/decomposed_mll.png +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/intro_to_gps/generating_process.png +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/intro_to_gps.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/intro_to_kernels.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/likelihoods_guide.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/oceanmodelling.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/poisson.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/regression.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/uncollapsed_vi.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/utils.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/examples/yacht.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/citation.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/dataset.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/distributions.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/fit.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/gps.py +1 -1
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/integrators.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/approximations/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/base.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/basis_functions.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/constant_diagonal.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/dense.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/diagonal.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/computations/eigen.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/non_euclidean/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/non_euclidean/graph.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/non_euclidean/utils.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/nonstationary/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/nonstationary/arccosine.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/nonstationary/linear.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/nonstationary/polynomial.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/periodic.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/powered_exponential.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/rational_quadratic.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/rbf.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/utils.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/kernels/stationary/white.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/likelihoods.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/linalg/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/linalg/operations.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/linalg/operators.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/linalg/utils.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/numpyro_extras.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/objectives.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/parameters.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/scan.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/typing.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/gpjax/variational_families.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/static/CONTRIBUTING.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/static/paper.bib +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/static/paper.md +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/static/paper.pdf +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/conftest.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/integration_tests.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_citations.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_dataset.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_fit.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_gaussian_distribution.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_gps.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_imports.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_integrators.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/__init__.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_approximations.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_computation.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_non_euclidean.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_nonstationary.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_stationary.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_kernels/test_utils.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_likelihoods.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_linalg.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_markdown.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_mean_functions.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_numpyro_extras.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_objectives.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_parameters.py +0 -0
- {gpjax-0.12.2 → gpjax-0.13.0}/tests/test_variational_families.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name: "Automatic Labeling"
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
4
|
+
pull_request_target:
|
|
5
5
|
types: [opened, synchronize, reopened]
|
|
6
6
|
issues:
|
|
7
7
|
types: [opened, reopened]
|
|
@@ -13,14 +13,14 @@ jobs:
|
|
|
13
13
|
permissions:
|
|
14
14
|
issues: write
|
|
15
15
|
pull-requests: write
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
20
|
|
|
21
21
|
- name: Auto-label based on files changed
|
|
22
22
|
if: github.event_name == 'pull_request'
|
|
23
|
-
uses: actions/labeler@
|
|
23
|
+
uses: actions/labeler@v6
|
|
24
24
|
with:
|
|
25
25
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
26
26
|
configuration-path: .github/labeler.yml
|
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
33
33
|
xs_label: 'size/xs'
|
|
34
34
|
xs_max_size: '10'
|
|
35
|
-
s_label: 'size/s'
|
|
35
|
+
s_label: 'size/s'
|
|
36
36
|
s_max_size: '100'
|
|
37
37
|
m_label: 'size/m'
|
|
38
38
|
m_max_size: '500'
|
|
@@ -45,68 +45,68 @@ jobs:
|
|
|
45
45
|
|
|
46
46
|
- name: Label ML-specific issues
|
|
47
47
|
if: github.event_name == 'issues'
|
|
48
|
-
uses: actions/github-script@
|
|
48
|
+
uses: actions/github-script@v8
|
|
49
49
|
with:
|
|
50
50
|
script: |
|
|
51
51
|
const title = context.payload.issue.title.toLowerCase();
|
|
52
52
|
const body = context.payload.issue.body?.toLowerCase() || '';
|
|
53
53
|
const text = title + ' ' + body;
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
const labels = [];
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
// GPU/Hardware related
|
|
58
|
-
if (text.includes('gpu') || text.includes('cuda') || text.includes('device') ||
|
|
58
|
+
if (text.includes('gpu') || text.includes('cuda') || text.includes('device') ||
|
|
59
59
|
text.includes('memory') || text.includes('jax.device')) {
|
|
60
60
|
labels.push('gpu-support');
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
// Performance related
|
|
64
64
|
if (text.includes('slow') || text.includes('performance') || text.includes('speed') ||
|
|
65
65
|
text.includes('memory usage') || text.includes('regression') || text.includes('benchmark')) {
|
|
66
66
|
labels.push('performance');
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
|
|
69
69
|
// Numerical stability
|
|
70
70
|
if (text.includes('numerical') || text.includes('instability') || text.includes('nan') ||
|
|
71
71
|
text.includes('inf') || text.includes('convergence') || text.includes('precision')) {
|
|
72
72
|
labels.push('numerical-stability');
|
|
73
73
|
}
|
|
74
|
-
|
|
74
|
+
|
|
75
75
|
// JAX compatibility
|
|
76
|
-
if (text.includes('jax') || text.includes('jit') || text.includes('vmap') ||
|
|
76
|
+
if (text.includes('jax') || text.includes('jit') || text.includes('vmap') ||
|
|
77
77
|
text.includes('pmap') || text.includes('xla')) {
|
|
78
78
|
labels.push('jax-compatibility');
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
// Component detection
|
|
82
82
|
if (text.includes('kernel') || text.includes('rbf') || text.includes('matern')) {
|
|
83
83
|
labels.push('kernels');
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
if (text.includes('gaussian process') || text.includes(' gp ') || text.includes('posterior') ||
|
|
87
87
|
text.includes('prior') || text.includes('inference')) {
|
|
88
88
|
labels.push('gps');
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
if (text.includes('variational') || text.includes('elbo') || text.includes('svgp')) {
|
|
92
92
|
labels.push('variational');
|
|
93
93
|
}
|
|
94
|
-
|
|
94
|
+
|
|
95
95
|
if (text.includes('likelihood') || text.includes('bernoulli') || text.includes('poisson')) {
|
|
96
96
|
labels.push('likelihoods');
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
if (text.includes('optimization') || text.includes('optimizer') || text.includes('fit') ||
|
|
100
100
|
text.includes('scipy') || text.includes('optax')) {
|
|
101
101
|
labels.push('optimization');
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
// Documentation related
|
|
105
105
|
if (text.includes('documentation') || text.includes('docs') || text.includes('example') ||
|
|
106
106
|
text.includes('tutorial') || text.includes('docstring')) {
|
|
107
107
|
labels.push('documentation');
|
|
108
108
|
}
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
// Bug vs Feature detection
|
|
111
111
|
if (text.includes('bug') || text.includes('error') || text.includes('fail') ||
|
|
112
112
|
text.includes('broken') || text.includes('issue') || text.includes('problem')) {
|
|
@@ -115,7 +115,7 @@ jobs:
|
|
|
115
115
|
text.includes('implement') || text.includes('support') || text.includes('new')) {
|
|
116
116
|
labels.push('enhancement');
|
|
117
117
|
}
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
// Difficulty assessment
|
|
120
120
|
if (text.includes('good first issue') || text.includes('beginner') || text.includes('easy')) {
|
|
121
121
|
labels.push('good first issue');
|
|
@@ -124,14 +124,14 @@ jobs:
|
|
|
124
124
|
} else if (text.includes('complex') || text.includes('advanced') || text.includes('expert')) {
|
|
125
125
|
labels.push('expert-level');
|
|
126
126
|
}
|
|
127
|
-
|
|
127
|
+
|
|
128
128
|
// Priority detection
|
|
129
129
|
if (text.includes('urgent') || text.includes('critical') || text.includes('blocking')) {
|
|
130
130
|
labels.push('priority/high');
|
|
131
131
|
} else if (text.includes('nice to have') || text.includes('low priority')) {
|
|
132
132
|
labels.push('priority/low');
|
|
133
133
|
}
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
// Apply labels
|
|
136
136
|
if (labels.length > 0) {
|
|
137
137
|
await github.rest.issues.addLabels({
|
|
@@ -144,57 +144,57 @@ jobs:
|
|
|
144
144
|
|
|
145
145
|
- name: Label PRs based on content
|
|
146
146
|
if: github.event_name == 'pull_request'
|
|
147
|
-
uses: actions/github-script@
|
|
147
|
+
uses: actions/github-script@v8
|
|
148
148
|
with:
|
|
149
149
|
script: |
|
|
150
150
|
const title = context.payload.pull_request.title.toLowerCase();
|
|
151
151
|
const body = context.payload.pull_request.body?.toLowerCase() || '';
|
|
152
152
|
const text = title + ' ' + body;
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
const labels = [];
|
|
155
|
-
|
|
155
|
+
|
|
156
156
|
// Breaking changes
|
|
157
157
|
if (text.includes('breaking') || text.includes('breaking change') ||
|
|
158
158
|
title.includes('!:') || body.includes('breaking change')) {
|
|
159
159
|
labels.push('breaking-change');
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
|
|
162
162
|
// Dependencies
|
|
163
163
|
if (title.includes('deps') || title.includes('dependenc') || title.includes('bump') ||
|
|
164
164
|
text.includes('requirements') || text.includes('pyproject.toml')) {
|
|
165
165
|
labels.push('dependencies');
|
|
166
166
|
}
|
|
167
|
-
|
|
168
|
-
// CI/Infrastructure
|
|
167
|
+
|
|
168
|
+
// CI/Infrastructure
|
|
169
169
|
if (text.includes('github actions') || text.includes('workflow') || text.includes('.yml') ||
|
|
170
170
|
text.includes('ci') || text.includes('pipeline')) {
|
|
171
171
|
labels.push('ci');
|
|
172
172
|
}
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
// Performance improvements
|
|
175
175
|
if (text.includes('performance') || text.includes('optimization') || text.includes('faster') ||
|
|
176
176
|
text.includes('efficient') || text.includes('benchmark')) {
|
|
177
177
|
labels.push('performance');
|
|
178
178
|
}
|
|
179
|
-
|
|
179
|
+
|
|
180
180
|
// Documentation
|
|
181
181
|
if (text.includes('docs') || text.includes('readme') || text.includes('docstring') ||
|
|
182
182
|
text.includes('example') || text.includes('.md') || text.includes('tutorial')) {
|
|
183
183
|
labels.push('documentation');
|
|
184
184
|
}
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
// Tests
|
|
187
187
|
if (text.includes('test') || text.includes('pytest') || text.includes('coverage') ||
|
|
188
188
|
title.startsWith('test:') || text.includes('testing')) {
|
|
189
189
|
labels.push('tests');
|
|
190
190
|
}
|
|
191
|
-
|
|
191
|
+
|
|
192
192
|
// Security
|
|
193
193
|
if (text.includes('security') || text.includes('vulnerability') || text.includes('cve') ||
|
|
194
194
|
text.includes('safety') || text.includes('bandit')) {
|
|
195
195
|
labels.push('security');
|
|
196
196
|
}
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
// Apply labels
|
|
199
199
|
if (labels.length > 0) {
|
|
200
200
|
await github.rest.issues.addLabels({
|
|
@@ -13,11 +13,11 @@ jobs:
|
|
|
13
13
|
matrix:
|
|
14
14
|
# Select the Python versions to test against
|
|
15
15
|
os: ["ubuntu-latest", "macos-latest"]
|
|
16
|
-
python-version: ["3.
|
|
16
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
17
17
|
fail-fast: true
|
|
18
18
|
steps:
|
|
19
19
|
- name: Check out the code
|
|
20
|
-
uses: actions/checkout@
|
|
20
|
+
uses: actions/checkout@v5
|
|
21
21
|
with:
|
|
22
22
|
fetch-depth: 1
|
|
23
23
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
|
|
30
30
|
steps:
|
|
31
31
|
- name: Checkout repository
|
|
32
|
-
uses: actions/checkout@
|
|
32
|
+
uses: actions/checkout@v5
|
|
33
33
|
with:
|
|
34
34
|
fetch-depth: 0
|
|
35
35
|
|
|
@@ -60,11 +60,11 @@ jobs:
|
|
|
60
60
|
fail-fast: false
|
|
61
61
|
matrix:
|
|
62
62
|
os: [ubuntu-latest, macos-latest]
|
|
63
|
-
python-version: ['3.
|
|
63
|
+
python-version: ['3.11', '3.12', '3.13']
|
|
64
64
|
exclude:
|
|
65
65
|
# Reduce matrix size - test all Python versions on Ubuntu, subset on others
|
|
66
66
|
- os: macos-latest
|
|
67
|
-
python-version: '3.
|
|
67
|
+
python-version: '3.11'
|
|
68
68
|
- os: macos-latest
|
|
69
69
|
python-version: '3.12'
|
|
70
70
|
|
|
@@ -72,7 +72,7 @@ jobs:
|
|
|
72
72
|
|
|
73
73
|
steps:
|
|
74
74
|
- name: Checkout repository
|
|
75
|
-
uses: actions/checkout@
|
|
75
|
+
uses: actions/checkout@v5
|
|
76
76
|
|
|
77
77
|
- name: Set up Python ${{ matrix.python-version }}
|
|
78
78
|
uses: actions/setup-python@v6
|
|
@@ -108,7 +108,7 @@ jobs:
|
|
|
108
108
|
|
|
109
109
|
steps:
|
|
110
110
|
- name: Checkout repository
|
|
111
|
-
uses: actions/checkout@
|
|
111
|
+
uses: actions/checkout@v5
|
|
112
112
|
|
|
113
113
|
- name: Set up Python
|
|
114
114
|
uses: actions/setup-python@v6
|
|
@@ -146,7 +146,7 @@ jobs:
|
|
|
146
146
|
|
|
147
147
|
steps:
|
|
148
148
|
- name: Checkout repository
|
|
149
|
-
uses: actions/checkout@
|
|
149
|
+
uses: actions/checkout@v5
|
|
150
150
|
|
|
151
151
|
- name: Set up Python
|
|
152
152
|
uses: actions/setup-python@v6
|
|
@@ -181,7 +181,7 @@ jobs:
|
|
|
181
181
|
|
|
182
182
|
steps:
|
|
183
183
|
- name: Checkout repository
|
|
184
|
-
uses: actions/checkout@
|
|
184
|
+
uses: actions/checkout@v5
|
|
185
185
|
with:
|
|
186
186
|
fetch-depth: 0
|
|
187
187
|
|
|
@@ -261,10 +261,10 @@ jobs:
|
|
|
261
261
|
|
|
262
262
|
steps:
|
|
263
263
|
- name: Checkout repository
|
|
264
|
-
uses: actions/checkout@
|
|
264
|
+
uses: actions/checkout@v5
|
|
265
265
|
|
|
266
266
|
- name: Download build artifacts
|
|
267
|
-
uses: actions/download-artifact@
|
|
267
|
+
uses: actions/download-artifact@v5
|
|
268
268
|
with:
|
|
269
269
|
name: dist-packages
|
|
270
270
|
path: dist/
|
|
@@ -294,7 +294,7 @@ jobs:
|
|
|
294
294
|
|
|
295
295
|
steps:
|
|
296
296
|
- name: Download build artifacts
|
|
297
|
-
uses: actions/download-artifact@
|
|
297
|
+
uses: actions/download-artifact@v5
|
|
298
298
|
with:
|
|
299
299
|
name: dist-packages
|
|
300
300
|
path: dist/
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
22
|
- name: Checkout repository
|
|
23
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@v5
|
|
24
24
|
|
|
25
25
|
- name: Set up Python
|
|
26
26
|
uses: actions/setup-python@v6
|
|
@@ -62,7 +62,7 @@ jobs:
|
|
|
62
62
|
|
|
63
63
|
steps:
|
|
64
64
|
- name: Checkout repository
|
|
65
|
-
uses: actions/checkout@
|
|
65
|
+
uses: actions/checkout@v5
|
|
66
66
|
with:
|
|
67
67
|
fetch-depth: 0 # Fetch full history for comprehensive scanning
|
|
68
68
|
|
|
@@ -11,12 +11,12 @@ jobs:
|
|
|
11
11
|
strategy:
|
|
12
12
|
matrix:
|
|
13
13
|
os: ["ubuntu-latest", "macos-latest"]
|
|
14
|
-
python-version: ["3.
|
|
14
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
15
15
|
fail-fast: true
|
|
16
16
|
runs-on: ${{ matrix.os }}
|
|
17
17
|
steps:
|
|
18
18
|
- name: Check out the code
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
20
|
with:
|
|
21
21
|
fetch-depth: 1
|
|
22
22
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -42,7 +42,7 @@ jobs:
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
- name: Upload code coverage
|
|
45
|
-
uses: codecov/codecov-action@
|
|
45
|
+
uses: codecov/codecov-action@v5
|
|
46
46
|
with:
|
|
47
47
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
48
48
|
file: ./coverage.xml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gpjax
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary: Gaussian processes in JAX.
|
|
5
5
|
Project-URL: Documentation, https://docs.jaxgaussianprocesses.com/
|
|
6
6
|
Project-URL: Issues, https://github.com/JaxGaussianProcesses/GPJax/issues
|
|
@@ -11,15 +11,14 @@ License-File: LICENSE.txt
|
|
|
11
11
|
Keywords: gaussian-processes jax machine-learning bayesian
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
17
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
19
18
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
20
|
-
Requires-Python: >=3.
|
|
19
|
+
Requires-Python: >=3.11
|
|
21
20
|
Requires-Dist: beartype>0.16.1
|
|
22
|
-
Requires-Dist: flax>=0.
|
|
21
|
+
Requires-Dist: flax>=0.12.0
|
|
23
22
|
Requires-Dist: jax>=0.5.0
|
|
24
23
|
Requires-Dist: jaxlib>=0.5.0
|
|
25
24
|
Requires-Dist: jaxtyping>0.2.10
|
|
@@ -80,6 +79,7 @@ Description-Content-Type: text/markdown
|
|
|
80
79
|
[](https://www.codefactor.io/repository/github/jaxgaussianprocesses/gpjax)
|
|
81
80
|
[](https://app.netlify.com/sites/endearing-crepe-c2d5fe/deploys)
|
|
82
81
|
[](https://badge.fury.io/py/GPJax)
|
|
82
|
+
[](https://anaconda.org/conda-forge/gpjax)
|
|
83
83
|
[](https://doi.org/10.21105/joss.04455)
|
|
84
84
|
[](https://pepy.tech/project/gpjax)
|
|
85
85
|
[](https://join.slack.com/t/gpjax/shared_invite/zt-3cesiykcx-nzajjRdnV3ohw7~~eMlCYA)
|
|
@@ -174,13 +174,21 @@ jupytext --to py:percent example.ipynb
|
|
|
174
174
|
|
|
175
175
|
## Stable version
|
|
176
176
|
|
|
177
|
-
The latest stable version of GPJax can be installed
|
|
178
|
-
pip:
|
|
177
|
+
The latest stable version of GPJax can be installed from [PyPI](https://pypi.org/project/gpjax/):
|
|
179
178
|
|
|
180
179
|
```bash
|
|
181
180
|
pip install gpjax
|
|
182
181
|
```
|
|
183
182
|
|
|
183
|
+
or from [conda-forge](https://github.com/conda-forge/gpjax-feedstock):
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# with Pixi
|
|
187
|
+
pixi add gpjax
|
|
188
|
+
# or with conda
|
|
189
|
+
conda install --channel conda-forge gpjax
|
|
190
|
+
```
|
|
191
|
+
|
|
184
192
|
> **Note**
|
|
185
193
|
>
|
|
186
194
|
> We recommend you check your installation version:
|
|
@@ -199,7 +207,7 @@ pip install gpjax
|
|
|
199
207
|
>
|
|
200
208
|
> We advise you create virtual environment before installing:
|
|
201
209
|
> ```
|
|
202
|
-
> conda create -n gpjax_experimental python=3.
|
|
210
|
+
> conda create -n gpjax_experimental python=3.11.0
|
|
203
211
|
> conda activate gpjax_experimental
|
|
204
212
|
> ```
|
|
205
213
|
|
|
@@ -209,14 +217,14 @@ configuration in development mode.
|
|
|
209
217
|
```bash
|
|
210
218
|
git clone https://github.com/JaxGaussianProcesses/GPJax.git
|
|
211
219
|
cd GPJax
|
|
212
|
-
|
|
213
|
-
|
|
220
|
+
uv venv
|
|
221
|
+
uv sync --extra dev
|
|
214
222
|
```
|
|
215
223
|
|
|
216
224
|
> We recommend you check your installation passes the supplied unit tests:
|
|
217
225
|
>
|
|
218
226
|
> ```python
|
|
219
|
-
>
|
|
227
|
+
> uv run poe all-tests
|
|
220
228
|
> ```
|
|
221
229
|
|
|
222
230
|
# Citing GPJax
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
[](https://www.codefactor.io/repository/github/jaxgaussianprocesses/gpjax)
|
|
9
9
|
[](https://app.netlify.com/sites/endearing-crepe-c2d5fe/deploys)
|
|
10
10
|
[](https://badge.fury.io/py/GPJax)
|
|
11
|
+
[](https://anaconda.org/conda-forge/gpjax)
|
|
11
12
|
[](https://doi.org/10.21105/joss.04455)
|
|
12
13
|
[](https://pepy.tech/project/gpjax)
|
|
13
14
|
[](https://join.slack.com/t/gpjax/shared_invite/zt-3cesiykcx-nzajjRdnV3ohw7~~eMlCYA)
|
|
@@ -102,13 +103,21 @@ jupytext --to py:percent example.ipynb
|
|
|
102
103
|
|
|
103
104
|
## Stable version
|
|
104
105
|
|
|
105
|
-
The latest stable version of GPJax can be installed
|
|
106
|
-
pip:
|
|
106
|
+
The latest stable version of GPJax can be installed from [PyPI](https://pypi.org/project/gpjax/):
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
109
|
pip install gpjax
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
+
or from [conda-forge](https://github.com/conda-forge/gpjax-feedstock):
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# with Pixi
|
|
116
|
+
pixi add gpjax
|
|
117
|
+
# or with conda
|
|
118
|
+
conda install --channel conda-forge gpjax
|
|
119
|
+
```
|
|
120
|
+
|
|
112
121
|
> **Note**
|
|
113
122
|
>
|
|
114
123
|
> We recommend you check your installation version:
|
|
@@ -127,7 +136,7 @@ pip install gpjax
|
|
|
127
136
|
>
|
|
128
137
|
> We advise you create virtual environment before installing:
|
|
129
138
|
> ```
|
|
130
|
-
> conda create -n gpjax_experimental python=3.
|
|
139
|
+
> conda create -n gpjax_experimental python=3.11.0
|
|
131
140
|
> conda activate gpjax_experimental
|
|
132
141
|
> ```
|
|
133
142
|
|
|
@@ -137,14 +146,14 @@ configuration in development mode.
|
|
|
137
146
|
```bash
|
|
138
147
|
git clone https://github.com/JaxGaussianProcesses/GPJax.git
|
|
139
148
|
cd GPJax
|
|
140
|
-
|
|
141
|
-
|
|
149
|
+
uv venv
|
|
150
|
+
uv sync --extra dev
|
|
142
151
|
```
|
|
143
152
|
|
|
144
153
|
> We recommend you check your installation passes the supplied unit tests:
|
|
145
154
|
>
|
|
146
155
|
> ```python
|
|
147
|
-
>
|
|
156
|
+
> uv run poe all-tests
|
|
148
157
|
> ```
|
|
149
158
|
|
|
150
159
|
# Citing GPJax
|
|
@@ -2,12 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
## Stable version
|
|
4
4
|
|
|
5
|
-
The latest stable release of `GPJax` can be installed
|
|
5
|
+
The latest stable release of `GPJax` can be installed from [PyPI](https://pypi.org/project/gpjax/):
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
pip install gpjax
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
or from [conda-forge](https://github.com/conda-forge/gpjax-feedstock) with [Pixi](https://pixi.sh/):
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pixi add gpjax
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
or with [conda](https://docs.conda.io/projects/conda/):
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
conda install --channel conda-forge gpjax
|
|
21
|
+
```
|
|
22
|
+
|
|
11
23
|
!!! note "Check your installation"
|
|
12
24
|
We recommend you check your installation version:
|
|
13
25
|
```
|
|
@@ -38,7 +50,7 @@ hardware acceleration support as detailed in the
|
|
|
38
50
|
We advise you create virtual environment before installing:
|
|
39
51
|
|
|
40
52
|
```bash
|
|
41
|
-
conda create -n gpjax_experimental python=3.
|
|
53
|
+
conda create -n gpjax_experimental python=3.11.0
|
|
42
54
|
conda activate gpjax_experimental
|
|
43
55
|
```
|
|
44
56
|
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
--md-primary-fg-color: #b71c1c !important;
|
|
3
|
+
--md-primary-600: #b71c1c !important;
|
|
4
|
+
--md-primary-700: #9b1a1a !important;
|
|
5
|
+
--md-accent-fg-color: #d32f2f !important;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Top header and navigation background */
|
|
9
|
+
.md-header, .md-header__panel, .md-header__inner, header.md-header {
|
|
10
|
+
background-color: var(--md-primary-600) !important;
|
|
11
|
+
color: #fff !important;
|
|
12
|
+
border-color: var(--md-primary-700) !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.md-nav__link--active, .md-nav__link:hover, .md-nav__link:focus {
|
|
16
|
+
background: transparent !important;
|
|
17
|
+
color: #d32f2f;
|
|
18
|
+
}
|
|
6
19
|
|
|
7
20
|
html {
|
|
8
21
|
/* Decrease font size for overall webpage
|
|
@@ -40,7 +40,7 @@ __license__ = "MIT"
|
|
|
40
40
|
__description__ = "Gaussian processes in JAX and Flax"
|
|
41
41
|
__url__ = "https://github.com/JaxGaussianProcesses/GPJax"
|
|
42
42
|
__contributors__ = "https://github.com/JaxGaussianProcesses/GPJax/graphs/contributors"
|
|
43
|
-
__version__ = "0.
|
|
43
|
+
__version__ = "0.13.0"
|
|
44
44
|
|
|
45
45
|
__all__ = [
|
|
46
46
|
"gps",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Compute Random Fourier Feature (RFF) kernel approximations."""
|
|
2
2
|
|
|
3
3
|
import beartype.typing as tp
|
|
4
|
+
from flax import nnx
|
|
4
5
|
import jax.random as jr
|
|
5
6
|
from jaxtyping import Float
|
|
6
7
|
|
|
@@ -54,7 +55,7 @@ class RFF(AbstractKernel):
|
|
|
54
55
|
self._check_valid_base_kernel(base_kernel)
|
|
55
56
|
self.base_kernel = base_kernel
|
|
56
57
|
self.num_basis_fns = num_basis_fns
|
|
57
|
-
self.frequencies = frequencies
|
|
58
|
+
self.frequencies = nnx.data(frequencies)
|
|
58
59
|
self.compute_engine = compute_engine
|
|
59
60
|
|
|
60
61
|
if self.frequencies is None:
|
|
@@ -253,7 +253,7 @@ class CombinationKernel(AbstractKernel):
|
|
|
253
253
|
compute_engine: AbstractKernelComputation = DenseKernelComputation(),
|
|
254
254
|
):
|
|
255
255
|
# Add kernels to a list, flattening out instances of this class therein, as in GPFlow kernels.
|
|
256
|
-
kernels_list: list[AbstractKernel] = []
|
|
256
|
+
kernels_list: list[AbstractKernel] = nnx.List([])
|
|
257
257
|
for kernel in kernels:
|
|
258
258
|
if not isinstance(kernel, AbstractKernel):
|
|
259
259
|
raise TypeError("can only combine Kernel instances") # pragma: no cover
|