static QFile hamsterfyMetricsFile(int id, QFile metricsFile) { var hamster = hamsterMetricsFile(id, metricsFile); info("starting write to hamster db: " + hamster); var db = new Database(); db.Create(hamster.path()); var metricCsv = new CsvStreamer(metricsFile, true); var fileMetricNames = rest(list <string>(metricCsv.header())); var runs = new List <int>(); eachUntilNull(() => metricCsv.next(), jRecord => { var record = list <string>(jRecord); var run = int.Parse(first(record)); runs.Add(run); var doubles = array(convert(rest(record), s => STOMetricsWriter.fromMetricCsv(s))); var bytes = new byte[doubles.Length * 8]; Buffer.BlockCopy(doubles, 0, bytes, 0, bytes.Length); db.Insert(runKey(run), bytes); }); db.Insert(METRICS_KEY, serialize(list(fileMetricNames))); db.Insert(RUNS_KEY, serialize(runs)); insertMetricSortedRuns(db); db.Close(); info("done hamster write"); return(hamster); }
public List <int> completedRuns() { var all = allFile(); if (!all.exists()) { return(new List <int>()); } var csv = new CsvStreamer(all, true); var result = new List <int>(); while (trueDat()) { var next = csv.next(); if (next == null) { break; } var record = list <string>(next); result.Add(int.Parse(first(record))); } return(result); }
static void hamsterfyParametersFile(int id, QFile paramsFile) { var hamster = hamsterParametersFile(id, paramsFile); info("starting write to hamster db: " + hamster); var db = new Database(); db.Create(hamster.path()); var paramCsv = new CsvStreamer(paramsFile, true); var fileParamNames = rest(list <string>(paramCsv.header())); var runs = new List <int>(); eachUntilNull(() => paramCsv.next(), jRecord => { var record = list <string>(jRecord); var run = int.Parse(first(record)); runs.Add(run); db.Insert(runKey(run), serialize(list(rest(record)))); }); db.Insert(PARAMS_KEY, serialize(list(fileParamNames))); db.Insert(RUNS_KEY, serialize(runs)); insertParameterSortedRuns(db); db.Close(); info("done hamster write"); }