Data and code for LUCas: Light-Uncaged Cas13a using photocleavable interfering guide RNAs
Data files
Aug 07, 2026 version files 166.36 MB
-
lucas-paper-code-v2.0.zip
166.31 MB
-
README.md
43.73 KB
Abstract
CRISPR diagnostics enable sensitive detection of infectious diseases, with the RNA endonuclease Cas13a providing sequence-specific RNA detection through target-activated collateral cleavage of fluorescent reporters. Background cleavage from unbound enzyme or contaminating nucleases, together with unsynchronized reaction initiation, can limit assay sensitivity and complicate quantitative interpretation. Precise control over the onset of Cas13a catalytic activity—effectively a molecular “starting gun”—could address these challenges. Here, we introduce Light-Uncaged Cas13a (LUCas), a light-controllable system that suppresses Cas13a collateral trans-cleavage using a photocleavable interfering guide RNA (pc-igRNA), including in the presence of target RNA. Brief UV illumination releases this suppression and restores catalytic activity. Quantitative kinetic measurements demonstrate approximately 100-fold suppression of trans-cleavage before photo-uncaging, including suppression of target-independent background activity. Using experimentally measured kinetic parameters, we predict and validate the limit of detection for direct target detection. We also demonstrate a multiplexed strategy termed temporal barcoding, which uses sequentially controlled reaction phases to enable quantitative detection of viral co-infections in a single bulk reaction. Finally, LUCas is compatible with one-pot isothermal amplification for enhanced sensitivity and with direct detection of target RNA spiked into blood plasma. Together, these results establish LUCas as a general framework for mechanistically informed, light-mediated control of Cas13a activity.
This dataset contains the raw and processed data, analysis code, fitting routines, statistical summaries, figure-generation notebooks, and mechanistic simulations associated with the study. The experimental data include fluorescence time series and anisotropy measurements used to characterize photo-uncaging, pre- and post-illumination kinetics, suppression factors, background activity, limits of detection, plasma compatibility, recombinase polymerase amplification–coupled detection, DNA-fragment inputs, and temporal barcoding. Processed products include calibrated reporter-concentration time series, fitted kinetic parameters, reaction-rate and uncertainty estimates, suppression-factor calculations, LOD summaries, and generated figures.
The deposit also includes two- and three-phase ordinary differential equation models and multiplexed parameter sweeps that examine how target abundance, suppression strength, photoactivation efficiency, spectral crosstalk, and reaction kinetics affect quantitative target recovery. These materials support reproduction of the associated analyses and figures, re-analysis of the experimental measurements, and further exploration of light-controlled and multiplexed Cas13a reaction designs.
Release: v2.0.0
Lead authors: Ng and Krishnamurthy
This repository contains the data, analysis code, kinetic fitting routines, figure notebooks, and mechanistic simulations associated with the LUCas project. LUCas uses photo-cleavable interfering guide RNAs (PC-igRNAs) to control Cas13a activity with light.
Cas13a target recognition activates nonspecific reporter cleavage, producing a fluorescent diagnostic signal. In LUCas, a photo-cleavable interfering guide suppresses this activity before illumination and releases it after a selected light dose. The deposited experiments characterize light-dependent activation, guide and target-concentration effects, assay background and limit of detection, operation in plasma and after RPA amplification, fluorescence anisotropy, DNA fragment inputs, and sequential illumination for multiplexed/temporally barcoded readout. The accompanying ODE models test how caging efficiency, optical crosstalk, target abundance, and kinetic parameters affect recovery of one or more target concentrations. Raw plate-reader workbooks, processed tables, model fits, statistical summaries, and manuscript-ready figures are included so users can either reproduce figures directly or rerun the fitting workflows.
The code supports:
- fluorescence time-series fitting before and after illumination;
- suppression-factor and limit-of-detection (LOD) analysis;
- photo-uncaging/light-dose model fitting;
- plasma, RPA-coupled, and DNA-fragment experiments;
- full two-phase and three-phase ODE simulations; and
- multiplexed target-recovery simulations and parameter sweeps.
What is new in v2.0.0
Relative to the January 2026 Dryad/code release (lucas-paper-code-v2.0.zip), this version adds:
- a single-phase Michaelis–Menten-style photo-uncaging model in
lucas_utils/lightdose.py; - a command-line light-dose fitting workflow,
scripts/lightdose-timeseries-data-fitting.py; notebooks/figure-1-lightdose-plots.ipynbfor fitting and plotting the illumination-dose response;- full ODE notebooks for two-phase activation and three-phase multiplexed readout in
Lucas ODE/; - a multiplexed ODE parameter-sweep notebook that tests target-recovery accuracy, spectral crosstalk, suppression factors, and conditioning;
- analysis and plotting workflows for plasma, RPA-coupled LUCas, and DNA fragments; and
- expanded LOD analysis for PC-igRNAs.
Repository map
lucas-paper-code/
├── configs/ YAML analysis configurations
├── data/
│ ├── raw/ source plate-reader and anisotropy workbooks
│ └── processed/ calibrated, fitted, and summarized tables
├── scripts/ executable analysis workflows
├── lucas_utils/ reusable analysis package
├── notebooks/ manuscript-figure notebooks
├── Lucas ODE/ mechanistic models, reference data, and sweeps
├── tests/ notebook-based validation workflows
├── results/ generated figures and fit diagnostics - figures not included in Dryad upload
├── archived/ superseded notebooks retained for provenance
├── requirements.txt analysis-environment requirements
├── pyproject.toml local-package metadata and dependencies
└── README.md dataset guide and data dictionary
Start with the section matching your goal:
| Goal | Entry point |
|---|---|
| Recreate manuscript figures from processed data | notebooks/ |
| Refit raw fluorescence time series | scripts/fl-timeseries-data-fitting.py |
| Calculate suppression factors | scripts/compute-suppression-factors.py |
| Recalculate LODs | scripts/lod-timeseries-data-fitting.py |
| Fit the light-dose/photo-uncaging data | scripts/lightdose-timeseries-data-fitting.py |
| Inspect or change the uncaging fit model | lucas_utils/lightdose.py |
| Run single-target, two-phase ODE simulations | Lucas ODE/two_phase_activation_ode.ipynb |
| Run three-target, three-phase ODE simulations | Lucas ODE/three_phase_multiplexed_ode.ipynb |
| Evaluate multiplexed target recovery | Lucas ODE/multiplexed_lucas_parameter_sweep.ipynb |
Detailed deposit inventory
This section follows the directory tree so that it can be used alongside a file browser. Dates at the start of filenames are experiment dates in YYYYMMDD format. Files with a common suffix form one repeatable product class; those suffixes are defined under data/processed/ below.
Individual variables are listed and described in the Data Dictionary section below.
configs/
The 13 YAML files contain machine-readable inputs for the analysis scripts: dataset name and description, relative input/output paths, Excel header rows, multi-index names, guide subsets, fluorescence calibration settings, transient exclusion time, fit mode, and export switches.
19T-PC-cr4-targetsweep.yaml,
19T-PC-cr4-cr6-cr7_target-conc-1e6cp_uL.yaml, and
9T-PC-guides-target-1e6cp_ul.yamlconfigure the Figure 2 kinetic datasets.19T-PC-cr4-LOD.yaml,19T-PC-cr6-LOD.yaml, and
19T-PC-cr7-LOD.yamlconfigure the three guide-specific LOD analyses.19T-PC-cr4-background.yamlandcr4-background.yamlconfigure caged and uncaged guide background-rate measurements over RNP concentration.LUCas_lightdose_19TC-pc-igRNA.yamlconfigures the Figure 1 illumination-dose fit, including the measured energy per second used to convert exposure time to light dose.LUCas_plasma_20260310.yaml,LUCas_RPA_20260525.yaml, and
LUCas_RPA_20260612.yamlconfigure the plasma and RPA-coupled experiments.20260307_20T_DNA_Fragments.yamlrecords the DNA-fragment workflow. Its original raw-workbook path points to a manuscript supplementary-material directory outside this code deposit; the derived CSV tables needed for figure reproduction are included indata/processed/figure-6-DNA-fragments/.
data/raw/
Raw .xlsx files contain plate-reader observations in wide format. The first three to six rows form a hierarchical header describing the condition shared by each block of replicate wells; the first column contains elapsed time. Numeric measurement cells are unmodified instrument fluorescence/intensity values unless the filename explicitly says otherwise.
See section Data Dictionary for variable descriptions.
figure-1-lucas-demo/: two demonstration experiments.20240409 UV different dosages.xlsxvaries illumination exposure time;20250717 19TCPC second run demo.xlsxis a second PC-igRNA demonstration time course.figure-2-lucas-kinetics/: a 19T-PC-cr4 target-concentration sweep, a
cr4/cr6/cr7 comparison at1e6 cp/uL, and a 9T-PC guide comparison at1e6 cp/uL.figure-3-background-kinetics-lod/: cr4, cr6, and cr7 LOD dilution series, plus caged and uncaged cr4 background kinetics over RNP concentration.figure-4-clinically relevant/: PC-igRNA measurements in plasma versus water, an RNase-inhibitor control, and two RPA-coupled LUCas experiments.figure-5-anisotropy/: parallel/perpendicular fluorescence-intensity and
total-fluorescence workbooks for pulsed and single illumination, plus the 9T/19T guide anisotropy comparison. These files distinguish RNP, free-guide, and blank conditions.figure-6-temporal-barcoding/: multiplexed time courses with varied cr4:cr2
target ratios and with SARS-CoV-2/Flu A target combinations.
data/processed/
Processed files preserve the experiment grouping used under data/raw/. Modern fitting outputs follow these suffix patterns:
*_processed.csv: calibrated long-form observations with one row per time point, condition, and well.*_fit_data.csv: observations plus the corresponding model-predictedfitvalue.*_fit_param_data.csv: one row per fitted well and phase, containing fitted parameters and goodness-of-fit metrics.*_reaction_rate_data.csv: rates and uncertainties summarized by guide, concentration, and phase.*_suppression_factors.csv: post/pre rate ratios with propagated uncertainty.*_lod_summary.csv: mean LOD signal and standard error by concentration.
The contents by subdirectory are:
figure-1-lucas-demo/: converted reporter concentrations, a legacy linear regression table, long-form light-dose data, single-phase fits, fitted parameters, and rate summaries.figure-2-lucas-kinetics/: fit traces, fit parameters, rate summaries, and suppression factors for each of the three Figure 2 raw workbooks.figure-3-background-kinetics-lod/: per-guide processed LOD observations and LOD summaries for cr4/cr6/cr7, plus background processed observations, rate summaries, and suppression factors.figure-4-clinically relevant/: fit traces, fit parameters, and rate summaries for the plasma/RNase-inhibitor and RPA experiments.figure-5-anisotropy/: anisotropy, blank-subtraction, and instantaneous-slope calculation workbooks. These processed.xlsxfiles intentionally retain formulas so every derived value can be traced to measured intensity or fluorescence cells.figure-6-DNA-fragments/: fit traces, fitted parameters, and rate summaries for the 20T DNA-fragment concentration sweep.figure-6-temporal-barcoding/: converted and baseline-corrected multiplexed time courses, pre/post illumination slopes, normalized rate changes, and linear-regression summaries for target-ratio and whole-virus experiments.
scripts/
fl-timeseries-data-fitting.pytakes a YAML configuration and its raw Excel workbook, reshapes and calibrates fluorescence data, detects the illumination interval, fits each well before/after illumination, and writes processed, fitted, parameter, rate, and diagnostic files.background-fl-timeseries-data-fitting.pytakes a background-kinetics YAML and workbook, applies calibration and phase-aware linear fitting, and writes processed observations and scaled background-rate summaries.compute-suppression-factors.pytakes a generated reaction-rate CSV and writes the post/pre suppression-factor CSV with propagated uncertainty.lod-timeseries-data-fitting.pytakes an LOD YAML and workbook, performs robust joint slope analysis, and writes per-guide processed and LOD-summary CSVs plus diagnostic figures.lightdose-timeseries-data-fitting.pytakes the light-dose YAML and converted time series, fits the single-phase uncaging model, and writes long-form, fitted, parameter, rate-summary, and diagnostic outputs.
lucas_utils/ and lucas_utils.egg-info/
models.py: linear/exponential phase models and rate extraction.data_processing.py: workbook reshaping, fluorescence calibration, normalization, phase labeling, and rate/concentration helpers.lightdose.py: single-phase photo-uncaging model, fitting, summaries, and diagnostics.lod_models.py: robust covariance, bootstrap, and LOD models.plotting.pyandplot_style.py: shared manuscript plotting functions and styles.stat_tests.py: Mann–Whitney tests and multiple-comparison correction.parameters.py: phase names, filename suffixes, calibration constants, and guide display labels.utils.py: concentration/unit conversion and general helpers.io.py: reserved I/O helper module; it currently contains no analysis logic.__init__.py: package exports.
lucas_utils.egg-info/ is generated installation metadata (PKG-INFO, source list, requirements, dependency links, and top-level package name), and lucas_utils/__pycache__/ is generated bytecode. Neither contains primary or derived research observations; both may be omitted from a clean deposit.
notebooks/
The six current notebooks read processed data and create manuscript panels:
figure-1-lightdose-plots.ipynb: illumination dose, initial rate, and uncaging-timescale fits.figure-2-plots.ipynb: kinetics and suppression-factor panels.figure-3-plots.ipynb: background kinetics, LOD summaries, and sigmoid LOD fits.figure-4-plasma.ipynb: plasma/water time courses and rates.figure-4.ipynb: RPA-coupled time courses, rates, target/NTC tests, and ratios.figure-6-DNA-fragments-plots.ipynb: DNA-fragment fits and concentration response.
Lucas ODE/
two_phase_activation_ode.ipynb,three_phase_multiplexed_ode.ipynb, and
multiplexed_lucas_parameter_sweep.ipynbcontain the single-target, three-target, and parameter-sweep models described later in this README.Ramachandran_etal_MM_fit.ipynbcompares the reduced analytical reporter model with a published numerical model.Ramachandran_etal_data/AnalyticalModel.csvandNumericalModel.csvcontain normalized time, cleaved-reporter fraction, and categorical data type (AnalyticalorNumerical). The JPEG in that folder is the source reference image used for the comparison.qc_fits/*.pngare condition-specific parameter-sweep fit diagnostics; filenames encode condition number, replicate, target concentrations, crosstalk, and suppression settings.qc_smoke_fit.pngis the minimal end-to-end check.
results/
Images are not included in the Dryad deposit for licensing reasons. The scripts output PNG and SVG files into results/figures/.
PNG files are raster previews and SVG files are editable vector equivalents. They are all derived outputs, grouped as follows: Figure 1 light-dose fits; Figure 2 kinetics; Figure 3 background/LOD; Figure 4 plasma/RPA; Figure 5 anisotropy; Figure 6 DNA-fragment and temporal-barcoding plots; and figure-lucas-model/ ODE trajectories, target-recovery heatmaps/scatter plots, and per-condition QC fits. ODE result filenames encode the simulated target, suppression, photoactivation, or crosstalk condition. These groups are outputs, not additional input data.
tests/, archived/, and root files
tests/test_*.pyis the automatedpytestsuite. It uses synthetic data to check fluorescence fitting, the pre/post fit-to-rate pipeline, uncertainty and rate extraction, and logistic LOD fitting/bootstrap behavior;conftest.pyprovides shared deterministic fixtures.tests/test_lod_pipeline.ipynbandtests/test_relative_change_pipeline.ipynbare interactive synthetic-data checks of the LOD and relative-change/bootstrap workflows.- The eight notebooks under
archived/are superseded kinetics, background, LOD, and kcat/KM analysis/plotting workflows retained only for provenance. Usescripts/andnotebooks/for current reproduction. requirements.txtlists the analysis dependencies;pyproject.tomldefines the installablelucas_utilspackage; root__init__.pyis a package marker;.gitignorecontains version-control exclusions; and.github/copilot-instructions.mdcontains development guidance rather than scientific content.
Installation
Python 3.10 or later is recommended. From the repository root:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install -e .
The editable install makes lucas_utils importable from scripts and notebooks.
The analysis uses NumPy, pandas, SciPy, Matplotlib, seaborn, lmfit, scikit-learn, statsmodels, PyYAML, and openpyxl. See requirements.txt and pyproject.toml for the declared dependencies.
Launch notebooks from the repository root so that relative paths resolve consistently:
jupyter lab
Portable paths
Current scripts and ODE model cells resolve their included inputs and outputs relative to the repository root. In particular, the light-dose config reads
data/raw/figure-1-lucas-demo/20240409 UV different dosages.xlsx, and the ODE notebooks save figures below results/figures/figure-lucas-model/.
One exception is configs/20260307_20T_DNA_Fragments.yaml: it records the original raw-workbook location outside this code deposit. The processed DNA fragment tables required by the supplied Figure 6 notebook are included. To rerun that raw-data fit, place the supplementary workbook in the location named by data_path or update data_path to the workbook's location after download.
The ODE notebooks determine repo_root when launched from either the repository root or the Lucas ODE/ directory. For all other figure notebooks, launching JupyterLab from the repository root is recommended. Stored notebook output may display paths from the computer on which a notebook was last executed; these display-only outputs do not control where files are read or written on a new run.
Reproducing the experimental analyses
Analysis scripts read one YAML file from configs/, write tables under data/processed/, and write diagnostics under results/figures/. Run all commands below from the repository root.
1. Fit pre- and post-stimulation fluorescence data
python scripts/fl-timeseries-data-fitting.py LUCas_RPA_20260612.yaml
Replace the YAML filename with the experiment of interest. This script:
- loads the raw Excel workbook;
- converts fluorescence units to cleaved-reporter concentration when required;
- separates pre- and post-stimulation phases;
- fits each well with the configured linear or exponential model; and
- saves fitted traces, parameters, and reaction-rate tables.
For scripts that do not yet accept a command-line config argument, set CONFIG_FILE near the top of the script before running it.
2. Compute suppression factors
Set CONFIG_FILE in scripts/compute-suppression-factors.py, then run:
python scripts/compute-suppression-factors.py
The script compares post-illumination and pre-illumination reaction rates, propagates fit uncertainty, and performs the configured statistical comparisons.
3. Fit background kinetics
Set CONFIG_FILE in scripts/background-fl-timeseries-data-fitting.py, then run:
python scripts/background-fl-timeseries-data-fitting.py
4. Calculate limits of detection
Set CONFIG_FILE in scripts/lod-timeseries-data-fitting.py to one of:
19T-PC-cr4-LOD.yaml19T-PC-cr6-LOD.yaml19T-PC-cr7-LOD.yaml
Then run:
python scripts/lod-timeseries-data-fitting.py
The LOD workflow uses joint linear fits, selects HC3 or HAC robust covariance according to residual autocorrelation, and uses bootstrap confidence intervals for the relative-change analysis.
5. Fit the light-dose/photo-uncaging experiment
python scripts/lightdose-timeseries-data-fitting.py \
--config configs/LUCas_lightdose_19TC-pc-igRNA.yaml
This workflow:
- imports the converted reporter-concentration time series;
- baseline-corrects each trace;
- fits each light-dose condition with
(C(t)=C_\infty-(C_\infty-C_0)e^{-t/\tau}); - calculates the initial rate
(v_0=(C_\infty-C_0)/\tau); - summarizes replicate rates and standard errors; and
- writes long-form data, fitted traces, parameter tables, reaction-rate summaries, and a diagnostic plot.
The main options are in the YAML file:
data_path,processed_path, andfigures_path;- Excel header and multi-index layout under
import_settings; - fixed (C_\infty), minimum point count, and column names under
fit_settings; and - which tables and diagnostics to save under
export_settings.
Use notebooks/figure-1-lightdose-plots.ipynb to fit the dose-response curve and generate the light-dose and uncaging-timescale plots from these outputs.
ODE simulations
The notebooks in Lucas ODE/ are exploratory, executable model documents.
Run their cells in order; parameters and initial conditions are defined near the top of each notebook.
Two-phase activation
two_phase_activation_ode.ipynb models one guide-target species with caged and uncaged RNP pools. It integrates the pre-illumination phase, applies an illumination update to the molecular pools, and continues the integration after activation. It also includes target-concentration sweeps and reduced-model fitting.
Use this notebook to:
- inspect the full state trajectories around one illumination event;
- change kinetic constants, suppression, or uncaging efficiency;
- compare numerical reporter cleavage with a reduced analytical fit; and
- test recovery of a single target concentration.
Multiplexed parameter sweep
multiplexed_lucas_parameter_sweep.ipynb generates synthetic observations with the full multiplexed ODE model, fits them with a reduced global model, and measures target-recovery accuracy over parameter grids. It examines:
- target concentrations;
- guide suppression factors;
- photoactivation efficiency and spectral crosstalk;
- weakest-signal and orthogonality metrics; and
- numerical conditioning of the multiplexed inverse problem.
Sweep tables, heatmaps, scatter plots, and selected fit diagnostics are written below results/figures/figure-lucas-model/. Large sweeps can take substantially longer than the other notebooks; first run the included smoke/QC condition before expanding the grid.
Reference comparison
Ramachandran_etal_MM_fit.ipynb compares analytical and numerical reporter cleavage behavior and uses lucas_utils.lightdose.single_phase_mm. It provides context for the reduced reporter-cleavage model used in the fitting workflows.
Figure notebooks
The current figure notebooks are:
| Notebook | Contents |
|---|---|
figure-1-lightdose-plots.ipynb |
light-dose response and uncaging timescale |
figure-2-plots.ipynb |
LUCas kinetics and suppression factors |
figure-3-plots.ipynb |
background kinetics and LOD |
figure-4-plasma.ipynb |
plasma/RNase-inhibitor time courses and rates |
figure-4.ipynb |
RPA-coupled LUCas time courses, rates, and target/NTC tests |
figure-6-DNA-fragments-plots.ipynb |
DNA-fragment fitting and concentration response |
Figure notebooks generally read from data/processed/ and save SVG output to
results/figures/. They are organized by manuscript panel. Run cells in order,
especially the data-loading and output-directory cells at the beginning.
Configuration files and data products
Each YAML config records the source workbook, experiment description, Excel header layout, guide and concentration fields, calibration/fitting choices, and output directories. To analyze a new dataset:
- place its workbook under
data/raw/; - copy the nearest matching YAML file in
configs/; - update its paths, column layout, and fitting options; and
- pass the YAML filename to a script, or set that script's
CONFIG_FILE.
Common output filenames are:
*_fit_data.csv: observed and fitted time-series values;*_fit_param_data.csv: per-well fitted parameters and fit metrics;*_reaction_rate_data.csv: per-well or summarized reaction rates; and*_suppression_factors.csv: pre/post rate ratios and statistics.
Existing processed tables are included so that users interested only in figure reproduction do not need to rerun every fit.
CSV and Excel data structure
Why merged cells are retained in Excel files
The raw and anisotropy Excel workbooks intentionally use merged cells in their multi-row headers. A merged header spans the replicate well columns to which one experimental attribute applies—for example one guide, target concentration, sample type, RNP concentration, illumination exposure, or molecular state. The merge therefore encodes the grouping relationship between condition metadata and replicate measurements and is required by the current import configurations (header and multiindex in configs/*.yaml). Removing these merges without first repeating every group label in every replicate column would make the raw layout ambiguous and break direct reproduction with the supplied scripts.
The processed anisotropy workbooks also retain formulas. These are essential, not decorative: they expose blank subtraction, anisotropy calculations, time conversion, and instantaneous-slope calculations. There are no charts, filters, comments, or frozen panes required for analysis in these workbooks. Cell color or highlighting is not used as a scientific variable.
For programmatic use:
- modern processed CSVs have a single header row and can be read normally;
- raw Excel files should be read with the header-row list and multi-index names specified in the matching YAML configuration;
- legacy wide CSVs beginning with
Guide,Guides, orExposure Timeuse four metadata/header rows before numeric observations; - baseline-corrected wide CSVs use one header row, with repeated condition names representing replicate wells; and
- regression-summary CSVs are report-shaped tables: experimental conditions are columns and statistic names such as
Slopeare rows. They are not tidy observation tables.
This structure is retained to preserve compatibility with the original analysis and the experimental grouping. Users who require a fully rectangular table can forward-fill the metadata header rows horizontally, combine the header levels, and pivot the replicate columns to long format with one row per time point and well. The supplied scripts perform this reshaping for the current workflows.
Data dictionary
The same variables recur across files, so each is defined once below. Names are case-sensitive as written in the files. NA/blank means not applicable or not estimated. Unless a file states otherwise, concentrations are nonnegative and time/rate variables are continuous numeric values.
Experimental identifiers and raw-workbook headers
| Variable/header | Type or scale | Meaning |
|---|---|---|
Guide, Guides, guide |
categorical text | Cas13 guide or guide combination. Names containing PC or pc-igRNA denote photo-cleavable interfering guides; crRNA/cr4/cr6/cr7/cr2/crH9 denote conventional or target-specific guide identities. |
well, Well, or well labels such as A1 |
categorical identifier | Plate-reader well/technical replicate; not a numeric measurement. |
conc, conc_label |
categorical concentration label | Original target or RNP label, such as NTC, 0, 1e6 cp/uL, or an nM label. NTC means no-target control. |
conc_numeric |
numeric | Numeric portion of conc used for sorting/fitting; NTC and zero controls map to 0. Units follow the source conc label—usually copies/µL, but nM for concentration-series files labeled in nM. |
Target concentration and unit-labeled variants |
numeric or categorical | Target abundance assigned to a condition or replicate block. The header supplies the unit, normally copies/µL or nM; guide-specific variants identify the corresponding multiplexed target. |
Time (sec), Time (min) |
continuous; s or min | Elapsed measurement time in the unit stated by the header. |
| Condition metadata headers | categorical or numeric | Headers such as sample, molecular state, RNP concentration, DNA-fragment concentration, or illumination exposure describe the condition shared by the replicate columns below them. Their units or categories are stated directly in the header or cell value. |
phase |
categorical | pre-stimulation or post-stimulation; identifies observations/fits before or after illumination. |
stim_start (sec), stim_end (sec) |
continuous; s | Start and end of the inferred illumination interval. |
Guide nomenclature
Legacy identifiers in raw and processed files are converted to
publication-facing guide names using GUIDE_NAMES_MAP in
lucas_utils/parameters.py:
| Legacy identifier | Publication-facing name |
|---|---|
cr4 |
gRNA 1 |
cr2 |
gRNA 2 |
crH9 |
gRNA 3 |
cr6 |
gRNA 4 |
cr7 |
gRNA 5 |
19T_PC_cr4 |
19T-PC-igRNA 1 |
19T_PC_cr6 |
19T-PC-igRNA 4 |
19T_PC_cr7 |
19T-PC-igRNA 5 |
9T_PC_cr4 |
9T-PC-igRNA 1 |
9T_PC_cr2 |
9T-PC-igRNA 2 |
9T_PC_crH9 |
9T-PC-igRNA 3 |
The number after gRNA or igRNA is the manuscript guide number; 9T and 19T identify the interfering-guide architecture. Underscores in legacy names are storage-safe separators and are not additional biological attributes. Newer RPA files already use display-form labels such as crRNA 4 and pc-igRNA 4; these labels are retained directly and are not translated through GUIDE_NAMES_MAP.
Measured and transformed signals
| Variable/header | Type or scale | Meaning |
|---|---|---|
Fluorescence (AU), cleaved reporter conc (AU) |
continuous; arbitrary fluorescence units (AU) | Raw plate-reader fluorescence. The latter historical column name contains conc but is still an uncalibrated arbitrary-unit signal. |
Fluorescence (RFU) |
continuous; relative fluorescence units | Total fluorescence signal in the anisotropy experiments. |
Parallel Intensity (Ipa), Rawdata (parallel), Intensity (parallel) |
continuous; instrument intensity units | Fluorescence intensity measured parallel to excitation polarization. |
Perpendicular Intensity (Ipe), Rawdata (perpendicular), Intensity (perpendicular) |
continuous; instrument intensity units | Fluorescence intensity measured perpendicular to excitation polarization. |
Anisotropy |
continuous; dimensionless | Polarization anisotropy derived from parallel and perpendicular intensities after the workbook's blank correction. |
cleaved reporter conc (nM) |
continuous; nM | Fluorescence converted to cleaved-reporter concentration using the experiment-specific calibration. |
baseline corrected cleaved reporter conc (nM) |
continuous; nM | Reporter concentration after subtracting the first value of its condition/well trace. |
cleaved reporter fraction |
continuous; dimensionless | Cleaved-reporter concentration normalized by the configured maximum reporter concentration. |
fit |
continuous; nM or dimensionless following its modeled response | Model-predicted value at the corresponding observation time. In the current time-series CSVs it corresponds to fitted cleaved-reporter concentration. |
Kinetic-fit parameter tables
| Variable | Type or unit | Meaning |
|---|---|---|
fit_success |
Boolean | Whether optimization completed successfully for the well. |
fit_error |
text/blank | Error message for a failed fit; blank for successful fits. |
model, model_used |
categorical text | Model selected for the fit, such as fixed-asymptote single-phase, linear, small-time, or exponential. |
tau, tau_mean |
continuous; s | Fitted characteristic reaction timescale; tau_mean is the mean across fitted wells. |
tau_se |
continuous; s | Standard error of tau or of the across-well mean, according to table level. |
C0_nM |
continuous; nM | Fitted reporter concentration at the beginning of a phase. |
C0_se_nM |
continuous; nM | Standard error of fitted C0_nM. |
C1_nM |
continuous; nM | Pre-stimulation fitted amplitude, defined as C_inf_nM - C0_nM; not applicable to post-stimulation fits. |
C_stim_nM |
continuous; nM | Fitted reporter concentration at the start of the post-stimulation phase; not applicable to pre-stimulation fits. |
C_inf_nM |
continuous; nM | Fitted or fixed asymptotic cleaved-reporter concentration. |
C_inf_se_nM |
continuous; nM | Standard error of C_inf_nM; blank when the asymptote is fixed. |
C_inf_fixed |
Boolean | Whether C_inf_nM was held fixed during fitting. |
timescale_rate_s_inv, timescale_rate_mean_s_inv |
continuous; s⁻¹ | Reciprocal timescale, 1/tau, per well or averaged across wells. |
timescale_rate_se_s_inv |
continuous; s⁻¹ | Propagated standard error of reciprocal timescale. |
initial_rate_nM_s, initial_rate_mean_nM_s |
continuous; nM/s | Initial model rate, (C_inf - C0)/tau, per well or averaged across wells. |
initial_rate_se_nM_s |
continuous; nM/s | Propagated standard error of the initial rate. |
linear_slope_nM_s, linear_slope_mean_nM_s |
continuous; nM/s | Ordinary least-squares slope of reporter concentration versus time, per well or averaged across wells. |
linear_slope_se_nM_s |
continuous; nM/s | Standard error of the linear slope. |
r2 |
continuous; dimensionless, normally ≤1 | Coefficient of determination. |
rmse |
continuous; same unit as modeled response | Root-mean-square residual error. |
mae |
continuous; same unit as modeled response | Mean absolute residual error. |
n_points |
integer count | Number of finite time points included in a fit. |
t_span_s |
continuous; s | Time span covered by the fitted observations. |
max_t_over_tau |
continuous; dimensionless | Fitted time span divided by tau; used to assess whether the small-time approximation is appropriate. |
Rate, suppression, and LOD summary tables
| Variable | Type or unit | Meaning |
|---|---|---|
rate |
continuous; s⁻¹ | Reaction rate defined as 1/tau. |
rate_se |
continuous; s⁻¹ | Standard error propagated from tau_se. |
reaction_rate_mean |
continuous; s⁻¹ | Mean per-well linear slope divided by scale_MAX_CLEAVED_REPORTER_nM. |
reaction_rate_se |
continuous; s⁻¹ | Total standard error combining within-fit and between-well contributions. |
n_wells |
integer count | Number of replicate wells contributing to a summary. |
rate_sd_between |
continuous; s⁻¹ | Standard deviation of rates between wells. |
rate_within_se_quadrature |
continuous; s⁻¹ | Within-well fit uncertainty combined in quadrature and scaled for the mean. |
scale_MAX_CLEAVED_REPORTER_nM |
continuous; nM | Reporter concentration used to normalize linear slopes into fractional rates. |
rate_ratio_post_over_pre |
continuous; dimensionless | Post-stimulation rate divided by pre-stimulation rate (suppression/activation factor). |
rate_ratio_se |
continuous; dimensionless | Propagated standard error of the post/pre ratio. |
signal_mean |
continuous; fitted-slope units | Mean LOD signal across wells at a target concentration. |
signal_se |
continuous; fitted-slope units | Standard error of the mean LOD signal, including within- and between-well variance. |
ODE reference-data columns
| Variable | Type or scale | Meaning |
|---|---|---|
Normalized time |
continuous; dimensionless | Time divided by the reference model's characteristic scale. |
Cleaved reporter fraction |
continuous; dimensionless | Fraction of reporter cleaved in the analytical or numerical reference curve. Small negative values reflect digitization/fitting noise near zero. |
Data type |
categorical | Analytical or Numerical, identifying the source model curve. |
Analysis conventions
- Experiments with illumination phases use
pre-stimulationand
post-stimulationlabels. - The stimulation boundary is inferred from the largest gap in the recorded
time series. - Post-stimulation fitting skips the transient interval specified by
TRANSIENT_TIME(60 s by default). conc_labelis the display value, whileconc_numericis used for numeric
filtering and sorting.- Fluorescence calibration is gain- and experiment-dependent; calibration
constants are stored inlucas_utils/parameters.pyor encoded in the relevant
workflow. - Statistical comparisons use Mann–Whitney U tests with Holm correction where
indicated.
Core modules
lucas_utils/models.py: pre/post-stimulation linear and exponential fits.lucas_utils/lightdose.py: light-dose loading, baseline correction, single-phase fitting, rate summaries, and diagnostics.lucas_utils/data_processing.py: calibration, reshaping, normalization, and phase splitting.lucas_utils/lod_models.py: robust joint fits and bootstrap LOD analysis.lucas_utils/stat_tests.py: hypothesis tests and multiple-comparison correction.lucas_utils/plotting.pyandplot_style.py: shared plotting conventions.lucas_utils/io.py: file-loading and output helpers.lucas_utils/parameters.py: global constants, guide labels, and calibrations.
Validation and troubleshooting
The tests/ directory contains automated unit/integration tests and two interactive validation notebooks. To run the automated suite:
python -m pip install -e ".[test]"
python -m pytest
The tests use deterministic synthetic data and do not modify experimental files. The notebooks are:
test_lod_pipeline.ipynbtest_relative_change_pipeline.ipynb
Run their cells sequentially in JupyterLab for an inspectable validation of the same LOD and relative-change calculations.
If a workflow fails:
- confirm that the YAML
data_pathexists on your computer; - check that the workbook's multi-level headers match
headerand
multiindex; - confirm that guide names and concentration labels match the workbook;
- launch Jupyter from the repository root;
- ensure that
python -m pip install -e .completed in the active environment;
and - check the per-well diagnostic plots before interpreting summary parameters.
Re-running a fitting script may overwrite files with the same output names.
Keep the archived Dryad download unchanged if you need an immutable copy of the published outputs.
Citation and attribution
*Lead Authors:* Ng & Krishnamurthy
C. F. Ng, D. Krishnamurthy, A. A. Dextre, A. Chorlay, M. Ott, and D. A. Fletcher. “LUCas: Light-Uncaged Cas13a using photo-cleavable interfering guide RNAs.”
This dataset and analysis pipeline were developed for the LUCas project at the Fletcher Lab, University of California, Berkeley.
*Project:* LUCas: Light-Uncaged Cas13a using photocleavable interfering guide RNAs
When using this archive, cite both the associated article and the Dryad dataset version/DOI shown on the dataset landing page.
