sample_distance¶
Unified entry point for pairwise sample-distance computation. Supports three families of methods:
- Vector metrics on the single sample embedding (
cosine,correlation,euclidean, and anyscipy.spatial.distance.pdistmetric inVALID_PDIST_METRICS). Acts onadata.uns['X_DR_sample']. - EMD (Earth Mover's Distance) on cell-type proportions paired with cell-type centroids in the supplied cell-level embedding.
- Distributional distances (
chi_square,jensen_shannon) on cell-type proportions.
Each call writes a distance matrix CSV and heatmap PDF under {output_dir}/{method}/.
Source: sample_distance/sample_distance.py:512
Signature¶
def sample_distance(
adata: AnnData,
output_dir: str,
method: str,
data_type: str = "ATAC",
grouping_columns: Optional[List[str]] = None,
summary_csv_path: Optional[str] = None,
# EMD-specific parameters
cell_adata: Optional[AnnData] = None,
cell_type_column: str = "cell_type",
sample_column: str = "sample",
embedding_key: Optional[str] = None,
n_pcs: int = 20,
proportions: Optional[pd.DataFrame] = None,
centroids: Optional[Union[pd.DataFrame, np.ndarray]] = None,
pseudobulk_adata: Optional[AnnData] = None,
) -> Optional[Dict[str, pd.DataFrame]]
Parameters¶
| Name | Type | Default | Description |
|---|---|---|---|
adata |
AnnData | — | Sample-level AnnData carrying the sample embedding in .uns['X_DR_sample']. |
output_dir |
str | — | Parent directory; results go under {output_dir}/{method}/. |
method |
str | — | One of the vector metrics ("cosine", "correlation", "euclidean", ...), "EMD", "chi_square", or "jensen_shannon". |
data_type |
str | "ATAC" |
Modality hint ("RNA", "ATAC", or "multiomics"); used to resolve the default cell-level embedding key on the EMD path. |
grouping_columns |
list, optional | None |
.obs columns used for grouping annotations on the heatmap. |
summary_csv_path |
str, optional | None |
Optional override for the group-summary CSV path. |
cell_adata |
AnnData, optional | None |
Cell-level AnnData (required for EMD and distributional distances). |
cell_type_column |
str | "cell_type" |
Cell-type column in cell_adata.obs (EMD path). |
sample_column |
str | "sample" |
Sample column in cell_adata.obs (EMD path). |
embedding_key |
str, optional | None |
Key in cell_adata.obsm for cell-type centroid computation (EMD only). When None, resolves to Z_clust (falling back to X_pca/X_lsi/X_glue per data_type). |
n_pcs |
int | 20 |
Number of PCs to use when computing centroids (EMD only). |
proportions |
DataFrame, optional | None |
Precomputed sample × cell-type proportion matrix (EMD only). |
centroids |
DataFrame or ndarray, optional | None |
Precomputed cell-type centroids (EMD only). |
pseudobulk_adata |
AnnData, optional | None |
Explicit pseudobulk to annotate group metadata (EMD only). |
Returns¶
- Vector metrics:
Dict[str, DataFrame]with a single key"sample_DR", whose value is a symmetricsample × sampledistance matrix. - EMD:
Dict[str, DataFrame]with key"EMD". chi_square/jensen_shannon:None— these save their results internally.- Unknown method:
None.
Output files¶
Vector metrics write directly under {output_dir}/{method}/:
distance_matrix_sample_DR.csv,sample_DR_coordinates.csvsample_distance_sample_DR_heatmap.pdfdistance_statistics_summary_{method}.csv- Group-summary CSVs when
grouping_columnsis provided.
EMD and the distributional methods write under their own subfolder ({output_dir}/{method}/, with chi_square / jensen_shannon nested in {output_dir}/chi_square/ and {output_dir}/jensen_shannon/).