Analysis code for the live-cell imaging (Incucyte) ISG screen described in:
The ISG Atlas: A Loss-Of-Function Analysis Characterizes Antiviral Properties of Interferon Stimulated Genes — Krey et al., Nature Communications, 2026.
This repository contains the analysis pipeline for a genome-wide ISG (Interferon-Stimulated Gene) screen performed using the Incucyte live-cell imaging system. The screen tested ~300 ISGs against 7 viruses to identify candidates with antiviral activity.
The fluorescence readout — Green Integrated Intensity / Red Integrated Intensity (GII/RII) — serves as a proxy for viral replication: a higher GII/RII ratio indicates greater reporter expression and therefore stronger ISG-mediated restriction.
Viruses screened:
| Code | Virus |
|---|---|
| V1 | HSV-1 |
| V2 | MeV |
| V3 | RVFV |
| V4 | VACV |
| V5 | YFV |
| V6 | VSV |
| V7 | SFV |
| V8 | SARS-CoV-2 |
├── main_analysis.ipynb # Main analysis notebook (run this)
├── requirements.txt # Python dependencies
├── data/
│ ├── fluorescence/ # Incucyte GII/RII export files (virus-infected plates)
│ └── viability/ # Incucyte GII export files (mock-infected control plates)
└── src/
├── read_data.py # I/O helpers for Incucyte .txt exports
├── process_signal.py # Signal denoising (median + Savitzky-Golay smoothing)
├── fit_data.py # Curve fitting (sigmoid, exponential, linear)
└── virus2mock.py # Mapping of virus plates to matched mock controls
V<virus>_S<set>_R<replicate>.txt
- V — virus ID (0 = mock/uninfected control)
- S — set number (1–4, each set corresponds to one 96-well plate of ~75 ISGs)
- R — biological replicate number
The notebook main_analysis.ipynb runs the following steps:
- Viability screen — exponential fits to GII on mock-infected plates identify knockouts that cause cellular toxicity. Toxic KOs are excluded from downstream analysis.
- Fluorescence data loading — GII/RII time-series are loaded for all virus–ISG–replicate combinations.
- Signal cleaning — early-timepoint noise is removed and the signal is smoothed with a median + Savitzky-Golay filter pipeline.
- Sigmoid fitting — a logistic growth model is fit to each time-series to extract parameters: K (amplitude), τ (induction time), β (growth rate), and c (baseline).
- Normalisation — fitted parameters are normalised to the mean of 5 non-targeting controls (NTCs) per plate.
- Merging — normalised fluorescence and viability parameters are merged into a single output DataFrame.
- Python ≥ 3.9
-
Clone this repository:
git clone <repo-url> cd isg_analysis
-
Create a virtual environment:
python -m venv isg_screen
-
Activate the environment:
- Unix/macOS:
source isg_screen/bin/activate - Windows:
.\isg_screen\Scripts\Activate
- Unix/macOS:
-
Install dependencies:
pip install -r requirements.txt
-
Launch the notebook:
jupyter notebook main_analysis.ipynb
More information on virtual environments is available in the Python documentation.