spatialquery.js 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +169 -2
- package/dist/assert.d.ts +15 -0
- package/dist/assert.d.ts.map +1 -0
- package/dist/assert.js +23 -0
- package/dist/assert.js.map +1 -0
- package/dist/bundled/index.js +14245 -0
- package/dist/bundled/index.js.map +1 -0
- package/dist/fpgrowth.d.ts +10 -0
- package/dist/fpgrowth.d.ts.map +1 -0
- package/dist/fpgrowth.js +35 -0
- package/dist/fpgrowth.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/multi-fov.d.ts +115 -0
- package/dist/multi-fov.d.ts.map +1 -0
- package/dist/multi-fov.js +325 -0
- package/dist/multi-fov.js.map +1 -0
- package/dist/nested.d.ts +17 -0
- package/dist/nested.d.ts.map +1 -0
- package/dist/nested.js +106 -0
- package/dist/nested.js.map +1 -0
- package/dist/single-fov.d.ts +149 -0
- package/dist/single-fov.d.ts.map +1 -0
- package/dist/single-fov.js +488 -0
- package/dist/single-fov.js.map +1 -0
- package/dist/stats.d.ts +25 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +141 -0
- package/dist/stats.js.map +1 -0
- package/package.json +41 -3
package/dist/nested.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { applyFdrCorrection } from './stats.js';
|
|
2
|
+
import { findMaximalPatterns } from './fpgrowth.js';
|
|
3
|
+
// Nested motif testing.
|
|
4
|
+
// Reference: https://github.com/ShaokunAn/Spatial-Query/blob/9250b61/SpatialQuery/spatial_utils.py#L97
|
|
5
|
+
//
|
|
6
|
+
// The maximal-pattern reduction happens BEFORE the hypergeometric test, so a sub-pattern
|
|
7
|
+
// of a non-significant maximal pattern never enters the tested set at all. When a maximal
|
|
8
|
+
// pattern is diluted by one abundant, unrelated cell type, the whole pattern fails the
|
|
9
|
+
// test and the informative core inside it is never examined.
|
|
10
|
+
//
|
|
11
|
+
// Nested testing walks into those patterns:
|
|
12
|
+
//
|
|
13
|
+
// 1. Test every maximal pattern, exactly as the maximal mode does.
|
|
14
|
+
// 2. A maximal pattern that IS significant is a finding in its own right -- stop, and do
|
|
15
|
+
// not test its sub-patterns.
|
|
16
|
+
// 3. A maximal pattern that is NOT significant is expanded into its immediate (k-1)
|
|
17
|
+
// sub-patterns, which are then tested.
|
|
18
|
+
// 4. Descent continues only along branches that stay non-significant. A branch ends when
|
|
19
|
+
// it becomes significant or reaches length 1.
|
|
20
|
+
// 5. A sub-pattern reachable from several parents is tested once.
|
|
21
|
+
// 6. Multiple-testing correction is applied over every pattern actually tested.
|
|
22
|
+
// 7. A child whose support equals its parent's marks the same neighborhoods as the
|
|
23
|
+
// parent, so it carries no extra information and is not reported.
|
|
24
|
+
const NESTED_SUPPORT_TOL = 1e-9;
|
|
25
|
+
const NESTED_MAX_TESTED_PATTERNS = 5000;
|
|
26
|
+
const NESTED_MAX_EXPANSION_FACTOR = 50.0;
|
|
27
|
+
// Canonical motif key: the sorted motif.
|
|
28
|
+
const canonicalKey = (motif) => JSON.stringify(motif.toSorted());
|
|
29
|
+
// Run the nested descent and return the corrected results over everything tested.
|
|
30
|
+
// Reference: https://github.com/ShaokunAn/Spatial-Query/blob/9250b61/SpatialQuery/spatial_utils.py#L161
|
|
31
|
+
export async function nestedMotifDescent(params) {
|
|
32
|
+
const { testMotifs, frequentPatterns, supportTol = NESTED_SUPPORT_TOL, maxTestedPatterns = NESTED_MAX_TESTED_PATTERNS, maxExpansionFactor = NESTED_MAX_EXPANSION_FACTOR, } = params;
|
|
33
|
+
if (frequentPatterns.length === 0) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
const supportOf = new Map(frequentPatterns.map(p => [canonicalKey(p.itemsets), p.support]));
|
|
37
|
+
const maximal = findMaximalPatterns(frequentPatterns).map(p => p.itemsets.toSorted());
|
|
38
|
+
// Level 0 is the maximal patterns; gating them decides where the descent starts.
|
|
39
|
+
const gateRes = maximal.length > 0 ? await testMotifs(maximal) : [];
|
|
40
|
+
if (gateRes.length === 0) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const significance = (results) => new Map(results.map(r => [canonicalKey(r.motifs), Boolean(r.ifSignificant)]));
|
|
44
|
+
const gateSig = significance(gateRes);
|
|
45
|
+
// `tested` records every pattern the descent touches, significant or not: correction
|
|
46
|
+
// in rule 6 must cover them all. Insertion order keeps the final results reproducible.
|
|
47
|
+
const tested = new Set(maximal.map(canonicalKey));
|
|
48
|
+
const parentOf = new Map();
|
|
49
|
+
const levelTables = [gateRes];
|
|
50
|
+
let frontier = maximal.filter(m => !gateSig.get(canonicalKey(m)));
|
|
51
|
+
while (frontier.length > 0) {
|
|
52
|
+
const children = [];
|
|
53
|
+
for (const parent of frontier) {
|
|
54
|
+
if (parent.length <= 1)
|
|
55
|
+
continue;
|
|
56
|
+
// Immediate sub-patterns, in the order of itertools.combinations(parent, len(parent) - 1).
|
|
57
|
+
for (let drop = parent.length - 1; drop >= 0; drop--) {
|
|
58
|
+
const child = parent.filter((_, n) => n !== drop);
|
|
59
|
+
const childKey = canonicalKey(child);
|
|
60
|
+
if (tested.has(childKey)) {
|
|
61
|
+
// Reachable from an earlier parent already: test it once, and keep the
|
|
62
|
+
// shallowest parent, which breadth-first order guarantees is this one.
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
tested.add(childKey);
|
|
66
|
+
parentOf.set(childKey, canonicalKey(parent));
|
|
67
|
+
children.push(child);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (children.length === 0)
|
|
71
|
+
break;
|
|
72
|
+
if (tested.size > maxTestedPatterns || tested.size > maxExpansionFactor * Math.max(maximal.length, 1)) {
|
|
73
|
+
console.warn(`Nested descent stopped early at ${tested.size} tested patterns `
|
|
74
|
+
+ `(limits: maxTestedPatterns=${maxTestedPatterns}, `
|
|
75
|
+
+ `maxExpansionFactor=${maxExpansionFactor} x ${maximal.length} maximal patterns). `
|
|
76
|
+
+ `Reported results cover the patterns reached so far.`);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
const levelRes = await testMotifs(children);
|
|
80
|
+
levelTables.push(levelRes);
|
|
81
|
+
const levelSig = significance(levelRes);
|
|
82
|
+
frontier = children.filter(c => !levelSig.get(canonicalKey(c)));
|
|
83
|
+
}
|
|
84
|
+
// Every field except the FDR ones depends only on the motif and the data, so the
|
|
85
|
+
// results computed level by level are reused; only the correction is redone over the union.
|
|
86
|
+
const seen = new Set();
|
|
87
|
+
const combined = levelTables.flat().filter((r) => {
|
|
88
|
+
const key = canonicalKey(r.motifs);
|
|
89
|
+
if (seen.has(key))
|
|
90
|
+
return false;
|
|
91
|
+
seen.add(key);
|
|
92
|
+
return true;
|
|
93
|
+
});
|
|
94
|
+
// Rule 7: a child marking the same neighborhoods as its parent adds nothing. It stays
|
|
95
|
+
// in the correction -- it was tested -- but is not reported.
|
|
96
|
+
const redundant = new Set();
|
|
97
|
+
for (const [child, parent] of parentOf) {
|
|
98
|
+
const supportChild = supportOf.get(child);
|
|
99
|
+
const supportParent = supportOf.get(parent);
|
|
100
|
+
if (supportChild !== undefined && supportParent !== undefined && Math.abs(supportChild - supportParent) <= supportTol) {
|
|
101
|
+
redundant.add(child);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return applyFdrCorrection(combined).filter(r => !redundant.has(canonicalKey(r.motifs)));
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=nested.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nested.js","sourceRoot":"","sources":["../src/nested.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import Flatbush from 'flatbush';
|
|
2
|
+
import { type FrequentPattern } from './fpgrowth.js';
|
|
3
|
+
export declare function generateObsIdToObsSetName(obsSetsMembership: Map<string, string[][]>, currSelectedSetGroup: string): (obsId: string) => string;
|
|
4
|
+
type ToObsSetNameFunc = ReturnType<typeof generateObsIdToObsSetName>;
|
|
5
|
+
type Coords = Float32Array | Float64Array;
|
|
6
|
+
export type InitParams = {
|
|
7
|
+
obsIndex: string[];
|
|
8
|
+
xCoords: Coords;
|
|
9
|
+
yCoords: Coords;
|
|
10
|
+
obsIdToObsSetName: ToObsSetNameFunc;
|
|
11
|
+
leafSize?: number;
|
|
12
|
+
normalizeSpatialCoord?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type SqContext = {
|
|
15
|
+
obsIndex: string[];
|
|
16
|
+
labels: string[];
|
|
17
|
+
xCoords: Coords;
|
|
18
|
+
yCoords: Coords;
|
|
19
|
+
flatbushIndex: Flatbush;
|
|
20
|
+
xExtent: [number, number];
|
|
21
|
+
yExtent: [number, number];
|
|
22
|
+
};
|
|
23
|
+
export declare function normalizeSpatialCoords(xCoords: Coords, yCoords: Coords): {
|
|
24
|
+
xCoords: Float64Array<ArrayBuffer>;
|
|
25
|
+
yCoords: Float64Array<ArrayBuffer>;
|
|
26
|
+
scaleFactor: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function buildContext(params: InitParams): SqContext;
|
|
29
|
+
export declare function findCellIndicesOfType(context: SqContext, ct: string): number[];
|
|
30
|
+
export type QueryPoint = {
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
exclude?: number;
|
|
34
|
+
};
|
|
35
|
+
export declare function knnNeighborhood(context: SqContext, k: number, maxDist: number): (i: number) => number[];
|
|
36
|
+
export declare function radiusNeighborhood(context: SqContext, maxDist: number): (i: number) => number[];
|
|
37
|
+
export declare function radiusTransactions(context: SqContext, points: QueryPoint[], maxDist: number, minSize: number): {
|
|
38
|
+
transactions: string[][];
|
|
39
|
+
neighborLists: number[][];
|
|
40
|
+
};
|
|
41
|
+
export declare function knnTransactions(context: SqContext, cinds: number[], k: number, maxDist: number): string[][];
|
|
42
|
+
type FindPatternsParams = {
|
|
43
|
+
maxDist?: number;
|
|
44
|
+
minSize?: number;
|
|
45
|
+
minSupport?: number;
|
|
46
|
+
returnCellIds?: boolean;
|
|
47
|
+
};
|
|
48
|
+
export declare function buildGridPoints(context: SqContext, maxDist?: number): [number, number][];
|
|
49
|
+
export declare function findPatternsGrid(context: SqContext, params?: FindPatternsParams): Promise<FrequentPattern[]>;
|
|
50
|
+
export declare function findPatternsRand(context: SqContext, params?: FindPatternsParams & {
|
|
51
|
+
nPoints?: number;
|
|
52
|
+
}): Promise<FrequentPattern[]>;
|
|
53
|
+
type FindFpKnnParams = {
|
|
54
|
+
ct: string;
|
|
55
|
+
k?: number;
|
|
56
|
+
minSupport?: number;
|
|
57
|
+
maxDist?: number;
|
|
58
|
+
ifMax?: boolean;
|
|
59
|
+
};
|
|
60
|
+
export declare function findFpKnn(context: SqContext, params: FindFpKnnParams): Promise<FrequentPattern[]>;
|
|
61
|
+
type FindFpDistParams = {
|
|
62
|
+
ct: string;
|
|
63
|
+
maxDist?: number;
|
|
64
|
+
minSize?: number;
|
|
65
|
+
minSupport?: number;
|
|
66
|
+
ifMax?: boolean;
|
|
67
|
+
};
|
|
68
|
+
export declare function findFpDist(context: SqContext, params: FindFpDistParams): Promise<FrequentPattern[]>;
|
|
69
|
+
export declare function centerQueryPoints(context: SqContext, cinds: number[]): QueryPoint[];
|
|
70
|
+
type MotifEnrichmentCountsParams = {
|
|
71
|
+
center: string;
|
|
72
|
+
motif: string[];
|
|
73
|
+
numCells: number;
|
|
74
|
+
numCenter: number;
|
|
75
|
+
numMotif: number;
|
|
76
|
+
numCenterMotif: number;
|
|
77
|
+
};
|
|
78
|
+
export type MotifEnrichmentResult = {
|
|
79
|
+
center: string;
|
|
80
|
+
motifs: string[];
|
|
81
|
+
nCenterMotif: number;
|
|
82
|
+
nCenter: number;
|
|
83
|
+
nMotif: number;
|
|
84
|
+
expectation: number;
|
|
85
|
+
pValue: number;
|
|
86
|
+
ifSignificant?: boolean;
|
|
87
|
+
adjPValue?: number;
|
|
88
|
+
neighborIds?: string[];
|
|
89
|
+
centerIds?: string[];
|
|
90
|
+
};
|
|
91
|
+
export declare function computeMotifEnrichment(params: MotifEnrichmentCountsParams): MotifEnrichmentResult;
|
|
92
|
+
export type MotifsParam = string | string[] | string[][];
|
|
93
|
+
export declare function normalizeMotifs(motifs: MotifsParam, labelsUnique: Set<string>): string[][];
|
|
94
|
+
export declare function normalizeMotifList(motifs: MotifsParam, labelsUnique: Set<string>): string[][];
|
|
95
|
+
export type MotifCounts = {
|
|
96
|
+
numCells: number;
|
|
97
|
+
numCenter: number;
|
|
98
|
+
numMotif: number;
|
|
99
|
+
numCenterMotif: number;
|
|
100
|
+
centerIndices?: number[];
|
|
101
|
+
neighborIndices?: number[];
|
|
102
|
+
};
|
|
103
|
+
export declare function countMotifs(context: SqContext, ct: string, motifs: string[][], neighborsOf: (i: number) => number[], returnCellIds: boolean): MotifCounts[];
|
|
104
|
+
export type EnrichmentMode = 'maximal' | 'nested';
|
|
105
|
+
export declare function assertEnrichmentMode(mode: string): void;
|
|
106
|
+
type MotifEnrichmentKnnParams = {
|
|
107
|
+
ct: string;
|
|
108
|
+
motifs?: MotifsParam;
|
|
109
|
+
k?: number;
|
|
110
|
+
minSupport?: number;
|
|
111
|
+
maxDist?: number;
|
|
112
|
+
returnCellIds?: boolean;
|
|
113
|
+
mode?: EnrichmentMode;
|
|
114
|
+
};
|
|
115
|
+
export declare function motifEnrichmentKnn(context: SqContext, params: MotifEnrichmentKnnParams): Promise<MotifEnrichmentResult[]>;
|
|
116
|
+
type MotifEnrichmentDistParams = {
|
|
117
|
+
ct: string;
|
|
118
|
+
motifs?: MotifsParam;
|
|
119
|
+
maxDist?: number;
|
|
120
|
+
minSize?: number;
|
|
121
|
+
minSupport?: number;
|
|
122
|
+
returnCellIds?: boolean;
|
|
123
|
+
mode?: EnrichmentMode;
|
|
124
|
+
};
|
|
125
|
+
export declare function motifEnrichmentDist(context: SqContext, params: MotifEnrichmentDistParams): Promise<MotifEnrichmentResult[]>;
|
|
126
|
+
export type MotifCompositionRow = {
|
|
127
|
+
center: string;
|
|
128
|
+
motifs: string[];
|
|
129
|
+
cellType: string;
|
|
130
|
+
nCells: number;
|
|
131
|
+
nMotifCells: number;
|
|
132
|
+
proportion: number;
|
|
133
|
+
};
|
|
134
|
+
export declare function motifCompositionRows(context: SqContext, ct: string, motifs: string[][], cinds: number[], neighborsOf: (i: number) => number[]): MotifCompositionRow[];
|
|
135
|
+
type MotifCompositionKnnParams = {
|
|
136
|
+
ct: string;
|
|
137
|
+
motifs: MotifsParam;
|
|
138
|
+
k?: number;
|
|
139
|
+
maxDist?: number;
|
|
140
|
+
};
|
|
141
|
+
export declare function motifCompositionKnn(context: SqContext, params: MotifCompositionKnnParams): MotifCompositionRow[];
|
|
142
|
+
type MotifCompositionDistParams = {
|
|
143
|
+
ct: string;
|
|
144
|
+
motifs: MotifsParam;
|
|
145
|
+
maxDist?: number;
|
|
146
|
+
};
|
|
147
|
+
export declare function motifCompositionDist(context: SqContext, params: MotifCompositionDistParams): MotifCompositionRow[];
|
|
148
|
+
export {};
|
|
149
|
+
//# sourceMappingURL=single-fov.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-fov.d.ts","sourceRoot":"","sources":["../src/single-fov.ts"],"names":[],"mappings":"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"}
|