public Simulation(SimConfigurator configurator) { if (configurator == null) throw new ArgumentNullException("configurator"); _configurator = configurator; _previous_config_string = _configurator.SerializeSimConfigToString(); }
public MainWindow() { InitializeComponent(); // NOTE: Uncomment this to recreate initial XML scenario file // this.CreateAndSerializeScenario(); configurator = new SimConfigurator(filename); configurator.DeserializeSimConfig(); // TODO: Should make sure region 0 is always selected first... configurator.SimConfig.scenario.regions[region_list_selected_idx].region_box_spec.PropertyChanged += this.SimConfig_PropertyChanged; // Set the data context for the main tab control config GUI this.ConfigTabControl.DataContext = configurator.SimConfig; sim = new Simulation(configurator); this.SetUpRenderWindow(); // Should be able to do this in the xaml... CollectionViewSource ldv = this.Resources["regionsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.scenario.regions; } ldv = this.Resources["cellsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.scenario.cellsets; } ldv = this.Resources["solfacsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.scenario.solfacs; } ldv = this.Resources["solfacTypesListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.entity_repository.solfac_types; } ldv = this.Resources["cellTypesListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.entity_repository.cell_types; } ldv = this.Resources["gaussianGradientsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.entity_repository.gaussian_gradients; } ldv = this.Resources["globalParameterTypesListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.global_parameters; } }
public MainWindow() { InitializeComponent(); // NOTE: Uncomment this to recreate initial XML scenario file // this.CreateAndSerializeScenario(); configurator = new SimConfigurator(filename); configurator.DeserializeSimConfig(); // TODO: Should make sure region 0 is always selected first... configurator.SimConfig.scenario.regions[region_list_selected_idx].region_box_spec.PropertyChanged += this.SimConfig_PropertyChanged; // Set the data context for the main tab control config GUI this.ConfigTabControl.DataContext = configurator.SimConfig; sim = new Simulation(configurator); this.SetUpRenderWindow(); // Should be able to do this in the xaml... CollectionViewSource ldv = this.Resources["regionsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.scenario.regions; } ldv = this.Resources["cellsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.scenario.cellsets; } ldv = this.Resources["solfacsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.scenario.solfacs; } ldv = this.Resources["solfacTypesListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.entity_repository.solfac_types; } ldv = this.Resources["cellTypesListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.entity_repository.cell_types; } ldv = this.Resources["gaussianGradientsListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.entity_repository.gaussian_gradients; } ldv = this.Resources["globalParameterTypesListView"] as CollectionViewSource; if (ldv != null) { ldv.Source = configurator.SimConfig.global_parameters; } }
public Simulation(SimConfigurator configurator) { if (configurator == null) { throw new ArgumentNullException("configurator"); } _configurator = configurator; _previous_config_string = _configurator.SerializeSimConfigToString(); }
public void CreateAndSerializeScenario() { var config = new SimConfigurator(filename); var sim_config = config.SimConfig; // Experiment sim_config.experiment_name = "Test experiment for XML serialization"; sim_config.scenario.time_config.duration = 100; sim_config.scenario.time_config.timestep = 3; // Global Paramters sim_config.LoadDefaultGlobalParameters(); // Entity Repository EntityRepository repository = new EntityRepository(); // Possible solfac types SolfacType st = new SolfacType(); st.solfac_type_name = "ccr7"; repository.solfac_types.Add(st); st = new SolfacType(); st.solfac_type_name = "cxcl13"; repository.solfac_types.Add(st); // Possible cell types CellType ct = new CellType(); ct.cell_type_name = "bcell"; ct.LoadDefaultMotileCellParams(); repository.cell_types.Add(ct); ct = new CellType(); ct.cell_type_name = "tcell"; ct.LoadDefaultMotileCellParams(); repository.cell_types.Add(ct); sim_config.entity_repository = repository; // Gaussian Gradients GaussianSpecification gg = new GaussianSpecification(); gg.gaussian_spec_name = "Default on-center gradient"; sim_config.entity_repository.gaussian_gradients.Add(gg); // Regions (not part of repository right now...) sim_config.scenario.regions.Add(new Region("Sphere", RegionShape.Ellipsoid)); sim_config.scenario.regions.Add(new Region("Cube", RegionShape.Rectangular)); // Cells CellSet cs = new CellSet(); cs.cell_name = "Generic motile bcell"; cs.cell_type_ref = sim_config.entity_repository.cell_types[0].cell_type_name; cs.number = 200; cs.cells_constrained_to_region = true; cs.region_name_ref = sim_config.scenario.regions[0].region_name; cs.wrt_region = RelativePosition.Inside; sim_config.scenario.cellsets.Add(cs); cs = new CellSet(); cs.cell_name = "Generic motile tcell"; cs.cell_type_ref = sim_config.entity_repository.cell_types[1].cell_type_name; cs.number = 200; cs.cells_constrained_to_region = true; cs.region_name_ref = sim_config.scenario.regions[1].region_name; cs.wrt_region = RelativePosition.Outside; sim_config.scenario.cellsets.Add(cs); // Solfacs Solfac solfac = new Solfac(); solfac.solfac_name = "Gauss"; solfac.solfac_type_ref = sim_config.entity_repository.solfac_types[0].solfac_type_name; SolfacGaussianGradient sgg = new SolfacGaussianGradient(); sgg.gaussian_spec_name_ref = sim_config.entity_repository.gaussian_gradients[0].gaussian_spec_name; solfac.solfac_distribution = sgg; sim_config.scenario.solfacs.Add(solfac); solfac = new Solfac(); solfac.solfac_name = "Lin"; SolfacLinearGradient sll = new SolfacLinearGradient(); sll.min_concentration = 20; sll.max_concentration = 150; solfac.solfac_distribution = sll; solfac.solfac_type_ref = sim_config.entity_repository.solfac_types[1].solfac_type_name; solfac.solfac_is_time_varying = false; sim_config.scenario.solfacs.Add(solfac); solfac = new Solfac(); solfac.solfac_name = "Homog"; solfac.solfac_type_ref = sim_config.entity_repository.solfac_types[1].solfac_type_name; solfac.solfac_is_time_varying = true; solfac.solfac_amplitude_keyframes.Add(new TimeAmpPair(0, 1)); sim_config.scenario.solfacs.Add(solfac); // Write out XML file config.SerializeSimConfigToFile(); }
public void CreateAndSerializeScenario() { var config = new SimConfigurator(filename); var sim_config = config.SimConfig; // Experiment sim_config.experiment_name = "Test experiment for XML serialization"; sim_config.scenario.time_config.duration = 100; sim_config.scenario.time_config.timestep = 3; // Global Paramters sim_config.LoadDefaultGlobalParameters(); // Entity Repository EntityRepository repository = new EntityRepository(); // Possible solfac types SolfacType st = new SolfacType(); st.solfac_type_name = "ccr7"; repository.solfac_types.Add(st); st = new SolfacType(); st.solfac_type_name = "cxcl13"; repository.solfac_types.Add(st); // Possible cell types CellType ct = new CellType(); ct.cell_type_name = "bcell"; ct.LoadDefaultMotileCellParams(); repository.cell_types.Add(ct); ct = new CellType(); ct.cell_type_name = "tcell"; ct.LoadDefaultMotileCellParams(); repository.cell_types.Add(ct); sim_config.entity_repository = repository; // Gaussian Gradients GaussianSpecification gg = new GaussianSpecification(); gg.gaussian_spec_name = "Default on-center gradient"; sim_config.entity_repository.gaussian_gradients.Add(gg); // Regions (not part of repository right now...) sim_config.scenario.regions.Add(new Region("Sphere", RegionShape.Ellipsoid)); sim_config.scenario.regions.Add(new Region("Cube", RegionShape.Rectangular)); // Cells CellSet cs = new CellSet(); cs.cell_name = "Generic motile bcell"; cs.cell_type_ref = sim_config.entity_repository.cell_types[0].cell_type_name; cs.number = 200; cs.cells_constrained_to_region = true; cs.region_name_ref = sim_config.scenario.regions[0].region_name; cs.wrt_region = RelativePosition.Inside; sim_config.scenario.cellsets.Add(cs); cs = new CellSet(); cs.cell_name = "Generic motile tcell"; cs.cell_type_ref = sim_config.entity_repository.cell_types[1].cell_type_name; cs.number = 200; cs.cells_constrained_to_region = true; cs.region_name_ref = sim_config.scenario.regions[1].region_name; cs.wrt_region = RelativePosition.Outside; sim_config.scenario.cellsets.Add(cs); // Solfacs Solfac solfac = new Solfac(); solfac.solfac_name = "Gauss"; solfac.solfac_type_ref = sim_config.entity_repository.solfac_types[0].solfac_type_name; SolfacGaussianGradient sgg = new SolfacGaussianGradient(); sgg.gaussian_spec_name_ref = sim_config.entity_repository.gaussian_gradients[0].gaussian_spec_name; solfac.solfac_distribution = sgg; sim_config.scenario.solfacs.Add(solfac); solfac = new Solfac(); solfac.solfac_name = "Lin"; SolfacLinearGradient sll = new SolfacLinearGradient(); sll.min_concentration = 20; sll.max_concentration = 150; solfac.solfac_distribution = sll; solfac.solfac_type_ref = sim_config.entity_repository.solfac_types[1].solfac_type_name; solfac.solfac_is_time_varying = false; sim_config.scenario.solfacs.Add(solfac); solfac = new Solfac(); solfac.solfac_name = "Homog"; solfac.solfac_type_ref = sim_config.entity_repository.solfac_types[1].solfac_type_name; solfac.solfac_is_time_varying = true; solfac.solfac_amplitude_keyframes.Add(new TimeAmpPair(0, 1)); sim_config.scenario.solfacs.Add(solfac); // Write out XML file config.SerializeSimConfigToFile(); }