spcoral.model.integrate_model#
- class spcoral.model.integrate_model(adata_omics1, adata_omics2, graph_method_single, k_spatial_omics1=None, radius_spatial_omics1=None, k_spatial_omics2=None, radius_spatial_omics2=None, use_obsm='spatial', g_all_auto=True, k_feature_omics1=10, k_feature_omics2=10, k_cross_omics=20, k_all_omics=25, loss_weight=[1, 1, 1, 1, 1], hidden_dim=128, latent_dim=64, device=device(type='cuda', index=0), random_seed=2020, strict_repro=False, learning_rate=0.001, weight_decay=0.0001, epochs=300, gradient_clipping=5.0, embedding_key='emb_spcoral', rec_key='rec_spcoral', cross_key='cross_spcoral')#
Bases:
objectA graph autoencoder model for cross-modality spatial omics integration.
This class integrates two spatial omics datasets by learning joint latent embeddings using a multi-graph attention-based autoencoder. It leverages: - Modality-specific spatial graphs, - Feature-based similarity graphs, - Cross-modality spatial nearest-neighbor graphs, - A unified joint graph combining all connections.
- Parameters:
adata_omics1 (anndata.AnnData) – First omics AnnData object. Must contain
obsm['feat'](modality-specific features) and spatial coordinates inobsm[use_obsm].adata_omics2 (anndata.AnnData) – Second omics AnnData object with the same requirements.
graph_method_single (str) – Method for building individual spatial graphs for each modality (e.g., ‘knn’ or ‘radius’; passed to
adata_to_dgl).k_spatial_omics1 (int, optional) – Number of spatial neighbors for omics1 (used if
graph_method_single='knn').radius_spatial_omics1 (float, optional) – Radius for omics1 spatial graph (used if
graph_method_single='radius').k_spatial_omics2 (int, optional) – Number of spatial neighbors for omics2.
radius_spatial_omics2 (float, optional) – Radius for omics2 spatial graph.
use_obsm (str, optional (default: 'spatial')) – Key in
.obsmcontaining spatial coordinates.g_all_auto (bool, optional (default: True)) – If True, automatically construct the joint graph from individual and cross graphs. If False, build it directly from all coordinates using
k_all_omics.k_feature_omics1 (int, optional (default: 10)) – Number of feature-based nearest neighbors for omics1.
k_feature_omics2 (int, optional (default: 10)) – Number of feature-based nearest neighbors for omics2.
k_cross_omics (int, optional (default: 20)) – Number of cross-modality spatial nearest neighbors (bipartite edges).
k_all_omics (int, optional (default: 25)) – Number of neighbors in joint graph when
g_all_auto=False.loss_weight (list of float, optional (default: [1, 1, 1, 1, 1])) – Weights for the five loss components: [recon_omics1, recon_omics2, cross_omics1, cross_omics2, spatial_graph].
hidden_dim (int, optional (default: 128)) – Hidden dimension in the GAE encoder/decoder.
latent_dim (int, optional (default: 64)) – Dimension of the final latent embedding.
device (torch.device, optional (default: torch.device('cuda:0'))) – Device for training.
random_seed (int, optional (default: 2020)) – Random seed for reproducibility.
strict_repro (bool, optional (default: False)) – Enforce strict reproducibility (e.g., deterministic CUDA).
learning_rate (float, optional (default: 0.001)) – Optimizer learning rate.
weight_decay (float, optional (default: 0.0001)) – Weight decay for Adam optimizer.
epochs (int, optional (default: 300)) – Number of training epochs.
gradient_clipping (float, optional (default: 5.0)) – Gradient clipping norm.
embedding_key (str, optional (default: 'emb_spcoral')) – Key to store latent embeddings in
.obsm.rec_key (str, optional (default: 'rec_spcoral')) – Key to store reconstructed modality-specific features.
cross_key (str, optional (default: 'cross_spcoral')) – Key to store cross-modality predicted features.
- __init__(adata_omics1, adata_omics2, graph_method_single, k_spatial_omics1=None, radius_spatial_omics1=None, k_spatial_omics2=None, radius_spatial_omics2=None, use_obsm='spatial', g_all_auto=True, k_feature_omics1=10, k_feature_omics2=10, k_cross_omics=20, k_all_omics=25, loss_weight=[1, 1, 1, 1, 1], hidden_dim=128, latent_dim=64, device=device(type='cuda', index=0), random_seed=2020, strict_repro=False, learning_rate=0.001, weight_decay=0.0001, epochs=300, gradient_clipping=5.0, embedding_key='emb_spcoral', rec_key='rec_spcoral', cross_key='cross_spcoral')#
- Parameters:
adata_omics1 (AnnData) –
adata_omics2 (AnnData) –
graph_method_single (str) –
k_spatial_omics1 (int | None) –
radius_spatial_omics1 (float | None) –
k_spatial_omics2 (int | None) –
radius_spatial_omics2 (float | None) –
use_obsm (str) –
g_all_auto (bool) –
k_feature_omics1 (int) –
k_feature_omics2 (int) –
k_cross_omics (int) –
k_all_omics (int) –
hidden_dim (int) –
latent_dim (int) –
device (device) –
random_seed (int) –
strict_repro (bool) –
learning_rate (float) –
weight_decay (float) –
epochs (int) –
gradient_clipping (float) –
embedding_key (str) –
rec_key (str) –
cross_key (str) –
Methods
- train()#
Train the cross-modal integration model.
- Returns:
adata_omics1 : anndata.AnnData Updated first omics object with latent embeddings and reconstructions.
adata_omics2 : anndata.AnnData Updated second omics object with the same.
loss_list : list of [total_loss, recon_loss, cross_loss, spatial_loss] per epoch Training loss history.
- Return type: