Skip to main content

CPU-friendly sequence-only CRISCross off-target prediction with a scikit-learn-style API.

Project description

criscross

CPU-friendly sequence-only CRISCross off-target prediction with a scikit-learn-style API. The pretrained model weights ship inside the wheel (fp16 + zstd-compressed) so no extra downloads are required.

Install

pip install criscross

CPU-only install (no CUDA libraries pulled in):

pip install criscross --extra-index-url https://download.pytorch.org/whl/cpu

Quickstart

from criscross import sequence_model
import pandas as pd

# Single datapoint (dict)
prob = sequence_model.predict({
    "Guide_sequence":   "GCTCGGGGACACAGGATCCCTGG",     # 23 nt
    "off_target_512nt": "GCAG...TGCC",                 # 512 nt, RC for - strand
    "strand_id":        1,                             # 1 for +, 0 for -
})
print(prob)   # float in [0, 1]

# Dataset (DataFrame or CSV path)
df = pd.read_csv("examples/sample_input.csv")
probs = sequence_model.predict(df)           # -> np.ndarray, shape [N]
probs = sequence_model.predict("examples/sample_input.csv")  # same

Preparing inputs from a genome scan (Cas-OFFinder)

If you have guide RNA(s) and a reference genome FASTA, you can generate the Guide_sequence/off_target_512nt/strand_id table with Cas-OFFinder and feed it directly into sequence_model.predict(...).

from criscross import offinder, sequence_model

# One-time: download cas-offinder 2.4.1 (optional convenience helper)
cas = offinder.install_cas_offinder()

X = offinder.prepare(
    guide_rnas=["GCTCGGGGACACAGGATCCCTGG"],
    fasta="/path/to/GRCh38.primary_assembly.genome.fa",
    pam="NGG",            # default
    max_mismatches=6,     # default
    cas_offinder_path=cas,
)

# X is a DataFrame you can pass straight to criscross
probs = sequence_model.predict_proba(X)

Requirements:

  • Cas-OFFinder needs an OpenCL runtime even for CPU mode. On Linux, the simplest CPU runtime is PoCL, e.g. conda install -c conda-forge pocl ocl-icd-system (or sudo apt install pocl-opencl-icd).
  • If you already installed Cas-OFFinder yourself, skip install_cas_offinder() and just set CAS_OFFINDER=/path/to/cas-offinder (or pass cas_offinder_path=).

Accepted inputs to predict(X)

X Returned
dict / pandas.Series with the 3 required keys float
(guide, off_target_512nt, strand_id) 3-tuple float
pandas.DataFrame with the 3 required columns np.ndarray shape [N]
list of dicts np.ndarray shape [N]
str / pathlib.Path pointing to a CSV with the 3 columns np.ndarray shape [N]

Required columns/keys:

key dtype meaning
Guide_sequence 23nt string sgRNA guide sequence
off_target_512nt 512nt string candidate off-target window, already reverse-complemented for - strand
strand_id int 0/1 1 for + strand, 0 for -

CLI

criscross predict --csv examples/sample_input.csv --out preds.csv

If the input CSV also has a label column (0/1), AUPRC is printed to stderr.

Loading a custom checkpoint

from criscross import sequence_model
sequence_model.load("path/to/my_model.pt")           # fp32 raw .pt
sequence_model.load("path/to/my_model.pt.zst")       # zstd-compressed fp16

Inspecting the model

sequence_model.config()    # hyperparameters used to build CRISCross(**config)
sequence_model.metadata()  # versions, training-time test_auprc, input/output signature, seed

Citation

If you use this package in research, please cite the upstream CRISCross work. This package is a CPU-only, sequence-only repackaging of that model.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

criscross-0.1.2.tar.gz (70.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

criscross-0.1.2-py3-none-any.whl (70.4 MB view details)

Uploaded Python 3

File details

Details for the file criscross-0.1.2.tar.gz.

File metadata

  • Download URL: criscross-0.1.2.tar.gz
  • Upload date:
  • Size: 70.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for criscross-0.1.2.tar.gz
Algorithm Hash digest
SHA256 77a47979adc0d66f9216646e30368cc364c1bd0cbdf77147b55e890e7b9d9f69
MD5 d75e490a2a6e9d0d2d7a8cbbe8848d70
BLAKE2b-256 d2d604b0a4252001542a14334541df7743dc6a10efd1e3b37fd912a141ce5a10

See more details on using hashes here.

File details

Details for the file criscross-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: criscross-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 70.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for criscross-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9e5334b35c46a2df8afa5d31a7340d50788d2b92a816c3320938b5342aa69b9c
MD5 f208ccc158107da3f590287dd487c971
BLAKE2b-256 029d13fefcdde10eb32b9739abf4af5b5e213894cf13f98df15f724da4512303

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page