Installation

Currently we support local installation from Starfysh root directory:

# install
python setup.py install --user

# uninstall
pip uninstall starfysh

Quickstart

import numpy as np
import pandas as pd
import torch
from starfysh import (
    AA,
    dataloader,
    starfysh,
    utils,
    plot_utils,
    post_analysis
)

# (1) Loading dataset & signature gene sets
data_path = 'data/' # specify data directory
sig_path = 'signature/signatures.csv' # specify signature directory
sample_id = 'CID44971_TNBC'

# --- (a) ST matrix ---
adata, adata_norm = utils.load_adata(
    data_path,
    sample_id,
    n_genes=2000
)

# --- (b) paired H&E image + spots info ---
hist_img, map_info = utils.preprocess_img(
    data_path,
    sample_id,
    adata.obs.index,
    hchannal=False
)

# --- (c) signature gene sets ---
gene_sig = utils.filter_gene_sig(
    pd.read_csv(sig_path),
    adata.to_df()
)

# (2) Starfysh deconvolution

# --- (a) Preparing arguments for model training
args = utils.VisiumArguments(
    adata,
    adata_norm,
    gene_sig,
    map_info,
    n_anchors=60, # number of anchor spots per cell-type
    window_size=5  # library size smoothing radius
)

adata, adata_noprm = args.get_adata()

# --- (b) Model training ---
n_restarts = 3
epochs = 100
patience = 10
device = torch.device('cpu')

model, loss = utils.run_starfysh(
    args,
    n_restarts,
    epochs=epochs,
    patience=patience
)

# (3). Parse deconvolution outputs
inferences, generatives, px = starfysh.model_eval(
    model,
    adata,
    args.sig_mean,
    device,
    args.log_lib,
)