Evaluate performance and prevalence for any series of diagnostics tests, incl. SARS
The Bayes Lines Tool is a revolutionary set of software tools for back solving disease prevalence, test performance and confusion matrices for diagnostic test reports.

How does it work?
For all permutations of prevalence, sensitivity, and specificity, the Bayes Lines Tool returns all confusion matrixes for which the true + false positives equals the number of positives reported.
No prior knowledge of prevalence, sensitivity & specificity, type of test kits, or lab guidelines is required.


Source Code
The Bayes Lines Tool consists of an SQL script and a simplified version in Excel. Both are available for download.
The SQL script generates all possible Bayesian confusion matrixes for a (series of) diagnostic test results, without making assumptions about prevalence, sensitivity or specificity.
The code in standard SQL is given as follows:
with tests as (
select
:reg :: text as region_name,
:rid :: text as report_id,
:tst :: float as tests,
:pos :: float as positives
),
permutations as (
select
sens :: float as sensitivity,
spec :: float as specificity
from
generate_series(0.005, 1.000, 0.005) as sens,
generate_series(0.005, 1.000, 0.005) as spec
),
prevalences as (
select
(positives / tests + specificity - 1) :: float /
(sensitivity + specificity - 1) :: float as prevalence,
*
from
permutations,
tests
where
sensitivity + specificity > 1
),
matrices as (
select
(tests * prevalence * sensitivity) :: float as true_positives,
(tests * (1 - prevalence) * specificity) :: float as true_negatives,
*
from
prevalences
where
prevalence between 0 and 1
),
results as (
select
positives - true_positives as false_positives,
(tests - positives) - true_negatives as false_negatives,
*
from
matrices
)
select
region_name,
report_id,
(tests) :: int as tests_performed,
(positives) :: int as positives_reported,
(tests * prevalence) :: int as has_disease,
(tests * (1 - prevalence)) :: int as hasnot_disease,
(true_positives) :: int as true_positives,
(false_positives) :: int as false_positives,
(true_negatives) :: int as true_negatives,
(false_negatives) :: int as false_negatives,
sensitivity :: numeric(4,3),
specificity :: numeric(4,3),
prevalence :: numeric(4,3)
from
results
where
(false_positives + true_positives) :: int = positives :: int
Download
Excel file last updated Jan 25 2021, marked as version 1.2. Please note that this is based on a previous version of the SQL code. An update is on its way and will be made available soon.
The examples presented in the paper (both figures and underlying data) are available in the Tableau workbooks, which can be downloaded below.
About
The Bayes Lines Tool is crafted by Wouter Aukema, Ulrike Kämmerer, Pieter Borger, Simon Goddek, Bobby Rajesh Malhotra, Kevin McKernan and Rainer J. Klement.
This group of scientists submitted a research paper titled “Bayes Lines Tool (BLT) – A SQL-script for analyzing diagnostic test results with an application to SARS-CoV-2-testing” with F1000 Research on 23 January 2021.
Follow us on our individual Twitter accounts, or join the discussion in the #UnbiasedScience channel on Telegram.
You can also reach us at unbiasedscience@protonmail.ch