LoopSage is an energy-based stochastic model of chromatin loop extrusion. Cohesin complexes are modelled as loop-extruding factors (LEFs) that slide along a chromatin fibre, are blocked by CTCF sites and rebind elsewhere. A Metropolis / simulated-annealing Monte Carlo samples ensembles of loop configurations that agree with your loop data (e.g. ChIA-PET, HiChIP, Hi-C loops, or CTCF peaks). Each ensemble can be turned into 3D structures with a short OpenMM molecular-dynamics run.
From one command you get an HTML report with the contact maps, loop statistics, 3D structures and diagnostics.
Python 3.10 or newer is required. openmm and pyBigWig install most reliably from conda. hic-straw (reads .hic files for the optional --hic reference) is installed with the package. It needs a C++ compiler and libcurl when no wheel exists for your system.
git clone https://github.com/SFGLab/pyLoopSage.git
cd pyLoopSage
conda create -n loopsage python=3.11 -y && conda activate loopsage
conda install -c conda-forge "openmm>=8.5.1" pybigwig -y
pip install -r requirements.txt && pip install -e .Then install the package (pip install -e .) to get the loopsage command (version 2.0.0rc2).
# Minimal run: loops file + region
loopsage -f loops.bedpe -r chr1:77000000-95000000
# Settings from a config file, with command-line overrides
loopsage -c config.ini -t 4 --n-replicas 3
# BEDPE without orientation columns: read CTCF orientation from the reference genome, keep loops with >= 3 PET
loopsage -f loops.bedpe -r chr1:77000000-95000000 --motif-genome hg38.fa --min-pet 3
# See every option
loopsage -h- Input: a
.bedpeloop file, or.bed/.narrowPeakCTCF sites, plus the genomic region. - CTCF motif search (optional): with
--motif-genome FASTAevery loop anchor is scanned for the CTCF motif (bundled JASPAR MA0139.1, or your own--motif-pfm) and the orientation probabilities are added automatically;--min-pet Nkeeps only loops with at least N PET counts (works without a genome too). Needs no extra packages; the genome is read through a.faiindex and never loaded into memory. Hits are accepted at--motif-pvalue(default 1e-5). The report shows a progress bar while searching and a diagnostics section (loops kept, motif scores, orientation calls). The annotated loops are saved in the run'sdatafolder. - Config:
config_example.inilists every parameter with a short description; command-line flags override it. - Output:
results/<chrom>_<start>_<end>_<run>/, with the report inreport/report.html. - MD platform:
--platform auto(default) tries CUDA, then OpenCL, then the multi-threaded CPU platform, and the chosen platform is always printed. Force one with--platform CUDA|OpenCL|CPU. - Monte Carlo:
--method Metropolis|Annealing,--t-init,--t-final,--mc-steps,--sample-everyand--burnincontrol the sampler (all also keys in the config file). - Parallelism:
-t/--threadssets worker threads and--n-replicasruns independent Monte Carlo chains (default 1). - Demo:
python demo/run_demo.py quickruns a small example in seconds.
Detailed documentation of the model, parameters and outputs: sfglab.github.io/pyLoopSage (sources in markdown/).
After pip install pyLoopSage the package is imported as loopsage:
import loopsage as ls
sim = ls.Simulation("config.ini", n_steps=20000) # or keyword arguments instead of a file
sim.run() # same as the `loopsage` command
mc = sim.monte_carlo() # or run one step at a time
import loopsage.monte_carlo as mc # every module can be imported on its ownSee the Python interface page of the documentation.
Run the whole suite in parallel, with a per-module report:
python tools/run_tests.py # all tests, one worker per two cores
python tools/run_tests.py -j 8 --html # 8 workers, also writes test_report/report.html
python tools/run_tests.py -k contrast # only tests whose name matchesPlain PYTHONPATH=src python -m pytest -q also works, but runs the files one after another (about 15 minutes). Tests of optional packages (hicstraw, pyBigWig) are skipped when those are not installed.
If you use LoopSage, please cite:
- Korsak, S. and Plewczynski, D. LoopSage: An energy-based Monte Carlo approach for the loop extrusion modelling of chromatin. Methods (2024).
- Jodkowska, K., Parteka-Tojek, Z., Agarwal, A., Denkiewicz, M., Korsak, S., Chiliński, M., Banecki, K., & Plewczynski, D. Improved cohesin HiChIP protocol and bioinformatic analysis for robust detection of chromatin loops and stripes. bioRxiv (2024). https://doi.org/10.1101/2024.05.16.594268
GNU General Public License v3.0.
