protected override void PerformExecuteWith(IExecutionContext context)
        {
            //Retrieve building block id in execute only since molecule might have been added in a macro command and bbid was not available in constructor
            BuildingBlockId = context.BuildingBlockIdContaining(_molecule);
            var allRelExpressionContainer = _molecule.AllExpressionsContainers().ToList();
            var max = allRelExpressionContainer.Select(x => x.RelativeExpression).Max();

            allRelExpressionContainer.Each(relExp => relExp.RelativeExpressionNorm = max == 0 ? 0 : relExp.RelativeExpression / max);
        }
Esempio n. 2
0
        private void updateAllParametersFor(Simulation simulation, Individual individual, IList <IContainer> allOrganismContainers, IndividualMolecule molecule, PathCache <IMoleculeAmount> moleculeAmountPath)
        {
            var globalMoleculeContainer = simulation.Model.Root
                                          .GetSingleChildByName <IContainer>(molecule.Name);

            globalMoleculeContainer.Parameter(CoreConstants.Parameter.ONTOGENY_FACTOR_GI).Visible = false;
            globalMoleculeContainer.Parameter(CoreConstants.Parameter.ONTOGENY_FACTOR).Visible    = false;

            hideGlobalParametersForUndefinedMolecule(globalMoleculeContainer);

            foreach (var expressionContainer in molecule.AllExpressionsContainers())
            {
                var relExpNorm = expressionContainer.RelativeExpressionNormParameter;
                var relExp     = expressionContainer.RelativeExpressionParameter;

                if (expressionContainer.IsSurrogate())
                {
                    string relExpName;
                    if (expressionContainer.IsBloodCell())
                    {
                        relExpName = CoreConstants.Parameter.RelExpBloodCell;
                    }
                    else if (expressionContainer.IsPlasma())
                    {
                        relExpName = CoreConstants.Parameter.RelExpPlasma;
                    }
                    else if (expressionContainer.IsVascularEndothelium())
                    {
                        relExpName = CoreConstants.Parameter.RelExpVascEndo;
                    }
                    else
                    {
                        continue;
                    }

                    string relExpNormName = CoreConstants.Parameter.NormParameterFor(relExpName);
                    updateFromIndividualParameter(globalMoleculeContainer.Parameter(relExpName), relExp, individual, molecule);
                    updateFromIndividualParameter(globalMoleculeContainer.Parameter(relExpNormName), relExpNorm, individual, molecule);
                }
                else
                {
                    //not a global parameter simply update the norm  parameters
                    var allContainers = _expressionContainersRetriever.AllContainersFor(individual.Organism, allOrganismContainers, molecule, expressionContainer);
                    foreach (var container in allContainers)
                    {
                        var amount = moleculeAmountPath[_entityPathResolver.ObjectPathFor(container).AndAdd(molecule.Name).ToString()];
                        if (amount == null)
                        {
                            continue;
                        }

                        updateFromIndividualParameter(amount.Parameter(CoreConstants.Parameter.RelExpNorm), relExpNorm, individual, molecule);
                        updateFromIndividualParameter(amount.Parameter(CoreConstants.Parameter.RelExp), relExp, individual, molecule);
                    }
                }
            }
        }
        public IEnumerable <IContainer> AllContainersFor(Organism organism, IndividualMolecule molecule)
        {
            var allContainers           = AllOrganismContainers(organism).ToList();
            var allContainersForProtein = new List <IContainer>();

            foreach (var expressionContainer in molecule.AllExpressionsContainers())
            {
                allContainersForProtein.AddRange(allContainersFor(organism, molecule, allContainers, expressionContainer));
            }
            return(allContainersForProtein.Distinct());
        }
 protected override void Context()
 {
     base.Context();
     _clonedProtein = A.Fake <IndividualMolecule>();
     A.CallTo(() => _clonedProtein.AllExpressionsContainers()).Returns(_molecule.AllExpressionsContainers());
     _individual.AddMolecule(_molecule);
     _querySettings = A.Fake <QueryExpressionSettings>();
     _queryResults  = A.Fake <QueryExpressionResults>();
     A.CallTo(() => _executionContext.Clone(_molecule)).Returns(_clonedProtein);
     A.CallTo(() => _querySettingsMapper.MapFrom(_molecule)).Returns(_querySettings);
     A.CallTo(() => _proteinExpressionPresenter.Start()).Returns(true);
     A.CallTo(() => _proteinExpressionPresenter.GetQueryResults()).Returns(_queryResults);
 }
Esempio n. 5
0
        private void updateAllParametersFor(Simulation simulation, Individual individual, IList <IContainer> allOrganismContainers, IndividualMolecule molecule, PathCache <IMoleculeAmount> moleculeAmountPath)
        {
            var globalMoleculeContainer = simulation.Model.Root
                                          .GetSingleChildByName <IContainer>(molecule.Name);

            hideGlobalParametersForUndefinedMolecule(globalMoleculeContainer);

            hideInterstialParametersForIntracellularLocalizationInTissue(individual, molecule, allOrganismContainers, moleculeAmountPath);

            foreach (var expressionContainer in molecule.AllExpressionsContainers())
            {
                if (expressionContainer.IsSurrogate())
                {
                    updateReferenceToIndividualParametersForSurrogateContainer(individual, molecule, expressionContainer, globalMoleculeContainer);
                }
                else
                {
                    updateReferenceToIndividualParametersForStandardContainer(individual, molecule, expressionContainer, allOrganismContainers, moleculeAmountPath);
                }
            }
        }
Esempio n. 6
0
        private void updateOntogeny(IndividualMolecule molecule)
        {
            var liver = molecule.ExpressionContainer(CoreConstants.Organ.Liver);

            if (liver == null)
            {
                return;
            }

            var ontogenyFactorLiver = liver.Parameter(CoreConstants.Parameters.ONTOGENY_FACTOR);

            if (ontogenyFactorLiver != null)
            {
                molecule.Add(ontogenyFactorLiver);
            }

            IParameter ontogenyFactorDuodenum = null;
            var        duodenum = molecule.ExpressionContainer(CoreConstants.Compartment.Duodenum);

            if (duodenum != null)
            {
                ontogenyFactorDuodenum = duodenum.Parameter(CoreConstants.Parameters.ONTOGENY_FACTOR);
            }

            //remove old ontogeny factor parameter in container
            foreach (var expressionContainer in molecule.AllExpressionsContainers())
            {
                var ontogenyFactor = expressionContainer.Parameter(CoreConstants.Parameters.ONTOGENY_FACTOR);
                if (ontogenyFactor != null)
                {
                    expressionContainer.RemoveChild(ontogenyFactor);
                }
            }

            if (ontogenyFactorDuodenum != null)
            {
                ontogenyFactorDuodenum.Name = CoreConstants.Parameters.ONTOGENY_FACTOR_GI;
                molecule.Add(ontogenyFactorDuodenum);
            }
        }
        public QueryExpressionSettings MapFrom(IndividualMolecule molecule)
        {
            var expressionContainer = new List <ExpressionContainerInfo>(molecule.AllExpressionsContainers().MapAllUsing(_expressionContainerInfoMapper));

            return(new QueryExpressionSettings(expressionContainer, molecule.QueryConfiguration));
        }