liana.method.MistyData.__call__

liana.method.MistyData.__call__#

MistyData.__call__(model, bypass_intra=False, predict_self=False, maskby=None, k_cv=10, alphas=array([0.1, 1., 10.]), seed=1337, inplace=True, verbose=False, **kwargs)#

A Multi-view Learning for dissecting Spatial Transcriptomics data (MISTy) model.

Parameters:
  • model (SingleViewModel) – Single-view model of class SingleViewModel. Default options are RandomForestModel, LinearModel, and RobustLinearModel available via liana.method.sp._misty._single_view_models.

  • bypass_intra (bool (default: False)) – Whether to bypass modeling the intraview via leave-one-feature-out (LOFO). In other words, whether to bypass modelling each target by LOFO within the same spots.

  • predict_self (bool (default: False)) – Whether to predict self-interactions. These are determined purely by the feature names.

  • maskby (str (default: None)) – Column in the .obs attribute used to group or mask observations in the intra-view If None, all cells are considered as one group.

  • k_cv (int (default: 10)) – Number of folds for cross-validation used in the multi-view model, and single-view models if model is ‘linear’.

  • alphas (np.array | list[float] (default: array([ 0.1,  1. , 10. ]))) – List of alpha values used to choose from, that control the strength of the ridge regression, used for the multi-view part of the model. Only used if there are more than 2 views being modeled (including intra).

  • seed (int (default: 1337)) – Random seed for reproducibility.

  • inplace (bool (default: True)) – Whether to store results in place, or else to return them.

  • verbose (bool (default: False)) – Verbosity flag.

  • **kwargs – Keyword arguments passed to the Regressors. Note that random_state is already set via seed. n_jobs is instead used to cross-validate each target and defaults to 1, as the folds are few and each fit is cheap; raise it only for expensive regressors.

Return type:

None | tuple[pd.DataFrame, pd.DataFrame]

Returns:

If inplace is True, two DataFrames are written to misty.uns. 'target_metrics' is one row per target: how well the intra view alone explains it (intra_R2), how well all views together do (multi_R2), what the extra views add (gain_R2), and each view’s contribution. 'interactions' is one row per predictor-target pair per view, with the importance the model gave it.

Otherwise the two DataFrames are returned, one for target metrics and one for importances.

Examples

Each variable of the 'intra' view is modelled in turn, from the other intra-view variables and from every other view:

>>> import liana as li
>>> adata = li.testing.generate_toy_spatial()
>>> adata = adata[:, adata.var_names[:5]].copy()
>>> misty = li.mt.genericMistyData(intra=adata, bandwidth=200,
...                                set_diag=True)
>>> misty(model=li.mt.sp.LinearModel)