Learn R Programming

SerolyzeR - an R package for automated analysis of serological data

Overview

This package is a simple tool that handles various raw data formats produced in Multiplex Bead Assay (MBA). In short, it reads the unstructured, raw data from, e.g., the Luminex device and outputs normalised and well-structured data, which can be used later in more advanced downstream analysis.

The package includes three main steps for preprocessing the data:

  1. data reading and manipulation
  2. quality control
  3. data normalisation

The graphical overview of the package can be seen in the image below:

SerolyzeR package is developed within the PvSTATEM initiative. The project has received funding from the European Union’s Horizon Europe research and innovation program under grant agreement No 101057665.

Previously, this package was named PvSTATEM, but it has been rebranded to SerolyzeR to better reflect its purpose and scope.

Installation

The easiest way to install the package is using the CRAN repository:

install.packages("SerolyzeR")
require(SerolyzeR) # load the installed package

Now, you are ready to use the package to read your files!

Please note that since uploading the package to the CRAN repository requires the volunteers' time to manually run checks on the packages, the package version currently released on CRAN might not be the latest.

The package is under heavy development, with new features being released weekly. Therefore, if you'd like to test the latest package functionalities, we recommend installing it in the development version. It can be done using a simple command install_github available in the devtools library:

require(devtools)
install_github("mini-pw/SerolyzeR")
require(SerolyzeR) # load the installed package

The first command loads the devtools library (you might need to install it first - using the command install_packages("devtools")), and the second one sources the git repository with the code of our package and automatically installs it.

Examples and instructions

The example use of the package and its functionalities can be found in the vignettes. For more detailed documentation, check the package website.

Contributing and issues

As a project in the development phase, we are open to any suggestions, bug reports, and contributions. If you have any ideas or issues, please report them in the Issues section. Our team of developers will address them as soon as possible.

Acknowledgements

Funded by the European Union. Views and opinions expressed are, however, those of the author(s) only and do not necessarily reflect those of the European Union or HaDEA. Neither the European Union nor the granting authority can be held responsible for them.

The package was developed as a Bachelor's thesis by Jakub Grzywaczewski, Tymoteusz Kwieciński and Mateusz Nizwantowski on Warsaw University of Technology, Faculty of Mathematics and Information Science, supervised by prof. dr hab. inż. Przemysław Biecek.

Copy Link

Version

Install

install.packages('SerolyzeR')

Monthly Downloads

198

Version

1.3.1

License

BSD_3_clause + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Jakub Grzywaczewski

Last Published

October 21st, 2025

Functions in SerolyzeR (1.3.1)

filter_sample_types

Filter Samples by Sample Type
generate_levey_jennings_report

Generate a Levey-Jennings Report for Multiple Plates.
format_ylab

Format Y-axis label
find_layout_file

Find a layout file given plate filepath
check_path_equal

Check if two paths are equal
get_output_dir

Get output directory for a given input file
handle_datetime

Handle differences in datetimes
extract_dilution_from_names

Extract dilution factor from the sample name
extract_dilutions_from_layout

Extract dilutions from the layout representation
handle_high_dose_hook

Detect and handle the high dose hook effect
is.decreasing

Check if the vector is monotically decreasing
plot_counts

Plot counts in a 96-well plate
generate_plate_report

Generate a report for a plate.
merge_plate_outputs

Merge Normalised Data from Multiple Plates
get_join_value

Determine the Join Value
extract_xponent_experiment_date

Extract the experiment date from xPONENT raw output
extract_sample_names_from_layout

Extract sample names from layout
get_nmfi

Calculate Normalised MFI (nMFI) Values for a Plate
format_xlab

Format X-axis label
format_dilutions

Format dilutions
is_mba_format

Check if a mba format is supported
get_location_matrix

Generate the matrix of plate locations
is_mba_data_file

Identify if a file is a MBA data file
is.scalar

Check if a value is a scalar
plot_layout

Plot layout of a 96-well plate
plot_levey_jennings

Plot Levey-Jennings chart
is_valid_sample_type

Check validity of given sample type
merge_dataframes

Merge dataframes
predict.Model

Predict the RAU values from the MFI values
process_dir

Process a Directory of Luminex Data Files
plot_standard_curve_stacked

Standard curve stacked plot for levey-jennings report
plot_standard_curve_thumbnail

Standard curve thumbnail for report
is.str.number

Check if a string is a number
read_luminex_data

Read Luminex Data
read_xponent_format

Read the xPONENT format data
is_valid_data_type

Check validity of given data type
plot_standard_curve_analyte_with_model

Plot standard curve of a certain analyte with fitted model
plot_standard_curve_analyte

Standard curves
is_outlier

Check if a value is an outlier
verify_numeric_join

Verify Numeric Join
try_cast_as_numeric

Try cast dataframe columns as numeric
validate_filepath_and_output_dir

Validate filepath and output_dir
sort_list_by

Sort a flat list by value
translate_sample_names_to_sample_types

Translate sample names to sample types
plot_mfi_for_analyte

Plot MFI value distribution for a given analyte
select_columns

Select Columns from a DataFrame
remove_empty_lists

Remove Empty Lists from a List
plot_plate

Plot a 96-well plate with coloured wells
process_file

Process a File to Generate Normalised Data and Reports
verbose_cat

Verbose Cat
process_plate

Process Plate Data and Save Normalised Output
read_intelliflex_format

Read the Intelliflex format data
read_layout_data

Read layout data from a file
verify_character_join

Verify Character Join
Plate

Plate Object
Model

Logistic regression model for the standard curve
detect_mba_format

Try to detect the format of a file
create_standard_curve_model_analyte

Create a standard curve model for a certain analyte
PlateBuilder

PlateBuilder
convert_dilutions_to_numeric

Convert dilutions to numeric values
dilution_to_rau

Convert dilution to RAU
create_vector_without_holes

Remove holes from a vector
clamp

Clamp a value to a range