Pseudocode for the PhEMD analytical approach |
1: procedure PHEMD(multispecimen.data) |
2: ▹Map first-level manifold (e.g., cell-state embedding) |
3: data.all←aggregateData all specimens(multispecimen.data) |
4: first.level.embedding←embedDatapoints(data.all) |
5: first.level.clusts←clusterPoints(first.level.embedding) |
6: cluster.ground.dists←computeGroundDists(first.level.embedding; first.level.clusts) |
7: |
8: ▹Map higher-level manifold (e.g., single-cell specimen embedding) |
9: specimen.clus.prop←GetClusterProportions(data.all; first.level.embedding; first.level.clusts) |
10: for each pair of specimens si; sj
do
|
11: Dists[i; j]←EMD(cluster.ground.dists; specimen.clus.prop[i]; specimen.clus.prop[j]) |
12: specimen.embedding←DiffusionMap(Dists) |
13: specimen.clusters←ClusterSpecimens(Dists) |