mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-26 18:48:11 +08:00
* 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>
68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
/*
|
|
Private helper functions related to schema
|
|
*/
|
|
export function _getColumnSchema(schema, field, col) {
|
|
/* look up the column definition */
|
|
switch (field) {
|
|
case "obs":
|
|
if (typeof col === "object")
|
|
throw new Error("unable to get column schema by query");
|
|
return schema.annotations.obsByName[col];
|
|
case "var":
|
|
if (typeof col === "object")
|
|
throw new Error("unable to get column schema by query");
|
|
return schema.annotations.varByName[col];
|
|
case "emb":
|
|
if (typeof col === "object")
|
|
throw new Error("unable to get column schema by query");
|
|
return schema.layout.obsByName[col];
|
|
case "X":
|
|
return schema.dataframe;
|
|
default:
|
|
throw new Error(`unknown field name: ${field}`);
|
|
}
|
|
}
|
|
|
|
export function _isIndex(schema, field, col) {
|
|
const index = schema.annotations?.[field].index;
|
|
return index && index === col;
|
|
}
|
|
|
|
export function _getColumnDimensionNames(schema, field, col) {
|
|
/*
|
|
field/col may be an alias for multiple columns. Currently used to map ND
|
|
values to 1D dataframe columns for embeddings/layout. Signified by the presence
|
|
of the "dims" value in the schema.
|
|
*/
|
|
const colSchema = _getColumnSchema(schema, field, col);
|
|
if (!colSchema) {
|
|
return undefined;
|
|
}
|
|
return colSchema.dims || [col];
|
|
}
|
|
|
|
export function _schemaColumns(schema, field) {
|
|
switch (field) {
|
|
case "obs":
|
|
return Object.keys(schema.annotations.obsByName);
|
|
case "var":
|
|
return Object.keys(schema.annotations.varByName);
|
|
case "emb":
|
|
return Object.keys(schema.layout.obsByName);
|
|
default:
|
|
throw new Error(`unknown field name: ${field}`);
|
|
}
|
|
}
|
|
|
|
export function _getWritableColumns(schema, field) {
|
|
if (field !== "obs") return [];
|
|
return schema.annotations.obs.columns
|
|
.filter((v) => v.writable)
|
|
.map((v) => v.name);
|
|
}
|
|
|
|
export function _isContinuousType(schema) {
|
|
const { type } = schema;
|
|
return !(type === "string" || type === "boolean" || type === "categorical");
|
|
}
|