public int NewSim(SimConfig cfg) { _simsMutex.WaitOne(); _count = _count + 1; _logger.LogInformation("Creating new sim id#{1}", _count); Simulation s; if (cfg == null) { s = new Simulation(); } else { s = new Simulation(cfg); } WebSimulationViewer w = new WebSimulationViewer(); s.AddView(w); s.RegisterListener(w); _sims.Add(s); _views.Add(w); _simsMutex.ReleaseMutex(); return(_count); }
private void applyButton_Click(object sender, EventArgs e) { SimConfig config = GetSimConfig(); if (config != null) { this.OnConfigChanged(GetSimConfig()); } }
public static void WriteToFile(this SimConfig config, string pathToSimulation) { var pathToPrivate = Path.Combine(pathToSimulation, PRIVATE_SUBDIRECTORY); if (!Directory.Exists(pathToPrivate)) { Directory.CreateDirectory(pathToPrivate); } var pathToConfig = Path.Combine(pathToPrivate, CONFIG_FILE_NAME); var toToml = ToToml(config); Toml.WriteFile(toToml, pathToConfig); }
public void Bind(ISimStatsType stats, ISimConfigType config) { if (_binded) { return; } CheckBindings(stats, config); config.Config.OnChanged += cfg => _config = cfg; stats.State.OnChanged += OnPublicStateChanged; ViewState.OnChanged += OnViewStateChanged; _publicState = stats.State; _binded = true; }
/// <summary> /// Build a SimConfig object from the GUI /// </summary> /// <returns>SimConfig as represented by the GUI elements</returns> private SimConfig GetSimConfig() { try { SimConfig config = new SimConfig() { Days = Convert.ToInt32(daysBox.Text), RootCouples = Convert.ToInt32(couplesBox.Text) }; return(config); } catch (Exception e) { MessageBox.Show("Could not create SimConfig: " + e.ToString()); return(null); } }
public static NumDataColumn[] TabulateTmplOutput(SimConfig config) { var tabulatedData = new List <NumDataColumn>(); var instance = REngine.GetInstance(); foreach (var value in config.SimOutput.SimValues) { var sexp = instance.GetSymbol(value.Name); var matrices = SexpToMatrices(sexp, value.Name); foreach (var matrix in matrices) { var columnNames = matrix.ColumnNames; var array = matrix.Array; if (null == columnNames) { var nColumns = array.GetLength(1); RequireTrue(1 == nColumns, "Multi-column output has no column names"); columnNames = new[] { value.Name }; // output was R vector } var toTabulate = value.SimElements.Select(e => e.Name).ToArray(); var excludedColumnIndexes = columnNames .Select((cn, i) => new { cn, i }) .Where(a => !toTabulate.Contains(a.cn)) .Select(a => a.i) .ToArray(); var numDataColumns = MatrixToNumDataColumns( array, columnNames, excludedColumnIndexes ); tabulatedData.AddRange(numDataColumns); } } return(tabulatedData.ToArray()); }
private void LoadConfig() { var source = Application.persistentDataPath; var file = $"{fileName}.json"; if (!Directory.Exists(source)) { throw new DirectoryNotFoundException(source); } var path = Path.Combine(source, file); if (!File.Exists(path)) { throw new FileNotFoundException($"{file} in {source}"); } var text = File.ReadAllText(path); _controlType.Config.Value = SimConfig.FromJson(text); _publicState.OnChanged -= ActivateOnState; _publicState.Value = SimStateType.Setup; }
/* Called when the SimConfig changes */ private void OnSimConfigChanged(SimConfig newConfig) { this.simConfig = newConfig; }
protected override void StartView() { ViewData.ViewConfig.OnChanged += cfg => _config = cfg; ViewData.ViewState.OnChanged += state => _state = state; }
public int NewSim(SimConfig cfg) { return(_mgr.NewSim(cfg)); }