Esempio n. 1
0
        private void convertIndividualTransporter(IndividualMolecule moleculeToConvert, IndividualMolecule newMolecule, Individual individual)
        {
            var transporterToConvert = moleculeToConvert as IndividualTransporter;
            var newTransporter       = newMolecule as IndividualTransporter;

            if (transporterToConvert == null || newTransporter == null)
            {
                return;
            }

            newTransporter.TransportType = transporterToConvert.TransportType;

            var allTransporterExpressionContainers = individual.AllMoleculeContainersFor <TransporterExpressionContainer>(newTransporter)
                                                     .Where(x => x.TransportDirection != TransportDirectionId.None).ToList();

            //Ensure we update the default direction based on the selected transporter type
            allTransporterExpressionContainers.Each(x => x.TransportDirection = TransportDirections.DefaultDirectionFor(newTransporter.TransportType, x));

            moleculeToConvert.GetAllChildren <TransporterExpressionContainer>().Each(x => convertTransportContainer(x, allTransporterExpressionContainers));
        }
Esempio n. 2
0
        private ICommand removeAdvancedParametersForMolecule(IndividualMolecule molecule, Population population)
        {
            var macroCommand = new PKSimMacroCommand
            {
                CommandType = PKSimConstants.Command.CommandTypeDelete,
                Description = PKSimConstants.Command.RemoveAdvancedParametersForMoleculeInPopulation(molecule.Name, population.Name)
            };

            foreach (var parameter in molecule.GetAllChildren <IParameter>())
            {
                var advancedParameter = population.AdvancedParameterFor(_entityPathResolver, parameter);
                if (advancedParameter != null)
                {
                    macroCommand.AddCommand(new RemoveAdvancedParameterFromContainerCommand(advancedParameter, population, _executionContext).Run(_executionContext));
                }
            }

            _executionContext.UpdateBuildingBlockPropertiesInCommand(macroCommand, population);
            return(macroCommand);
        }
Esempio n. 3
0
        private void convertMolecule(IndividualMolecule moleculeToConvert, Individual individual)
        {
            //Complete reorganization of molecules in the new version. We need to update value of relative expression.
            //We know that localization was already updated during xml conversion
            var factory = _individualMoleculeFactoryResolver.FactoryFor(moleculeToConvert);

            //Remove from individual so that we can add it again.
            individual.RemoveMolecule(moleculeToConvert);

            //New molecules is added. We need to update all global parameters as well as relative expression parameters
            var newMolecule = factory.AddMoleculeTo(individual, moleculeToConvert.Name);

            if (newMolecule == null)
            {
                return;
            }

            newMolecule.Ontogeny = moleculeToConvert.Ontogeny;

            var allExpressionParameters = individual.AllExpressionParametersFor(newMolecule);

            moleculeToConvert.GetAllChildren <MoleculeExpressionContainer>().Each(x => { convertParameter(x.RelativeExpressionParameter, allExpressionParameters[x.Name]); });

            moleculeToConvert.AllParameters().Each(p => convertParameter(p, newMolecule.Parameter(p.Name)));

            //Perform normalization
            NormalizeRelativeExpressionCommand.NormalizeExpressions(individual, newMolecule);

            //Do reset default value that may be set to 0
            allExpressionParameters.Each(x => x.DefaultValue = null);

            //molecule specific conversion
            convertIndividualProtein(moleculeToConvert, newMolecule, individual);

            convertIndividualTransporter(moleculeToConvert, newMolecule, individual);
        }