gamfit 0.1.15__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.
- gamfit-0.1.15/.github/actions/bench-setup/action.yml +59 -0
- gamfit-0.1.15/.github/actions/setup-bench-r/action.yml +39 -0
- gamfit-0.1.15/.github/workflows/benchmark.yml +825 -0
- gamfit-0.1.15/.github/workflows/biobank_scale.yml +262 -0
- gamfit-0.1.15/.github/workflows/build-release-all.yml +159 -0
- gamfit-0.1.15/.github/workflows/fuzz.yml +95 -0
- gamfit-0.1.15/.github/workflows/jules-pr-validator.yml +216 -0
- gamfit-0.1.15/.github/workflows/jules_loop.yml +81 -0
- gamfit-0.1.15/.github/workflows/prover.yml +210 -0
- gamfit-0.1.15/.github/workflows/publish.yml +44 -0
- gamfit-0.1.15/.github/workflows/pypi-wheels.yml +138 -0
- gamfit-0.1.15/.github/workflows/test.yml +211 -0
- gamfit-0.1.15/.gitignore +104 -0
- gamfit-0.1.15/COMMERCIAL.md +24 -0
- gamfit-0.1.15/Cargo.lock +8964 -0
- gamfit-0.1.15/Cargo.toml +117 -0
- gamfit-0.1.15/LICENSE +661 -0
- gamfit-0.1.15/PKG-INFO +180 -0
- gamfit-0.1.15/README.md +288 -0
- gamfit-0.1.15/SPEC.md +11 -0
- gamfit-0.1.15/bench/_repro_seed.py +44 -0
- gamfit-0.1.15/bench/aniso_demo/01_raw.png +0 -0
- gamfit-0.1.15/bench/aniso_demo/02_normalized.png +0 -0
- gamfit-0.1.15/bench/aniso_demo/data.csv +301 -0
- gamfit-0.1.15/bench/aniso_demo/fit_aniso.log +45906 -0
- gamfit-0.1.15/bench/aniso_demo/fit_iso.log +49371 -0
- gamfit-0.1.15/bench/aniso_demo/model_aniso.json +1703 -0
- gamfit-0.1.15/bench/aniso_demo/model_iso.json +1697 -0
- gamfit-0.1.15/bench/aniso_demo/pred_aniso.csv +301 -0
- gamfit-0.1.15/bench/aniso_demo/pred_iso.csv +301 -0
- gamfit-0.1.15/bench/aniso_demo/run_demo.py +203 -0
- gamfit-0.1.15/bench/biobank_scale/biobank_scale.yml +88 -0
- gamfit-0.1.15/bench/biobank_scale/runner.py +4511 -0
- gamfit-0.1.15/bench/datasets/31_day.csv +746 -0
- gamfit-0.1.15/bench/datasets/bone.csv +24 -0
- gamfit-0.1.15/bench/datasets/cirrhosis.csv +419 -0
- gamfit-0.1.15/bench/datasets/five_day.csv +122 -0
- gamfit-0.1.15/bench/datasets/haberman.csv +306 -0
- gamfit-0.1.15/bench/datasets/heart_failure_clinical_records_dataset.csv +300 -0
- gamfit-0.1.15/bench/datasets/horse.csv +300 -0
- gamfit-0.1.15/bench/datasets/icu_survival_death.csv +20001 -0
- gamfit-0.1.15/bench/datasets/icu_survival_los.csv +20001 -0
- gamfit-0.1.15/bench/datasets/lidar.csv +222 -0
- gamfit-0.1.15/bench/datasets/prostate.csv +655 -0
- gamfit-0.1.15/bench/datasets/wine.csv +48 -0
- gamfit-0.1.15/bench/fuzz_vs_mgcv.py +1975 -0
- gamfit-0.1.15/bench/generate_figures.py +258 -0
- gamfit-0.1.15/bench/plot_subpop_centroid_order.py +225 -0
- gamfit-0.1.15/bench/prostate_gamair_results.json +95 -0
- gamfit-0.1.15/bench/run.py +109 -0
- gamfit-0.1.15/bench/run_suite.py +9157 -0
- gamfit-0.1.15/bench/run_survival_suite.py +72 -0
- gamfit-0.1.15/bench/scenarios.json +703 -0
- gamfit-0.1.15/bench/single_split_geo_disease_eas_duchon_k4_downsample300x.json +41 -0
- gamfit-0.1.15/bench/small_dense_results.json +95 -0
- gamfit-0.1.15/bench/spline_surface_comparison.py +365 -0
- gamfit-0.1.15/benches/branch_cell_biobank_hv.rs +97 -0
- gamfit-0.1.15/benches/bvn_biobank_shape.rs +43 -0
- gamfit-0.1.15/benches/cell_moment_lru_biobank_shape.rs +82 -0
- gamfit-0.1.15/benches/closed_form_criterion.rs +417 -0
- gamfit-0.1.15/benches/closed_form_pair_block.rs +157 -0
- gamfit-0.1.15/benches/closed_form_perf.rs +49 -0
- gamfit-0.1.15/benches/margslope_flex_biobank_hv.rs +70 -0
- gamfit-0.1.15/benches/non_affine_cell_hv_shape.rs +48 -0
- gamfit-0.1.15/benches/spatial_basis_construction.rs +65 -0
- gamfit-0.1.15/benches/trust_region_line_search.rs +46 -0
- gamfit-0.1.15/build.rs +102 -0
- gamfit-0.1.15/crates/gam-pyffi/Cargo.toml +19 -0
- gamfit-0.1.15/crates/gam-pyffi/src/lib.rs +1990 -0
- gamfit-0.1.15/docs/perf/joint_trust_region.md +24 -0
- gamfit-0.1.15/examples/validate_task24.rs +145 -0
- gamfit-0.1.15/install.sh +344 -0
- gamfit-0.1.15/lake-manifest.json +95 -0
- gamfit-0.1.15/lakefile.lean +5 -0
- gamfit-0.1.15/lean-toolchain +1 -0
- gamfit-0.1.15/memory/margslope_flex_biobank_harness.md +61 -0
- gamfit-0.1.15/memory/scaling_law_margslope_inner_pirls.md +34 -0
- gamfit-0.1.15/pyproject.toml +108 -0
- gamfit-0.1.15/python/README.md +110 -0
- gamfit-0.1.15/python/gamfit/__init__.py +58 -0
- gamfit-0.1.15/python/gamfit/_api.py +259 -0
- gamfit-0.1.15/python/gamfit/_binding.py +36 -0
- gamfit-0.1.15/python/gamfit/_diagnostics.py +88 -0
- gamfit-0.1.15/python/gamfit/_exceptions.py +30 -0
- gamfit-0.1.15/python/gamfit/_model.py +848 -0
- gamfit-0.1.15/python/gamfit/_schema.py +64 -0
- gamfit-0.1.15/python/gamfit/_summary.py +61 -0
- gamfit-0.1.15/python/gamfit/_tables.py +285 -0
- gamfit-0.1.15/python/gamfit/_validation.py +48 -0
- gamfit-0.1.15/python/gamfit/pgs.py +278 -0
- gamfit-0.1.15/python/gamfit/py.typed +1 -0
- gamfit-0.1.15/python/gamfit/sklearn.py +136 -0
- gamfit-0.1.15/rust-toolchain.toml +3 -0
- gamfit-0.1.15/rustfmt.toml +2 -0
- gamfit-0.1.15/scripts/codex_nightrun.sh +125 -0
- gamfit-0.1.15/scripts/duchon_1d_adaptive_jump_demo.py +588 -0
- gamfit-0.1.15/scripts/duchon_1d_power_compare.py +274 -0
- gamfit-0.1.15/scripts/duchon_2d.py +478 -0
- gamfit-0.1.15/scripts/fit_anisotropic_duchon.py +253 -0
- gamfit-0.1.15/scripts/jules_loop.py +355 -0
- gamfit-0.1.15/scripts/lean-check-all.sh +43 -0
- gamfit-0.1.15/scripts/plot_survival_digital_twins.py +1218 -0
- gamfit-0.1.15/scripts/summarize_latest_benchmark_run.py +362 -0
- gamfit-0.1.15/src/families/bernoulli_marginal_slope/deviation_runtime.rs +888 -0
- gamfit-0.1.15/src/families/bernoulli_marginal_slope/exact_kernel.rs +1 -0
- gamfit-0.1.15/src/families/bernoulli_marginal_slope.rs +18208 -0
- gamfit-0.1.15/src/families/cubic_cell_kernel.rs +6094 -0
- gamfit-0.1.15/src/families/custom_family.rs +18621 -0
- gamfit-0.1.15/src/families/family_meta.rs +40 -0
- gamfit-0.1.15/src/families/gamlss.rs +26810 -0
- gamfit-0.1.15/src/families/jet_partitions.rs +161 -0
- gamfit-0.1.15/src/families/latent_survival.rs +4207 -0
- gamfit-0.1.15/src/families/lognormal_kernel.rs +1490 -0
- gamfit-0.1.15/src/families/marginal_slope_intercept_solver.rs +146 -0
- gamfit-0.1.15/src/families/marginal_slope_shared.rs +1243 -0
- gamfit-0.1.15/src/families/mod.rs +22 -0
- gamfit-0.1.15/src/families/monotone_root.rs +376 -0
- gamfit-0.1.15/src/families/row_kernel.rs +574 -0
- gamfit-0.1.15/src/families/royston_parmar.rs +122 -0
- gamfit-0.1.15/src/families/scale_design.rs +1072 -0
- gamfit-0.1.15/src/families/sigma_link.rs +547 -0
- gamfit-0.1.15/src/families/strategy.rs +377 -0
- gamfit-0.1.15/src/families/survival.rs +3814 -0
- gamfit-0.1.15/src/families/survival_construction.rs +3664 -0
- gamfit-0.1.15/src/families/survival_location_scale.rs +14161 -0
- gamfit-0.1.15/src/families/survival_marginal_slope.rs +17996 -0
- gamfit-0.1.15/src/families/survival_predict.rs +1593 -0
- gamfit-0.1.15/src/families/transformation_normal.rs +15326 -0
- gamfit-0.1.15/src/inference/alo.rs +1670 -0
- gamfit-0.1.15/src/inference/data.rs +1517 -0
- gamfit-0.1.15/src/inference/diagnostics.rs +390 -0
- gamfit-0.1.15/src/inference/formula_dsl.rs +1460 -0
- gamfit-0.1.15/src/inference/generative.rs +153 -0
- gamfit-0.1.15/src/inference/hmc.rs +4841 -0
- gamfit-0.1.15/src/inference/mod.rs +13 -0
- gamfit-0.1.15/src/inference/model.rs +2855 -0
- gamfit-0.1.15/src/inference/polya_gamma.rs +203 -0
- gamfit-0.1.15/src/inference/predict.rs +6542 -0
- gamfit-0.1.15/src/inference/predict_input.rs +373 -0
- gamfit-0.1.15/src/inference/prediction_linalg.rs +421 -0
- gamfit-0.1.15/src/inference/probability.rs +343 -0
- gamfit-0.1.15/src/inference/quadrature.rs +5523 -0
- gamfit-0.1.15/src/lib.rs +66 -0
- gamfit-0.1.15/src/linalg/faer_ndarray.rs +1670 -0
- gamfit-0.1.15/src/linalg/matrix.lean +222 -0
- gamfit-0.1.15/src/linalg/matrix.rs +7556 -0
- gamfit-0.1.15/src/linalg/mod.rs +4 -0
- gamfit-0.1.15/src/linalg/sparse_exact.rs +1642 -0
- gamfit-0.1.15/src/linalg/utils.rs +908 -0
- gamfit-0.1.15/src/main.rs +15777 -0
- gamfit-0.1.15/src/report.rs +797 -0
- gamfit-0.1.15/src/resource.rs +279 -0
- gamfit-0.1.15/src/solver/active_set.rs +962 -0
- gamfit-0.1.15/src/solver/estimate.lean +187 -0
- gamfit-0.1.15/src/solver/estimate.rs +5903 -0
- gamfit-0.1.15/src/solver/mixture_link.rs +2364 -0
- gamfit-0.1.15/src/solver/mod.rs +9 -0
- gamfit-0.1.15/src/solver/outer_strategy.rs +8200 -0
- gamfit-0.1.15/src/solver/pirls.rs +11039 -0
- gamfit-0.1.15/src/solver/protocol.rs +84 -0
- gamfit-0.1.15/src/solver/reml/assembly.rs +488 -0
- gamfit-0.1.15/src/solver/reml/cache.rs +45 -0
- gamfit-0.1.15/src/solver/reml/eval.rs +373 -0
- gamfit-0.1.15/src/solver/reml/firth.rs +3467 -0
- gamfit-0.1.15/src/solver/reml/hyper.rs +2990 -0
- gamfit-0.1.15/src/solver/reml/inner_strategy.rs +136 -0
- gamfit-0.1.15/src/solver/reml/mod.rs +3837 -0
- gamfit-0.1.15/src/solver/reml/penalty_logdet.rs +1296 -0
- gamfit-0.1.15/src/solver/reml/runtime.rs +7956 -0
- gamfit-0.1.15/src/solver/reml/trace.rs +28 -0
- gamfit-0.1.15/src/solver/reml/unified.rs +14099 -0
- gamfit-0.1.15/src/solver/reml.lean +375 -0
- gamfit-0.1.15/src/solver/seeding.rs +787 -0
- gamfit-0.1.15/src/solver/visualizer.rs +1228 -0
- gamfit-0.1.15/src/solver/workflow.rs +2753 -0
- gamfit-0.1.15/src/span.rs +97 -0
- gamfit-0.1.15/src/terms/basis.lean +132 -0
- gamfit-0.1.15/src/terms/basis.rs +30316 -0
- gamfit-0.1.15/src/terms/closed_form_operator.rs +627 -0
- gamfit-0.1.15/src/terms/construction.lean +567 -0
- gamfit-0.1.15/src/terms/construction.rs +2868 -0
- gamfit-0.1.15/src/terms/hull.rs +406 -0
- gamfit-0.1.15/src/terms/layout.rs +253 -0
- gamfit-0.1.15/src/terms/mod.rs +8 -0
- gamfit-0.1.15/src/terms/penalty_op.rs +343 -0
- gamfit-0.1.15/src/terms/smooth.rs +20414 -0
- gamfit-0.1.15/src/terms/term_builder.rs +787 -0
- gamfit-0.1.15/src/testing/mod.rs +168 -0
- gamfit-0.1.15/src/types.rs +745 -0
- gamfit-0.1.15/tests/alo_tests.rs +535 -0
- gamfit-0.1.15/tests/aniso_integration.rs +166 -0
- gamfit-0.1.15/tests/aniso_population_calibration.rs +318 -0
- gamfit-0.1.15/tests/autodiff_binomial_location_scale_exact.rs +816 -0
- gamfit-0.1.15/tests/autodiff_crosscheck.rs +270 -0
- gamfit-0.1.15/tests/autodiff_crosscheck_extended.rs +483 -0
- gamfit-0.1.15/tests/autodiff_custom_family_joint_laml.rs +720 -0
- gamfit-0.1.15/tests/autodiff_custom_family_pseudo_laplace.rs +284 -0
- gamfit-0.1.15/tests/autodiff_gaussian_location_scale_exact.rs +499 -0
- gamfit-0.1.15/tests/autodiff_sas_hypergradient_localization.rs +396 -0
- gamfit-0.1.15/tests/bench_biobank_scale_runner_test.py +2052 -0
- gamfit-0.1.15/tests/bench_fuzz_vs_mgcv_test.py +318 -0
- gamfit-0.1.15/tests/bench_run_suite_mapping_test.py +965 -0
- gamfit-0.1.15/tests/bench_run_suite_optional_imports_test.py +37 -0
- gamfit-0.1.15/tests/bench_tools/bench.py +568 -0
- gamfit-0.1.15/tests/bench_tools/compare.py +1071 -0
- gamfit-0.1.15/tests/bench_tools/gam_model_fit.joblib +0 -0
- gamfit-0.1.15/tests/bench_tools/generate_survival_reference.py +286 -0
- gamfit-0.1.15/tests/bench_tools/mgcv.py +190 -0
- gamfit-0.1.15/tests/bench_tools/plot.py +700 -0
- gamfit-0.1.15/tests/bench_tools/rds_view.py +141 -0
- gamfit-0.1.15/tests/bench_tools/run_calibrate.py +121 -0
- gamfit-0.1.15/tests/bench_tools/run_mgcv.R +41 -0
- gamfit-0.1.15/tests/bench_tools/synthetic_classification_data.csv +2501 -0
- gamfit-0.1.15/tests/bench_tools/view_basis.py +307 -0
- gamfit-0.1.15/tests/biobank_convergence_regression.rs +291 -0
- gamfit-0.1.15/tests/biobank_dense_regression_guard.rs +239 -0
- gamfit-0.1.15/tests/biobank_margslope_repro.rs +299 -0
- gamfit-0.1.15/tests/biobank_reml_stress.rs +410 -0
- gamfit-0.1.15/tests/common/mod.rs +257 -0
- gamfit-0.1.15/tests/conftest.py +87 -0
- gamfit-0.1.15/tests/dual_risk_test.rs +60 -0
- gamfit-0.1.15/tests/duchon_integration.rs +486 -0
- gamfit-0.1.15/tests/exact_oracle_tests.rs +202 -0
- gamfit-0.1.15/tests/external_gradient_trend.rs +219 -0
- gamfit-0.1.15/tests/firth_behavior.rs +264 -0
- gamfit-0.1.15/tests/gradient_decompose_test.rs +950 -0
- gamfit-0.1.15/tests/gradient_isolation.rs +307 -0
- gamfit-0.1.15/tests/ground_truth_gradient.rs +376 -0
- gamfit-0.1.15/tests/integration_marginal_slope.py +238 -0
- gamfit-0.1.15/tests/integration_pit_pipeline.py +305 -0
- gamfit-0.1.15/tests/margslope_flex_biobank_repro.rs +109 -0
- gamfit-0.1.15/tests/margslope_inner_pirls_scaling.rs +472 -0
- gamfit-0.1.15/tests/matern_integration.rs +421 -0
- gamfit-0.1.15/tests/no_production_finite_differences.rs +207 -0
- gamfit-0.1.15/tests/power_law_analyzer.rs +234 -0
- gamfit-0.1.15/tests/probit_integration.rs +361 -0
- gamfit-0.1.15/tests/repro_gamlss_linesearch_failure.rs +77 -0
- gamfit-0.1.15/tests/sas_mixture_system.rs +374 -0
- gamfit-0.1.15/tests/standard_gam_scaling.rs +266 -0
- gamfit-0.1.15/tests/stateful_saved_model_sync.rs +390 -0
- gamfit-0.1.15/tests/subsample_outer_integration.rs +230 -0
- gamfit-0.1.15/tests/survival_optimizer_api.rs +53 -0
- gamfit-0.1.15/tests/survival_regression.rs +137 -0
- gamfit-0.1.15/tests/test_e2e_pgs_pipeline.py +272 -0
- gamfit-0.1.15/tests/test_python_api.py +661 -0
- gamfit-0.1.15/tests/test_support/margslope_flex_equivalence.rs +322 -0
- gamfit-0.1.15/tests/test_tables.py +48 -0
- gamfit-0.1.15/tests/thin_plate_integration.rs +376 -0
- gamfit-0.1.15/tests/tps_smallk_basis_regression.rs +491 -0
- gamfit-0.1.15/tests/uncertainty_integration.rs +512 -0
- gamfit-0.1.15/tests/warm_start_quality_regression.rs +420 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: bench-setup
|
|
2
|
+
description: Shared setup for benchmark jobs
|
|
3
|
+
inputs:
|
|
4
|
+
install-runtime-deps:
|
|
5
|
+
description: "Install benchmark Python/R dependencies in the job environment"
|
|
6
|
+
required: false
|
|
7
|
+
default: "true"
|
|
8
|
+
r-version:
|
|
9
|
+
description: "R version to install for benchmark jobs"
|
|
10
|
+
required: false
|
|
11
|
+
default: "4.4.3"
|
|
12
|
+
runs:
|
|
13
|
+
using: composite
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout
|
|
16
|
+
uses: actions/checkout@v5
|
|
17
|
+
|
|
18
|
+
- name: Install Rust stable
|
|
19
|
+
uses: dtolnay/rust-toolchain@stable
|
|
20
|
+
|
|
21
|
+
- name: Set up Python
|
|
22
|
+
uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.11"
|
|
25
|
+
|
|
26
|
+
- name: Set up R
|
|
27
|
+
uses: ./.github/actions/setup-bench-r
|
|
28
|
+
with:
|
|
29
|
+
r-version: ${{ inputs.r-version }}
|
|
30
|
+
|
|
31
|
+
- name: Cache Python packages
|
|
32
|
+
uses: actions/cache@v4
|
|
33
|
+
with:
|
|
34
|
+
path: ~/.cache/pip
|
|
35
|
+
key: ${{ runner.os }}-bench-pip-${{ hashFiles('.github/actions/bench-setup/action.yml') }}
|
|
36
|
+
restore-keys: |
|
|
37
|
+
${{ runner.os }}-bench-pip-
|
|
38
|
+
|
|
39
|
+
- name: Cache R user library
|
|
40
|
+
uses: actions/cache@v4
|
|
41
|
+
with:
|
|
42
|
+
path: ${{ github.workspace }}/.r-lib
|
|
43
|
+
key: ${{ runner.os }}-bench-rlib-${{ hashFiles('.github/actions/bench-setup/action.yml') }}
|
|
44
|
+
restore-keys: |
|
|
45
|
+
${{ runner.os }}-bench-rlib-
|
|
46
|
+
|
|
47
|
+
- name: Cache cargo artifacts
|
|
48
|
+
uses: Swatinem/rust-cache@v2
|
|
49
|
+
|
|
50
|
+
- name: Install benchmark runtime deps
|
|
51
|
+
if: ${{ inputs.install-runtime-deps == 'true' }}
|
|
52
|
+
shell: bash
|
|
53
|
+
run: |
|
|
54
|
+
mkdir -p "${R_LIBS_USER}"
|
|
55
|
+
python3 --version
|
|
56
|
+
Rscript --version
|
|
57
|
+
python3 -m pip install --upgrade pip setuptools wheel
|
|
58
|
+
python3 -m pip install numpy pandas scikit-learn lifelines scikit-survival xgboost
|
|
59
|
+
Rscript -e 'install.packages(c("mgcv","jsonlite","survival","glmnet","gamlss","gamlss.dist","gamboostLSS","mboost","bamlss","brms"), repos="https://cloud.r-project.org", lib=Sys.getenv("R_LIBS_USER"), Ncpus=max(1L, parallel::detectCores()-1L))'
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: setup-bench-r
|
|
2
|
+
description: Set up R for benchmark jobs with an explicit fallback path
|
|
3
|
+
inputs:
|
|
4
|
+
r-version:
|
|
5
|
+
description: "R version to install for benchmark jobs"
|
|
6
|
+
required: false
|
|
7
|
+
default: "4.4.3"
|
|
8
|
+
runs:
|
|
9
|
+
using: composite
|
|
10
|
+
steps:
|
|
11
|
+
- name: Set up R with setup-r
|
|
12
|
+
id: setup-r
|
|
13
|
+
continue-on-error: true
|
|
14
|
+
uses: r-lib/actions/setup-r@v2
|
|
15
|
+
with:
|
|
16
|
+
r-version: ${{ inputs.r-version }}
|
|
17
|
+
|
|
18
|
+
- name: Install R from CRAN apt repo
|
|
19
|
+
if: ${{ steps.setup-r.outcome != 'success' }}
|
|
20
|
+
shell: bash
|
|
21
|
+
run: |
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
. /etc/os-release
|
|
24
|
+
sudo apt-get update
|
|
25
|
+
sudo apt-get install --yes --no-install-recommends ca-certificates dirmngr gpg wget
|
|
26
|
+
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc \
|
|
27
|
+
| gpg --dearmor \
|
|
28
|
+
| sudo tee /usr/share/keyrings/cran.gpg >/dev/null
|
|
29
|
+
echo "deb [signed-by=/usr/share/keyrings/cran.gpg] https://cloud.r-project.org/bin/linux/ubuntu ${VERSION_CODENAME}-cran40/" \
|
|
30
|
+
| sudo tee /etc/apt/sources.list.d/cran-r.list >/dev/null
|
|
31
|
+
sudo apt-get update
|
|
32
|
+
sudo apt-get install --yes --no-install-recommends r-base r-base-dev
|
|
33
|
+
|
|
34
|
+
- name: Verify R is available
|
|
35
|
+
shell: bash
|
|
36
|
+
run: |
|
|
37
|
+
set -euo pipefail
|
|
38
|
+
command -v Rscript
|
|
39
|
+
Rscript --version
|