The LEF model¶
A loop-extrusion factor (LEF) is a protein complex that binds a chromatin polymer and extrudes a loop by walking two legs outward from a binding site. CTCF sites act as extrusion barriers, with different behavior depending on which side a leg meets them from. Upon unbinding, a LEF loads again elsewhere, simulating a steady state LEF density.
The concepts of backside eviction and effective distance draw heavily from Foldes et al., 2026 and the accompanying lefs-cython implementation.
The world¶
- The lattice is a fixed 1D array of sites. Most are plain; some are CTCFs,
each with a polarity (
captures_from, its capture side) and astrengthin [0, 1]. The lattice never changes during a run. - A LEF has two legs that face outward from where it bound: the left leg steps left, the right leg steps right, and neither steps backward.
- A leg's mobility is
MovingorCaptured(held by a CTCF). - A moving leg is blocked while another leg sits on the next site ahead, or the lattice ends there. Blocking is derived from positions, not stored, so it lifts as soon as the obstruction moves.
- A leg is protected while its partner is captured: it immune to eviction (see below).
Actions and their rates¶
Three kinds of action compete. Each fires after an exponential wait at its
current rate; k below is the step rate, rates.step.
Step (per leg): the leg moves one site in the direction it faces. It is
scheduled at rate k for a moving, unblocked leg.
Evict (per leg): when facing a CTCF's evict side, a leg may advance, but that advance can end in eviction instead of a translocation: the leg is ejected, and its LEF unbinds at once.
Respawn (per LEF): the LEF unbinds and rebinds at a site chosen by the spawn rule. Both legs rejoin the lattice on that one site. Respawn schedules at the first rate that applies:
rates.respawn_capturedif either leg is captured: capture protects the LEF;rates.respawn_blockedif either leg is blocked;rates.respawn, the basal rate, otherwise.
CTCFs¶
A CTCF's captures_from names its capture side; the other side evicts.
captures_from: Right: its right side captures, its left side evicts.captures_from: Left: its left side captures, its right side evicts.
Capture. A leg stepping onto a CTCF from its capture side is captured with
probability strength, else it passes through, still moving. A captured leg
stays until its LEF respawns.
Eviction. A leg facing a CTCF from its evict side still advances at rate
k, but each advance ends one of two ways: it passes onto the site (a Step) or
it's ejected (an Evict). The two independent outcomes split k:
| The CTCF | Step | Evict |
|---|---|---|
| Empty | (1 − strength) · k: passes onto it, moving |
strength · k |
| Holds a captured leg | never: every advance is an eviction | k: the CTCF is certainly there |
| Holds a moving leg | never: blocked, as traffic | never |
Two competing events at rates (1 − p)·k and p·k are exactly a step at k
followed by a coin flip with probability p, so strength crudely models how
often the site is occupied by CTCF, or more generally, is functional. Since
eviction unbinds (respawns) the LEF in the same event, no transient state is
ever stored.
Protection. A leg whose partner is captured ignores a CTCF's evict side: it
steps onto an empty one at the full rate k, and a held one blocks it, as
traffic. So once a LEF is held at one barrier, its free leg can extrude through
the next one if it slips past the CTCF that would capture it.
Spawning¶
A spawn rule picks where a LEF rebinds. The built-in rule, UniformNonCtcf,
rejection-samples until it finds an empty plain site (it needs 2n − 1 plain
sites for n LEFs). Custom rules must implement the small Spawn trait. Unlike
translocating legs, a spawned LEF landing on a CTCF may be captured there, but
never evicted.
Validity¶
A world is checked as it's built, so it's always a state the dynamics could reach: legs on the lattice and not crossed, no two LEFs on one site (a LEF's own two legs may share one), and a captured leg only on a CTCF that could have captured it. A model also checks that its rates are positive and finite, and that its spawn rule can always place its LEFs.