From 88b3e950f9589ec1d425c5334b27dd63d5b6bb8e Mon Sep 17 00:00:00 2001
From: "a.stevan" <antoine.stevan@isae-supaero.fr>
Date: Mon, 3 Jun 2024 13:35:17 +0200
Subject: [PATCH] scripts

---
 bins/inbreeding/README.md       | 52 ++----------------------------
 bins/inbreeding/scripts/plot.nu | 11 +++++++
 bins/inbreeding/scripts/run.nu  | 57 +++++++++++++++++++++++++++++++++
 bins/inbreeding/scripts/show.nu | 55 +++++++++++++++++++++++++++++++
 4 files changed, 125 insertions(+), 50 deletions(-)
 create mode 100644 bins/inbreeding/scripts/plot.nu
 create mode 100644 bins/inbreeding/scripts/run.nu
 create mode 100644 bins/inbreeding/scripts/show.nu

diff --git a/bins/inbreeding/README.md b/bins/inbreeding/README.md
index 32e32cac..cb18b6b1 100644
--- a/bins/inbreeding/README.md
+++ b/bins/inbreeding/README.md
@@ -3,53 +3,5 @@
 - plot the results with [`inbreeding plot`](./src/.nushell/plot.nu)
 
 # Example
-```bash
-use ./bins/inbreeding
-```
-```bash
-const PRNG_SEED = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-const OPTS = {
-    nb_bytes: (10 * 1_024),
-    k: 10,
-    n: 20,
-    nb_measurements: 10,
-    nb_scenarii: 100,
-    measurement_schedule: 1,
-    measurement_schedule_start: 0,
-    max_t: 150,
-    strategies: [
-        "single:1",
-        "double:0.5:1:2",
-        "single:2"
-        "double:0.5:2:3",
-        "single:3"
-        "single:5",
-        "single:10",
-    ],
-    environment: "fixed:0",
-}
-```
-```bash
-inbreeding build
-```
-```bash
-inbreeding run --options $OPTS --prng-seed $PRNG_SEED
-```
-```bash
-let experiment = $"($PRNG_SEED)-($OPTS.environment)-($OPTS.k)-($OPTS.n)-($OPTS.nb_bytes)"
-inbreeding load $experiment | inbreeding plot
-```
-
-## plot all experiments
-```bash
-use bins/inbreeding/src/.nushell/consts.nu CACHE
-use bins/inbreeding
-
-const FIGURES_DIR = ($CACHE | path join figures)
-
-mkdir $FIGURES_DIR
-
-for exp in (inbreeding list) {
-    inbreeding load $exp | inbreeding plot --save ($FIGURES_DIR | path join $exp)
-}
-```
+see [run](scripts/run.nu)
+see [plot](scripts/plot.nu)
diff --git a/bins/inbreeding/scripts/plot.nu b/bins/inbreeding/scripts/plot.nu
new file mode 100644
index 00000000..335746c2
--- /dev/null
+++ b/bins/inbreeding/scripts/plot.nu
@@ -0,0 +1,11 @@
+use ../src/.nushell/consts.nu CACHE
+use ../
+
+const FIGURES_DIR = ($CACHE | path join figures)
+
+mkdir $FIGURES_DIR
+
+for exp in (inbreeding list) {
+    let img = $FIGURES_DIR | path join $exp | path parse --extension '' | update extension "png" | path join
+    inbreeding load $exp | inbreeding plot --save $img
+}
diff --git a/bins/inbreeding/scripts/run.nu b/bins/inbreeding/scripts/run.nu
new file mode 100644
index 00000000..aac3c586
--- /dev/null
+++ b/bins/inbreeding/scripts/run.nu
@@ -0,0 +1,57 @@
+use ../
+
+const OPTS = {
+    nb_bytes: (10 * 1_024),
+    k: 10,
+    n: null,
+    nb_measurements: 100,
+    nb_scenarii: 100,
+    measurement_schedule: 1,
+    measurement_schedule_start: 0,
+    max_t: 150,
+    strategies: [
+        "single:1",
+        "single:2",
+        "single:3"
+        "single:4"
+        "single:5",
+        "single:6",
+        "single:7",
+        "single:8",
+        "single:9",
+        "single:10",
+    ],
+    environment: null,
+}
+
+const RHOS = [ (1 / 2), (1 / 3), (1 / 5), (1 / 10) ]
+
+const ENVS = [
+    "fixed:0",
+    "random-fixed:0.1:1",
+    "random-fixed:0.2:1",
+    "random-fixed:0.3:1",
+    "random-fixed:0.4:1",
+    "random-fixed:0.5:1",
+    "random-fixed:0.6:1",
+    "random-fixed:0.7:1",
+    "random-fixed:0.8:1",
+    "random-fixed:0.9:1",
+    "fixed:1",
+]
+
+def prod [a: list, b: list]: [ nothing -> list<list> ] {
+    $a | each { |ia| $b | each { |ib| [$ia, $ib] }} | flatten
+}
+
+def main [
+    --nb-threads: int = 8,
+    --prng-seed: string = "0000000000000000000000000000000000000000000000000000000000000000",
+] {
+    inbreeding build
+
+    prod $RHOS $ENVS | par-each --threads $nb_threads { |exp|
+        let opts = $OPTS | update n ($OPTS.k / $exp.0 | math round --precision 0) | update environment $exp.1
+        inbreeding run --options $opts --prng-seed $prng_seed
+    }
+}
diff --git a/bins/inbreeding/scripts/show.nu b/bins/inbreeding/scripts/show.nu
new file mode 100644
index 00000000..15e22d99
--- /dev/null
+++ b/bins/inbreeding/scripts/show.nu
@@ -0,0 +1,55 @@
+use ../src/.nushell/consts.nu CACHE
+use ../src/.nushell/path.nu [ "remove-cache-prefix" ]
+use ../src/.nushell/parse.nu [ "parse full-experiment" ]
+
+const SEED = "b239e48345ac457b492cc164f58c010d07292c88e4791e607d91796baec7f334"
+let k = 10
+
+# # Example
+# ``nushell
+# # sort files based on their file extensions
+# ls | where type == file | sort-by-closure { get name | path parse | get extension }
+# ``
+# ---
+# ``
+# ─┬───────────────────
+# 0│LICENSE
+# 1│Cargo.lock
+# 2│CODE_OF_CONDUCT.md
+# 3│CONTRIBUTING.md
+# 4│README.md
+# 5│toolkit.nu
+# 6│Cargo.toml
+# 7│Cross.toml
+# 8│rust-toolchain.toml
+# 9│typos.toml
+# ─┴───────────────────
+# ``
+def sort-by-closure [key: closure]: list -> list {
+    insert __key__ { do $key $in } | sort-by __key__ | reject __key__
+}
+
+def show [x: string] {
+    $CACHE
+        | path join figures $"($SEED)-($x).png"
+        | into glob
+        | ls $in
+        | sort-by-closure {
+            get name
+                | remove-cache-prefix
+                | path parse --extension 'png'
+                | reject extension
+                | path join
+                | parse full-experiment
+                | get n
+        }
+        | feh ...$in.name
+}
+
+show $"fixed:0-($k)-*-*"
+show $"random-fixed:0.5:1-($k)-*-*"
+show $"fixed:1-($k)-*-*"
+show $"*-($k)-20-*"
+show $"*-($k)-30-*"
+show $"*-($k)-50-*"
+show $"*-($k)-100-*"
-- 
GitLab