Calculates intensities using the double sigmoidal model fit and the parameters (maximum, final asymptote intensity, slope1Param, midpoint1Param, slope2Param, and midpoint distance).
Usage
doublesigmoidalFitFormula(
x,
finalAsymptoteIntensityRatio,
maximum,
slope1Param,
midPoint1Param,
slope2Param,
midPointDistanceParam
)Arguments
- x
the "time" column of the dataframe
- finalAsymptoteIntensityRatio
this is the ratio between the final asymptote intensity and maximum intensity of the fitted curve.
- maximum
the maximum intensity that the double sigmoidal function reaches.
- slope1Param
the slope parameter of the sigmoidal function at the steepest point in the exponential phase of the viral production.
- midPoint1Param
the x axis value of the steepest point in the function.
- slope2Param
the slope parameter of the sigmoidal function at the steepest point in the lysis phase. i.e when the intensity is decreasing.
- midPointDistanceParam
the distance between the time of steepest increase and steepest decrease in the intensity data. In other words the distance between the x axis values of arguments of slope1Param and slope2Param.
Value
Returns the predicted intensities for the given time points with the double sigmoidal fitted parameters for the double sigmoidal fit.
Examples
# runif() is used here for consistency with previous versions of the sicegar package. However,
# rnorm() will generate symmetric errors, producing less biased numerical parameter estimates.
# We recommend errors generated with rnorm() for any simulation studies on sicegar.
time <- seq(3, 24, 0.1)
#simulate intensity data and add noise
noise_parameter <- 0.2
intensity_noise <- stats::runif(n = length(time), min = 0, max = 1) * noise_parameter
intensity <- doublesigmoidalFitFormula(time,
finalAsymptoteIntensityRatio = .3,
maximum = 4,
slope1Param = 1,
midPoint1Param = 7,
slope2Param = 1,
midPointDistanceParam = 8)
intensity <- intensity + intensity_noise
dataInput <- data.frame(intensity = intensity, time = time)
normalizedInput <- normalizeData(dataInput)
parameterVector <- doublesigmoidalFitFunction(normalizedInput, tryCounter = 2)
#Check the results
if(parameterVector$isThisaFit){
intensityTheoretical <-
doublesigmoidalFitFormula(
time,
finalAsymptoteIntensityRatio = parameterVector$finalAsymptoteIntensityRatio_Estimate,
maximum = parameterVector$maximum_Estimate,
slope1Param = parameterVector$slope1Param_Estimate,
midPoint1Param = parameterVector$midPoint1Param_Estimate,
slope2Param = parameterVector$slope2Param_Estimate,
midPointDistanceParam = parameterVector$midPointDistanceParam_Estimate)
comparisonData <- cbind(dataInput, intensityTheoretical)
require(ggplot2)
ggplot(comparisonData) +
geom_point(aes(x = time, y = intensity)) +
geom_line(aes(x = time, y = intensityTheoretical)) +
expand_limits(x = 0, y = 0)
}
if(!parameterVector$isThisaFit){
print(parameterVector)
}
#> finalAsymptoteIntensityRatio_N_Estimate
#> 1 NA
#> finalAsymptoteIntensityRatio_Std_Error finalAsymptoteIntensityRatio_t_value
#> 1 NA NA
#> finalAsymptoteIntensityRatio_Pr_t maximum_N_Estimate maximum_Std_Error
#> 1 NA NA NA
#> maximum_t_value maximum_Pr_t slope1Param_N_Estimate slope1Param_Std_Error
#> 1 NA NA NA NA
#> slope1Param_t_value slope1Param_Pr_t midPoint1Param_N_Estimate
#> 1 NA NA NA
#> midPoint1Param_Std_Error midPoint1Param_t_value midPoint1Param_Pr_t
#> 1 NA NA NA
#> slope2Param_N_Estimate slope2Param_Std_Error slope2Param_t_value
#> 1 NA NA NA
#> slope2Param_Pr_t midPointDistanceParam_N_Estimate
#> 1 NA NA
#> midPointDistanceParam_Std_Error midPointDistanceParam_t_value
#> 1 NA NA
#> midPointDistanceParam_Pr_t residual_Sum_of_Squares log_likelihood AIC_value
#> 1 NA Inf NA NA
#> BIC_value isThisaFit startVector.finalAsymptoteIntensityRatio
#> 1 NA FALSE 0.9163004
#> startVector.maximum startVector.slope1Param startVector.midPoint1Param
#> 1 1.310598 171.5466 0.003754339
#> startVector.slope2Param startVector.midPointDistanceParam
#> 1 158.4702 0.216696
#> dataScalingParameters.timeRange dataScalingParameters.intensityMin
#> 1 24 0.2105909
#> dataScalingParameters.intensityMax dataScalingParameters.intensityRange
#> 1 4.173398 3.962808
#> model finalAsymptoteIntensityRatio_Estimate maximum_Estimate
#> 1 doublesigmoidal NA NA
#> slope1Param_Estimate midPoint1Param_Estimate slope2Param_Estimate
#> 1 NA NA NA
#> midPointDistanceParam_Estimate
#> 1 NA