eachanjohnson's picture
Sync from scbirlab/tutorial-autorep-analysis via hub-sync
85b21c2 verified
|
Raw History Blame Contribute Delete
8.85 kB
metadata
title: Tutorial - Autorep sgRNA strength from pooled CRISPRi-seq and RNA-seq
emoji: ๐Ÿงฎ
colorFrom: green
colorTo: blue
sdk: gradio
sdk_version: 6.30.0
app_file: app.py
pinned: true
license: mit
short_description: Inferring sgRNA strength from NGS autorep experiments
tags:
  - biology
  - sequencing
  - pooled-screen
  - fitness
  - gradio

Tutorial โ€“ Autorep sgRNA strength from pooled CRISPRi-seq and RNA-seq

Open in Spaces

This is the repository for the interactive tutorial, acccessed here. Non-interactive text from the tutorial is below.

The autorep experiment

CRISPRi sgRNAs differ in how strongly they repress their target, and the difference depends on the spacer sequence. How do we rank sgRNAs by strength, in a pool?

In the autorep design, every strain carries a fluorescent reporter (mWasabi) with the sgRNA's own target site in its 5'UTR. Each strain has one sgRNA, so the spacer is also the strain's barcode. The strains are grown together in a pool. When dCas9 is induced, each sgRNA represses its own reporter, and we measure two things by sequencing:

  • $c_i(t)$: gDNA spacer-amplicon counts for strain $i$ at time $t$. These count cells.
  • $x_i(t)$: RNA-seq counts of the barcoded reporter transcript for strain $i$ at time $t$. These count transcripts.

A dCas9 bound at the target site blocks transcription. If a single site is at equilibrium occupancy, the fraction of time the promoter is free (unrepressed) is

11+KiR \frac{1}{1 + K_i R}

  • $K_i$: affinity of the dCas9โ€“sgRNA complex for its site. This is the sgRNA strength we want to rank.
  • $R$: concentration of free dCas9. It is the same for every strain.

So production of reporter transcript from strain $i$ is

Ei=Emax1+KiR E_i = \frac{E_{max}}{1 + K_i R}

where $E_{max}$ is production with no dCas9 bound. Because $R$ is shared, we can only identify the dimensionless product $K_i R$. That is enough for ranking, since multiplying every $K_i$ by the same constant does not change the order.

Transcript dynamics in growing cells

Let $M_i$ be the total number of reporter transcripts from strain $i$ in the pool, and $n_i$ the number of cells. Transcripts are made at rate $E_i$ per cell and decay at rate $d$:

dMidt=Einiโˆ’dMi \frac{dM_i}{dt} = E_i n_i - d M_i

This is awkward to work with because $M_i$ also grows whenever the population grows. We want the transcript level per cell, $m_i = M_i / n_i$. Differentiating $M_i / n_i$ with the quotient rule, and substituting $\frac{dM_i}{dt}$ from above, ddtMini=ni(Einiโˆ’dMi)โˆ’Midnidtni2=Eiโˆ’dโ€‰miโˆ’(1nidnidt)mi \frac{d}{dt} \frac{M_i}{n_i} = \frac{n_i \left( E_i n_i - d M_i \right) - M_i \frac{dn_i}{dt}}{n_i^2} = E_i - d \, m_i - \left( \frac{1}{n_i} \frac{dn_i}{dt} \right) m_i

The bracketed term is the instantaneous per-capita growth rate of the strain. Call it $r_i$:

ri=1nidnidt=dlogโกnidt r_i = \frac{1}{n_i} \frac{dn_i}{dt} = \frac{d \log n_i}{dt}

Then

dmidt=Eiโˆ’(d+ri)mi \frac{dm_i}{dt} = E_i - (d + r_i) m_i

The extra term $r_i m_i$ is dilution. Every division splits a cell's transcripts between the two daughters, so growth removes transcripts per cell in the same way decay does.

  • $m_i(t)$: reporter transcripts per cell in strain $i$.
  • $d$: mRNA decay rate. For bacterial mRNA, half-lives of 2โ€“5 minutes correspond to $d \approx$ 0.15โ€“0.35 per minute.
  • $r_i(t)$: instantaneous per-capita growth rate of strain $i$. In exponential phase it equals the intrinsic growth rate $w_i$ of the previous tutorial. In the Lotkaโ€“Volterra model it is $w_i$ multiplied by $\left(1 - \frac{\Sigma_j n_j}{K}\right)$, a factor shared by all strains. It can be measured from the DNA counts as $d \log n_i / dt$, with the spike-in putting $n_i(t)$ on an absolute scale (see the previous tutorial).

This equation has a closed-form solution if $r_i$ is constant over the relaxation. If $m_i$ starts at $m_i(0)$,

mi(t)=miโˆ—+(mi(0)โˆ’miโˆ—)eโˆ’(d+ri)t,miโˆ—=Eid+ri m_i(t) = m_i^* + \left( m_i(0) - m_i^* \right) e^{-(d + r_i) t}, \qquad m_i^* = \frac{E_i}{d + r_i}

The transcript level relaxes to its steady state $m_i^*$ at rate $d + r_i$. With a decay rate of 0.15โ€“0.35 per minute, this takes a few minutes.

Steady state

