tfscreen is a Python library for simulating and analyzing high-throughput screens of transcription factor (TF) function. It is designed to infer the energetic effects of mutations on conformations in the TF energy landscape. Those effects make it possible to build interpretable models that predict how any combination of mutations changes the TF response curve, operator binding against allosteric effector.
The core strategy is to measure operator occupancy for thousands of double-mutant cycles across multiple allosteric effector concentrations. A single set of energetic effects must explain all measurements simultaneously, which resolves the per-conformation contribution of each mutation and separates epistasis from structural contacts (cycle-specific) from epistasis arising from redistribution of the energy landscape (shared across cycles).
Occupancy is inferred from E. coli growth in a dual-marker selection scheme: kanR (kanamycin resistance, growth enhanced when expressed) and pheS* (4-chloro-L-phenylalanine sensitivity, growth reduced when expressed) respond in opposite directions to a shift in occupancy. Libraries of TF variants are grown in different effector/selection combinations and variant frequencies are followed over time by direct sequencing. A hierarchical Bayesian model fits the read counts, alone or jointly with direct binding measurements, and learns the relationship between occupancy and growth rate along the way.
Full documentation is available at https://tfscreen.readthedocs.io. To analyze a screen, start
with the "Analyzing a screen" page: per-tube read counts to per-genotype response curves with
intervals, through one command, tfs-fit-two-stage. The pipeline page walks from sequencing
reads to a posterior, and the CLI reference lists every tfs-* command and flag.
Clone the repository and install in editable mode:
git clone https://github.com/harmslab/tfscreen cd tfscreen pip install -e .
On a Linux machine with a CUDA 12 GPU, use pip install -e ".[cuda12]"
(plain jax from pip runs on the CPU only). tfscreen needs Python 3.12 or
newer.