serological measurements from multiplexed ELISA assays

Overview

unittests codecov

pysero

pysero enables serological measurements with multiplexed and standard ELISA assays.

The project automates estimation of antibody titers from data collected with ELISA assays performed with antigen-arrays and single antigens.

The immediate goal is to enable specific, sensitive, and quantitative serological surveys for COVID-19.

Installation

On a typical Windows, Mac, or Linux computer:

  • Create a conda environment: conda create --name pysero python=3.7
  • Activate conda environment: conda activate pysero
  • Pip install dependencies: pip install -r requirements.txt
  • Add the package to PYTHONPATH. Inside the package directory (...\serology-COVID19), do: export PYTHONPATH=$PYTHONPATH:$(pwd)

For installation notes for Jetson Nano, see these notes.

Usage

usage: pysero.py [-h] (-e | -a) -i INPUT -o OUTPUT
                 [-wf {well_segmentation,well_crop,array_interp,array_fit}]
                 [-d] [-r] [-m METADATA]

optional arguments:
  -h, --help            show this help message and exit
  -e, --extract_od      Segment spots and compute ODs
  -a, --analyze_od      Generate OD analysis plots
  -i INPUT, --input INPUT
                        Input directory path
  -o OUTPUT, --output OUTPUT
                        Output directory path, where a timestamped subdir will
                        be generated. In case of rerun, give path to
                        timestamped run directory
  -wf {well_segmentation,well_crop,array_interp,array_fit}, --workflow {well_segmentation,well_crop,array_interp,array_fit}
                        Workflow to automatically identify and extract
                        intensities from experiment. 'Well' experiments are
                        for standard ELISA. 'Array' experiments are for ELISA
                        assays using antigen arrays printed with Scienion
                        Array Printer Default: array_fit
  -d, --debug           Write debug plots of well and spots. Default: False
  -r, --rerun           Rerun wells listed in 'rerun_wells sheets of metadata
                        file. Default: False
  -m METADATA, --metadata METADATA
                        specify the file name for the experiment metadata.
                        Assumed to be in the same directory as images.
                        Default: 'pysero_output_data_metadata.xlsx'

Extract OD from antigen array images

python pysero.py -e -i <input> -o <output> -m <METADATA> will take metadata for antigen array and images as input, and output optical densities for each antigen. The optical densities are stored in an excel file at the following path: <output>/pysero_<input>_<year><month><day>_<hour><min>/median_ODs.xlsx

If rerunning some of the wells, the input metadata file needs to contain a sheet named 'rerun_wells' with a column named 'well_names' listing wells that will be rerun.

This workflow describes the steps in the extraction of optical density.

Generate OD analysis plots

python pysero.py -a -i <input> -o <output> -m <METADATA> will read pysero or scienion spot fitting outputs and generates analysis plots for each single antigen. 3 types of plots are supported for now (ROC, categorical, standard curves). The example xlsx config file can be found in \example folder in the repo.

An '-l' flag can be added to load the saved report from previous run to speed up loading.

Train a classifier using information from multiple antigens

One could train a machine learning classifier using ODs from multiple antigens to potentially improve the classification accuracy for sero-positive or sero-negative. The following script demonstrates how to do this with xgboost tree classifiers. python -m interpretation.train_classifier

Equipment list

The project aims to implement serological analysis for several antigen multiplexing approaches.

It currently supports:

  • classical ELISA.
  • antigen arrays printed with Scienion.

It can be extended to support:

  • antigen arrays printed with Echo.
  • antigen multiplexing with Luminex beads.

The antigen-arrays can be imaged with:

  • any transmission microscope with motorized XY stage.
  • turn-key plate imagers, e.g., SciReader CL2.
  • Squid - a variant of Octopi platform from Prakash Lab.

The project will also have tools for intersecting data from different assays for estimation of concentrations, determining level of cross-reactivity, ...

Validation

Current code is validated for analysis of anigen arrays imaged with Scienion Reader and is being refined for antigen arrays imaged with motorized XY microscope and Squid.

Contributions

We welcome bug reports, feature requests, and contributions to the code. Please see this page for most fruitful ways to contribute.

