Пример #1
0
        private void hideInterstialParametersForIntracellularLocalizationInTissue(Individual individual, IndividualMolecule molecule, IList <IContainer> allOrganismContainers, PathCache <IMoleculeAmount> moleculeAmountPath)
        {
            var protein = molecule as IndividualProtein;

            if (protein?.TissueLocation != TissueLocation.Intracellular || protein.IntracellularVascularEndoLocation != IntracellularVascularEndoLocation.Interstitial)
            {
                return;
            }

            var vascularEndothelium = protein.ExpressionContainer(CoreConstants.Compartment.VascularEndothelium);

            if (vascularEndothelium == null)
            {
                return;
            }

            var allInterstitialContainer = _expressionContainersRetriever.AllContainersFor(individual.Organism, allOrganismContainers, protein, vascularEndothelium);

            foreach (var interstitial in allInterstitialContainer)
            {
                var amount = amountFor(interstitial, molecule, moleculeAmountPath);
                if (amount == null)
                {
                    continue;
                }

                hideParameter(amount.Parameter(CoreConstants.Parameters.REL_EXP));
                hideParameter(amount.Parameter(CoreConstants.Parameters.REL_EXP_NORM));
            }
        }
        private void updateProteinParametersValues(IndividualProtein protein)
        {
            setGlobalParameterValue(protein, CoreConstants.Parameter.REL_EXP_BLOOD_CELL, CoreConstants.Compartment.BloodCells);
            setGlobalParameterValue(protein, CoreConstants.Parameter.REL_EXP_PLASMA, CoreConstants.Compartment.Plasma);
            setGlobalParameterValue(protein, CoreConstants.Parameter.REL_EXP_VASC_ENDO, CoreConstants.Compartment.VascularEndothelium);

            foreach (var expressionContainer in _expressionContainersRetriever.AllContainersFor(_spatialStructure, protein))
            {
                if (expressionContainer.IsBloodCell())
                {
                    setParameterValuesForBloodCells(protein, expressionContainer);
                }
                else if (expressionContainer.IsPlasma())
                {
                    setParameterValuesForPlasma(protein, expressionContainer);
                }
                else if (expressionContainer.IsInterstitial())
                {
                    setParameterValuesForInterstitial(protein, expressionContainer);
                }
                else if (expressionContainer.IsEndosome())
                {
                    setParameterValuesForEndosome(protein, expressionContainer);
                }
                else
                {
                    setParameterValuesForStandardContainer(protein, expressionContainer);
                }
            }
        }
Пример #3
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);
                    }
                }
            }
        }
Пример #4
0
        private IEnumerable <IObjectPath> moleculesInvolvedInExpression(ISpatialStructure spatialStructure, IndividualMolecule molecule,
                                                                        IReadOnlyList <CompoundProperties> compoundPropertiesList)
        {
            foreach (var expressionContainer in _expressionContainersRetriever.AllContainersFor(spatialStructure, molecule))
            {
                var containerPath = _objectPathFactory.CreateAbsoluteObjectPath(expressionContainer);

                foreach (var compoundProperties in compoundPropertiesList)
                {
                    foreach (var moleculeName in compoundProperties.Processes.AllInducedMoleculeNames(molecule))
                    {
                        yield return(containerPath.Clone <IObjectPath>().AndAdd(moleculeName));
                    }
                }
            }
        }