The function calculates the normalised MFI (nMFI) values for each of the analytes in the plate.
The nMFI values are calculated as the ratio of the test samples' MFI values to the standard curve samples with the target dilution.
When nMFI could be used? In general, it is preferred to use Relative Antibody Unit (RAU) values for any analysis. However, it is sometimes impossible to fit a model to the standard curve samples. This may happen if the MFI values of test samples are much higher than the MFI of standard curve samples. Then, the prediction would require significant data extrapolation, which could lead to unreliable results.
In such cases, the nMFI values could be used as a proxy for RAU values if we want, for instance, to account for plate-to-plate variation.
Arguments
- plate
(
Plate()
) a plate object for which to calculate the nMFI values- reference_dilution
(
numeric(1) or character(1)
) the dilution value of the standard curve sample to use as a reference for normalisation. The default is1/400
. It should refer to a dilution of a standard curve sample in the given plate object. This parameter could be either a numeric value or a string. In case it is a character string, it should have format1/d+
, whered+
is any positive integer.- data_type
(
character(1)
) type of data for the computation. Median is the default- verbose
(
logical(1)
) print additional information. The default isTRUE
Value
nmfi (data.frame
) a data frame with normalised MFI values for each analyte in the plate and all test samples.
Examples
# read the plate
plate_file <- system.file("extdata", "CovidOISExPONTENT.csv", package = "PvSTATEM")
layout_file <- system.file("extdata", "CovidOISExPONTENT_layout.csv", package = "PvSTATEM")
plate <- read_luminex_data(plate_file, layout_file)
#> Reading Luminex data from: /home/runner/work/_temp/Library/PvSTATEM/extdata/CovidOISExPONTENT.csv
#> using format xPONENT
#>
#> New plate object has been created with name: CovidOISExPONTENT!
#>
# 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)
#> Spike_6P ME HKU1_S OC43_NP OC43_S HKU1_NP
#> CO-F-226-01-CF 58.42408 19.88889 3.821903 15.449180 24.537445 10.957643
#> CO-F-263-02-KC 71.71064 14.71111 26.996681 13.481967 30.638767 11.694291
#> CO-F-080-02-TV 71.69239 20.24444 46.227876 6.085246 37.077827 9.410681
#> CO-F-215-01-BA 75.86304 32.88889 21.028761 3.816393 4.919236 6.841621
#> CO-H-SD-039-BC 36.95481 10.37778 14.778761 4.393443 3.340675 6.942910
#> CO-H-RD-053-MO 38.48162 23.86667 10.199115 9.718033 8.076358 10.101289
#> X229E_NP Mumps_NP RBD_B16171 NL63_NP RBD_B16172 RBD_wuhan
#> CO-F-226-01-CF 21.180070 35.59322 256.1207 19.691092 218.1206 85.17229
#> CO-F-263-02-KC 5.576923 14.27966 322.8017 2.916667 271.6690 96.59775
#> CO-F-080-02-TV 20.611888 25.63559 363.6422 9.741379 289.6494 101.05912
#> CO-F-215-01-BA 8.933566 50.29661 426.0991 6.163793 322.8050 108.53827
#> CO-H-SD-039-BC 10.236014 12.03390 104.3103 11.357759 83.0014 44.06239
#> CO-H-RD-053-MO 26.634615 77.54237 106.6810 4.245690 101.7952 46.88067
#> NL63_S X229E_S Spike_B16172 Spike_B117 Measles_NP Ade5
#> CO-F-226-01-CF 33.54772 4.740177 90.21091 64.61869 15.324675 27.419733
#> CO-F-263-02-KC 19.87552 25.095057 92.81379 73.76692 46.190476 16.766603
#> CO-F-080-02-TV 21.70124 52.769328 111.20885 78.75536 61.428571 23.827151
#> CO-F-215-01-BA 63.94191 39.201521 120.52984 87.87884 11.904762 21.306260
#> CO-H-SD-039-BC 14.48133 15.057034 50.00514 40.64048 4.891775 10.552705
#> CO-H-RD-053-MO 91.53527 125.614702 53.17387 43.51106 33.614719 8.969359
#> NP Spike_P1 Rub Ade40 RBD_B117 Spike_B1351
#> CO-F-226-01-CF 0.4600288 62.10091 61.03586 22.639035 223.4188 72.55825
#> CO-F-263-02-KC 0.3348938 67.04466 15.25327 37.208814 262.2906 72.53495
#> CO-F-080-02-TV 1.0694995 81.00914 27.53557 73.415530 275.6239 93.80009
#> CO-F-215-01-BA 1.3449766 87.09564 16.49402 29.412382 320.6667 105.24697
#> CO-H-SD-039-BC 0.5014404 34.12799 12.53273 13.300105 101.7094 40.24231
#> CO-H-RD-053-MO 4.0115232 40.63291 26.08423 5.146905 104.9573 41.37465
#> FluA RBD_B1351 RBD_P15 S2 Spike_omicron RBD_omicron
#> CO-F-226-01-CF 20.279330 369.71429 286.56780 56.53736 210.01021 317.16981
#> CO-F-263-02-KC 89.208566 422.35714 344.83051 45.80460 260.78652 410.80189
#> CO-F-080-02-TV 30.633147 562.35714 390.42373 87.06897 301.92033 453.18396
#> CO-F-215-01-BA 63.431099 685.10714 499.11017 90.22989 369.75485 524.05660
#> CO-H-SD-039-BC 7.295158 80.64286 63.77119 29.26724 63.61593 65.14151
#> CO-H-RD-053-MO 53.580074 150.85714 117.52119 33.18966 90.27579 102.26415
# different params
nmfi <- get_nmfi(plate, reference_dilution = "1/50")