From 1f16e7e2ea98e98421443163a7e7b2e496714823 Mon Sep 17 00:00:00 2001 From: STEVAN Antoine <antoine.stevan@isae-supaero.fr> Date: Mon, 27 May 2024 10:55:08 +0000 Subject: [PATCH] add timestamp to measurements and delay start (dragoon/komodo!111) - add a timestamp to all the measurements of the _diversity_ from `inbreeding/mod.rs` - allow to delay the measurement starts with `--measurement-schedule-start`, to help completing already existing measurements > :exclamation: **Important** > existing measurement files will have to change shape from > ``` > table<strategy: string, diversity: list<float>> > ``` > to > ``` > table<strategy: string, diversity: table<t: int, diversity: float>> > ``` --- examples/inbreeding/mod.rs | 11 ++++++++--- scripts/inbreeding/plot.nu | 2 +- scripts/inbreeding/run.nu | 18 ++++++++++++++---- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/examples/inbreeding/mod.rs b/examples/inbreeding/mod.rs index c01a0ece..cc2f524d 100644 --- a/examples/inbreeding/mod.rs +++ b/examples/inbreeding/mod.rs @@ -114,7 +114,7 @@ where for t in 0..=max_t { if measurement_schedule(t) { let inbreeding = measure_inbreeding(&shards, k, nb_measurements, &mp, &sty, rng); - println!("{}", inbreeding); + println!("{}, {}", t, inbreeding); } // decode the data @@ -164,7 +164,7 @@ where if measurement_schedule(t) { let inbreeding = measure_inbreeding(&shards, k, nb_measurements, &mp, &sty, rng); - println!("{}", inbreeding); + println!("{}, {}", t, inbreeding); } // recode a new random shard @@ -220,6 +220,8 @@ struct Cli { #[arg(long)] measurement_schedule: usize, + #[arg(long)] + measurement_schedule_start: usize, } fn main() { @@ -241,7 +243,10 @@ fn main() { "diversity will be measured every {} steps", cli.measurement_schedule ); - let measurement_schedule = |t| t % cli.measurement_schedule == 0; + let measurement_schedule = |t| { + t >= cli.measurement_schedule_start + && (t - cli.measurement_schedule_start) % cli.measurement_schedule == 0 + }; match cli.test_case { TestCase::EndToEnd => { diff --git a/scripts/inbreeding/plot.nu b/scripts/inbreeding/plot.nu index 3dc37dd7..17807e9f 100644 --- a/scripts/inbreeding/plot.nu +++ b/scripts/inbreeding/plot.nu @@ -54,7 +54,7 @@ export def main [data: path, --save: path, --options: record<k: int>] { } | update diversity {|it| let l = $it.diversity | length - $it.diversity | wrap y | merge (seq 0 $l | wrap x) | insert e 0 + $it.diversity | insert e 0 | rename --column { t: "x", diversity: "y" } } | rename --column { diversity: "points" } | insert style {|it| diff --git a/scripts/inbreeding/run.nu b/scripts/inbreeding/run.nu index 1326a2d9..d6cdc509 100644 --- a/scripts/inbreeding/run.nu +++ b/scripts/inbreeding/run.nu @@ -10,6 +10,7 @@ export def main [ nb_measurements: int, nb_scenarii: int, measurement_schedule: int, + measurement_schedule_start: int, max_t: int, strategies: list<string>, environment: string, @@ -22,6 +23,7 @@ export def main [ -n $options.n --nb-measurements $options.nb_measurements --measurement-schedule $options.measurement_schedule + --measurement-schedule-start $options.measurement_schedule_start -t $options.max_t --test-case end-to-end ] | lines | into float | save --force baseline.nuon @@ -37,17 +39,25 @@ export def main [ -n $options.n --nb-measurements $options.nb_measurements --measurement-schedule $options.measurement_schedule + --measurement-schedule-start $options.measurement_schedule_start -t $options.max_t --test-case recoding --strategy $s --environment $options.environment - ] | lines | into float + ] + | lines + | parse "{t}, {diversity}" + | into float diversity } let diversity = $res - | skip 1 - | reduce --fold $res.0 {|it, acc| $acc | zip $it | each { flatten }} - | each { math avg } + | flatten + | group-by t --to-table + | update items { get diversity | math avg } + | rename --column { group: "t", items: "diversity" } + | into int t # NOTE: $.t needs to be converted to int here because + # `group-by --to-table` converts the grouping key to + # string { strategy: $s, -- GitLab