get_nmfi {SerolyzeR} | R Documentation |
Calculate Normalised MFI (nMFI) Values for a Plate
Description
Calculates normalised MFI (nMFI) values for each analyte in a Luminex plate. The nMFI values are computed as the ratio of each test sample's MFI to the MFI of a standard curve sample at a specified reference dilution.
Usage
get_nmfi(
plate,
reference_dilution = 1/400,
data_type = "Median",
sample_type_filter = "ALL",
verbose = TRUE
)
Arguments
plate |
( |
reference_dilution |
( |
data_type |
( |
sample_type_filter |
( |
verbose |
( |
Details
Normalised MFI (nMFI) is a simple, model-free metric used to compare test sample responses relative to a fixed concentration from the standard curve. It is particularly useful when model fitting (e.g., for RAU calculation) is unreliable or not possible, such as when test sample intensities fall outside the standard curve range.
The function locates standard samples with the specified dilution and divides each test sample’s MFI by the corresponding standard MFI value for each analyte.
Value
nmfi (data.frame
) a data frame with normalised MFI values for each analyte in the plate and all test samples.
When Should nMFI Be Used?
While RAU values are generally preferred for antibody quantification, they require successful model fitting of the standard curve. This may not be feasible when:
The test samples produce MFI values outside the range of the standard curve.
The standard curve is poorly shaped or missing critical points.
In such cases, nMFI serves as a useful alternative, allowing for plate-to-plate comparison without the need for extrapolation.
References
L. Y. Chan, E. K. Yim, and A. B. Choo, Normalized median fluorescence: An alternative flow cytometry analysis method for tracking human embryonic stem cell states during differentiation, http://dx.doi.org/10.1089/ten.tec.2012.0150
Examples
# read the plate
plate_file <- system.file("extdata", "CovidOISExPONTENT.csv", package = "SerolyzeR")
layout_file <- system.file("extdata", "CovidOISExPONTENT_layout.csv", package = "SerolyzeR")
plate <- read_luminex_data(plate_file, layout_file)
# artificially bump up the MFI values of the test samples (the Median data type is default one)
plate$data[["Median"]][plate$sample_types == "TEST", ] <-
plate$data[["Median"]][plate$sample_types == "TEST", ] * 10
# calculate the nMFI values
nmfi <- get_nmfi(plate, reference_dilution = 1 / 400)
# we don't do any extrapolation and the values should be comparable across plates
head(nmfi)
# different params
nmfi <- get_nmfi(plate, reference_dilution = "1/50")
nmfi <- get_nmfi(plate, reference_dilution = "1/50", sample_type_filter = c("TEST", "BLANK"))