Rhaister / scripts /data_prep /README.md
Shreshth Gandhi
Import Rhaister main branch from GitHub source
5a72781
|
Raw
History Blame Contribute Delete
3.77 kB
# Data Preparation Scripts
These scripts generate the input parquets Rhaister consumes from raw single-cell
h5ad files. Both scripts are config-driven: a YAML file specifies column names,
control conditions, normalization, and paths. See `configs/` for dataset configs.
## Two output types
| Output | Format | Method | Script |
|---|---|---|---|
| **pdex** | Long: (target, feature, fold_change, p_value, fdr, ...) | Mann-Whitney U via `pdex` library | `compute_pdex.py` |
| **cell_eval deltas** | Wide: (group_col, treatment_col, gene1, ..., geneN) | Pseudobulk mean(treated) - mean(control) | `compute_celleval_deltas.py` |
These are kept as separate parquets because they may cover different gene subsets
(e.g. cell_eval HVG mode produces 2K genes while pdex covers 62K).
Both are computed **within batch** using that batch's own control cells:
| Dataset | Batch unit | Cell identity | Treatment | Control |
|---|---|---|---|---|
| **Tahoe** | plate (14) | cell_line (50 CVCL IDs) | drug+dose | DMSO |
| **Parse** | cell_type (18) | donor (12) | cytokine | PBS |
## Usage
```bash
# --- Tahoe ---
# pdex (fold change, p-value, FDR)
python scripts/data_prep/compute_pdex.py scripts/data_prep/configs/tahoe.yaml
# cell_eval deltas (2K HVG genes)
python scripts/data_prep/compute_celleval_deltas.py scripts/data_prep/configs/tahoe.yaml
# cell_eval deltas (full ~63K genes)
python scripts/data_prep/compute_celleval_deltas.py scripts/data_prep/configs/tahoe.yaml --profile celleval_full
# --- Parse ---
# pdex
python scripts/data_prep/compute_pdex.py scripts/data_prep/configs/parse.yaml
# cell_eval deltas
python scripts/data_prep/compute_celleval_deltas.py scripts/data_prep/configs/parse.yaml
# --- Common options ---
# Process specific files only
python scripts/data_prep/compute_pdex.py configs/tahoe.yaml \
--files plate1_full_filtered.h5ad.gz plate2_full_filtered.h5ad.gz
# Override output directory
python scripts/data_prep/compute_celleval_deltas.py configs/tahoe.yaml \
--output_dir /tmp/test_output
```
## Config structure
```yaml
dataset: tahoe # dataset name
h5ad_dir: /path/to/h5ad/files # directory with h5ad files
h5ad_pattern: "plate*.h5ad.gz" # glob pattern for h5ad files
treatment_col: drugname_drugconc # obs column for treatment condition
control: "[('DMSO_TF', 0.0, 'uM')]" # control condition value
group_col: cell_line # stratification column within each file
file_id_col: null # optional: carry filename as a column
pdex:
output_dir: /path/to/pdex_output
threads: 32
celleval: # profile name (--profile celleval)
output_dir: /path/to/delta_output
gene_mode: hvg # "hvg" or "all_genes"
hvg_key: X_hvg # obsm key for HVG mode
gene_name_col: gene_symbol # var column for gene names
target_sum: 1872 # for normalize_total in all_genes mode
celleval_full: # alternate profile (--profile celleval_full)
output_dir: /path/to/delta_full_output
gene_mode: all_genes
gene_name_col: gene_name
target_sum: 1872
```
## Dependencies
- `anndata` β€” h5ad I/O
- `pdex` β€” Mann-Whitney differential expression (`compute_pdex.py` only)
- `scipy` β€” sparse matrix operations
- `polars` β€” parquet I/O (`compute_pdex.py`)
- `pandas` β€” parquet I/O (`compute_celleval_deltas.py`)
- `pyyaml` β€” config loading
- `numpy`
## Adding a new dataset
1. Create `configs/<dataset>.yaml` specifying your column names, control, and paths
2. Run `compute_pdex.py` and `compute_celleval_deltas.py` with your config
3. Add a `splits/<dataset>/dataset.toml` pointing to the output parquets