private IMoBiSimulation createSimulation(IModel model) { //update the building block configuration to now use clones var simulationBuildConfiguration = _buildConfigurationFactory.CreateFromTemplateClones(_buildConfiguration); var simulation = _simulationFactory.CreateFrom(simulationBuildConfiguration, model).WithName(_simulationDTO.Name); simulation.HasChanged = true; return(simulation); }
private void createSimulation(Simulation originalSimulation) { //nothing changed if (SimulationCreated) { return; } Simulation = _simulationFactory.CreateFrom(selectedSubject, selectedCompounds, modelSelectionPresenter.ModelProperties, originalSimulation); Simulation.AllowAging = subjectConfigurationPresenter.AllowAging; SimulationCreated = true; }
public Model.Simulation CreateModelLessSimulationWith(SimulationConstruction simulationConstruction) { var sim = _simulationFactory.CreateFrom(simulationConstruction.SimulationSubject, simulationConstruction.TemplateCompounds, simulationConstruction.ModelProperties); sim.Name = simulationConstruction.SimulationName; for (int index = 0; index < simulationConstruction.TemplateCompounds.Count; index++) { var compoundProperties = sim.CompoundPropertiesList[index]; var compound = compoundProperties.Compound; //for now: only simple protocol var simpleProtocol = simulationConstruction.TemplateProtocols[index] as SimpleProtocol; if (simpleProtocol != null && simpleProtocol.ApplicationType.NeedsFormulation && simulationConstruction.TemplateFormulation != null) { simpleProtocol.FormulationKey = simulationConstruction.TemplateFormulation.Name; compoundProperties.ProtocolProperties.AddFormulationMapping(new FormulationMapping { FormulationKey = simulationConstruction.TemplateFormulation.Name, TemplateFormulationId = simulationConstruction.TemplateFormulation.Id }); } var processes = compoundProperties.Processes; //add all systemic processes addSystemicProcesses(compound, processes.MetabolizationSelection, SystemicProcessTypes.Hepatic); addSystemicProcesses(compound, processes.TransportAndExcretionSelection, SystemicProcessTypes.GFR); addSystemicProcesses(compound, processes.TransportAndExcretionSelection, SystemicProcessTypes.Renal); addSystemicProcesses(compound, processes.TransportAndExcretionSelection, SystemicProcessTypes.Biliary); //add all partial processes var individual = simulationConstruction.SimulationSubject as Model.Individual ?? simulationConstruction.SimulationSubject.DowncastTo <Population>().FirstIndividual; addPartialProcesses <EnzymaticProcess, IndividualEnzyme, EnzymaticProcessSelection>(compound, individual, processes.MetabolizationSelection); addPartialProcesses <TransportPartialProcess, IndividualTransporter, ProcessSelection>(compound, individual, processes.TransportAndExcretionSelection); addPartialProcesses <SpecificBindingPartialProcess, IndividualMolecule, ProcessSelection>(compound, individual, processes.SpecificBindingSelection); _buildingBlockUpdater.UpdateMultipleUsedBuildingBlockInSimulationFromTemplate(sim, simulationConstruction.TemplateProtocols.Where(p => p != null), PKSimBuildingBlockType.Protocol); var templateProtocol = simulationConstruction.TemplateProtocols[index]; if (templateProtocol != null) { compoundProperties.ProtocolProperties.Protocol = sim.AllBuildingBlocks <Protocol>().FindByName(templateProtocol.Name); } if (simulationConstruction.TemplateFormulation != null) { _buildingBlockUpdater.UpdateMultipleUsedBuildingBlockInSimulationFromTemplate(sim, new[] { simulationConstruction.TemplateFormulation }, PKSimBuildingBlockType.Formulation); } } simulationConstruction.Interactions.Each(sim.InteractionProperties.AddInteraction); sim.AllowAging = simulationConstruction.AllowAging; return(sim); }
private Task <IndividualSimulation> createNewSimulationBasedOn(IndividualSimulation individualSimulation, IPKSimProject project) { return(Task.Run(() => { var otherSimulation = _executionContext.Clone(individualSimulation); var individual = allTemplateBuildingBlocksFor <Individual>(otherSimulation, project).First(); var compounds = allTemplateBuildingBlocksFor <Compound>(otherSimulation, project); otherSimulation = _simulationFactory.CreateFrom(individual, compounds, otherSimulation.ModelProperties, otherSimulation) .DowncastTo <IndividualSimulation>(); _simulationModelCreator.CreateModelFor(otherSimulation); _executionContext.Register(otherSimulation); return otherSimulation; })); }
private async Task <ModelSimulation> createModelLessSimulationFrom(SnapshotSimulation snapshot, PKSimProject project) { var simulationSubject = simulationSubjectFrom(snapshot, project); var compounds = compoundsFrom(snapshot.Compounds, project); var modelProperties = modelPropertiesFrom(snapshot.Model, simulationSubject); var simulation = _simulationFactory.CreateFrom(simulationSubject, compounds, modelProperties); MapSnapshotPropertiesToModel(snapshot, simulation); await mapCompoundProperties(simulation, snapshot.Compounds, project); simulation.EventProperties = await mapEventProperties(snapshot.Events, project); await updateInteractonProperties(simulation, snapshot.Interactions, project); //Once all used building blocks have been set, we need to ensure that they are also synchronized in the simulation updateUsedBuildingBlockInSimulation(simulation, project); return(simulation); }
public IMoBiSimulation CloneSimulation(IMoBiSimulation simulationToClone) { var buildConfig = new MoBiBuildConfiguration { MoleculesInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.MoleculesInfo), ReactionsInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.ReactionsInfo), SpatialStructureInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.SpatialStructureInfo), PassiveTransportsInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.PassiveTransportsInfo), ObserversInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.ObserversInfo), EventGroupsInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.EventGroupsInfo), ParameterStartValuesInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.ParameterStartValuesInfo), MoleculeStartValuesInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.MoleculeStartValuesInfo), SimulationSettingsInfo = CloneBuidingBlockInfo(simulationToClone.MoBiBuildConfiguration.SimulationSettingsInfo) }; var model = _cloneManagerForModel.CloneModel(simulationToClone.Model); var simulation = _simulationFactory.CreateFrom(buildConfig, model); simulation.UpdatePropertiesFrom(simulationToClone, _cloneManagerForModel); return(simulation); }