popari.model.Popari#
- class popari.model.Popari(K, replicate_names=None, datasets=None, dataset_path=None, reloaded_hierarchy=None, lambda_Sigma_x_inv=0.0001, pretrained=False, initialization_method='leiden', hierarchical_levels=1, metagene_groups=None, spatial_affinity_groups=None, betas=None, prior_x_modes=None, M_constraint='simplex', sigma_yx_inv_mode='separate', torch_context=None, initial_context=None, metagene_mode='shared', spatial_affinity_mode='shared lookup', lambda_M=0.5, lambda_Sigma_bar=0.001, spatial_affinity_lr=0.01, spatial_affinity_tol=0.002, spatial_affinity_constraint=None, spatial_affinity_centering=False, spatial_affinity_scaling=10, spatial_affinity_regularization_power=2, embedding_mini_iterations=1000, embedding_acceleration_trick=True, embedding_step_size_multiplier=1.0, downsampling_method='grid', binning_downsample_rate=0.2, chunks=2, superresolution_lr=0.1, use_inplace_ops=True, random_state=0, verbose=0)[source]#
Popari optimization model.
Models spatial biological data using the NMF-HMRF formulation. Supports multiple fields-of-view (FOVs) and differential analysis.
Example of including math in docstring (for use later): \(||A||_F = [\sum_{i,j} abs(a_{i,j})^2]^{1/2}\)
- Parameters:
K (int)
replicate_names (Sequence[str] | None)
datasets (Sequence[AnnData] | None)
dataset_path (str | Path | None)
reloaded_hierarchy (dict | None)
lambda_Sigma_x_inv (float)
pretrained (bool)
initialization_method (str)
hierarchical_levels (int)
metagene_groups (dict | None)
spatial_affinity_groups (dict | None)
betas (Sequence[float] | None)
prior_x_modes (Sequence[str] | None)
M_constraint (str)
sigma_yx_inv_mode (str)
torch_context (dict | None)
initial_context (dict | None)
metagene_mode (str)
spatial_affinity_mode (str)
lambda_M (float)
lambda_Sigma_bar (float)
spatial_affinity_lr (float)
spatial_affinity_tol (float)
spatial_affinity_constraint (str | None)
spatial_affinity_centering (bool)
spatial_affinity_scaling (int)
spatial_affinity_regularization_power (int)
embedding_mini_iterations (int)
embedding_acceleration_trick (bool)
embedding_step_size_multiplier (float)
downsampling_method (str)
binning_downsample_rate (float)
chunks (int)
superresolution_lr (float)
use_inplace_ops (bool)
random_state (int)
verbose (int)
- K#
number of metagenes to learn
- replicate_names#
names of spatial datasets
- datasets#
list of input AnnData spatial datasets for Popari.
- dataset_path#
path to AnnData merged dataset on disk. Ignored if
datasetsis specified.
- reloaded_hierarchy#
data from previous hierarchical run of Popari.
- lambda_Sigma_x_inv#
hyperparameter to balance importance of spatial information. Default:
1e-4
- pretrained#
if set, attempts to load model state from input files. Default:
False
- initialization_method#
algorithm to use for initializing metagenes and embeddings. Default:
leiden
- hierarchical_levels#
number of hierarchical levels to use. Default:
1(non-hierarchical mode)
- metagene_groups#
defines a grouping of replicates for the metagene optimization. If
metagene_mode == "shared", then one set of metagenes will be created for each group; ifmetagene_mode == "differential", then all replicates will have their own set of metagenes, but each group will share an ``M_bar.
- spatial_affinity_groups#
defines a grouping of replicates for the spatial affinity optimization. If
spatial_affinity_mode == "shared lookup", then one set of spatial_affinities will be created for each group; ifspatial_affinity_mode == "differential lookup", then all replicates will have their own set of spatial affinities, but each group will share aspatial_affinity_bar.
- betas#
weighting of each dataset during optimization. Defaults to equally weighting each dataset
- prior_x_modes#
family of prior distribution for embeddings of each dataset
- M_constraint#
constraint on columns of M. Default:
simplex
- sigma_yx_inv_mode#
form of sigma_yx_inv parameter. Default:
separate
- torch_context#
keyword args to use of PyTorch tensors during training.
- initial_context#
keyword args to use during initialization of PyTorch tensors.
- metagene_mode#
modality of metagene parameters. Default:
shared.metagene_modeOption
sharedA metagene set is shared between all replicates in a group.
differentialEach replicate learns its own metagene set.
- spatial_affinity_mode#
modality of spatial affinity parameters. Default:
shared lookup
- lambda_M#
hyperparameter to constrain metagene deviation in differential case. Ignored if
metagene_modeisshared. Default:0.5
- lambda_Sigma_bar#
hyperparameter to constrain spatial affinity deviation in differential case. Ignored if
spatial_affinity_modeisshared lookup. Default:0.5
- spatial_affinity_lr#
learning rate for optimization of
Sigma_x_inv
- spatial_affinity_tol#
convergence tolerance during optimization of
Sigma_x_inv
- spatial_affinity_constraint#
method to ensure that spatial affinities lie within an appropriate range
- spatial_affinity_centering#
if set, spatial affinities are zero-centered after every optimization step
- spatial_affinity_scaling#
magnitude of spatial affinities during initial scaling. Default:
10
- spatial_affinity_regularization_power#
exponent controlling penalization of spatial affinity magnitudes. Default:
2
- embedding_mini_iterations#
number of mini-iterations to use during each iteration of embedding optimization. Default:
1000
- embedding_acceleration_trick#
if set, use trick to accelerate convergence of embedding optimization. Default:
True
- embedding_step_size_multiplier#
controls relative step size during embedding optimization. Default:
1.0
- binning_downsample_rate#
ratio of number of spots at low resolution to high resolution when using hierarchical mode
- superresolution_lr#
learning rate for optimization of
Xfrom low-res embeddings
- use_inplace_ops#
if set, inplace PyTorch operations will be used to speed up computation
- random_state#
seed for reproducibility of randomized computations. Default:
0
- verbose#
level of verbosity to use during optimization. Default:
0(no print statements)
Methods
estimate_parameters([...])Update parameters for each replicate.
estimate_weights([use_neighbors, synchronize])Update embeddings (latent states) for each replicate.
load_anndata_datasets(datasets, replicate_names)Load Popari data directly from AnnData objects.
load_dataset(dataset_path)Load dataset into Popari from saved .h5ad file.
nll([level, use_spatial])Compute the nll for the current configuration of model parameters.
save_results(dataset_path[, ignore_raw_data])Save datasets and learned Popari parameters to disk.
set_superresolution_lr(new_lr[, target_level])Change learning rate for superresolution optimization.
superresolve([...])Superresolve embeddings in hierarchical case.
Synchronize datasets across all hierarchical levels.