smoother.models.reduction._sppca

Classes

SpatialLoss

Spatial loss.

SpatialPCA

Solving PCA using stochastic gradient descent.

Module Contents

class smoother.models.reduction._sppca.SpatialLoss(prior, spatial_weights: List[smoother.weights.SpatialWeightMatrix] = None, rho=1, use_sparse=True, standardize_cov=False)

Bases: torch.nn.Module

Spatial loss.

The spatial smoothing loss on a spatial random variable (num_group x num_spot).

prior

The prior spatial process model, can be one of ‘sma’,’sar’, ‘car’, ‘icar’.

Type:

str

spatial_weights

Spatial weight matrix collection of length num_group or 1. If 1 then all groups will be subject to the same covariance.

Type:

List[SpatialWeightMatrix]

rho

The spatial autocorrelation parameter (for SpatialWeightMatrix.get_inv_cov).

Type:

float

use_sparse

Whether to use sparse inverse covariance matrix in the calculation.

Type:

bool

standardize_cov

Whether to standardize the covariance matrix to have same variance (1) across locations. Only proper covariance can be standardized.

Type:

bool

inv_cov

Inverse covariance (precision) matrix of spatial variables of each group, (num_group or 1) x n x n. If the first dimension has length 1, all groups will have the same covariance structure.

Type:

3D tensor

inv_cov_2d_sp

Sparse block diagonal inverse covariance (precision) matrix.

Type:

2D sparse tensor

confidences

Relative prior confidence of each group. The higher the confidence, the stronger the smoothing will be. If float, all groups will have the same confidence.

Type:

1D tensor or float

_sanity_check() None

Check whether the spatial loss is defined properly.

estimate_confidence(ref_exp, st_exp, method='lr') None

Estimate the relative confidence for each group.

The covariance matrix will be scaled accordingly.

Parameters:
  • ref_exp (2D tensor) – Bulk expression signiture matrix, num_gene x num_group.

  • st_exp (2D tensor) – Spatial expression matrix, num_gene x num_spot.

  • method (str) – Method used to estimate variance.

forward(coefs, normalize=True)

Calculate spatial loss.

Parameters:

coefs (2D tensor) – Columns of regression coefficients, num_group x num_spot.

calc_corr_decay_stats(coords, min_k=0, max_k=50, cov_ind=0, return_var=False)

Calculate spatial covariance decay over degree of neighborhoods.

Covariance measured between k-nearest neighbors. If the number of covariance matrices (i.e. self.inv_cov.shape[0]) is larger than 1, use ‘cov_ind’ to select the covariance matrix to use.

Parameters:
  • coords (2D tensor) – Coordinates of spots, num_spot x 2.

  • min_k – Minimum number of k in k-nearest neighbors. k = 0: self.

  • max_k – Maximum number of k in k-nearest neighbors.

  • cov_ind (int) – Index of the covariance matrix to use.

  • return_var (bool) – Whether to return variance stats.

Returns:

Correlation decay quantiles. var_quantiles_df (pd.DataFrame): Per-spot variance quantiles.

Return type:

corr_decay_quantiles_df (pd.DataFrame)

class smoother.models.reduction._sppca.SpatialPCA(adata: anndata.AnnData, layer: str | None = None, n_latent: int = 10, spatial_loss: smoother.SpatialLoss | None = None, lambda_spatial_loss=0.1)

Bases: torch.nn.Module

Solving PCA using stochastic gradient descent.

load_adata(adata: anndata.AnnData, layer: str | None = None)

Load data to project.

Parameters:
  • adata (AnnData) – data to project.

  • layer (str) – layer to project. If None, use adata.X.

_gram_schmidt(U)

Project the PC basis matrix to the feasible space.

Parameters:

U (2D tensor) – PC basis matrix, num_feature x num_pc.

forward(x)

Project x to the lower PC space.

Parameters:

x (2D tensor) – data to project, num_feature x num_sample.

_init_with_svd(x)

Initialize model with svd solution.

Parameters:

x (2D tensor) – data to project, num_feature x num_sample.

get_latent_representation()

Project loaded data to the lower PC space and return the latent representation.

reduce(lr=1.0, max_epochs=1000, patience=10, tol=1e-05, init_with_svd=False, verbose=True, quite=False, clear_logs=True)

Reduce the dimension of the expression matrix.

Parameters:
  • lr (float) – The learning rate.

  • max_epochs (int) – The maximum number of epochs.

  • patience (int) – The patience for early stopping.

  • tol (float) – The tolerated convergence error.

  • init_with_svd (bool) – Whether to initialize with analytical solution calculated using torch.svd_lowrank().

  • verbose (bool) – If True, print out loss while training.

  • quite (bool) – If True, no output printed.

  • clear_logs (bool) – If True, clear logs before training.

classmethod from_rna_model(rna_model, st_adata: anndata.AnnData, layer: str | None = None, spatial_loss: smoother.SpatialLoss | None = None, lambda_spatial_loss=0.1)

Initialize a spatial model from a pre-trained RNA model.

classmethod from_scanpy(adata: anndata.AnnData, layer: str | None = None, spatial_loss: smoother.SpatialLoss | None = None, lambda_spatial_loss=0.1)

Initialize a spatial model from a pre-trained RNA model.