Owner
Chan Zuckerberg Biohub
Chan Zuckerberg Biohub
SimplePyBLE - Python bindings for SimpleBLE

The ultimate fully-fledged cross-platform Python BLE library, designed for simplicity and ease of use.

Open Bluetooth Toolbox 27 Aug 28, 2022
UniPD exam dates finder

UniPD exam dates finder Find dates for exams at UniPD Usage ./finder.py courses.csv It's suggested to save output to a file: ./finder.py courses.csv

Davide Peressoni 1 Jan 25, 2022
Check bookings for TUM libraries.

TUM Library Checker Only for educational purposes This repository contains a crawler to save bookings for TUM libraries in a CSV file. Sample data fro

Leon Blumenthal 3 Jan 27, 2022
A program that lets you use your tablet's tilting to emulate an actual joystick on a Linux computer.

Tablet Tilt Joystick A program that lets you use your tablet's tilting to emulate an actual joystick on a Linux computer. It's called tablet tilt joys

1 Feb 07, 2022
Donatus Prince 6 Feb 25, 2022
These are my solutions to Advent of Code problems.

Advent of Code These are my solutions to Advent of Code problems. If you want to join my leaderboard, the code is 540750-9589f56d. When I solve for sp

Sumner Evans 5 Dec 19, 2022
Backtest framework based on DAGs

MultitaskQueue It's a simple framework based on three composed concepts: Task: A task is the smaller unit of execution or simple a node in the DAG, ev

4 Dec 09, 2021
Notifies server owners of mod updates, also notifies of player deaths and player joins through Discord.

ProjectZomboid-ServerAssistant Notifies server owners of mod updates, also notifies of player deaths and player joins through Discord. A Python based

3 Sep 30, 2022
Cairo-bloom - A naive bloom filter implementation in Cairo

🥀 cairo-bloom A naive bloom filter implementation in Cairo. A Bloom filter is a

Sam Barnes 37 Oct 01, 2022
Neptune client library - integrate your Python scripts with Neptune

Lightweight experiment tracking tool for AI/ML individuals and teams. Fits any workflow. Neptune is a lightweight experiment logging/tracking tool tha

neptune.ai 353 Jan 04, 2023
Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal resources please report to us and we will remove.

Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal

Wissem Marzouki 29 Nov 28, 2022
YourX: URL Clusterer With Python

YourX | URL Clusterer Screenshots Instructions for running Install requirements

ARPSyndicate 1 Mar 11, 2022
Custom Weapons 3 attribute support for Custom Weapons X

CW3toX Allows use of Custom Weapons 3 attributes in Custom Weapons X. Requiremen

2 Mar 01, 2022
Automate the boilerplate while initializing your Python project

Rubric Automate the boilerplate while initializing your Python project Preface Rubric is an opinionated project initializer for Python. It assum

Redowan Delowar 23 Dec 16, 2022
The earliest beta version of pytgcalls on Linux x86_64 and ARM64! Use in production at your own risk!

Public beta test. Use in production at your own risk! tgcalls - a python binding for tgcalls (c++ lib by Telegram); pytgcalls - library connecting pyt

Il'ya 21 Jan 13, 2022
This is where I learn machine learning

This is where I learn machine learning🤷‍ This means that this repo covers no specific topic of machine learning or a project - I work in here when I want to learn/try something

Wilhelm Berghammer 47 Nov 16, 2022
Rotating cube with hand

I am still working on this project :)) To-Do(Present): = It needs an algorithm to fine tune my hand's coordinates for rotation of our cube (initial o

Jay Desale 2 Dec 26, 2021
Demo scripts for the Kubernetes Security Webinar

Kubernetes Security Webinar [in Russian] YouTube video (October 13, 2021) Authors: Artem Yushkovsky (LinkedIn, GitHub) Maxim Mosharov @ Whitespots.io

Slurm 34 Dec 06, 2022
Automatic and platform-independent unpacker for Windows binaries based on emulation

_ _ __ _ __ _ | | | | / / (_) \ \ | | | | | |_ __ | | _ | | _ __ __ _ ___| | _____ _ __

514 Dec 21, 2022