scPTR / src /scptr /tools /_motif_priors.py
bryan7264's picture
Add files using upload-large-folder tool
925ee3b verified
Raw
History Blame Contribute Delete
1.49 kB
"""Motif-guided priors for post-transcriptional network inference."""
from __future__ import annotations
from pathlib import Path
import pandas as pd
_DATA_DIR = Path(__file__).parent / "data"
def load_motif_priors(source: str | Path) -> pd.DataFrame:
"""Load RBP-target prior weights from a user-provided CSV.
The CSV must have at least columns ``regulator``, ``target``, and ``weight``.
Parameters
----------
source
Path to a CSV file with columns ``regulator``, ``target``, ``weight``.
Returns
-------
DataFrame with columns ``['regulator', 'target', 'weight']``.
"""
df = pd.read_csv(source)
required_cols = {"regulator", "target", "weight"}
missing = required_cols - set(df.columns)
if missing:
raise ValueError(
f"Prior network CSV is missing required columns: {missing}. "
f"Expected columns: {sorted(required_cols)}"
)
return df[["regulator", "target", "weight"]].copy()
def list_known_rbps(organism: str | None = None) -> list[str]:
"""Return curated list of known RNA-binding proteins.
Parameters
----------
organism
Filter by organism: ``'human'``, ``'mouse'``, or ``None`` (all).
Returns
-------
Sorted list of gene symbols.
"""
csv_path = _DATA_DIR / "known_rbps.csv"
df = pd.read_csv(csv_path)
if organism is not None:
df = df[df["organism"] == organism]
return sorted(df["gene_symbol"].tolist())