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;
 }
Example #3
0
        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);
        }
Example #4
0
        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;
            }));
        }
Example #5
0
        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);
        }