Skip to contents

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.

Usage

get_nmfi(
  plate,
  reference_dilution = 1/400,
  data_type = "Median",
  verbose = TRUE
)

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 is 1/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 format 1/d+, where d+ 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 is TRUE

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")