mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-26 12:08:11 +08:00
TS Revert (1) (#2402)
* revert all commits to before Typescript migration * update compat workflow to match latest deps (#2335) * update compat workflow to match latest deps * attempt to debug * attempt to debug * remove debugging code * typo * update deps to match desktop (#2340) * fix: don't run lint with `--fix` on push tests (#2273) * fix: don't run lint with `--fix` on push tests * npx Co-authored-by: maniarathi <mani.arathi@gmail.com> Co-authored-by: Madison Dunitz <madison.dunitz@chanzuckerberg.com> * rename X_approx_distribution to X_approximate_distribution (#2337) * Correctly handle non-finite numbers in heuristic determination of X distribution (#2342) * handle non-finites explicitly * improve and test edge case handling for distribution estimation * revert debugging changes * code readability * clean up type inferencing (#2332) * unit tests for 64 bit conversion * clean up type handling * type inference tests * more type inference fixes * use schema to determine user intent for data typing * stop using deprecated API * fbs type encoding test * add missing test * add more tests * correctly infer X type for CXG adaptor * lint * fix typo * ts migration * cleanup from PR review * lint * PR review changes * remove unused packages from client (#2359) * remove unused packages from client * add missing peer dep * fix: disable FE auth testing on compatibility tests (#2377) * update: release process (#2277) Co-authored-by: maniarathi <mani.arathi@gmail.com> * fix: remove spaces in param setup (#2380) * delete deploy workflow (#2396) * undo reformatting which now does not pass lint * fix snapshots which changed due to npm dep changes * add missing quoting to snapshot * another snapshot typo fix * TS Revert (2) - replay PR #2347 and #2354 (#2403) * replay edits from PR 2347 * TS Revert (3) - replay edits in PR #2327 (#2404) * replay edits in PR 2327 * TS Revert (4) - replay PR #2355 (#2405) * replay edits in PR 2355 * add additional babel config * reformat with new prettier config Co-authored-by: Severiano Badajoz <sbadajoz@chanzuckerberg.com> Co-authored-by: maniarathi <mani.arathi@gmail.com> Co-authored-by: Madison Dunitz <madison.dunitz@chanzuckerberg.com>
This commit is contained in:
co-authored by
maniarathi
Madison Dunitz
Severiano Badajoz
parent
295590a7c6
commit
eaae6df5e3
+127
-168
@@ -6,8 +6,7 @@ describe("dataframe constructor", () => {
|
||||
expect(df).toBeDefined();
|
||||
expect(df.dims).toEqual([0, 0]);
|
||||
expect(df).toHaveLength(0);
|
||||
expect(df.ihasCol(0)).toBeFalsy();
|
||||
expect(() => df.icol(0)).toThrow(RangeError);
|
||||
expect(df.icol(0)).not.toBeDefined();
|
||||
});
|
||||
|
||||
test("create with default indices", () => {
|
||||
@@ -24,13 +23,6 @@ describe("dataframe constructor", () => {
|
||||
expect(df.at(2, 1)).toEqual(1);
|
||||
expect(df.iat(0, 0)).toEqual(0);
|
||||
expect(df.iat(2, 1)).toEqual(1);
|
||||
|
||||
expect(Array.from(df.rowIndex.labels())).toEqual(
|
||||
df.rowIndex.getLabels(df.rowIndex.getOffsets(df.rowIndex.labels()))
|
||||
);
|
||||
expect(Array.from(df.colIndex.labels())).toEqual(
|
||||
df.colIndex.getLabels(df.colIndex.getOffsets(df.colIndex.labels()))
|
||||
);
|
||||
});
|
||||
|
||||
test("create with labelled indices", () => {
|
||||
@@ -129,9 +121,7 @@ describe("simple data access", () => {
|
||||
expect(df.has(3, "foo")).toBeFalsy();
|
||||
expect(df.has(-1, "numbers")).toBeFalsy();
|
||||
expect(df.has(-1, -1)).toBeFalsy();
|
||||
expect(
|
||||
df.has(null as unknown as number, null as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(df.has(null, null)).toBeFalsy();
|
||||
expect(df.has(0, "foo")).toBeFalsy();
|
||||
expect(df.has(99, "numbers")).toBeFalsy();
|
||||
expect(df.has(99, "foo")).toBeFalsy();
|
||||
@@ -259,12 +249,11 @@ describe("dataframe subsetting", () => {
|
||||
const df = sourceDf.subset(
|
||||
null,
|
||||
["int32", "float32"],
|
||||
new Dataframe.DenseInt32Index([2, 1])
|
||||
new Dataframe.DenseInt32Index([3, 2, 1])
|
||||
);
|
||||
expect(df.dims).toEqual([2, 2]);
|
||||
expect(df.colIndex).toBeInstanceOf(Dataframe.KeyIndex);
|
||||
expect(df.rowIndex).toBeInstanceOf(Dataframe.DenseInt32Index);
|
||||
expect(df.at(2, "int32")).toEqual(df.iat(0, 0));
|
||||
expect(df.at(3, "int32")).toEqual(df.iat(0, 0));
|
||||
});
|
||||
|
||||
test("withRowIndex error checks", () => {
|
||||
@@ -843,7 +832,7 @@ describe("dataframe factories", () => {
|
||||
});
|
||||
|
||||
describe("dataframe col", () => {
|
||||
let df: Dataframe.Dataframe;
|
||||
let df = null;
|
||||
beforeEach(() => {
|
||||
df = new Dataframe.Dataframe(
|
||||
[2, 2],
|
||||
@@ -860,8 +849,8 @@ describe("dataframe col", () => {
|
||||
expect(df).toBeDefined();
|
||||
expect(df.col("A")).toBe(df.icol(0));
|
||||
expect(df.col("B")).toBe(df.icol(1));
|
||||
expect(() => df.col("undefined")).toThrow(RangeError);
|
||||
expect(() => df.icol("undefined" as unknown as number)).toThrow(RangeError);
|
||||
expect(df.col("undefined")).toBeUndefined();
|
||||
expect(df.icol("undefined")).toBeUndefined();
|
||||
|
||||
const colA = df.col("A");
|
||||
expect(colA).toBeInstanceOf(Function);
|
||||
@@ -915,13 +904,13 @@ describe("dataframe col", () => {
|
||||
expect(df.col("A").indexOf(true)).toEqual(0);
|
||||
expect(df.col("A").indexOf(false)).toEqual(1);
|
||||
expect(df.col("A").indexOf(99)).toBeUndefined();
|
||||
expect(df.col("A").indexOf(undefined as unknown as number)).toBeUndefined();
|
||||
expect(df.col("A").indexOf(undefined)).toBeUndefined();
|
||||
expect(df.col("A").indexOf(1)).toBeUndefined();
|
||||
|
||||
expect(df.col("B").indexOf(1)).toEqual(0);
|
||||
expect(df.col("B").indexOf(0)).toEqual(1);
|
||||
expect(df.col("B").indexOf(99)).toBeUndefined();
|
||||
expect(df.col("B").indexOf(undefined as unknown as number)).toBeUndefined();
|
||||
expect(df.col("B").indexOf(undefined)).toBeUndefined();
|
||||
expect(df.col("B").indexOf(true)).toBeUndefined();
|
||||
});
|
||||
});
|
||||
@@ -964,7 +953,7 @@ describe("label indexing", () => {
|
||||
|
||||
test("offsets", () => {
|
||||
expect(idx.getOffset(1)).toEqual(1);
|
||||
expect(idx.getOffsets([1, 3])).toEqual(new Int32Array([1, 3]));
|
||||
expect(idx.getOffsets([1, 3])).toEqual([1, 3]);
|
||||
});
|
||||
|
||||
test("subset", () => {
|
||||
@@ -1042,7 +1031,7 @@ describe("label indexing", () => {
|
||||
false,
|
||||
])
|
||||
.labels()
|
||||
).toEqual([]);
|
||||
).toEqual(new Int32Array([]));
|
||||
expect(
|
||||
idx
|
||||
.isubsetMask([
|
||||
@@ -1136,14 +1125,16 @@ describe("label indexing", () => {
|
||||
expect(idx.labels()).toEqual(new Int32Array([99, 1002, 48, 0, 22]));
|
||||
expect(idx.size()).toEqual(5);
|
||||
expect(idx.getLabel(0)).toEqual(99);
|
||||
expect(idx.getLabels(new Int32Array([2, 4]))).toEqual([48, 22]);
|
||||
expect(idx.getLabels(new Int32Array([2, 4]))).toEqual(
|
||||
new Int32Array([48, 22])
|
||||
);
|
||||
expect(idx.getLabels([2, 4])).toEqual([48, 22]);
|
||||
});
|
||||
|
||||
test("offsets", () => {
|
||||
expect(idx.getOffset(1002)).toEqual(1);
|
||||
expect(idx.getOffset(0)).toEqual(3);
|
||||
expect(idx.getOffsets([0, 48])).toEqual(new Int32Array([3, 2]));
|
||||
expect(idx.getOffsets([0, 48])).toEqual([3, 2]);
|
||||
});
|
||||
|
||||
test("subset", () => {
|
||||
@@ -1170,7 +1161,7 @@ describe("label indexing", () => {
|
||||
);
|
||||
expect(
|
||||
idx.isubsetMask([false, false, false, false, false]).labels()
|
||||
).toEqual([]);
|
||||
).toEqual(new Int32Array([]));
|
||||
expect(idx.isubsetMask([true, true, false, true, true]).labels()).toEqual(
|
||||
new Int32Array([99, 1002, 0, 22])
|
||||
);
|
||||
@@ -1202,7 +1193,6 @@ describe("label indexing", () => {
|
||||
test("create", () => {
|
||||
expect(Dataframe.isLabelIndex(idx)).toBeTruthy();
|
||||
expect(() => new Dataframe.KeyIndex(["dup", "dup"])).toThrow(Error);
|
||||
// @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.
|
||||
expect(new Dataframe.KeyIndex().size()).toEqual(0);
|
||||
});
|
||||
|
||||
@@ -1272,67 +1262,59 @@ describe("corner cases", () => {
|
||||
const idx = new Dataframe.IdentityInt32Index(10);
|
||||
expect(idx.getOffset(0)).toBe(0);
|
||||
expect(idx.getOffset(9)).toBe(9);
|
||||
expect(idx.getOffset(10)).toBe(-1);
|
||||
expect(idx.getOffset(-1)).toBe(-1);
|
||||
expect(idx.getOffset("sort")).toBe(-1);
|
||||
expect(idx.getOffset("length")).toBe(-1);
|
||||
expect(idx.getOffset(true as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset(0.001)).toBe(-1);
|
||||
expect(idx.getOffset({} as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset([] as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset(new Float32Array() as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset("__proto__")).toBe(-1);
|
||||
expect(idx.getOffset(10)).toBeUndefined();
|
||||
expect(idx.getOffset(-1)).toBeUndefined();
|
||||
expect(idx.getOffset("sort")).toBeUndefined();
|
||||
expect(idx.getOffset("length")).toBeUndefined();
|
||||
expect(idx.getOffset(true)).toBeUndefined();
|
||||
expect(idx.getOffset(0.001)).toBeUndefined();
|
||||
expect(idx.getOffset({})).toBeUndefined();
|
||||
expect(idx.getOffset([])).toBeUndefined();
|
||||
expect(idx.getOffset(new Float32Array())).toBeUndefined();
|
||||
expect(idx.getOffset("__proto__")).toBeUndefined();
|
||||
|
||||
expect(idx.getLabel(0)).toBe(0);
|
||||
expect(idx.getLabel(9)).toBe(9);
|
||||
expect(idx.getLabel(10)).toBeUndefined();
|
||||
expect(idx.getLabel(-1)).toBeUndefined();
|
||||
expect(idx.getLabel("sort" as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel("length" as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel(true as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel("sort")).toBeUndefined();
|
||||
expect(idx.getLabel("length")).toBeUndefined();
|
||||
expect(idx.getLabel(true)).toBeUndefined();
|
||||
expect(idx.getLabel(0.001)).toBeUndefined();
|
||||
expect(idx.getLabel({} as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel([] as unknown as number)).toBeUndefined();
|
||||
expect(
|
||||
idx.getLabel(new Float32Array() as unknown as number)
|
||||
).toBeUndefined();
|
||||
expect(idx.getLabel("__proto__" as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel({})).toBeUndefined();
|
||||
expect(idx.getLabel([])).toBeUndefined();
|
||||
expect(idx.getLabel(new Float32Array())).toBeUndefined();
|
||||
expect(idx.getLabel("__proto__")).toBeUndefined();
|
||||
});
|
||||
|
||||
test("dense integer index rejects non-integer labels", () => {
|
||||
const idx = new Dataframe.DenseInt32Index([-10, 0, 3, 9, 10]);
|
||||
expect(idx.getOffset(-10)).toBe(0);
|
||||
expect(idx.getOffset(0)).toBe(1);
|
||||
expect(idx.getOffset(3)).toBe(2);
|
||||
expect(idx.getOffset(9)).toBe(3);
|
||||
expect(idx.getOffset(10)).toBe(4);
|
||||
|
||||
expect(idx.getOffset(1)).toBe(-1);
|
||||
expect(idx.getOffset(11)).toBe(-1);
|
||||
expect(idx.getOffset(-1)).toBe(-1);
|
||||
expect(idx.getOffset("sort")).toBe(-1);
|
||||
expect(idx.getOffset("length")).toBe(-1);
|
||||
expect(idx.getOffset(true as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset(0.001)).toBe(-1);
|
||||
expect(idx.getOffset({} as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset([] as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset(new Float32Array() as unknown as string)).toBe(-1);
|
||||
expect(idx.getOffset("__proto__")).toBe(-1);
|
||||
expect(idx.getOffset(1)).toBeUndefined();
|
||||
expect(idx.getOffset(11)).toBeUndefined();
|
||||
expect(idx.getOffset(-1)).toBeUndefined();
|
||||
expect(idx.getOffset("sort")).toBeUndefined();
|
||||
expect(idx.getOffset("length")).toBeUndefined();
|
||||
expect(idx.getOffset(true)).toBeUndefined();
|
||||
expect(idx.getOffset(0.001)).toBeUndefined();
|
||||
expect(idx.getOffset({})).toBeUndefined();
|
||||
expect(idx.getOffset([])).toBeUndefined();
|
||||
expect(idx.getOffset(new Float32Array())).toBeUndefined();
|
||||
expect(idx.getOffset("__proto__")).toBeUndefined();
|
||||
|
||||
expect(idx.getLabel(0)).toBe(-10);
|
||||
expect(idx.getLabel(4)).toBe(10);
|
||||
expect(idx.getLabel(10)).toBeUndefined();
|
||||
expect(idx.getLabel(-1)).toBeUndefined();
|
||||
expect(idx.getLabel("sort" as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel("length" as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel(true as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel("sort")).toBeUndefined();
|
||||
expect(idx.getLabel("length")).toBeUndefined();
|
||||
expect(idx.getLabel(true)).toBeUndefined();
|
||||
expect(idx.getLabel(0.001)).toBeUndefined();
|
||||
expect(idx.getLabel({} as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel([] as unknown as number)).toBeUndefined();
|
||||
expect(
|
||||
idx.getLabel(new Float32Array() as unknown as number)
|
||||
).toBeUndefined();
|
||||
expect(idx.getLabel("__proto__" as unknown as number)).toBeUndefined();
|
||||
expect(idx.getLabel({})).toBeUndefined();
|
||||
expect(idx.getLabel([])).toBeUndefined();
|
||||
expect(idx.getLabel(new Float32Array())).toBeUndefined();
|
||||
expect(idx.getLabel("__proto__")).toBeUndefined();
|
||||
});
|
||||
|
||||
test("Empty dataframe rejects bogus labels", () => {
|
||||
@@ -1340,55 +1322,39 @@ describe("corner cases", () => {
|
||||
|
||||
expect(df.hasCol("sort")).toBeFalsy();
|
||||
expect(df.hasCol(0)).toBeFalsy();
|
||||
expect(df.hasCol(true as unknown as number)).toBeFalsy();
|
||||
expect(df.hasCol(false as unknown as number)).toBeFalsy();
|
||||
expect(df.hasCol([] as unknown as number)).toBeFalsy();
|
||||
expect(df.hasCol({} as unknown as number)).toBeFalsy();
|
||||
expect(df.hasCol(null as unknown as number)).toBeFalsy();
|
||||
expect(df.hasCol(undefined as unknown as number)).toBeFalsy();
|
||||
expect(df.hasCol(true)).toBeFalsy();
|
||||
expect(df.hasCol(false)).toBeFalsy();
|
||||
expect(df.hasCol([])).toBeFalsy();
|
||||
expect(df.hasCol({})).toBeFalsy();
|
||||
expect(df.hasCol(null)).toBeFalsy();
|
||||
expect(df.hasCol(undefined)).toBeFalsy();
|
||||
|
||||
expect(() => df.col("sort")).toThrow(RangeError);
|
||||
expect(() => df.col(0)).toThrow(RangeError);
|
||||
expect(() => df.col(true as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col(false as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col([] as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col({} as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col(null as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col(undefined as unknown as string)).toThrow(RangeError);
|
||||
expect(df.col("sort")).toBeUndefined();
|
||||
expect(df.col(0)).toBeUndefined();
|
||||
expect(df.col(true)).toBeUndefined();
|
||||
expect(df.col(false)).toBeUndefined();
|
||||
expect(df.col([])).toBeUndefined();
|
||||
expect(df.col({})).toBeUndefined();
|
||||
expect(df.col(null)).toBeUndefined();
|
||||
expect(df.col(undefined)).toBeUndefined();
|
||||
|
||||
expect(() => df.icol("sort" as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(0)).toThrow(RangeError);
|
||||
expect(() => df.icol(true as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(false as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol([] as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol({} as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(null as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(undefined as unknown as number)).toThrow(RangeError);
|
||||
expect(df.icol("sort")).toBeUndefined();
|
||||
expect(df.icol(0)).toBeUndefined();
|
||||
expect(df.icol(true)).toBeUndefined();
|
||||
expect(df.icol(false)).toBeUndefined();
|
||||
expect(df.icol([])).toBeUndefined();
|
||||
expect(df.icol({})).toBeUndefined();
|
||||
expect(df.icol(null)).toBeUndefined();
|
||||
expect(df.icol(undefined)).toBeUndefined();
|
||||
|
||||
expect(
|
||||
df.ihas("sort" as unknown as number, "length" as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas("0" as unknown as number, "0" as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas("" as unknown as number, "" as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas(null as unknown as number, null as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas(undefined as unknown as number, undefined as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas(true as unknown as number, true as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas([] as unknown as number, [] as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas({} as unknown as number, {} as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(df.ihas("sort", "length")).toBeFalsy();
|
||||
expect(df.ihas("0", "0")).toBeFalsy();
|
||||
expect(df.ihas("", "")).toBeFalsy();
|
||||
expect(df.ihas(null, null)).toBeFalsy();
|
||||
expect(df.ihas(undefined, undefined)).toBeFalsy();
|
||||
expect(df.ihas(true, true)).toBeFalsy();
|
||||
expect(df.ihas([], [])).toBeFalsy();
|
||||
expect(df.ihas({}, {})).toBeFalsy();
|
||||
});
|
||||
|
||||
test("Dataframe rejects bogus labels", () => {
|
||||
@@ -1405,58 +1371,51 @@ describe("corner cases", () => {
|
||||
expect(df.hasCol("sort")).toBeFalsy();
|
||||
expect(df.hasCol("__proto__")).toBeFalsy();
|
||||
expect(df.hasCol(0)).toBeFalsy();
|
||||
expect(df.hasCol(true as unknown as string)).toBeFalsy();
|
||||
expect(df.hasCol(false as unknown as string)).toBeFalsy();
|
||||
expect(df.hasCol([] as unknown as string)).toBeFalsy();
|
||||
expect(df.hasCol({} as unknown as string)).toBeFalsy();
|
||||
expect(df.hasCol(null as unknown as string)).toBeFalsy();
|
||||
expect(df.hasCol(undefined as unknown as string)).toBeFalsy();
|
||||
expect(df.hasCol(true)).toBeFalsy();
|
||||
expect(df.hasCol(false)).toBeFalsy();
|
||||
expect(df.hasCol([])).toBeFalsy();
|
||||
expect(df.hasCol({})).toBeFalsy();
|
||||
expect(df.hasCol(null)).toBeFalsy();
|
||||
expect(df.hasCol(undefined)).toBeFalsy();
|
||||
|
||||
expect(() => df.col("sort")).toThrow(RangeError);
|
||||
expect(() => df.col("__proto__")).toThrow(RangeError);
|
||||
expect(() => df.col(0)).toThrow(RangeError);
|
||||
expect(() => df.col(true as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col(false as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col([] as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col({} as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col(null as unknown as string)).toThrow(RangeError);
|
||||
expect(() => df.col(undefined as unknown as string)).toThrow(RangeError);
|
||||
expect(df.col("sort")).toBeUndefined();
|
||||
expect(df.col("__proto__")).toBeUndefined();
|
||||
expect(df.col(0)).toBeUndefined();
|
||||
expect(df.col(true)).toBeUndefined();
|
||||
expect(df.col(false)).toBeUndefined();
|
||||
expect(df.col([])).toBeUndefined();
|
||||
expect(df.col({})).toBeUndefined();
|
||||
expect(df.col(null)).toBeUndefined();
|
||||
expect(df.col(undefined)).toBeUndefined();
|
||||
|
||||
expect(() => df.icol("sort" as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol("__proto__" as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(-1)).toThrow(RangeError);
|
||||
expect(() => df.icol(true as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(false as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol([] as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol({} as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(null as unknown as number)).toThrow(RangeError);
|
||||
expect(() => df.icol(undefined as unknown as number)).toThrow(RangeError);
|
||||
expect(df.icol("sort")).toBeUndefined();
|
||||
expect(df.icol("__proto__")).toBeUndefined();
|
||||
expect(df.icol(-1)).toBeUndefined();
|
||||
expect(df.icol(true)).toBeUndefined();
|
||||
expect(df.icol(false)).toBeUndefined();
|
||||
expect(df.icol([])).toBeUndefined();
|
||||
expect(df.icol({})).toBeUndefined();
|
||||
expect(df.icol(null)).toBeUndefined();
|
||||
expect(df.icol(undefined)).toBeUndefined();
|
||||
|
||||
expect(
|
||||
df.ihas("sort" as unknown as number, "length" as unknown as number)
|
||||
).toBeFalsy();
|
||||
expect(
|
||||
df.ihas(
|
||||
"__proto__" as unknown as number,
|
||||
"__proto__" as unknown as number
|
||||
)
|
||||
).toBeFalsy();
|
||||
expect(df.ihas("sort", "length")).toBeFalsy();
|
||||
expect(df.ihas("__proto__", "__proto__")).toBeFalsy();
|
||||
|
||||
expect(df.ihas(-1, 0)).toBeFalsy();
|
||||
expect(df.ihas("0" as unknown as number, 0)).toBeFalsy();
|
||||
expect(df.ihas("" as unknown as number, 0)).toBeFalsy();
|
||||
expect(df.ihas(null as unknown as number, 0)).toBeFalsy();
|
||||
expect(df.ihas(undefined as unknown as number, 0)).toBeFalsy();
|
||||
expect(df.ihas([] as unknown as number, 0)).toBeFalsy();
|
||||
expect(df.ihas({} as unknown as number, 0)).toBeFalsy();
|
||||
expect(df.ihas("0", 0)).toBeFalsy();
|
||||
expect(df.ihas("", 0)).toBeFalsy();
|
||||
expect(df.ihas(null, 0)).toBeFalsy();
|
||||
expect(df.ihas(undefined, 0)).toBeFalsy();
|
||||
expect(df.ihas([], 0)).toBeFalsy();
|
||||
expect(df.ihas({}, 0)).toBeFalsy();
|
||||
|
||||
expect(df.ihas(0, -1)).toBeFalsy();
|
||||
expect(df.ihas(0, "0" as unknown as number)).toBeFalsy();
|
||||
expect(df.ihas(0, "" as unknown as number)).toBeFalsy();
|
||||
expect(df.ihas(0, null as unknown as number)).toBeFalsy();
|
||||
expect(df.ihas(0, undefined as unknown as number)).toBeFalsy();
|
||||
expect(df.ihas(0, [] as unknown as number)).toBeFalsy();
|
||||
expect(df.ihas(0, {} as unknown as number)).toBeFalsy();
|
||||
expect(df.ihas(0, "0")).toBeFalsy();
|
||||
expect(df.ihas(0, "")).toBeFalsy();
|
||||
expect(df.ihas(0, null)).toBeFalsy();
|
||||
expect(df.ihas(0, undefined)).toBeFalsy();
|
||||
expect(df.ihas(0, [])).toBeFalsy();
|
||||
expect(df.ihas(0, {})).toBeFalsy();
|
||||
|
||||
expect(df.has("sort", "length")).toBeFalsy();
|
||||
expect(df.has("length", "sort")).toBeFalsy();
|
||||
@@ -1465,17 +1424,17 @@ describe("corner cases", () => {
|
||||
expect(df.has(-1, "A")).toBeFalsy();
|
||||
expect(df.has("0", "A")).toBeFalsy();
|
||||
expect(df.has("", "A")).toBeFalsy();
|
||||
expect(df.has(null as unknown as string, "A")).toBeFalsy();
|
||||
expect(df.has(undefined as unknown as string, "A")).toBeFalsy();
|
||||
expect(df.has([] as unknown as string, "A")).toBeFalsy();
|
||||
expect(df.has({} as unknown as string, "A")).toBeFalsy();
|
||||
expect(df.has(null, "A")).toBeFalsy();
|
||||
expect(df.has(undefined, "A")).toBeFalsy();
|
||||
expect(df.has([], "A")).toBeFalsy();
|
||||
expect(df.has({}, "A")).toBeFalsy();
|
||||
|
||||
expect(df.has(0, -1)).toBeFalsy();
|
||||
expect(df.has(0, "0")).toBeFalsy();
|
||||
expect(df.has(0, "")).toBeFalsy();
|
||||
expect(df.has(0, null as unknown as string)).toBeFalsy();
|
||||
expect(df.has(0, undefined as unknown as string)).toBeFalsy();
|
||||
expect(df.has(0, [] as unknown as string)).toBeFalsy();
|
||||
expect(df.has(0, {} as unknown as string)).toBeFalsy();
|
||||
expect(df.has(0, null)).toBeFalsy();
|
||||
expect(df.has(0, undefined)).toBeFalsy();
|
||||
expect(df.has(0, [])).toBeFalsy();
|
||||
expect(df.has(0, {})).toBeFalsy();
|
||||
});
|
||||
});
|
||||
+14
-16
@@ -9,7 +9,7 @@ describe("Dataframe column histogram", () => {
|
||||
new Dataframe.KeyIndex(["name", "cat", "value"])
|
||||
);
|
||||
|
||||
const h1 = df.col("cat").histogramCategoricalBy(df.col("name"));
|
||||
const h1 = df.col("cat").histogram(df.col("name"));
|
||||
expect(h1).toMatchObject(
|
||||
new Map([
|
||||
["n1", new Map([["c1", 1]])],
|
||||
@@ -18,9 +18,7 @@ describe("Dataframe column histogram", () => {
|
||||
])
|
||||
);
|
||||
// memoized?
|
||||
expect(df.col("cat").histogramCategoricalBy(df.col("name"))).toMatchObject(
|
||||
h1
|
||||
);
|
||||
expect(df.col("cat").histogram(df.col("name"))).toMatchObject(h1);
|
||||
});
|
||||
|
||||
test("continuous by categorical", () => {
|
||||
@@ -31,7 +29,7 @@ describe("Dataframe column histogram", () => {
|
||||
new Dataframe.KeyIndex(["name", "cat", "value"])
|
||||
);
|
||||
|
||||
const h1 = df.col("value").histogramContinuousBy(3, [0, 2], df.col("name"));
|
||||
const h1 = df.col("value").histogram(3, [0, 2], df.col("name"));
|
||||
expect(h1).toMatchObject(
|
||||
new Map([
|
||||
["n1", [1, 0, 0]],
|
||||
@@ -40,9 +38,9 @@ describe("Dataframe column histogram", () => {
|
||||
])
|
||||
);
|
||||
// memoized?
|
||||
expect(
|
||||
df.col("value").histogramContinuousBy(3, [0, 2], df.col("name"))
|
||||
).toMatchObject(h1);
|
||||
expect(df.col("value").histogram(3, [0, 2], df.col("name"))).toMatchObject(
|
||||
h1
|
||||
);
|
||||
});
|
||||
|
||||
test("categorical", () => {
|
||||
@@ -53,7 +51,7 @@ describe("Dataframe column histogram", () => {
|
||||
new Dataframe.KeyIndex(["name", "cat", "value"])
|
||||
);
|
||||
|
||||
const h1 = df.col("cat").histogramCategorical();
|
||||
const h1 = df.col("cat").histogram();
|
||||
expect(h1).toMatchObject(
|
||||
new Map([
|
||||
["c1", 1],
|
||||
@@ -62,7 +60,7 @@ describe("Dataframe column histogram", () => {
|
||||
])
|
||||
);
|
||||
// memoized?
|
||||
expect(df.col("cat").histogramCategorical()).toMatchObject(h1);
|
||||
expect(df.col("value").histogram(3, [0, 2])).toMatchObject(h1);
|
||||
});
|
||||
|
||||
test("continuous", () => {
|
||||
@@ -73,10 +71,10 @@ describe("Dataframe column histogram", () => {
|
||||
new Dataframe.KeyIndex(["name", "cat", "value"])
|
||||
);
|
||||
|
||||
const h1 = df.col("value").histogramContinuous(3, [0, 2]);
|
||||
const h1 = df.col("value").histogram(3, [0, 2]);
|
||||
expect(h1).toMatchObject([1, 1, 1]);
|
||||
// memoized?
|
||||
expect(df.col("value").histogramContinuous(3, [0, 2])).toMatchObject(h1);
|
||||
expect(df.col("value").histogram(3, [0, 2])).toMatchObject(h1);
|
||||
});
|
||||
|
||||
test("continuous thesholds correct", () => {
|
||||
@@ -86,10 +84,10 @@ describe("Dataframe column histogram", () => {
|
||||
[new Int32Array(vals), new Float32Array(vals)]
|
||||
);
|
||||
|
||||
expect(df.col(0).histogramContinuous(5, [0, 100])).toEqual([5, 1, 0, 0, 2]);
|
||||
expect(df.col(1).histogramContinuous(5, [0, 100])).toEqual([5, 1, 0, 0, 2]);
|
||||
expect(df.col(0).histogramContinuous(2, [0, 10])).toEqual([2, 2]);
|
||||
expect(df.col(0).histogramContinuous(10, [0, 100])).toEqual([
|
||||
expect(df.col(0).histogram(5, [0, 100])).toEqual([5, 1, 0, 0, 2]);
|
||||
expect(df.col(1).histogram(5, [0, 100])).toEqual([5, 1, 0, 0, 2]);
|
||||
expect(df.col(0).histogram(2, [0, 10])).toEqual([2, 2]);
|
||||
expect(df.col(0).histogram(10, [0, 100])).toEqual([
|
||||
3, 2, 1, 0, 0, 0, 0, 0, 0, 2,
|
||||
]);
|
||||
});
|
||||
+20
-23
@@ -1,14 +1,13 @@
|
||||
import * as Dataframe from "../../../src/util/dataframe";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any --- FIXME: disabled temporarily on migrate to TS.
|
||||
function float32Conversion(f: any) {
|
||||
function float32Conversion(f) {
|
||||
return new Float32Array([f])[0];
|
||||
}
|
||||
|
||||
describe("Dataframe column summary", () => {
|
||||
test("empty column test", () => {
|
||||
const df = Dataframe.Dataframe.create([0, 1], [[]]);
|
||||
const summary = df.icol(0).summarizeCategorical();
|
||||
const summary = df.icol(0).summarize();
|
||||
expect(summary).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
@@ -41,7 +40,7 @@ describe("Dataframe column summary", () => {
|
||||
])
|
||||
);
|
||||
|
||||
expect(df.icol(0).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(0).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: ["n1"],
|
||||
@@ -49,7 +48,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 1,
|
||||
})
|
||||
);
|
||||
expect(df.icol(1).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(1).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: ["hi"],
|
||||
@@ -57,7 +56,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 1,
|
||||
})
|
||||
);
|
||||
expect(df.icol(2).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(2).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: [true],
|
||||
@@ -65,7 +64,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 1,
|
||||
})
|
||||
);
|
||||
expect(df.icol(3).summarizeContinuous()).toEqual(
|
||||
expect(df.icol(3).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: false,
|
||||
min: float32Conversion(39.3),
|
||||
@@ -75,7 +74,7 @@ describe("Dataframe column summary", () => {
|
||||
pinf: 0,
|
||||
})
|
||||
);
|
||||
expect(df.icol(4).summarizeContinuous()).toEqual(
|
||||
expect(df.icol(4).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: false,
|
||||
min: 99,
|
||||
@@ -85,7 +84,7 @@ describe("Dataframe column summary", () => {
|
||||
pinf: 0,
|
||||
})
|
||||
);
|
||||
expect(df.icol(5).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(5).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: [1],
|
||||
@@ -117,7 +116,7 @@ describe("Dataframe column summary", () => {
|
||||
])
|
||||
);
|
||||
|
||||
expect(df.icol(0).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(0).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining(["n0", "n1", "n2"]),
|
||||
@@ -129,7 +128,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 3,
|
||||
})
|
||||
);
|
||||
expect(df.icol(1).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(1).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining(["hi", "bye"]),
|
||||
@@ -140,7 +139,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 2,
|
||||
})
|
||||
);
|
||||
expect(df.icol(2).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(2).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining([true, false]),
|
||||
@@ -151,7 +150,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 2,
|
||||
})
|
||||
);
|
||||
expect(df.icol(3).summarizeContinuous()).toEqual(
|
||||
expect(df.icol(3).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: false,
|
||||
min: 0,
|
||||
@@ -161,7 +160,7 @@ describe("Dataframe column summary", () => {
|
||||
pinf: 0,
|
||||
})
|
||||
);
|
||||
expect(df.icol(4).summarizeContinuous()).toEqual(
|
||||
expect(df.icol(4).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: false,
|
||||
min: 99,
|
||||
@@ -171,11 +170,10 @@ describe("Dataframe column summary", () => {
|
||||
pinf: 0,
|
||||
})
|
||||
);
|
||||
expect(df.icol(5).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(5).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining([1, false, "0"]),
|
||||
// @ts-expect-error ts-migrate(2769) FIXME: No overload matches this call.
|
||||
categoryCounts: new Map([
|
||||
[1, 1],
|
||||
[false, 1],
|
||||
@@ -213,7 +211,7 @@ describe("Dataframe column summary", () => {
|
||||
])
|
||||
);
|
||||
|
||||
expect(df.icol(0).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(0).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining(["n0", "n1", "n2"]),
|
||||
@@ -225,7 +223,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 3,
|
||||
})
|
||||
);
|
||||
expect(df.icol(1).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(1).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining(["hi", "bye"]),
|
||||
@@ -236,7 +234,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 2,
|
||||
})
|
||||
);
|
||||
expect(df.icol(2).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(2).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining([true, false]),
|
||||
@@ -247,7 +245,7 @@ describe("Dataframe column summary", () => {
|
||||
numCategories: 2,
|
||||
})
|
||||
);
|
||||
expect(df.icol(3).summarizeContinuous()).toEqual(
|
||||
expect(df.icol(3).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: false,
|
||||
min: float32Conversion(39.3),
|
||||
@@ -257,7 +255,7 @@ describe("Dataframe column summary", () => {
|
||||
pinf: 1,
|
||||
})
|
||||
);
|
||||
expect(df.icol(4).summarizeContinuous()).toEqual(
|
||||
expect(df.icol(4).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: false,
|
||||
min: 99,
|
||||
@@ -267,11 +265,10 @@ describe("Dataframe column summary", () => {
|
||||
pinf: 0,
|
||||
})
|
||||
);
|
||||
expect(df.icol(5).summarizeCategorical()).toEqual(
|
||||
expect(df.icol(5).summarize()).toEqual(
|
||||
expect.objectContaining({
|
||||
categorical: true,
|
||||
categories: expect.arrayContaining([1, false, "0"]),
|
||||
// @ts-expect-error ts-migrate(2769) FIXME: No overload matches this call.
|
||||
categoryCounts: new Map([
|
||||
[1, 1],
|
||||
[false, 1],
|
||||
Reference in New Issue
Block a user