EPInformer / README.md
JiecongLin's picture
Add all 6 enhancer encoders (12 leave-chromosome-out folds each) + update model card
4f7c19b verified
|
Raw
History Blame
2.8 kB
metadata
license: mit
tags:
  - biology
  - genomics
  - gene-expression
  - enhancer
  - regulatory-genomics
  - dna
library_name: pytorch

EPInformer — reproducible pipeline (pretrained checkpoints)

Pretrained checkpoints for the EPInformer reproducible pipeline — a from-raw-ENCODE reproduction of EPInformer across 6 cell lines (K562, GM12878, H1, HepG2, HUVEC, NHEK).

Two models (defined in EPInformer/models.py on the reproducible_pipeline branch):

  • enhancer_predictor_256bp — 256 bp enhancer-activity encoder; predicts log2(0.1 + sqrt(H3K27ac·DNase)) activity from sequence.
  • EPInformer_v2 — gene-expression model (RNA / CAGE) that reuses the frozen encoder as its sequence backbone.

Results (12-fold leave-chromosome-out, pooled Pearson R)

Enhancer encoder (log2 activity):

H1 HepG2 K562 HUVEC NHEK GM12878
R 0.820 0.743 0.740 0.742 0.677 0.617

Gene expression (shipped f3 = frozen encoder + 3 enhancer features + promoter signal):

K562 GM12878 HepG2 HUVEC NHEK H1
RNA 0.856 0.860 0.845 0.839 0.828 0.781
CAGE 0.867 0.890

CAGE labels exist only for K562/GM12878 (the other four are RNA-only).

Files

enhancer_encoders/{CELL}/fold_{i}.pt   # CELL ∈ {K562, GM12878, H1, HepG2, HUVEC, NHEK}, i ∈ 1..12

These are the reproduction's 256 bp enhancer-activity encoders — the best checkpoint for each of the 12 leave-chromosome-out folds, for all 6 cell lines (72 checkpoints). Any fold works for inference; the R values in the table above are pooled across all 12 held-out folds.

The KLF1 demo in the notebooks uses the original published EPInformer encoder shipped in the repo's trained_models/pretrained_enhancer_encoder/ — a separate checkpoint from these reproduction folds.

Usage

import torch
from huggingface_hub import hf_hub_download
# the model class lives on the reproducible_pipeline branch:
#   git clone -b reproducible_pipeline https://github.com/pinellolab/EPInformer
from EPInformer.models import enhancer_predictor_256bp

ckpt = hf_hub_download("JiecongLin/EPInformer-reproducible", "enhancer_encoders/K562/fold_8.pt")
net = enhancer_predictor_256bp()
net.load_state_dict(torch.load(ckpt, map_location="cpu", weights_only=False)["model_state_dict"])
net.eval()

See the project wiki for the full training and evaluation guide, and the reproducible_pipeline branch for code.