The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
qviewparsR is a pure-R parser for the binary
.Q-View project file format used in chemiluminescent
multiplex ELISA plate imaging and quantification. It extracts the
embedded report and returns it as tidy tibbles.
No Java runtime, no H2 database driver, no system dependencies beyond a working R installation.
qviewparsR is pure R — no compiled
code, no Java runtime, no H2 database driver, and no system libraries —
so it installs the same way on Windows, macOS, and
Linux. The only hard prerequisite is R >=
4.1.0.
From CRAN (once released) you get a ready-to-use binary:
install.packages("qviewparsR")Or the development version from GitHub:
# install.packages("pak")
pak::pak("CTTIR/qviewparsR")qviewparsR itself compiles nothing, and its CRAN
dependencies install as pre-built binaries.dplyr, readr,
tidyr, openxlsx2) contain C++ and build from
source unless you use a binary repository such as the Posit Public Package Manager
or r2u — which avoids
needing a compiler. Otherwise install a build toolchain
(e.g. build-essential on Debian/Ubuntu).Installing the package pulls in its required imports automatically.
The optional features need a few extra packages: plotting uses
ggplot2 (plus patchwork for the overview
figure), and the interactive app (qview_app()) uses
shiny, bslib, and DT.
library(qviewparsR)
qv <- read_qview("path/to/project.Q-View")
qv # compact summary
qv$analytes # spot_number, analyte, unit, lod, lloq, ...
qv$pixel_intensities # long-format replicate readings
qv$plate_layout # one row per well
plot(qv, type = "plate_map") # plate visualisation (needs ggplot2)
plot(qv, type = "intensity_heatmap")
plot(qv, type = "replicate_scatter")
# Export (pipe-friendly: each writer returns qv invisibly)
qv |>
write_qview_xlsx("out.xlsx") |>
write_qview_csv("out_csv/") |>
write_qview_rds("out.rds")
# Per-analyte mean / SD / CV per well-type group
summary(qv)
# Interactive front-end (upload, visualise, download)
qview_app().Q-View
file?A .Q-View file is a single-file
container that bundles an embedded H2 SQL
database (Java, version 0.5/B) with binary LOB
files holding the chemiluminescent plate images. The file is
not a ZIP archive, XML, or CSV — it is a proprietary
binary container with a plain-text manifest header followed by
concatenated H2 segments.
+-----------------------------------------+
| Bytes 0 - ~290: text manifest header |
| - container version |
| - declared file entries (size + name) |
+-----------------------------------------+
| Segment 1: main H2 SQL database |
| - 36 tables (see schema below) |
| - the rendered CSV report (CLOB) |
+-----------------------------------------+
| Segment 2: LOB file 1 (image data) |
+-----------------------------------------+
| Segment 3: LOB file 2 (more LOB data) |
+-----------------------------------------+
Each H2 segment starts with a -- H2 0.5/B -- triplet
marker. The database uses 2048-byte pages.
qviewparsR recovers data through the embedded CSV
report; the table diagram below documents the underlying schema for
reference.
| Group | Table | Purpose |
|---|---|---|
| Project / plate | PROJECT |
Project metadata (creator, version, timezone) |
PLATE |
Plate identifiers | |
PLATEDEFINITION |
Plate geometry (rows, columns, well diameter) | |
PRODUCT |
Product / lot identifiers, linked plate / plex definitions | |
| Well & spot layout | WELL |
Well coordinates (pixel + row/col) |
SPOT |
Per-spot pixel intensity (raw + negative-subtracted), masking flags | |
PLEXDEFINITION / PLEXSPOT |
Spot layout per well | |
| Analytes / standards | ANALYTE |
Analyte names |
PRODUCTANALYTE |
Spot number -> analyte mapping (key table) | |
ANALYTESTANDARD /
ANALYTESTANDARDANALYTE |
Standard curve concentrations | |
| Sample assignment | WELLGROUP |
Sample IDs and type flags (standard / negative / sample / control) |
WELLGROUPWELL |
Well-to-group mapping with dilution factors | |
| Pixel-intensity cache | SPOTPIXELINTENSITY |
Cached per-image spot intensity |
NEGATIVESPOTPIXELINTENSITY |
Negative-spot intensity before subtraction | |
| Curve fitting | CURVEFITOPTION |
Regression model settings (4PL, 5PL, HDR, weighting) |
REGRESSIONSOLUTION |
Fitted curve parameters | |
| Image / camera | IMAGE / IMAGEDETAILS /
CAMERA |
Image and imager metadata |
| Report | REPORTCONFIGURATION |
CSV report column flags |
REPORTHISTORY |
The fully rendered CSV report (CLOB) | |
REPORTINFO |
Signatures and approval state |
When Q-View imports a well-assignment template CSV it prefixes the identifiers internally:
| Template value | Q-View internal name |
|---|---|
Cal 1 … Cal N |
ICal 1 … ICal N |
Low |
GLow |
High |
HHigh |
FD24277364, all-digit IDs |
NFD24277364, N1211498458 |
strip_qview_prefix() reverses this transformation, and
read_qview(path, strip_prefix = TRUE) applies it across the
whole returned object.
read_qview() returns a list with class
qview:
| Slot | Description |
|---|---|
metadata |
Project, plate, image, imager, product, user, software version, template name, container version, file path, parse timestamp |
manifest |
One row per declared file entry inside the container |
segments |
Byte ranges of the three H2 segments |
analytes |
spot_number, analyte, unit,
lod, lloq, uloq,
assay_control_low/high |
well_groups |
well_group, sample_id, type flags
(is_standard, is_negative,
is_sample, is_control), well_type
factor |
pixel_intensities |
Long-format per-well replicate readings |
summary_statistics |
Per-group average, std_dev,
cv rows |
concentrations |
Long-format concentrations, or NULL if the report is
qualitative |
curve_fit |
Per-analyte regression model |
report_csv |
Raw CSV report lines |
plate_layout |
One row per plate well with sample assignment + well type |
| Category | Functions |
|---|---|
| Reader | read_qview(), read_qview_report() |
| Helpers | strip_qview_prefix(), well_label() |
| Optional | read_qview_template() |
| Methods | print.qview(), plot.qview() |
| Export | write_qview_xlsx(), write_qview_csv(),
write_qview_rds() |
| Summary | summary.qview() (mean / SD / CV per analyte x well
type) |
| Shiny app | qview_app() |
If you use qviewparsR in academic work, please cite:
Heller R, Mannes M (2026). qviewparsR: Read .Q-View Multiplex ELISA Project Files. R package version 0.1.9. https://github.com/CTTIR/qviewparsR
BibTeX:
@Manual{qviewparsR,
title = {qviewparsR: Read .Q-View Multiplex ELISA Project Files},
author = {R. Heller and M. Mannes},
year = {2026},
note = {R package version 0.1.9},
url = {https://github.com/CTTIR/qviewparsR}
}You can always retrieve the up-to-date entry directly from R:
citation("qviewparsR")Portions of this package were prepared with assistance from large
language model tooling for narrowly defined, non-authorial tasks:
copyediting, prose smoothing, Markdown/LaTeX formatting, scaffolding of
boilerplate files (CI configs, build scripts), code refactoring. The
tools used were Chat AI,
the LLM service of KISSKI (GWDG), and a self-hosted Mistral
Small (24B, Apache-2.0) run locally via Ollama and the ollamar R
package — local inference only, with no data sent to third parties for
the self-hosted model.
MIT (c) 2026 R. Heller and M. Mannes.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.