mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-03 13:48:11 +08:00
* remove memoization * update to flash 1.0.2; turn on threading * stand-alone helper routines for array slicing * fix issue #405 * reset diffexp state when world changes * performance work in dimension creation; fix world slicing bug * update tests to match new state mgmt api * update flask * do not make dimensions for useless annotations * update test to match optimizations
This commit is contained in:
@@ -77,7 +77,8 @@ describe("createWorldFromEntireUniverse", () => {
|
||||
|
||||
varDataCache: expect.any(Object),
|
||||
|
||||
worldObsIndex: null // indicating full universe
|
||||
obsIndex: null, // null indicating full universe
|
||||
obsBackIndex: null
|
||||
})
|
||||
);
|
||||
});
|
||||
@@ -120,16 +121,21 @@ describe("createWorldFromCurrentSelection", () => {
|
||||
nObs: universeIndices.length,
|
||||
obsAnnotations: _.map(universeIndices, i => universe.obsAnnotations[i]),
|
||||
obsLayout: {
|
||||
X: _.map(universeIndices, i => universe.obsLayout.X[i]),
|
||||
Y: _.map(universeIndices, i => universe.obsLayout.Y[i])
|
||||
X: new Float32Array(
|
||||
_.map(universeIndices, i => universe.obsLayout.X[i])
|
||||
),
|
||||
Y: new Float32Array(
|
||||
_.map(universeIndices, i => universe.obsLayout.Y[i])
|
||||
)
|
||||
},
|
||||
worldObsIndex: _.transform(
|
||||
obsBackIndex: _.transform(
|
||||
universeIndices,
|
||||
(result, univIdx, worldIdx) => {
|
||||
result[univIdx] = worldIdx;
|
||||
},
|
||||
new Array(universe.nObs).fill(-1)
|
||||
)
|
||||
new Uint32Array(universe.nObs).fill(-1)
|
||||
),
|
||||
obsIndex: new Uint32Array(universeIndices)
|
||||
};
|
||||
|
||||
expect(world).toMatchObject(
|
||||
@@ -141,9 +147,13 @@ describe("createWorldFromCurrentSelection", () => {
|
||||
obsAnnotations: expected.obsAnnotations,
|
||||
varAnnotations: universe.varAnnotations,
|
||||
obsLayout: expected.obsLayout,
|
||||
summary: expect.any(Object) /* we could do better! */,
|
||||
summary: {
|
||||
obs: expect.any(Object) /* we could do better! */,
|
||||
var: expect.any(Object) /* we could do better! */
|
||||
},
|
||||
varDataCache: expect.any(Object),
|
||||
worldObsIndex: expected.worldObsIndex
|
||||
obsIndex: expected.obsIndex,
|
||||
obsBackIndex: expected.obsBackIndex
|
||||
})
|
||||
);
|
||||
});
|
||||
@@ -163,11 +173,15 @@ describe("createObsDimensionMap", () => {
|
||||
expect(dimensionMap).toBeDefined();
|
||||
REST.annotationsObs.names.forEach(name => {
|
||||
const dim = dimensionMap[obsAnnoDimensionName(name)];
|
||||
const { type } = schemaByObsName[name];
|
||||
if (type === "string" || type === "boolean" || type === "categorical") {
|
||||
expect(dim).toBeInstanceOf(Crossfilter.EnumDimension);
|
||||
if (name === "name") {
|
||||
expect(dim).toBeUndefined();
|
||||
} else {
|
||||
expect(dim).toBeInstanceOf(Crossfilter.ScalarDimension);
|
||||
const { type } = schemaByObsName[name];
|
||||
if (type === "string" || type === "boolean" || type === "categorical") {
|
||||
expect(dim).toBeInstanceOf(Crossfilter.EnumDimension);
|
||||
} else {
|
||||
expect(dim).toBeInstanceOf(Crossfilter.ScalarDimension);
|
||||
}
|
||||
}
|
||||
});
|
||||
expect(dimensionMap[layoutDimensionName("X")]).toBeInstanceOf(
|
||||
@@ -205,6 +219,7 @@ describe("subsetVarData", () => {
|
||||
world,
|
||||
crossfilter
|
||||
);
|
||||
expect(newWorld.obsIndex).toMatchObject(new Uint32Array([0, 2]));
|
||||
|
||||
/* expect a subset */
|
||||
const result = World.subsetVarData(newWorld, universe, sourceVarData);
|
||||
|
||||
Reference in New Issue
Block a user