scvi.model.mlxSCVI#
- class scvi.model.mlxSCVI(adata, n_hidden=128, n_latent=10, dropout_rate=0.1, gene_likelihood='nb', **model_kwargs)[source]#
Single-cell variational inference model using the MLX framework.
This implementation leverages the features of the MLX framework to provide optimized performance on Apple Silicon chips.
- Parameters:
- adata
AnnData AnnData object registered via mlxSCVI.setup_anndata().
- n_hidden
int(default:128) Number of nodes per hidden layer.
- n_latent
int(default:10) Dimensionality of the latent space.
- dropout_rate
float(default:0.1) Dropout rate for neural networks.
- gene_likelihood
Literal['nb','poisson'] (default:'nb') One of: * ‘nb’ - Negative binomial distribution * ‘poisson’ - Poisson distribution
- adata
Attributes table#
Data attached to model instance. |
|
Manager instance associated with self.adata. |
|
Get the current device. |
|
What the get normalized functions name is |
|
Returns computed metrics during training. |
|
Whether the model has been trained. |
|
Data attached to model instance. |
|
Returns the run id of the model. |
|
Returns the run name of the model. |
|
Summary string of the model. |
|
Observations that are in test set. |
|
Observations that are in train set. |
|
Observations that are in validation set. |
Methods table#
|
Converts a legacy saved model (<v0.15.0) to the updated save format. |
|
Returns the object in AnnData associated with the key in the data registry. |
|
Deregisters the |
|
Not implemented for this model class. |
|
Retrieves the |
|
Returns the object in AnnData associated with the key in the data registry. |
|
Get the latent representation for each cell. |
|
Not implemented for this model class. |
|
Returns the string provided to setup of a specific setup_arg. |
|
Returns the state registry for the AnnDataField registered with this instance. |
|
Variable names of input data. |
|
Instantiate a model from the saved output. |
|
Return the full registry saved with the model. |
|
Registers an |
|
Save the state of the model. |
|
Set up a model from on-disk AnnData files via the annbatch streaming loader. |
|
Set up AnnData object for training. |
|
Move the model to a specific device. |
|
Train the model. |
|
Transfer fields from a model to an AnnData object. |
|
Update setup method args. |
|
Print summary of the setup for the initial AnnData or a given AnnData object. |
|
Prints summary of the registry. |
|
Print args used to setup a saved model. |
Prints setup kwargs used to produce a given registry. |
Attributes#
- mlxSCVI.adata#
Data attached to model instance.
- mlxSCVI.adata_manager#
Manager instance associated with self.adata.
- mlxSCVI.device#
Get the current device.
MLX automatically handles device placement.
- Returns:
str Device identifier.
- mlxSCVI.get_normalized_function_name#
What the get normalized functions name is
- mlxSCVI.history#
Returns computed metrics during training.
- mlxSCVI.is_trained#
Whether the model has been trained.
- mlxSCVI.registry#
Data attached to model instance.
- mlxSCVI.run_id#
Returns the run id of the model. Used in MLFlow
- mlxSCVI.run_name#
Returns the run name of the model. Used in MLFlow
- mlxSCVI.summary_string#
Summary string of the model.
- mlxSCVI.test_indices#
Observations that are in test set.
- mlxSCVI.train_indices#
Observations that are in train set.
- mlxSCVI.validation_indices#
Observations that are in validation set.
Methods#
- classmethod mlxSCVI.convert_legacy_save(dir_path, output_dir_path, overwrite=False, prefix=None, **save_kwargs)[source]#
Converts a legacy saved model (<v0.15.0) to the updated save format.
- Parameters:
- dir_path
str Path to the directory where the legacy model is saved.
- output_dir_path
str Path to save converted save files.
- overwrite
bool(default:False) Overwrite existing data or not. If
Falseand directory already exists atoutput_dir_path, an error will be raised.- prefix
str|None(default:None) Prefix of saved file names.
- **save_kwargs
Keyword arguments passed into
save().
- dir_path
- Return type:
- mlxSCVI.data_registry(registry_key)[source]#
Returns the object in AnnData associated with the key in the data registry.
- mlxSCVI.deregister_manager(adata=None)[source]#
Deregisters the
AnnDataManagerinstance associated withadata.If
adataisNone, deregisters allAnnDataManagerinstances in both the class and instance-specific manager stores, except for the one associated with this model instance.
- mlxSCVI.differential_abundance(*args, **kwargs)[source]#
Not implemented for this model class.
Available in models that inherit from
VAEMixin.- Raises:
- mlxSCVI.get_anndata_manager(adata, required=False)[source]#
Retrieves the
AnnDataManagerfor a given AnnData object.Requires
self.idhas been set. Checks for anAnnDataManagerspecific to this model instance.- Parameters:
- Return type:
- mlxSCVI.get_from_registry(adata, registry_key)[source]#
Returns the object in AnnData associated with the key in the data registry.
AnnData object should be registered with the model prior to calling this function via the
self._validate_anndatamethod.
- mlxSCVI.get_latent_representation(adata=None, indices=None, give_mean=True, n_samples=1, batch_size=None)[source]#
Get the latent representation for each cell.
- Parameters:
- adata anndata.AnnData |
None(default:None) AnnData object with the same structure as the initial AnnData object. If None, defaults to the AnnData object used when initializing the model.
- indices
Sequence[int] |None(default:None) Indices of cells to use from adata. If None, all cells are used.
- give_mean
bool(default:True) Whether to return the mean of the posterior distribution or a sample.
- n_samples
int(default:1) Number of samples to use for computing the latent representation.
- batch_size
int|None(default:None) Minibatch size for data loading into the model.
- adata anndata.AnnData |
- Return type:
- Returns:
-latent_representation (
ndarray) Low-dimensional representation for each cell
- mlxSCVI.get_normalized_expression(*args, **kwargs)[source]#
Not implemented for this model class.
Available in RNA models that inherit from
RNASeqMixin.- Raises:
- mlxSCVI.get_setup_arg(setup_arg)[source]#
Returns the string provided to setup of a specific setup_arg.
- Return type:
- mlxSCVI.get_state_registry(registry_key)[source]#
Returns the state registry for the AnnDataField registered with this instance.
- Return type:
- mlxSCVI.get_var_names(legacy_mudata_format=False)[source]#
Variable names of input data.
- Return type:
- classmethod mlxSCVI.load(dir_path, adata=None, accelerator='auto', device='auto', prefix=None, backup_url=None, datamodule=None, allowed_classes_names_list=None)[source]#
Instantiate a model from the saved output.
- Parameters:
- dir_path
str Path to saved outputs.
- adata
AnnData|MuData|None(default:None) AnnData organized in the same way as data used to train model. It is not necessary to run setup_anndata, as AnnData is validated against the saved
scvisetup dictionary. If None, will check for and load anndata saved with the model. If False, will load the model without AnnData.- accelerator
str(default:'auto') Supports passing different accelerator types
("cpu", "gpu", "tpu", "ipu", "hpu", "mps, "auto")as well as custom accelerator instances.- device
int|str(default:'auto') The device to use. Can be set to a non-negative index (
intorstr) or"auto"for automatic selection based on the chosen accelerator. If set to"auto"andacceleratoris not determined to be"cpu", thendevicewill be set to the first available device.- prefix
str|None(default:None) Prefix of saved file names.
- backup_url
str|None(default:None) URL to retrieve saved outputs from if not present on disk.
- datamodule
LightningDataModule|None(default:None) EXPERIMENTALALightningDataModuleinstance to use for training in place of the defaultDataSplitter. Can only be passed in if the model was not initialized withAnnData.- allowed_classes_names_list
list[str] |None(default:None) list of allowed classes names to be loaded (besides the original class name)
- dir_path
- Returns:
Model with loaded state dictionaries.
Examples
>>> model = ModelClass.load(save_path, adata) >>> model.get_....
- static mlxSCVI.load_registry(dir_path, prefix=None)[source]#
Return the full registry saved with the model.
- classmethod mlxSCVI.register_manager(adata_manager)[source]#
Registers an
AnnDataManagerinstance with this model class.Stores the
AnnDataManagerreference in a class-specific manager store. Intended for use in thesetup_anndata()class method followed up by retrieval of theAnnDataManagervia the_get_most_recent_anndata_manager()method in the model init method.Notes
Subsequent calls to this method with an
AnnDataManagerinstance referring to the same underlying AnnData object will overwrite the reference to previousAnnDataManager.
- mlxSCVI.save(dir_path, prefix=None, overwrite=False, save_anndata=False, save_kwargs=None, legacy_mudata_format=False, datamodule=None, **anndata_write_kwargs)[source]#
Save the state of the model.
Neither the trainer optimizer state nor the trainer history are saved. Model files are not expected to be reproducibly saved and loaded across versions until we reach version 1.0.
- Parameters:
- dir_path
str Path to a directory.
- prefix
str|None(default:None) Prefix to prepend to saved file names.
- overwrite
bool(default:False) Overwrite existing data or not. If
Falseand directory already exists atdir_path, an error will be raised.- save_anndata
bool(default:False) If True, also saves the anndata
- save_kwargs
dict|None(default:None) Keyword arguments passed into
save().- legacy_mudata_format
bool(default:False) If
True, saves the modelvar_namesin the legacy format if the model was trained with aMuDataobject. The legacy format is a flat array with variable names across all modalities concatenated, while the new format is a dictionary with keys corresponding to the modality names and values corresponding to the variable names for each modality.- datamodule
LightningDataModule|None(default:None) EXPERIMENTALALightningDataModuleinstance to use for training in place of the defaultDataSplitter. Can only be passed in if the model was not initialized withAnnData.- anndata_write_kwargs
Kwargs for
write()
- dir_path
- classmethod mlxSCVI.setup_annbatch(collection_path=None, paths=None, batch_key=None, labels_key=None, sample_key=None, unlabeled_category='Unknown', layer=None, categorical_covariate_keys=None, continuous_covariate_keys=None, rebuild=True, batch_size=4096, chunk_size=256, preload_nchunks=32, preload_to_gpu=True, dataset_size='20GB', shuffle=False, var_subset=None, merge=None, adatas=None, use_class_sampler=False, class_sampler_key=None, class_weights=None)[source]#
Set up a model from on-disk AnnData files via the annbatch streaming loader.
Builds (or reuses) a zarr-backed
DatasetCollectionfrom the supplied h5ad file paths, then wraps it in aAnnbatchDataModuleready for training.- Parameters:
- collection_path
str|None(default:None) Directory where the zarr collection is written (or already exists). If
None(default), a path is auto-generated as"./{ModelName}_annbatch.zarr"in the current working directory.- paths
list[str] |None(default:None) Paths to h5ad files that make up the training dataset. If
None, an existing collection atcollection_pathis opened without rebuilding — useful when the zarr store was created by a previous call. Must be provided when the store does not exist yet.- batch_key
str|None(default:None) Column in
obsto use as the batch variable.- labels_key
str|None(default:None) Column in
obsto use as the cell-type / label variable.- sample_key
str|None(default:None) Column in
obsto use as the sample variable. Used by models like MrVI.- unlabeled_category
str(default:'Unknown') Value used to mark unlabeled cells in
labels_key. Required by semi-supervised models such as SCANVI. Defaults to"Unknown".- layer
str|None(default:None) Layer in the h5ad files to use as the count matrix.
Noneusesadata.X(falling back toadata.raw.Xwhen a raw slot exists).- categorical_covariate_keys
list[str] |None(default:None) Additional categorical covariate columns in
obs.- continuous_covariate_keys
list[str] |None(default:None) Additional continuous covariate columns in
obs.- rebuild
bool(default:True) If
True, always rebuild the zarr collection even if it already exists on disk. IfFalse(default), reuse an existing collection and skip the (potentially expensive)add_adatasstep.- batch_size
int(default:4096) Number of cells per batch yielded by the
Loader.- chunk_size
int(default:256) Number of cells loaded from disk contiguously per read.
- preload_nchunks
int(default:32) Number of chunks to preload and shuffle in memory.
- preload_to_gpu
bool(default:True) Whether the loader should move data to GPU before yielding.
- dataset_size
int|str(default:'20GB') Number of observations to load into memory for shuffling / pre-processing when building the collection, or annbatch’s human-readable size strings, e.g.
"20GB".- shuffle
bool(default:False) Whether to pre-shuffle cells when building the collection.
- var_subset
list[str] |None(default:None) Optional list of gene names to restrict the collection to (passed as
var_subsettoadd_adatas).- merge
Literal['same','unique','first','only'] |None(default:None) How annbatch should merge
varmetadata across inputs. Passed through toannbatch.DatasetCollection.add_adatas().
- collection_path
- Returns:
AnnbatchDataModuleA configured datamodule whoseregistrycan be passed directly to the model constructor, e.g.model = SCVI(registry=dm.registry).
Notes
After training, saving and reloading the model requires reconstructing the datamodule manually and passing it to
load()via thedatamoduleargument — the same pattern used by all custom datamodules.
- classmethod mlxSCVI.setup_anndata(adata, layer=None, batch_key=None, labels_key=None, categorical_covariate_keys=None, continuous_covariate_keys=None, **kwargs)[source]#
Set up AnnData object for training.
- Parameters:
- adata
AnnData AnnData object.
- layer
str|None(default:None) If not None, use this layer instead of X for training.
- batch_key
str|None(default:None) If not None, use the obs column specified by this key as batch information.
- labels_key
str|None(default:None) If not None, use the obs column specified by this key as labels.
- categorical_covariate_keys
list[str] |None(default:None) Keys in
adata.obsfor additional categorical covariates.- continuous_covariate_keys
list[str] |None(default:None) Keys in
adata.obsfor additional continuous covariates.
- adata
- mlxSCVI.to_device(device)[source]#
Move the model to a specific device.
MLX automatically handles device placement, so this is a no-op.
- Parameters:
- device
Target device.
- mlxSCVI.train(max_epochs=None, accelerator='auto', devices='auto', train_size=None, validation_size=None, shuffle_set_split=True, batch_size=128, datasplitter_kwargs=None, plan_kwargs=None, **trainer_kwargs)[source]#
Train the model.
- Parameters:
- max_epochs
int|None(default:None) Number of passes through the dataset. If None, defaults to
np.min([round((20000 / n_cells) * 400), 400])- accelerator
str(default:'auto') Accelerator type. MLX automatically selects the best available device.
- devices
int|list[int] |str(default:'auto') Device selection. MLX automatically selects the best available device.
- train_size
float|None(default:None) Training set size in the range [0.0, 1.0].
- validation_size
float|None(default:None) Validation set size. If None, defaults to 1 - train_size.
- shuffle_set_split
bool(default:True) Whether to shuffle indices before splitting.
- batch_size
int(default:128) Minibatch size to use during training.
- datasplitter_kwargs
dict|None(default:None) Additional keyword arguments for DataSplitter.
- plan_kwargs
dict|None(default:None) Keyword arguments for the training plan.
- **trainer_kwargs
Additional keyword arguments for training.
- max_epochs
- Returns:
self The trained model instance.
- mlxSCVI.transfer_fields(adata, **kwargs)[source]#
Transfer fields from a model to an AnnData object.
- Return type:
- mlxSCVI.update_setup_method_args(setup_method_args)[source]#
Update setup method args.
- Parameters:
- setup_method_args
dict This is a bit of a misnomer, this is a dict representing kwargs of the setup method that will be used to update the existing values in the registry of this instance.
- setup_method_args
- mlxSCVI.view_anndata_setup(adata=None, hide_state_registries=False)[source]#
Print summary of the setup for the initial AnnData or a given AnnData object.