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); }
IEnumerable <string> metricsFromExistingFile() { var csv = new CsvStreamer(allFile(), true); try { return(rest(list <string>(csv.header()))); } finally { csv.close(); } }
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"); }