private TInteractionProcess createInteractionProcess <TInteractionProcess>(FlatProcess flatProcess) where TInteractionProcess : InteractionProcess
        {
            var interactionProcess = createProcessBaseOn <TInteractionProcess>(flatProcess);

            interactionProcess.InteractionType = mapInteractionTypeFrom(flatProcess);
            return(interactionProcess);
        }
        public CompoundProcess MapFrom(FlatProcess flatProcess)
        {
            if (!flatProcess.IsTemplate)
            {
                throw new ArgumentException(PKSimConstants.Error.CompoundProcessDeclaredAsNotTemplate(flatProcess.Name));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.ENZYMATIC_STABILITY_INTRINSIC)
            {
                return(createProcessBaseOn <EnzymaticProcessWithSpecies>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.ENZYMATIC_STABILITY_PARTIAL)
            {
                return(createProcessBaseOn <EnzymaticProcess>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.SPECIFIC_BINDING)
            {
                return(createProcessBaseOn <SpecificBindingPartialProcess>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.ACTIVE_TRANSPORT_INTRINSIC)
            {
                return(createProcessBaseOn <TransportPartialProcessWithSpecies>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.ACTIVE_TRANSPORT)
            {
                return(createProcessBaseOn <TransportPartialProcess>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.IN_VITRO_PROCESSES_ENZYMATIC_STABILITY)
            {
                return(createProcessBaseOn <EnzymaticProcessWithSpecies>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.INHIBITION_PROCESSES)
            {
                return(createInteractionProcess <InhibitionProcess>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.INDUCTION_PROCESSES)
            {
                return(createInteractionProcess <InductionProcess>(flatProcess));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.IN_VITRO_PROCESSES_TOTAL_HEPATIC)
            {
                return(createSystemicProcess(flatProcess, SystemicProcessTypes.Hepatic));
            }

            if (flatProcess.GroupName == CoreConstants.Groups.SYSTEMIC_PROCESSES)
            {
                return(createSystemicProcess(flatProcess, typeFrom(flatProcess)));
            }

            throw new ArgumentException($"Group '{flatProcess.GroupName}' unknown for compound");
        }
        private SystemicProcess createSystemicProcess(FlatProcess flatProcess, SystemicProcessType processType)
        {
            var systemicProcess = createProcessBaseOn <SystemicProcess>(flatProcess);

            systemicProcess.SystemicProcessType = processType;
            systemicProcess.Icon = processType.IconName;
            setDefaultSpeciesForProcess(systemicProcess);
            return(systemicProcess);
        }
        private TProcess createProcessBaseOn <TProcess>(FlatProcess flatProcess) where TProcess : CompoundProcess
        {
            var newProcess = _entityBaseFactory.Create <TProcess>();
            var repInfo    = _representationInfoRepository.InfoFor(RepresentationObjectType.PROCESS, flatProcess.Name);

            newProcess.Name         = flatProcess.Name;
            newProcess.InternalName = flatProcess.Name;
            newProcess.Description  = repInfo.Description;
            newProcess.Icon         = repInfo.IconName;
            setDefaultSpeciesForProcess(newProcess as ISpeciesDependentCompoundProcess);
            return(newProcess);
        }
        public PKSimTransport MapFrom(FlatProcess flatProcess)
        {
            var transport = _entityBaseFactory.Create <PKSimTransport>()
                            .WithName(flatProcess.Name)
                            .WithDimension(_dimensionRepository.AmountPerTime);

            _parameterContainerTask.AddProcessBuilderParametersTo(transport);
            addDescriptorConditions(transport.SourceCriteria, ProcessTagType.Source, transport.Name);
            addDescriptorConditions(transport.TargetCriteria, ProcessTagType.Target, transport.Name);
            transport.CalculationMethod = flatProcess.CalculationMethod;
            transport.Rate    = flatProcess.Rate;
            transport.Formula = _formulaFactory.RateFor(transport, new FormulaCache());
            transport.CreateProcessRateParameter = flatProcess.CreateProcessRateParameter;

            return(transport);
        }
        private IPKSimProcess createProcessFrom(FlatProcess flatProcess)
        {
            switch (flatProcess.ActionType)
            {
            case ProcessActionType.Reaction:
                var reaction = newReaction();
                addReactionPartnersTo(reaction, flatProcess.Name);
                return(reaction);

            case ProcessActionType.Transport:
                return(_entityBaseFactory.Create <PKSimTransport>());

            case ProcessActionType.Interaction:
                return(interactionProcessFor(flatProcess));

            default:
                throw new ArgumentOutOfRangeException(flatProcess.ActionType.ToString());
            }
        }
        public IPKSimProcess MapFrom(FlatProcess flatProcess)
        {
            var activeProcess = createProcessFrom(flatProcess);

            if (activeProcess == null)
            {
                return(null);
            }

            activeProcess.Name = flatProcess.Name;
            activeProcess.CalculationMethod = flatProcess.CalculationMethod;
            activeProcess.Rate    = flatProcess.Rate;
            activeProcess.Formula = _formulaFactory.RateFor(activeProcess.CalculationMethod, activeProcess.Rate, new FormulaCache());
            var repInfo = _representationInfoRepository.InfoFor(RepresentationObjectType.PROCESS, activeProcess.Name);

            activeProcess.Icon = repInfo.IconName;
            updateTransporterDescriptors(activeProcess as PKSimTransport);
            activeProcess.CreateProcessRateParameter = flatProcess.CreateProcessRateParameter;
            activeProcess.Dimension = activeProcess.Formula.Dimension;
            return(activeProcess);
        }
        private SystemicProcessType typeFrom(FlatProcess flatProcess)
        {
            if (flatProcess.ProcessType == CoreConstants.ProcessType.ELIMINATION_GFR)
            {
                return(SystemicProcessTypes.GFR);
            }

            if (flatProcess.ProcessType == CoreConstants.ProcessType.ELIMINATION)
            {
                return(SystemicProcessTypes.Renal);
            }

            if (flatProcess.ProcessType == CoreConstants.ProcessType.SECRETION)
            {
                return(SystemicProcessTypes.Biliary);
            }

            if (flatProcess.ProcessType == CoreConstants.ProcessType.METABOLIZATION)
            {
                return(SystemicProcessTypes.Hepatic);
            }

            throw new ArgumentException($"Systemic process type for process '{flatProcess.Name}' of type '{flatProcess.ProcessType}' unknown.");
        }
Пример #9
0
 private bool processIsNonTemplateReaction(FlatProcess flatProcess)
 {
     return(!flatProcess.IsTemplate && flatProcess.ActionType == ProcessActionType.Reaction);
 }
 private InteractionType mapInteractionTypeFrom(FlatProcess flatProcess)
 {
     return(EnumHelper.ParseValue <InteractionType>(flatProcess.ProcessType));
 }
 private bool processIsSimulationActiveProcess(FlatProcess process)
 {
     return(process.IsTemplate && CoreConstants.Groups.AllSimulationActiveProcesses.Contains(process.GroupName));
 }
        private IPKSimProcess interactionProcessFor(FlatProcess flatInteractionProcess)
        {
            var interactionType = EnumHelper.ParseValue <InteractionType>(flatInteractionProcess.ProcessType);

            return(interactionType.Is(InteractionType.ReactionInducer) ? newReaction() : null);
        }
Пример #13
0
 private bool processIsApplication(FlatProcess process)
 {
     return(process.ProcessType == CoreConstants.ProcessType.APPLICATION);
 }
Пример #14
0
 private bool processIsPassiveTransport(FlatProcess process)
 {
     return((process.ProcessType == CoreConstants.ProcessType.PASSIVE) &&
            process.ActionType.Equals(ProcessActionType.Transport));
 }