コード例 #1
0
        protected override void Context()
        {
            base.Context();
            var existingProcess = new TFirstProcess {
                MoleculeName = "CYP", DataSource = "Lab", Id = "1"
            };

            _newProcess = new TFirstProcess {
                MoleculeName = "CYP", DataSource = "Lab2", Id = "2"
            };
            _compoundProcessNode1 = new CompoundProcessNode(existingProcess);
            _compoundProcessNode2 = new CompoundProcessNode(_newProcess);

            _moleculeNode1 = new PartialProcessMoleculeNode("CYP", new TFirstProcess());
            _moleculeNode1.AddChild(_compoundProcessNode1);

            var moleculeNode2 = new PartialProcessMoleculeNode("CYP", new TSeconProcess());

            moleculeNode2.AddChild(_compoundProcessNode2);

            A.CallTo(() => _partialProcessNodeMapper.MapFrom(existingProcess)).Returns(_moleculeNode1);
            A.CallTo(() => _partialProcessNodeMapper.MapFrom(_newProcess)).Returns(moleculeNode2);

            A.CallTo(() => _view.TreeView.NodeById(_moleculeNode1.Id)).Returns(_moleculeNode1);

            sut.Handle(new AddCompoundProcessEvent {
                Entity = existingProcess
            });
        }
コード例 #2
0
        public override void GlobalContext()
        {
            base.GlobalContext();
            _transporter = _transporterFactory.CreateFor(_individual, "TRANS", TransportType.Efflux).DowncastTo <IndividualTransporter>();
            var transportContainer = _individual.AllMoleculeContainersFor <TransporterExpressionContainer>(_transporter)
                                     .First(x => x.LogicalContainer.IsNamed(CoreConstants.Organ.BRAIN));

            transportContainer.TransportDirection = TransportDirectionId.InfluxBrainPlasmaToInterstitial;

            _individual.AddMolecule(_transporter);
            _transportProcess = _cloneManager.Clone(_compoundProcessRepository.ProcessByName(CoreConstantsForSpecs.Process.ACTIVE_TRANSPORT_SPECIFIC_MM)
                                                    .DowncastTo <PartialProcess>());
            _transportProcess.Name = "My Transport Process";
            _compound.AddProcess(_transportProcess);

            _simulation = DomainFactoryForSpecs.CreateModelLessSimulationWith(_individual, _compound, _protocol)
                          .DowncastTo <IndividualSimulation>();

            _simulation.CompoundPropertiesList.First()
            .Processes
            .TransportAndExcretionSelection
            .AddPartialProcessSelection(new EnzymaticProcessSelection
            {
                CompoundName = _compound.Name, ProcessName = _transportProcess.Name, MoleculeName = _transporter.Name
            });

            DomainFactoryForSpecs.AddModelToSimulation(_simulation);
        }
コード例 #3
0
        public RootNodeType MapFrom(PartialProcess partialProcess)
        {
            var type = partialProcess.GetType();

            if (type.IsAnImplementationOf <EnzymaticProcess>())
            {
                return(PKSimRootNodeTypes.CompoundMetabolizingEnzymes);
            }

            if (type.IsAnImplementationOf <SpecificBindingPartialProcess>())
            {
                return(PKSimRootNodeTypes.CompoundProteinBindingPartners);
            }

            if (type.IsAnImplementationOf <InhibitionProcess>())
            {
                return(PKSimRootNodeTypes.InhibitionProcess);
            }

            if (type.IsAnImplementationOf <InductionProcess>())
            {
                return(PKSimRootNodeTypes.InductionProcess);
            }

            if (type.IsAnImplementationOf <TransportPartialProcess>())
            {
                return(PKSimRootNodeTypes.CompoundTransportProteins);
            }

            throw new ArgumentException(partialProcess.ToString());
        }
        public override void GlobalContext()
        {
            base.GlobalContext();
            _buildConfigurationTask = IoC.Resolve <IBuildConfigurationTask>();
            _entityPathResolver     = IoC.Resolve <IEntityPathResolver>();
            var enzymeFactory             = IoC.Resolve <IIndividualEnzymeFactory>();
            var compoundProcessRepository = IoC.Resolve <ICompoundProcessRepository>();
            var cloneManager = IoC.Resolve <ICloneManager>();

            _compound              = DomainFactoryForSpecs.CreateStandardCompound();
            _individual            = DomainFactoryForSpecs.CreateStandardIndividual();
            _protocol              = DomainFactoryForSpecs.CreateStandardIVBolusProtocol();
            _enzyme                = enzymeFactory.AddMoleculeTo(_individual, "CYP").DowncastTo <IndividualEnzyme>();
            _metabolizationProcess = cloneManager.Clone(compoundProcessRepository
                                                        .ProcessByName(CoreConstantsForSpecs.Process.METABOLIZATION_SPECIFIC_FIRST_ORDER).DowncastTo <PartialProcess>());
            _metabolizationProcess.Name = "My Partial Process";
            _metabolizationProcess.Parameter(ConverterConstants.Parameters.CLspec).Value = 15;
            _compound.AddProcess(_metabolizationProcess);

            _simulation = DomainFactoryForSpecs.CreateModelLessSimulationWith(_individual, _compound, _protocol)
                          .DowncastTo <IndividualSimulation>();

            _simulation.CompoundPropertiesList.First()
            .Processes
            .MetabolizationSelection
            .AddPartialProcessSelection(new EnzymaticProcessSelection {
                ProcessName = _metabolizationProcess.Name, MoleculeName = _enzyme.Name
            });

            DomainFactoryForSpecs.AddModelToSimulation(_simulation);
        }
