Skip to content
Snippets Groups Projects

add an example to study the _recoding inbreeding_ phenomenon

Merged STEVAN Antoine requested to merge recoding-inbreeding into main
2 files
+ 13
6
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 12
6
@@ -85,6 +85,7 @@ use std::process::exit;
use ark_ff::PrimeField;
use clap::{Parser, ValueEnum};
use indicatif::ProgressBar;
use komodo::{
error::KomodoError,
fec::{self, Shard},
@@ -136,9 +137,9 @@ fn end_to_end<F: PrimeField>(
let original_shards = setup(bytes, k, n)?;
let mut shards = original_shards.clone();
for t in 0..max_t {
let pb = ProgressBar::new(max_t as u64);
for _ in 0..max_t {
let inbreeding = measure_inbreeding(&shards, k, nb_measurements, rng);
eprint!("t: {} / {}\r", t + 1, max_t);
println!("{}", inbreeding);
// decode the data
@@ -148,8 +149,11 @@ fn end_to_end<F: PrimeField>(
let encoding_mat = Matrix::vandermonde_unchecked(&[F::rand(rng)], k);
let new_shard = fec::encode(&data, &encoding_mat)?.first().unwrap().clone();
shards.push(new_shard);
pb.inc(1);
}
eprintln!();
pb.finish_with_message("done");
Ok(())
}
@@ -165,9 +169,9 @@ fn recoding<F: PrimeField>(
) -> Result<(), KomodoError> {
let mut shards = setup(bytes, k, n)?;
for t in 0..max_t {
let pb = ProgressBar::new(max_t as u64);
for _ in 0..max_t {
let inbreeding = measure_inbreeding(&shards, k, nb_measurements, rng);
eprint!("t: {} / {}\r", t + 1, max_t);
println!("{}", inbreeding);
// recode a new random shard
@@ -175,8 +179,10 @@ fn recoding<F: PrimeField>(
let s: Vec<_> = shards.iter().take(nb_shards_to_recode).cloned().collect();
let new_shard = fec::recode_with_coeffs(&s, &coeffs).unwrap();
shards.push(new_shard);
pb.inc(1);
}
eprintln!();
pb.finish_with_message("done");
Ok(())
}
Loading