liana.mt.MistyData#

class liana.mt.MistyData(data, obs=None, spatial_key='spatial', enforce_obs=True, **kwargs)#

MistyData Class used to construct multi-view objects.

Construct a MistyData object from a dictionary of views (anndatas).

Parameters:
data dict[str, AnnData] | MuData

Dictionary of views (AnnData`s) or a `MuData object. Note that only the data.X attribute is used. An intra-view called “intra” is required.

obs DataFrame | None (default: None)

DataFrame of observations. If None, the obs of the intra-view is used.

spatial_key str (default: 'spatial')

Key in adata.obsm that contains the spatial coordinates.

enforce_obs bool (default: True)

If True, the number of observations in each extra-view must match the intra-view. Then the connectivities are stored in the .obsp attribute, while the weighted matrix is stored in .layers[‘weighted’]. If False, the connectivities are stored in the .obsm attribute, while the weighted matrix is transposed and stored in .varm[‘weighted’].

**kwargs Any

Keyword arguments passed to the MuData Super class

view_names#

List of names of the different views

spatial_key#

Key in data.obsm containing the spatial coordinates.

enforce_obs#

See parameter with the same name.

Examples

Views are AnnData`s that share observations. The `'intra' view holds the targets to be predicted; every other view is a spatial context and must carry its own connectivities in .obsp['spatial_connectivities']:

>>> import liana as li
>>> adata = li.ds.generate_toy_spatial()
>>> adata = adata[:, adata.var_names[:5]].copy()
>>> extra = adata.copy()
>>> extra.obsp["spatial_connectivities"] = li.pp.spatial_neighbors(
...     extra, bandwidth=200, set_diag=True, inplace=False
... )
>>> misty = li.mt.MistyData({"intra": adata.copy(), "extra": extra})

Each extra view’s expression is multiplied by its connectivities on construction, so that a predictor is a neighbourhood value rather than the spot’s own. liana.mt.genericMistyData() and liana.mt.lrMistyData() build the views for the two most common designs. Call the object to fit the model – see liana.mt.MistyData.__call__().

Attributes table#

axis

MuData axis.

filename

Change the backing mode by setting the filename to a .h5mu file.

is_view

Whether the object is a view of another MuData object.

isbacked

Whether the object is backed on disk.

mod

Dictionary of modalities.

mod_names

Names of modalities (alias for list(mdata.mod.keys()))

n_mod

Number of modalities.

n_obs

Total number of observations

n_var

Total number of variables.

n_vars

Total number of variables.

obs

Annotation of observation

obs_names

Names of variables (alias for .obs.index).

obsm

Multi-dimensional annotation of observations.

obsmap

Mapping of observation indices in the object to indices in individual modalities.

obsp

Pairwise annotatation of observations.

shape

Shape of data, all variables and observations combined (n_obs, n_vars).

uns

Unstructured annotation (ordered dictionary).

var

Annotation of variables.

var_names

Names of variables (alias for .var.index)

varm

Multi-dimensional annotation of variables.

varmap

Mapping of feature indices in the object to indices in individual modalities.

varp

Pairwise annotatation of variables.

Methods table#

copy([filename])

Make a copy.

get_weighted_matrix(view_name[, predictors])

Returns the weighted matrix for a given set of predictors in a view.

getdoc()

obs_keys()

List keys of observation annotation obs.

obs_names_make_unique()

Call AnnData.obs_names_make_unique on each modality.

obs_vector(key[, layer])

Return an array of values for the requested key of length n_obs.

obsm_keys()

List keys of observation annotation obsm.

pull_obs([columns, mods, common, ...])

Copy data from the obs of the modalities to the global obs

pull_var([columns, mods, common, ...])

Copy data from the var of the modalities to the global var

push_obs([columns, mods, common, prefixed, ...])

Copy the data from obs to the obs of the modalities.

push_var([columns, mods, common, prefixed, ...])

Copy the data from var to the var of the modalities.

strings_to_categoricals([df])

Transform string annotations to categoricals.

to_anndata(**kwargs)

Convert the object to AnnData.

uns_keys()

List keys of unstructured annotation.

update()

Update both obs and var indices of the object with the data from all the modalities.

update_obs()

Update obs indices of the object with the data from all the modalities.

update_var()

Update var indices of the object with the data from all the modalities.

var_keys()

List keys of variable annotation var.

var_names_make_unique()

Call AnnData.var_names_make_unique on each modality.

var_vector(key[, layer])

Return an array of values for the requested key of length n_var.

varm_keys()

List keys of variable annotation varm.

write([filename])

Write the object to an HDF5 file.

write_h5mu([filename])

Write the object to an HDF5 file.

write_zarr(store, **kwargs)

Write the object to a Zarr store.

Attributes#

MistyData.axis#

MuData axis.

  • 0 if the modalities have shared observations

  • 1 if the modalities have shared features

  • -1 if both observations and features are shared

MistyData.filename#

Change the backing mode by setting the filename to a .h5mu file.

  • Setting the filename writes the stored data to disk.

  • Setting the filename when the filename was previously another name moves the backing file from the previous file to the new file. If you want to copy the previous file, use copy(filename="new_filename").

MistyData.is_view#

Whether the object is a view of another MuData object.

MistyData.isbacked#

Whether the object is backed on disk.

MistyData.mod#

Dictionary of modalities.

MistyData.mod_names#

Names of modalities (alias for list(mdata.mod.keys()))

MistyData.n_mod#

Number of modalities.

MistyData.n_obs#

Total number of observations

MistyData.n_var#

Total number of variables.

MistyData.n_vars#

Total number of variables.

MistyData.obs#

Annotation of observation

MistyData.obs_names#

Names of variables (alias for .obs.index).

MistyData.obsm#

Multi-dimensional annotation of observations.

Stores for each key a two- or higher-dimensional ndarray or DataFrame of length n_obs. Is sliced with obs but otherwise behaves like a mapping.

MistyData.obsmap#

Mapping of observation indices in the object to indices in individual modalities.

Contains an entry for each modality. Each entry is an ndarray with shape (n_obs, 1). Each element in the array contains the numerical index of the observation in the respective modality corresponding to the MuData observation in that position. The index is 1-based, 0 indicates that the observation is missing in the modality.

MistyData.obsp#

Pairwise annotatation of observations.

Stores for each key a two- or higher-dimensional ndarray whose first two dimensions are of liength n_obs. Is sliced with obs but otherwise behaves like a mapping.

MistyData.shape#

Shape of data, all variables and observations combined (n_obs, n_vars).

MistyData.uns#

Unstructured annotation (ordered dictionary).

MistyData.var#

Annotation of variables.

MistyData.var_names#

Names of variables (alias for .var.index)

MistyData.varm#

Multi-dimensional annotation of variables.

Stores for each key a two- or higher-dimensional ndarray or DataFrame of length n_vars. Is sliced with var but otherwise behaves like a mapping.

MistyData.varmap#

Mapping of feature indices in the object to indices in individual modalities.

Contains an entry for each modality. Each entry is an ndarray with shape (n_obs, 1). Each element in the array contains the numerical index of the feature in the respective modality corresponding to the MuData feature in that position. The index is 1-based, 0 indicates that the feature is missing in the modality.

MistyData.varp#

Pairwise annotatation of variables.

Stores for each key a two- or higher-dimensional ndarray whose first two dimensions are of liength n_obs. Is sliced with obs but otherwise behaves like a mapping.

Methods#

MistyData.copy(filename=None)#

Make a copy.

Parameters:
filename str | PathLike | None (default: None)

If the object is backed, copy the object to a new file.

Return type:

MuData

MistyData.get_weighted_matrix(view_name, predictors=None)#

Returns the weighted matrix for a given set of predictors in a view.

Parameters:
view_name str

Name of the view of interest.

predictors list[str] | None (default: None)

List of predictors from which to retrieve the weights.

Return type:

NDArray[number] | csc_matrix | csr_matrix | csc_array | csr_array

Returns:

Weighted matrix of the requested view and predictors. If no predictors are provided, returns the variable names.

MistyData.getdoc() str | None#
MistyData.obs_keys()#

List keys of observation annotation obs.

Return type:

list[str]

MistyData.obs_names_make_unique()#

Call AnnData.obs_names_make_unique on each modality.

If there are obs_names which are the same for multiple modalities, append the modality name to all obs_names.

MistyData.obs_vector(key, layer=None)#

Return an array of values for the requested key of length n_obs.

Parameters:
key str

The key to use. Must be in .obs.columns.

layer str | None (default: None)

Ignored, only for compatibility with AnnData.

Return type:

ndarray

MistyData.obsm_keys()#

List keys of observation annotation obsm.

Return type:

list[str]

MistyData.pull_obs(columns=None, mods=None, common=None, join_common=None, nonunique=None, join_nonunique=None, unique=None, prefix_unique=True, drop=False, only_drop=False)#

Copy data from the obs of the modalities to the global obs

Existing columns to be overwritten or updated.

Parameters:
columns list[str] | None (default: None)

List of columns to pull from the modalities’ .obs tables

common bool | None (default: None)

If True, pull common columns. Common columns do not have modality prefixes. Pull from all modalities. Cannot be used with columns. True by default.

mods list[str] | None (default: None)

List of modalities to pull from.

join_common bool | None (default: None)

If True, attempt to join common columns. Common columns are present in all modalities. True for MuData wth axis=1 (shared var). False for MuData with axis=0 and axis=-1. Cannot be used with mods, or for shared attr.

nonunique bool | None (default: None)

If True, pull columns that have a modality prefix such that there are multiple columns with the same name and different prefix. Cannot be used with columns or mods. True by default.

join_nonunique bool | None (default: None)

If True, attempt to join non-unique columns. Intended usage is the same as for join_common. Cannot be used with mods, or for shared attr. False by default.

unique bool | None (default: None)

If True, pull columns that have a modality prefix such that there is no other column with the same name and a different modality prefix. Cannot be used with columns or mods. True by default.

prefix_unique bool (default: True)

If True, prefix unique column names with modname (default). No prefix when False.

drop bool (default: False)

If True, drop the columns from the modalities after pulling.

only_drop bool (default: False)

If True, drop the columns but do not actually pull them. Forces drop=True.

MistyData.pull_var(columns=None, mods=None, common=None, join_common=None, nonunique=None, join_nonunique=None, unique=None, prefix_unique=True, drop=False, only_drop=False)#

Copy data from the var of the modalities to the global var

Existing columns to be overwritten or updated.

Parameters:
columns list[str] | None (default: None)

List of columns to pull from the modalities’ .var tables

common bool | None (default: None)

If True, pull common columns. Common columns do not have modality prefixes. Pull from all modalities. Cannot be used with columns. True by default.

mods list[str] | None (default: None)

List of modalities to pull from.

join_common bool | None (default: None)

If True, attempt to join common columns. Common columns are present in all modalities. True for MuData with axis=0 (shared obs). False for MuData with axis=1 and axis=-1. Cannot be used with mods, or for shared attr.

nonunique bool | None (default: None)

If True, pull columns that have a modality prefix such that there are multiple columns with the same name and different prefix. Cannot be used with columns or mods. True by default.

join_nonunique bool | None (default: None)

If True, attempt to join non-unique columns. Intended usage is the same as for join_common. Cannot be used with mods, or for shared attr. False by default.

unique bool | None (default: None)

If True, pull columns that have a modality prefix such that there is no other column with the same name and a different modality prefix. Cannot be used with columns or mods. True by default.

prefix_unique bool (default: True)

If True, prefix unique column names with modname (default). No prefix when False.

drop bool (default: False)

If True, drop the columns from the modalities after pulling.

only_drop bool (default: False)

If True, drop the columns but do not actually pull them. Forces drop=True.

MistyData.push_obs(columns=None, mods=None, common=None, prefixed=None, drop=False, only_drop=False)#

Copy the data from obs to the obs of the modalities.

Existing columns to be overwritten.

Parameters:
columns list[str] | None (default: None)

List of columns to push

mods list[str] | None (default: None)

List of modalities to push to

common bool | None (default: None)

If True, push common columns. Common columns do not have modality prefixes. Push to each modality unless all values for a modality are null. Cannot be used with columns. True by default.

prefixed bool | None (default: None)

If True, push columns that have a modality prefix. which are prefixed by modality names. Only push to the respective modality names. Cannot be used with columns. True by default.

drop bool (default: False)

If True, drop the columns from the global .obs after pushing. False by default.

only_drop bool (default: False)

If True, drop the columns but do not actually pull them. Forces drop=True. False by default.

MistyData.push_var(columns=None, mods=None, common=None, prefixed=None, drop=False, only_drop=False)#

Copy the data from var to the var of the modalities.

Existing columns to be overwritten.

Parameters:
columns list[str] | None (default: None)

List of columns to push

mods list[str] | None (default: None)

List of modalities to push to

common bool | None (default: None)

If True, push common columns. Common columns do not have modality prefixes. Push to each modality unless all values for a modality are null. Cannot be used with columns. True by default.

prefixed bool | None (default: None)

If True, push columns that have a modality prefix. which are prefixed by modality names. Only push to the respective modality names. Cannot be used with columns. True by default.

drop bool (default: False)

If True, drop the columns from the global .var after pushing. False by default.

only_drop bool (default: False)

If True, drop the columns but do not actually pull them. Forces drop=True. False by default.

MistyData.strings_to_categoricals(df=None)#

Transform string annotations to categoricals.

Parameters:
df DataFrame | None (default: None)

If None, modifies var and obs attributes of the MuData object as well as each modality. Otherwise, modifies the dataframe in-place and returns it.

Return type:

DataFrame | None

MistyData.to_anndata(**kwargs)#

Convert the object to AnnData.

If axis is 0 (shared observations), concatenate modalities along axis 1 (anndata.concat(axis=1)).

If axis is 1 (shared features), concatenate datasets along axis 0 (anndata.concat(axis=0)).

See anndata.concat() documentation for more details.

Parameters:
**kwargs

Keyword arguments passed to anndata.concat()

Return type:

AnnData

MistyData.uns_keys()#

List keys of unstructured annotation.

Return type:

list[str]

MistyData.update()#

Update both obs and var indices of the object with the data from all the modalities.

MistyData.update_obs()#

Update obs indices of the object with the data from all the modalities.

MistyData.update_var()#

Update var indices of the object with the data from all the modalities.

MistyData.var_keys()#

List keys of variable annotation var.

Return type:

list[str]

MistyData.var_names_make_unique()#

Call AnnData.var_names_make_unique on each modality.

If there are obs_names which are the same for multiple modalities, append the modality name to all obs_names.

MistyData.var_vector(key, layer=None)#

Return an array of values for the requested key of length n_var.

Parameters:
key str

The key to use. Must be in .obs.columns.

layer str | None (default: None)

Ignored, only for compatibility with AnnData.

Return type:

ndarray

MistyData.varm_keys()#

List keys of variable annotation varm.

Return type:

list[str]

MistyData.write(filename=None, **kwargs)#

Write the object to an HDF5 file.

Parameters:
filename str | PathLike | None (default: None)

Path of the .h5mu file to write to. Defaults to the backing file.

**kwargs

Additional arguments to write_h5mu().

MistyData.write_h5mu(filename=None, **kwargs)#

Write the object to an HDF5 file.

Parameters:
filename str | PathLike | None (default: None)

Path of the .h5mu file to write to. Defaults to the backing file.

**kwargs

Additional arguments to write_h5mu().

MistyData.write_zarr(store, **kwargs)#

Write the object to a Zarr store.

Parameters:
store MutableMapping | str | PathLike | Store

The filename or a Zarr store.

**kwargs

Additional arguments to write_zarr().