Samples taken tens of minutes or hours after induction are on the plateau, so we can use $m_i = m_i^*$ (the quasi-steady state, QSS). This holds when $r_i(t)$ changes slowly compared with the relaxation rate $d + r_i$, so that $m_i$ tracks its instantaneous steady state $E_i / (d + r_i(t))$. Below, $r_i$ means its value at the sampling time. Compare strain $i$ to a reference strain 0 with no repression ($K_0 = 0$, e.g. a non-targeting sgRNA):

mim0=d+r0d+riโ‹…11+KiR \frac{m_i}{m_0} = \frac{d + r_0}{d + r_i} \cdot \frac{1}{1 + K_i R}

The first factor is a growth term, evaluated with the instantaneous growth rates at the sampling time. It is 1 when $r_i = r_0$, and then

mim0=11+KiR \frac{m_i}{m_0} = \frac{1}{1 + K_i R}

So transcript level per cell falls with sgRNA strength, with a known shape, and no time dependence under steady state (late timepoint) consitions.

We assume the growth term is 1 for the analysis below. This holds near carrying capacity, where every strain grows slowly and similarly. It fails for guides that have a strong effect on an essential chromosomal gene. Those strains grow slower, dilute their transcripts less, and look weaker than they are.

It might seem better to fit the time course after induction. But dCas9 does not switch on instantly: $R(t)$ rises over a timescale comparable to or slower than mRNA relaxation. The early transient therefore mostly reports how fast dCas9 accumulates, not $d$ or $K_i$. Fitting it with a model that assumes a step change in $R$ misattributes the rates. For ranking, use late timepoints only.

Read counts from next-generation sequencing

But we don't measure $m_i$ directly. Each sample is a random sampling of the pool, followed by molecular biology handling and uneven sequencing depth. Each guide also has its own capture and amplification efficiency, which differs between strains because the 5'UTR sequence differs.

For one guide in sample $s$, relative to its own $t = 0$ sample,

ci(t)ci(0)=ฯ•sni(t)ni(0)xi(t)xi(0)=ksMi(t)Mi(0)=ksmi(t)mi(0)ni(t)ni(0) \frac{c_i(t)}{c_i(0)} = \phi_s \frac{n_i(t)}{n_i(0)} \qquad \frac{x_i(t)}{x_i(0)} = k_s \frac{M_i(t)}{M_i(0)} = k_s \frac{m_i(t)}{m_i(0)} \frac{n_i(t)}{n_i(0)}

Variables:

  • $c_i(t)$: gDNA read count of strain $i$ at time $t$.
  • $x_i(t)$: RNA read count of strain $i$ at time $t$.
  • $\phi_s$: ratio of DNA sampling depth at time $t$ to that at time 0 for sample $s$.
  • $k_s$: the same for RNA-seq.

Dividing by $t = 0$ cancels each guide's constant capture efficiency and any per-guide mRNA stability effect that is the same before and after induction. Dividing the RNA ratio by the DNA ratio cancels the number of cells, $\frac{n_i(t)}{n_i(0)}$, which contains all the population dynamics. Define

Ai=xi(t)/ci(t)xi(0)/ci(0)=ksฯ•smi(t)mi(0) A_i = \frac{x_i(t) / c_i(t)}{x_i(0) / c_i(0)} = \frac{k_s}{\phi_s} \frac{m_i(t)}{m_i(0)}

$A_i$ is the normalised RNA/DNA ratio. It is proportional to transcripts per cell, relative to before induction.

Removing the sample-level nuisance parameter

The factor $\frac{k_s}{\phi_s}$ is the RNA-to-DNA depth ratio of sample $s$ relative to $t = 0$. It is one unknown number per sample, and is shared by every guide. We get rid of it the same way as in the previous tutorial: take a reference.

For the non-targeting reference guides ($K_0 R = 0$, and $m_0$ constant),

A0=ksฯ•s A_0 = \frac{k_s}{\phi_s}

Before induction, dCas9 is off, so $R = 0$ and every guide is at steady state with $m_i(0) = \frac{E_{max}}{d + r_i}$. If the guides do not change growth before induction ($r_i = r_0$ at $t = 0$), then $m_i(0) = m_0(0)$ and the ratio of the two normalised ratios is the ratio of late steady states:

AiA0=mim0=d+r0d+riโ‹…11+KiR \frac{A_i}{A_0} = \frac{m_i}{m_0} = \frac{d + r_0}{d + r_i} \cdot \frac{1}{1 + K_i R}

Plotted against the reference term across late samples, each guide gives a straight line with gradient 1 and intercept $-\log(1 + K_i R)$. The ingredients are:

  • Dividing RNA by DNA removes cell number and population growth.
  • Dividing by each guide's own $t = 0$ removes per-guide capture efficiency and mRNA stability.
  • Dividing by the pooled non-targeting guides removes the per-sample depth factor $\frac{k_s}{\phi_s}$.
  • Late timepoints are on the transcript plateau, and the growth term is 1.

What remains is $-\log(1 + K_i R)$. Averaging the left side minus the reference term over the late samples gives this value per guide, $\hat{b}_i$. The most negative $\hat{b}_i$ is the strongest guide, so $-\hat{b}i = \log(1 + K_i R)$ ranks the guides. The transient after induction, the mRNA decay rate $d$, and $E{max}$ are not needed.