private TableFormula formulaFrom(DataRepository dataRepository)
        {
            var baseGrid    = dataRepository.BaseGrid;
            var valueColumn = dataRepository.AllButBaseGrid().Single();
            var formula     = _formulaFactory.CreateTableFormula(useDerivedValues: false);

            initializeSolubilityTableFormula(formula, baseGrid.Dimension, valueColumn.Dimension);
            formula.XDisplayUnit = baseGrid.Dimension.Unit(baseGrid.DataInfo.DisplayUnitName);
            formula.YDisplayUnit = valueColumn.Dimension.Unit(valueColumn.DataInfo.DisplayUnitName);

            foreach (var timeValue in baseGrid.Values)
            {
                formula.AddPoint(timeValue, valueColumn.GetValue(timeValue).ToDouble());
            }

            return(formula);
        }
示例#2
0
        public TableFormula TableValueFor(Formulation formulation)
        {
            var tableFormula = _formulaFactory.CreateTableFormula().WithName(CoreConstants.Parameters.FRACTION_DOSE);

            CacheParameterValueFor(formulation);
            foreach (var time in createTimeArrayInMinutes())
            {
                tableFormula.AddPoint(time, ValueFor(formulation, time));
            }
            return(tableFormula);
        }
示例#3
0
        private TableFormula formulaFrom(DataRepository dataRepository)
        {
            var baseGrid    = dataRepository.BaseGrid;
            var valueColumn = dataRepository.AllButBaseGrid().Single();
            var formula     = _formulaFactory.CreateTableFormula().WithName(dataRepository.Name);

            formula.InitializedWith(Constants.TIME, dataRepository.Name, baseGrid.Dimension, valueColumn.Dimension);
            formula.XDisplayUnit = baseGrid.Dimension.Unit(baseGrid.DataInfo.DisplayUnitName);
            formula.YDisplayUnit = valueColumn.Dimension.Unit(valueColumn.DataInfo.DisplayUnitName);

            foreach (var timeValue in baseGrid.Values)
            {
                formula.AddPoint(timeValue, valueColumn.GetValue(timeValue).ToDouble());
            }
            return(formula);
        }
示例#4
0
        public TableFormula SolubilityTableForPh(ParameterAlternative solubilityAlternative, Compound compound)
        {
            //Sol(pH) = ref_Solubility * Solubility_Factor (ref_pH) / Solubility_Factor(pH)
            //Solubility_pKa_pH_Factor

            var refPh              = solubilityAlternative.Parameter(CoreConstants.Parameter.RefpH);
            var refSolubility      = solubilityAlternative.Parameter(CoreConstants.Parameter.SolubilityAtRefpH);
            var gainPerCharge      = solubilityAlternative.Parameter(CoreConstants.Parameter.SolubilityGainPerCharge);
            var refSolubilityValue = refSolubility.Value;

            var formula = _formulaFactory.CreateTableFormula()
                          .WithName(PKSimConstants.UI.Solubility)
                          .InitializedWith(PKSimConstants.UI.pH, PKSimConstants.UI.Solubility, refPh.Dimension, refSolubility.Dimension);

            compound.Parameter(CoreConstants.Parameter.RefpH).Value = refPh.Value;
            compound.Parameter(CoreConstants.Parameter.SolubilityGainPerCharge).Value = gainPerCharge.Value;

            double solFactorRefpH = compound.Parameter(CoreConstants.Parameter.SOLUBILITY_P_KA__P_H_FACTOR).Value;
            var    allPh          = new List <double>();
            int    ph             = 0;

            while (ph <= 13)
            {
                allPh.AddRange(new[] { ph, ph + 0.5 });
                ph++;
            }
            allPh.Add(14);
            foreach (var pH in allPh)
            {
                compound.Parameter(CoreConstants.Parameter.RefpH).Value = pH;
                double solFactorAtpH = compound.Parameter(CoreConstants.Parameter.SOLUBILITY_P_KA__P_H_FACTOR).Value;
                formula.AddPoint(pH, refSolubilityValue * solFactorRefpH / solFactorAtpH);
            }

            return(formula);
        }