Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions .github/workflows/calkit-run.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Run Calkit pipeline

on:
push:
branches:
- main
pull_request:

permissions:
contents: write

# Make sure we only ever run one per branch so we don't have issues pushing
# after running the pipeline
concurrency:
group: calkit-run-${{ github.ref }}
cancel-in-progress: true

jobs:
main:
name: Run
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# For PRs, checkout the head ref to avoid detached HEAD
ref: ${{ github.head_ref || github.ref_name }}
token: ${{ secrets.GITHUB_TOKEN }}
submodules: true
- name: Configure Git credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Setup uv
uses: astral-sh/setup-uv@v5
- name: Install Calkit
run: uv tool install calkit-python
- name: Setup matlab
uses: matlab-actions/setup-matlab@v2
with:
cache: true
release: R2024b
products: >
Parallel_Computing_Toolbox
Global_Optimization_Toolbox
Optimization_Toolbox
Statistics_and_Machine_Learning_Toolbox
MATLAB_Report_Generator
Simulink
Simscape
Simscape_Multibody
- name: Run Calkit
uses: calkit/run-action@378d217f814687b57b1b71fd710c43e8c75dfdef
with:
dvc_token: ${{ secrets.CALKIT_DVC_TOKEN }}
matlab: true
18 changes: 9 additions & 9 deletions calkit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@ title: MATLAB example
description: >
This project shows how to incorporate MATLAB into a reproducible
research project.
environments:
matlab:
kind: matlab
version: R2024b
products:
- Statistics_and_Machine_Learning_Toolbox
- Parallel_Computing_Toolbox
# environments:
# matlab:
# kind: matlab
# version: R2024b
# products:
# - Statistics_and_Machine_Learning_Toolbox
# - Parallel_Computing_Toolbox
pipeline:
stages:
collect-data:
kind: matlab-script
environment: matlab
environment: _system
script_path: scripts/collect_data.m
outputs:
- data/raw/data.parquet
plot-data:
kind: matlab-script
environment: matlab
environment: _system
script_path: scripts/plot_data.m
outputs:
- figures/plot.png
Expand Down
34 changes: 14 additions & 20 deletions dvc.lock
Original file line number Diff line number Diff line change
Expand Up @@ -13,50 +13,44 @@ stages:
md5: 0b2be6aa89192942ea0e1263f9f7e55c
size: 384
plot-data:
cmd: calkit xenv -n matlab --no-check -- "run('scripts/plot_data.m');"
cmd: matlab -batch "run('scripts/plot_data.m');"
deps:
- path: .calkit/env-locks/matlab.json
hash: md5
md5: 074a6771582255a621b5fda8cb2cc2d3
size: 5082
- path: data/raw/data.parquet
hash: md5
md5: 7d4fadae29fbf5fdf9eedc81a9f0cc9e
md5: e901c02a1a54165d5e6d5d5973d594e6
size: 9853
- path: scripts/plot_data.m
hash: md5
md5: dd5ffb54107b06b64d0f3fb5be4429f9
size: 144
md5: ba7e2fcc376bc1f4b17fca546082cf7b
size: 148
outs:
- path: figures/plot.png
hash: md5
md5: 0459648a57a7fd45c8264e4902a15494
size: 79715
md5: 8d280eaa88e1604646333ac52bbc2cc1
size: 39730
collect-data:
cmd: calkit xenv -n matlab --no-check -- "run('scripts/collect_data.m');"
cmd: matlab -batch "run('scripts/collect_data.m');"
deps:
- path: .calkit/env-locks/matlab.json
hash: md5
md5: 074a6771582255a621b5fda8cb2cc2d3
size: 5082
- path: scripts/collect_data.m
hash: md5
md5: e9f0c4b4277e253b9034dbc7e5495058
size: 142
md5: 990ebc3af464a6d91033e2450c9522e3
size: 174
outs:
- path: data/raw/data.parquet
hash: md5
md5: 7d4fadae29fbf5fdf9eedc81a9f0cc9e
md5: e901c02a1a54165d5e6d5d5973d594e6
size: 9853
_check_env_matlab:
cmd: calkit check matlab-env --name matlab --output .calkit/env-locks/matlab.json
cmd: calkit check matlab-env --name matlab --output
.calkit/env-locks/matlab.json
outs:
- path: .calkit/env-locks/matlab.json
hash: md5
md5: 71c8f7b71fac0c8a028a0b11a25cb685
size: 806
_check-env-matlab:
cmd: calkit check matlab-env --name matlab --output .calkit/env-locks/matlab.json
cmd: calkit check matlab-env --name matlab --output
.calkit/env-locks/matlab.json
outs:
- path: .calkit/env-locks/matlab.json
hash: md5
Expand Down
18 changes: 6 additions & 12 deletions dvc.yaml
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
stages:
_check-env-matlab:
cmd: calkit check matlab-env --name matlab --output .calkit/env-locks/matlab.json
deps: []
outs:
- .calkit/env-locks/matlab.json:
cache: false
persist: true
always_changed: true
collect-data:
cmd: calkit xenv -n matlab --no-check -- "run('scripts/collect_data.m');"
cmd: matlab -batch "run('scripts/collect_data.m');"
deps:
- scripts/collect_data.m
- .calkit/env-locks/matlab.json
outs:
- data/raw/data.parquet
desc: Automatically generated from the 'collect-data' stage in
calkit.yaml. Changes made here will be overwritten.
plot-data:
cmd: calkit xenv -n matlab --no-check -- "run('scripts/plot_data.m');"
cmd: matlab -batch "run('scripts/plot_data.m');"
deps:
- scripts/plot_data.m
- data/raw/data.parquet
- .calkit/env-locks/matlab.json
outs:
- figures/plot.png
desc: Automatically generated from the 'plot-data' stage in
calkit.yaml. Changes made here will be overwritten.
8 changes: 7 additions & 1 deletion scripts/collect_data.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
disp("Processing data");

% Set random seed
rng(432);

voltage = rand(1000, 1);
data = table(voltage);

mkdir("../data/raw");
parquetwrite("../data/raw/data.parquet", data);

parquetwrite("../data/raw/data.parquet", data);
5 changes: 4 additions & 1 deletion scripts/plot_data.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
disp("Plotting");

data = parquetread("../data/raw/data.parquet");

plot(data, "voltage");

mkdir("../figures");
saveas(gcf, "../figures/plot.png")
saveas(gcf, "../figures/plot.png")
Loading