smoother.models.reduction._spae

Classes

AutoEncoderClass

Abstract AutoEncoder class.

SpatialAutoEncoder

Generic spatial auto-encoder.

Module Contents

class smoother.models.reduction._spae.AutoEncoderClass(n_feature: int, n_latent: int = 10, spatial_loss: smoother.losses.SpatialLoss | None = None, lambda_spatial_loss=0.1, lambda_orth_loss=0.1)

Bases: torch.nn.Module

Abstract AutoEncoder class.

To mimic the behavior of PCA, the overall objective contains three losses:
  1. Reconstruction loss: reconstruction error of the observed data.

  2. Orthogonality loss: the loss of orthogonality on the hidden embeddings.

  3. Spatial loss: the spatial loss on the hidden embeddings.

n_latent = 10
n_feature
_data = None
spatial_loss = None
l_sp_loss = 0.1
l_orth_loss = 0.1
dr_configs
dr_logs
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.

forward(x)
encode(x)
decode(x_enc)
get_latent_representation()

Get the latent representation of the loaded data.

abstract get_recon_loss()

Get the reconstruction loss.

abstract get_orth_loss()

Get the orthogonality loss (weighted by lambda_orth_loss).

abstract get_sp_loss()

Get the spatial loss (weighted by lambda_spatial_loss).

reduce(lr=0.01, max_epochs=1000, patience=10, tol=1e-05, optimizer='SGD', verbose=True, quite=False, clear_logs=True)
classmethod _reduce_dim_ae(ae_model, lr=0.01, max_epochs=1000, patience=10, tol=1e-05, optimizer='SGD', verbose=True, quite=False, clear_logs=False, return_model=False)

Dimension reduction using auto-encoders.

Two additional losses are added in addition to the reconstruction loss:
  1. Orthogonality loss: the loss of the orthogonality of the hidden embedding.

  2. Spatial loss: the spatial loss on the hidden embeddings.

Parameters:
  • ae_model (AutoEncoder) – The autoencoder model.

  • 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.

  • optimizer (str) – The optimizer to be used. Can be ‘SGD’ or ‘Adam’.

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

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

  • clear_logs (bool) – If True, clear the logs in the autoencoder model.

  • return_model (bool) – If True, return the trained autoencoder model.

Returns:

The trained autoencoder model.

Return type:

ae_model (AutoEncoder)

class smoother.models.reduction._spae.SpatialAutoEncoder(adata: anndata.AnnData, layer: str | None = None, spatial_loss: smoother.losses.SpatialLoss | None = None, lambda_spatial_loss=0.1, lambda_orth_loss=0.1, recon_loss_mode: Literal['mse', 'poisson'] = 'poisson', n_layers: int = 1, n_hidden: int = 128, n_latent: int = 10, dropout_rate: float = 0.0, use_batch_norm: bool = True, use_activation: bool = True, activation_fn: torch.nn.Module | None = nn.ReLU, use_bias=True)

Bases: AutoEncoderClass

Generic spatial auto-encoder.

setup_args
lib_size
encoder
decoder
encode(x)

Project the input to the hidden space.

Parameters:

x (2D tensor) – The input matrix, num_gene x num_spot.

Returns:

The hidden embedding, num_spot x num_hidden.

Return type:

x_enc (2D tensor)

decode(x_enc)

Project the hidden embedding back to the input space.

Parameters:

x_enc (2D tensor) – The hidden embedding, num_spot x num_hidden.

Returns:

The decoded matrix, num_gene x num_spot.

Return type:

x_dec (2D tensor)

get_recon_loss()

Get the reconstruction loss.

get_orth_loss()

Get the orthogonality loss (weighted by lambda_orth_loss).

get_sp_loss()

Get the spatial loss (weighted by lambda_spatial_loss).

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

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