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:
Bruce Martin
2021-08-23 15:01:36 -07:00
committed by GitHub
co-authored by maniarathi Madison Dunitz Severiano Badajoz
parent 295590a7c6
commit eaae6df5e3
253 changed files with 11175 additions and 22271 deletions
@@ -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();
});
});
@@ -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,
]);
});
@@ -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],