コード例 #5
0
 public override void GlobalContext()
 {
     base.GlobalContext();
     _compoundProcessRepository = IoC.Resolve <ICompoundProcessRepository>();
     _cloneManager                 = IoC.Resolve <ICloneManager>();
     _enzymeFactory                = IoC.Resolve <IIndividualEnzymeFactory>();
     _transporterFactory           = IoC.Resolve <IIndividualTransporterFactory>();
     _modelPropertiesTask          = IoC.Resolve <IModelPropertiesTask>();
     _modelConfigurationRepository = IoC.Resolve <IModelConfigurationRepository>();
     _compound   = DomainFactoryForSpecs.CreateStandardCompound();
     _individual = DomainFactoryForSpecs.CreateStandardIndividual();
     _protocol   = DomainFactoryForSpecs.CreateStandardIVBolusProtocol();
     _enzyme     = _enzymeFactory.CreateFor(_individual).DowncastTo <IndividualEnzyme>().WithName("CYP");
     _enzyme.GetRelativeExpressionNormParameterFor(CoreConstants.Compartment.Plasma).Value              = _relExpNormPls;
     _enzyme.GetRelativeExpressionNormParameterFor(CoreConstants.Compartment.BloodCells).Value          = _relExpNormBloodCells;
     _enzyme.GetRelativeExpressionNormParameterFor(CoreConstants.Compartment.VascularEndothelium).Value = _relExpVascEndo;
     _individual.AddMolecule(_enzyme);
     _hct = _individual.Organism.Parameter(CoreConstants.Parameters.HCT).Value;
     _metabolizationProcess      = _cloneManager.Clone(_compoundProcessRepository.ProcessByName(CoreConstantsForSpecs.Process.METABOLIZATION_SPECIFIC_FIRST_ORDER).DowncastTo <PartialProcess>());
     _metabolizationProcess.Name = "My Partial Process";
     _metabolizationProcess.Parameter(ConverterConstants.Parameter.CLspec).Value = 15;
     _compound.AddProcess(_metabolizationProcess);
     _simulationRunOptions = new SimulationRunOptions {
         RaiseEvents = false
     };
 }
