use kurobako_core::{Error, Result};
use std::path::PathBuf;
use structopt::StructOpt;
pub mod surrogate;
#[derive(Debug, Clone, StructOpt)]
#[structopt(rename_all = "kebab-case")]
pub enum DatasetOpt {
Nasbench(NasbenchOpt),
Hpobench(HpobenchOpt),
SurrogateOptunaStudy(self::surrogate::SurrogateOpt),
}
impl DatasetOpt {
pub fn run(&self) -> Result<()> {
match self {
Self::Nasbench(opt) => track!(opt.run()),
Self::Hpobench(opt) => {
opt.run();
Ok(())
}
Self::SurrogateOptunaStudy(opt) => {
track!(opt.run())
}
}
}
}
#[derive(Debug, Clone, StructOpt)]
#[structopt(rename_all = "kebab-case")]
pub enum NasbenchOpt {
Url,
Convert {
tfrecord_format_dataset_path: PathBuf,
binary_format_dataset_path: PathBuf,
},
}
impl NasbenchOpt {
fn run(&self) -> Result<()> {
match self {
Self::Url => {
println!("https://storage.googleapis.com/nasbench/nasbench_full.tfrecord");
Ok(())
}
Self::Convert {
tfrecord_format_dataset_path,
binary_format_dataset_path,
} => {
eprintln!(
"Converting {:?}. It may take several minutes.",
tfrecord_format_dataset_path
);
let file = track!(
std::fs::File::open(&tfrecord_format_dataset_path).map_err(Error::from);
tfrecord_format_dataset_path
)?;
let nasbench = track!(nasbench::NasBench::from_tfrecord_reader(
std::io::BufReader::new(file),
false
))?;
let file =
track!(std::fs::File::create(binary_format_dataset_path).map_err(Error::from))?;
track!(nasbench.to_writer(std::io::BufWriter::new(file)))?;
eprintln!("Done!");
Ok(())
}
}
}
}
#[derive(Debug, Clone, StructOpt)]
#[structopt(rename_all = "kebab-case")]
pub enum HpobenchOpt {
Url,
}
impl HpobenchOpt {
fn run(&self) {
println!("http://ml4aad.org/wp-content/uploads/2019/01/fcnet_tabular_benchmarks.tar.gz");
}
}