Calculates intensities using the double-sigmoidal model fit and the parameters (maximum, final asymptote intensity, slope1Param, midpoint1Param, slope2Param, and mid point distance).
Usage
doublesigmoidalFitFormula(
x,
finalAsymptoteIntensityRatio,
maximum,
slope1Param,
midPoint1Param,
slope2Param,
midPointDistanceParam
)
Arguments
- x
the "time" (time) column of the dataframe
- finalAsymptoteIntensityRatio
This is the ratio between asymptote intensity and maximum intensity of the fitted curve.
- maximum
the maximum intensity that the double sigmoidal function reach.
- slope1Param
the slope parameter of the sigmoidal function at the steppest point in the exponential phase of the viral production.
- midPoint1Param
the x axis value of the steppest point in the function.
- slope2Param
the slope parameter of the sigmoidal function at the steppest point in the lysis phase. i.e when the intensity is decreasing.
- midPointDistanceParam
the distance between the time of steppest increase and steppest 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
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.2758815
#> startVector.maximum startVector.slope1Param startVector.midPoint1Param
#> 1 0.4070449 164.5084 -0.134779
#> startVector.slope2Param startVector.midPointDistanceParam
#> 1 172.7302 0.2282912
#> dataScalingParameters.timeRange dataScalingParameters.intensityMin
#> 1 24 0.1433002
#> dataScalingParameters.intensityMax dataScalingParameters.intensityRange
#> 1 4.157786 4.014485
#> model finalAsymptoteIntensityRatio_Estimate maximum_Estimate
#> 1 doublesigmoidal NA NA
#> slope1Param_Estimate midPoint1Param_Estimate slope2Param_Estimate
#> 1 NA NA NA
#> midPointDistanceParam_Estimate
#> 1 NA