private void setSingleDosingPKValues(ICache <string, double> pk, PKInterval interval)
 {
     setCmaxAndTmax(pk, interval, Constants.PKParameters.C_max, Constants.PKParameters.Tmax);
     setValue(pk, Constants.PKParameters.C_tEnd, interval, x => x.CTrough);
     setValueAndNormalize(pk, Constants.PKParameters.AUC_tEnd, interval, x => x.AucTend);
     setValueAndNormalize(pk, Constants.PKParameters.AUC_inf, interval, x => x.AucInf);
     setValue(pk, Constants.PKParameters.Thalf, interval, x => x.Thalf);
     setValue(pk, Constants.PKParameters.MRT, interval, x => x.Mrt);
     setValue(pk, Constants.PKParameters.FractionAucEndToInf, interval, x => x.FractionAucEndToInf);
     setValue(pk, Constants.PKParameters.CL, interval, x => x.CL);
     setValue(pk, Constants.PKParameters.Vss, interval, x => x.Vss);
     setValue(pk, Constants.PKParameters.Vd, interval, x => x.Vd);
 }
        private IReadOnlyList <PKInterval> allStandardIntervalsFor(List <float> time, List <float> concentration, PKCalculationOptions options)
        {
            var fullRange = new PKInterval(time, concentration, options, drugMassPerBodyWeight: options.TotalDrugMassPerBodyWeight);

            //only one interval, return the full range
            if (options.SingleDosing)
            {
                return new[] { fullRange }
            }
            ;

            //Two or more intervals
            var intervals = new[]
            {
                pkIntervalFromDosingInterval(options.FirstInterval, time, concentration, options),
                pkIntervalFromDosingInterval(options.LastMinusOneInterval, time, concentration, options),
                pkIntervalFromDosingInterval(options.LastInterval, time, concentration, options),
                fullRange
            };


            return(intervals.Where(x => x != null).ToList());
        }
 private void setValue(ICache <string, double> pk, string parameterName, PKInterval pkInterval, Func <PKInterval, double> valueFunc)
 {
     setValue(pk, parameterName, valueFunc(pkInterval));
 }
 private void setValueAndNormalize(ICache <string, double> pk, string parameterName, PKInterval pkInterval, Func <PKInterval, double> valueFunc)
 {
     setValue(pk, parameterName, pkInterval, valueFunc);
     pk[Constants.PKParameters.NormalizedName(parameterName)] = pkInterval.NormalizeValue(valueFunc);
 }
 private void setCmaxAndTmax(ICache <string, double> pk, PKInterval interval, string cmaxName, string tMaxName)
 {
     setValueAndNormalize(pk, cmaxName, interval, x => x.Cmax);
     setValue(pk, tMaxName, interval, x => x.Tmax);
 }