use arco::cycle::{CycleConfig, run_cycle};
use clap::Parser;
#[derive(Parser)]
#[command(name = "arco", version, about)]
struct Cli {
#[arg(long, default_value = "300")]
train: usize,
#[arg(long, default_value = "100")]
test: usize,
#[arg(long, default_value = "3")]
vertices: usize,
#[arg(long, default_value = "10")]
ensemble: usize,
#[arg(long, default_value = "60")]
steps: usize,
#[arg(long, default_value = "1")]
window: usize,
#[arg(long, default_value = "compound")]
obs: String,
#[arg(long, default_value = "15")]
max_delta: usize,
#[arg(long, default_value = "10")]
shuffles: usize,
#[arg(long, default_value = "30")]
null: usize,
#[arg(long, default_value = "42")]
seed: u64,
#[arg(long)]
quick: bool,
}
fn main() {
let cli = Cli::parse();
let config = if cli.quick {
CycleConfig {
n_train: 20,
n_test: 5,
n_vertices: cli.vertices,
n_ensemble: 4,
steps: 10,
window_size: cli.window,
obs_name: cli.obs,
max_delta: cli.max_delta,
n_shuffles: cli.shuffles,
n_null_universes: 5,
seed: cli.seed,
}
} else {
CycleConfig {
n_train: cli.train,
n_test: cli.test,
n_vertices: cli.vertices,
n_ensemble: cli.ensemble,
steps: cli.steps,
window_size: cli.window,
obs_name: cli.obs,
max_delta: cli.max_delta,
n_shuffles: cli.shuffles,
n_null_universes: cli.null,
seed: cli.seed,
}
};
let record = run_cycle(&config);
println!("{}", record.summary());
}