Skip to content

mecfs_bio.build_system.task.xr_pipes.xr_cluster

Classes:

  • XRCluster

    Cluster a DataArray in an xarray dataset along a given dimension

Attributes:

Linkage module-attribute

Linkage = Literal['average']

Metric module-attribute

Metric = Literal['correlation', 'euclidean']

logger module-attribute

logger = get_logger()

XRCluster

Bases: XRDataPipe

Cluster a DataArray in an xarray dataset along a given dimension

Methods:

Attributes:

array_name instance-attribute

array_name: str

dim instance-attribute

dim: str

method class-attribute instance-attribute

method: Linkage = 'average'

metric class-attribute instance-attribute

metric: Metric = 'correlation'

process

process(ds: Dataset) -> xr.Dataset
Source code in mecfs_bio/build_system/task/xr_pipes/xr_cluster.py
def process(self, ds: xr.Dataset) -> xr.Dataset:
    array = ds[self.array_name]
    array = array.transpose(self.dim, ...)
    X = array.values

    logger.debug(f"Clustering X with X.shape={X.shape}")
    row_dist = pdist(X, metric=self.metric)
    row_linkage = linkage(row_dist, method=self.method)
    row_order = leaves_list(row_linkage)
    ds = ds.isel(
        {
            self.dim: row_order,
        }
    )
    return ds