コード例 #6
0
        public override void GlobalContext()
        {
            base.GlobalContext();
            _transporterContainerTemplateRepository = IoC.Resolve <ITransporterContainerTemplateRepository>();
            var allTransporters = _transporterContainerTemplateRepository.TransportersFor(_individual.Species.Name, CoreConstants.Organ.Brain);

            var influxBBB = allTransporters.Where(x => x.MembraneLocation == MembraneLocation.BloodBrainBarrier)
                            .FirstOrDefault(x => x.TransportType == TransportType.Influx);

            _transporter = _transporterFactory.CreateFor(_individual).DowncastTo <IndividualTransporter>().WithName("TRANS");
            var transportContainer = _transporter.ExpressionContainer(CoreConstants.Organ.Brain).DowncastTo <TransporterExpressionContainer>();

            transportContainer.UpdatePropertiesFrom(influxBBB);
            _individual.AddMolecule(_transporter);
            _transportProcess = _cloneManager.Clone(_compoundProcessRepository.ProcessByName(CoreConstantsForSpecs.Process.ACTIVE_TRANSPORT_SPECIFIC_MM)
                                                    .DowncastTo <PartialProcess>());
            _transportProcess.Name = "My Transport Process";
            _compound.AddProcess(_transportProcess);

            _simulation = DomainFactoryForSpecs.CreateModelLessSimulationWith(_individual, _compound, _protocol)
                          .DowncastTo <IndividualSimulation>();

            _simulation.CompoundPropertiesList.First()
            .Processes
            .TransportAndExcretionSelection
            .AddPartialProcessSelection(new EnzymaticProcessSelection {
                CompoundName = _compound.Name, ProcessName = _transportProcess.Name, MoleculeName = _transporter.Name
            });

            DomainFactoryForSpecs.AddModelToSimulation(_simulation);
        }
コード例 #7
0
        public ITreeNode MapFrom(PartialProcess partialProcess)
        {
            //protein id should be created using the process type as well since the same protein might be used for e.g transporter and metabolism
            var moleculeNode = _treeNodeFactory.CreateFor(partialProcess, partialProcess.MoleculeName);

            moleculeNode.AddChild(_treeNodeFactory.CreateFor(partialProcess).WithIcon(ApplicationIcons.IconByName(partialProcess.Icon)));
            return(moleculeNode);
        }
コード例 #8
0
 private void report(PartialProcess partialProcess, MarkdownTracker tracker)
 {
     tracker.AddValue(PKSimConstants.UI.Molecule, partialProcess.MoleculeName);
     switch (partialProcess)
     {
     case EnzymaticProcess enzymaticProcess when !string.IsNullOrEmpty(enzymaticProcess.MetaboliteName):
         tracker.AddValue(PKSimConstants.UI.Metabolite, enzymaticProcess.MetaboliteName);
         break;
     }
 }
コード例 #9
0
 public PartialProcessDTO MapFrom(PartialProcess partialProcess, Compound compound)
 {
     return(new PartialProcessDTO(partialProcess)
     {
         MoleculeName = partialProcess.MoleculeName,
         DataSource = partialProcess.DataSource,
         Compound = compound,
         Species = partialProcess.Species
     });
 }
コード例 #10
0
        private void updatePartialProcessProperties(PartialProcess partialProcess, SnapshotCompoundProcess snapshot)
        {
            if (partialProcess == null)
            {
                return;
            }

            partialProcess.MoleculeName = snapshot.Molecule;

            if (partialProcess is EnzymaticProcess enzymaticProcess)
            {
                enzymaticProcess.MetaboliteName = snapshot.Metabolite;
            }
        }
コード例 #11
0
        private void addPartialProcessToView(PartialProcess partialProcess, RootNodeType parentNodeType)
        {
            var partialProcessesNode = _view.NodeByType(parentNodeType);
            var moleculeNode         = _partialProcessNodeMapper.MapFrom(partialProcess);
            var existingMoleculeNode = _view.NodeById(moleculeNode.Id);

            //a node for the molecule was already added, promote the children
            if (existingMoleculeNode != null)
            {
                moleculeNode.Children.Each(existingMoleculeNode.AddChild);
            }
            else
            {
                partialProcessesNode.AddChild(moleculeNode);
            }

            //this refreshed whole process node
            _view.AddNode(partialProcessesNode);
        }
コード例 #12
0
        protected override void Context()
        {
            _compound                    = BatchToolFactoryForSpecs.Compound();
            _compound.Name               = "sim";
            _compound.IsSmallMolecule    = true;
            _partialProcess              = new PartialProcess();
            _partialProcess.MoleculeName = "CYP";
            _partialProcess.InternalName = "Metabolization_firstOrder";
            _partialProcess.DataSource   = "Lab";
            _partialProcess.ParameterValues.Add("P1", 5);
            _partialProcess.ParameterValues.Add("CLSpec", 3);

            _systemicProcess = new SystemicProcess();
            _systemicProcess.InternalName = "PlasmaClearance";
            _systemicProcess.DataSource   = "Lab";
            _systemicProcess.ParameterValues.Add("P4", 5);
            _systemicProcess.ParameterValues.Add("CL", 3);

            _compound.PartialProcesses.Add(_partialProcess);
            _compound.SystemicProcesses.Add(_systemicProcess);
            _settings = new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            };
        }
