예제 #1
0
        private void addTransportProcess(IMoleculeBuilder drug, IProcessMapping compoundProcessMapping, CompoundProperties compoundProperties)
        {
            var compound = compoundProperties.Compound;
            var process  = compound.ProcessByName(compoundProcessMapping.ProcessName);

            if (isRenalClearance(compoundProcessMapping))
            {
                var renalPassiveProcess = _processBuilderMapper.PassiveTransportProcessFrom(process, drug.Name, _passiveTransports.FormulaCache);
                _passiveTransports.Add(renalPassiveProcess);
                _parameterIdUpdater.UpdateBuildingBlockId(renalPassiveProcess.Parameters, compound);
                return;
            }

            var transporter = _individual.MoleculeByName <IndividualTransporter>(compoundProcessMapping.MoleculeName);
            var transporterMoleculeContainer = _processBuilderMapper.ActiveTransportFrom(process, transporter, _moleculeBuildingBlock.FormulaCache);

            _interactionKineticUpdater.UpdateTransport(transporterMoleculeContainer, compoundProcessMapping.MoleculeName, compound.Name, _simulation, _moleculeBuildingBlock.FormulaCache);
            _parameterIdUpdater.UpdateBuildingBlockId(transporterMoleculeContainer.Parameters, compound);
            drug.AddTransporterMoleculeContainer(transporterMoleculeContainer);
        }