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(orsudo apt install pocl-opencl-icd). - If you already installed Cas-OFFinder yourself, skip
install_cas_offinder()and just setCAS_OFFINDER=/path/to/cas-offinder(or passcas_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77a47979adc0d66f9216646e30368cc364c1bd0cbdf77147b55e890e7b9d9f69
|
|
| MD5 |
d75e490a2a6e9d0d2d7a8cbbe8848d70
|
|
| BLAKE2b-256 |
d2d604b0a4252001542a14334541df7743dc6a10efd1e3b37fd912a141ce5a10
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e5334b35c46a2df8afa5d31a7340d50788d2b92a816c3320938b5342aa69b9c
|
|
| MD5 |
f208ccc158107da3f590287dd487c971
|
|
| BLAKE2b-256 |
029d13fefcdde10eb32b9739abf4af5b5e213894cf13f98df15f724da4512303
|