コード例 #13
0
        public void CompoundProcessSelectionChanged(SimulationInteractionProcessSelectionDTO dto, PartialProcess interactionProcess)
        {
            if (processAlreadySelected(interactionProcess))
            {
                refreshView();
                throw new CannotSelectThePartialProcessMoreThanOnceException(interactionProcess);
            }

            dto.SimulationPartialProcess.CompoundProcess = interactionProcess;
            updateWaring();
        }
コード例 #14
0
        public void CompoundProcessChanged(TPartialProcessDTO simulationPartialProcessDTO, PartialProcess partialProcess)
        {
            if (partialProcessAlreadySelected(partialProcess))
            {
                throw new CannotSelectThePartialProcessMoreThanOnceException(partialProcess);
            }

            simulationPartialProcessDTO.SimulationPartialProcess.CompoundProcess = partialProcess;
        }
コード例 #15
0
 public CannotSelectThePartialProcessMoreThanOnceException(PartialProcess partialProcess) : base(PKSimConstants.Error.CannotSelectTheSamePartialProcessMoreThanOnce(partialProcess.ToString()))
 {
 }
コード例 #16
0
ファイル: TreeNodeFactory.cs プロジェクト: science4fun/PK-Sim
 public ITreeNode CreateFor(PartialProcess partialProcess, string proteinName) => new PartialProcessMoleculeNode(proteinName, partialProcess);
コード例 #17
0
ファイル: TreeNodeFactory.cs プロジェクト: science4fun/PK-Sim
 public ITreeNode CreateFor(PartialProcess partialProcess) => new CompoundProcessNode(partialProcess);
コード例 #18
0
 public PartialProcessMoleculeNode(string proteinName, PartialProcess process)
     : base(proteinName, CoreConstants.CompositeNameFor(process.GetProcessClass(), proteinName))
 {
     PartialProcessType = process.GetType();
 }
コード例 #19
0
 private bool partialProcessAlreadySelected(PartialProcess partialProcess)
 {
     return(isSelected(partialProcess) && _allPartialProcessesDTO.Any(x => Equals(x.CompoundProcess, partialProcess)));
 }
コード例 #20
0
 private bool isSelected(PartialProcess partialProcess)
 {
     return(!Equals(partialProcess, _notSelectedPartialProcess));
 }
コード例 #21
0
 private void addPartialProcessToView(PartialProcess partialProcess)
 {
     addPartialProcessToView(partialProcess, _partialProcessToRootNodeTypeMapper.MapFrom(partialProcess));
 }
コード例 #22
0
 private bool isSelected(PartialProcess interactionProcess)
 {
     return(!Equals(interactionProcess, _noInteractionProcessSelection));
 }
コード例 #23
0
ファイル: TreeNodeFactory.cs プロジェクト: valdiman/PK-Sim
 public ITreeNode CreateFor(PartialProcess partialProcess)
 {
     return(new CompoundProcessNode(partialProcess));
 }
コード例 #24
0
 public PartialProcessRetriever()
 {
     NotSelectedPartialProcess = null;
 }
コード例 #25
0
 private static SimulationPartialProcess newSimulationPartialProcess <TIndividualMolecule>(TIndividualMolecule individualMolecule, PartialProcess partialProcess, IPartialProcessMapping partialProcessMapping = null)
     where TIndividualMolecule : IndividualMolecule
 {
     return(new SimulationPartialProcess {
         CompoundProcess = partialProcess, IndividualMolecule = individualMolecule, PartialProcessMapping = partialProcessMapping
     });
 }
コード例 #26
0
 public void UpdateProperties(PartialProcess partialProcess, PartialProcessDTO partialProcessDTO)
 {
     partialProcess.Name         = partialProcessDTO.Name;
     partialProcess.DataSource   = partialProcessDTO.DataSource;
     partialProcess.MoleculeName = partialProcessDTO.MoleculeName;
 }
コード例 #27
0
 private bool processAlreadySelected(PartialProcess interactionProcess)
 {
     return(isSelected(interactionProcess) &&
            _allInteractionProcessesDTO.Any(x => Equals(x.CompoundProcess, interactionProcess)));
 }