@milaboratories/miplots4 1.0.177 → 1.0.178
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/dist/DataFrame.d.ts +1 -0
- package/dist/DataFrame.d.ts.map +1 -1
- package/dist/DataFrame.js.map +1 -1
- package/package.json +1 -1
package/dist/DataFrame.d.ts
CHANGED
package/dist/DataFrame.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataFrame.d.ts","sourceRoot":"","sources":["../src/DataFrame.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,EAAE,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"DataFrame.d.ts","sourceRoot":"","sources":["../src/DataFrame.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAChD,eAAO,MAAM,UAAU,eAAsB,CAAC;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,UAAU,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,KAAK,SAAS,GAAG,MAAM,CACnB,QAAQ,EACR;IACI,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC;CACtB,CACJ,CAAC;AAMF,KAAK,UAAU,GAAG,MAAM,CAAC;AAIzB,qBAAa,SAAS;IAClB,MAAM,CAAC,UAAU,GAAI,OAAO,SAAS,KAAG,MAAM,CAAkB;IAEhE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAa;IACtE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAa;IAE3F,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,MAAM,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,GAAE,SAAS;gBAUzB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAQzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAInC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAIrD,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ;IAI5D,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,QAAQ,EAAE;IAW/D,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAUjE,OAAO,CAAC,uBAAuB;IAiC/B,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE;IAiC3F,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAmB3E,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,WAAW;CAiB3D"}
|
package/dist/DataFrame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataFrame.js","names":[],"sources":["../src/DataFrame.ts"],"sourcesContent":["import { groupBy } from 'lodash';\nimport type { Category, DataValue } from './types';\nimport { exhaustive } from './utils';\n\nexport type DataByColumns = {\n type: 'columns',\n values: Record<string, DataValue[]>,\n id: string\n}\nexport type DataSet = DataFrame | DataByColumns;\nexport const NO_GROUPED = Symbol('noGrouped');\nexport type GroupKey = string | typeof NO_GROUPED;\nexport type RowIndex = number;\ntype RowsGroup = Record<\n GroupKey,\n {\n rowIndexes: Uint32Array;\n grouped: RowsGroup;\n }\n>;\n\nfunction isDataByColumns (data:DataSet): data is DataByColumns {\n return 'type' in data && data.type === 'columns';\n}\n\ntype ColumnName = string;\n\nconst EMPTY_INDEXES = new Uint32Array(0);\n\nexport class DataFrame {\n static toCategory = (value: DataValue): string => String(value);\n\n readonly id: string;\n // input data grouped by columns\n readonly data: Record<string, DataValue[]>;\n readonly rowsCount: number;\n readonly columnNames: ColumnName[];\n readonly rowIndexes: Uint32Array;\n\n readonly mapColumnCategories: Map<ColumnName, Category[]> = new Map();\n readonly mapColumnCategoriesRowIndexes: Map<ColumnName, Map<Category, number>> = new Map();\n\n rowsGrouped?: RowsGroup;\n\n static from (data: DataSet):DataFrame {\n if (data instanceof DataFrame) {\n return data;\n } else if (isDataByColumns(data)) {\n return new DataFrame(data.id, data.values);\n } else {\n exhaustive(data, 'Unknown input data format');\n }\n }\n\n constructor(id: string, data: Record<string, DataValue[]>) {\n this.id = id;\n this.data = data;\n this.columnNames = Object.keys(data);\n this.rowsCount = this.columnNames.length ? data[this.columnNames[0]].length : 0;\n this.rowIndexes = new Uint32Array(Array.from({length: this.rowsCount}, (_, i) => i));\n }\n\n getColumn(key: string): DataValue[] {\n return this.data[key];\n }\n\n getColumnValue(key: string, index: number): DataValue {\n return this.data[key]?.[index];\n }\n\n getColumnValueCategory(key: string, index: number): Category {\n return DataFrame.toCategory(this.getColumnValue(key, index));\n }\n\n getColumnCategories(key: string, ignoreNull = true): Category[] {\n if (!this.mapColumnCategories.has(key)) {\n this.computeColumnCategories(key);\n }\n\n const categories = this.mapColumnCategories.get(key) ?? [];\n return ignoreNull && categories && categories.length > 0 && categories[categories.length - 1] === 'null'\n ? categories.slice(0, -1) // full copy without null to heavy for large datasets\n : categories; \n }\n\n getColumnCategoryRowIndex(key: string, value: Category): RowIndex {\n const rowIndex = this.mapColumnCategoriesRowIndexes.get(key)?.get(value);\n \n if (rowIndex === undefined) {\n throw new Error(`Category ${value} not found in column ${key}`);\n }\n\n return rowIndex;\n }\n\n private computeColumnCategories(key: ColumnName) {\n if (!this.columnNames.includes(key)) {\n throw new Error(`Column ${key} does not exist`);\n }\n \n const columnData = this.getColumn(key);\n const uniqValues = new Set<DataValue>();\n const categories: string[] = [];\n const categoriesIndexes = new Map<string, number>();\n let nullIdx = -1;\n for (let i = 0; i < columnData.length; i++) {\n const value = columnData[i];\n if (uniqValues.has(value)) {\n continue;\n }\n uniqValues.add(value);\n if (value === null) {\n nullIdx = i;\n continue;\n }\n const category = DataFrame.toCategory(value);\n categories.push(category);\n categoriesIndexes.set(category, i);\n }\n if (nullIdx !== -1) {\n categories.push('null');\n categoriesIndexes.set('null', nullIdx);\n }\n\n this.mapColumnCategories.set(key, categories);\n this.mapColumnCategoriesRowIndexes.set(key, categoriesIndexes);\n }\n\n setGrouping(groupingColumnIds: (string | null)[], groupingKeys?: (GroupKey[] | undefined)[]) { \n const root = {grouped: {} as RowsGroup, rowIndexes: this.rowIndexes};\n let groups: RowsGroup[keyof RowsGroup][] = [root];\n groupingColumnIds.forEach((column, idx) => {\n const keys: GroupKey[] = column === null ? [NO_GROUPED] : (groupingKeys?.[idx] ?? this.getColumnCategories(column, false));\n const nextGroups: RowsGroup[keyof RowsGroup][] = [];\n groups.forEach(group => {\n if (column === null) {\n group.grouped = {\n [NO_GROUPED]: {\n rowIndexes: group.rowIndexes,\n grouped: {} as RowsGroup,\n },\n };\n nextGroups.push(group.grouped[NO_GROUPED]);\n } else {\n const groupedBy = groupBy(group.rowIndexes, idx => this.getColumnValueCategory(column, idx));\n group.grouped = keys.reduce((res, key) => {\n res[key] = {\n rowIndexes: new Uint32Array(groupedBy[key as string] ?? []),\n grouped: {} as RowsGroup,\n };\n nextGroups.push(res[key]);\n return res;\n }, {} as RowsGroup);\n }\n });\n groups = nextGroups;\n });\n this.rowsGrouped = root.grouped;\n }\n\n // TODO: fix all places where this method is used\n getColumnByGrouping(groupingKeys: GroupKey[], keyYColumn: string): number[] {\n if (!this.rowsGrouped) {\n return [];\n }\n if (!groupingKeys.length) {\n return Array.from(this.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n groupingKeys.forEach(key => {\n const nextGroup = result.grouped[key ?? 'null'];\n if (!nextGroup) {\n return [];\n }\n result = nextGroup;\n });\n return Array.from(result.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n\n // TODO: fix all places where this method is used\n getRowsByGrouping(groupingKeys: GroupKey[]): Uint32Array {\n if (!this.rowsGrouped) {\n return EMPTY_INDEXES;\n }\n if (!groupingKeys.length) {\n return this.rowIndexes;\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n for (const key of groupingKeys) {\n const nextGroup = result.grouped[key];\n if (!nextGroup) {\n return EMPTY_INDEXES;\n }\n result = nextGroup;\n }\n return result.rowIndexes;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataFrame.js","names":[],"sources":["../src/DataFrame.ts"],"sourcesContent":["import { groupBy } from 'lodash';\nimport type { Category, DataValue } from './types';\nimport { exhaustive } from './utils';\n\nexport type DataByColumns = {\n type: 'columns',\n values: Record<string, DataValue[]>,\n id: string,\n overflow?: boolean\n}\nexport type DataSet = DataFrame | DataByColumns;\nexport const NO_GROUPED = Symbol('noGrouped');\nexport type GroupKey = string | typeof NO_GROUPED;\nexport type RowIndex = number;\ntype RowsGroup = Record<\n GroupKey,\n {\n rowIndexes: Uint32Array;\n grouped: RowsGroup;\n }\n>;\n\nfunction isDataByColumns (data:DataSet): data is DataByColumns {\n return 'type' in data && data.type === 'columns';\n}\n\ntype ColumnName = string;\n\nconst EMPTY_INDEXES = new Uint32Array(0);\n\nexport class DataFrame {\n static toCategory = (value: DataValue): string => String(value);\n\n readonly id: string;\n // input data grouped by columns\n readonly data: Record<string, DataValue[]>;\n readonly rowsCount: number;\n readonly columnNames: ColumnName[];\n readonly rowIndexes: Uint32Array;\n\n readonly mapColumnCategories: Map<ColumnName, Category[]> = new Map();\n readonly mapColumnCategoriesRowIndexes: Map<ColumnName, Map<Category, number>> = new Map();\n\n rowsGrouped?: RowsGroup;\n\n static from (data: DataSet):DataFrame {\n if (data instanceof DataFrame) {\n return data;\n } else if (isDataByColumns(data)) {\n return new DataFrame(data.id, data.values);\n } else {\n exhaustive(data, 'Unknown input data format');\n }\n }\n\n constructor(id: string, data: Record<string, DataValue[]>) {\n this.id = id;\n this.data = data;\n this.columnNames = Object.keys(data);\n this.rowsCount = this.columnNames.length ? data[this.columnNames[0]].length : 0;\n this.rowIndexes = new Uint32Array(Array.from({length: this.rowsCount}, (_, i) => i));\n }\n\n getColumn(key: string): DataValue[] {\n return this.data[key];\n }\n\n getColumnValue(key: string, index: number): DataValue {\n return this.data[key]?.[index];\n }\n\n getColumnValueCategory(key: string, index: number): Category {\n return DataFrame.toCategory(this.getColumnValue(key, index));\n }\n\n getColumnCategories(key: string, ignoreNull = true): Category[] {\n if (!this.mapColumnCategories.has(key)) {\n this.computeColumnCategories(key);\n }\n\n const categories = this.mapColumnCategories.get(key) ?? [];\n return ignoreNull && categories && categories.length > 0 && categories[categories.length - 1] === 'null'\n ? categories.slice(0, -1) // full copy without null to heavy for large datasets\n : categories; \n }\n\n getColumnCategoryRowIndex(key: string, value: Category): RowIndex {\n const rowIndex = this.mapColumnCategoriesRowIndexes.get(key)?.get(value);\n \n if (rowIndex === undefined) {\n throw new Error(`Category ${value} not found in column ${key}`);\n }\n\n return rowIndex;\n }\n\n private computeColumnCategories(key: ColumnName) {\n if (!this.columnNames.includes(key)) {\n throw new Error(`Column ${key} does not exist`);\n }\n \n const columnData = this.getColumn(key);\n const uniqValues = new Set<DataValue>();\n const categories: string[] = [];\n const categoriesIndexes = new Map<string, number>();\n let nullIdx = -1;\n for (let i = 0; i < columnData.length; i++) {\n const value = columnData[i];\n if (uniqValues.has(value)) {\n continue;\n }\n uniqValues.add(value);\n if (value === null) {\n nullIdx = i;\n continue;\n }\n const category = DataFrame.toCategory(value);\n categories.push(category);\n categoriesIndexes.set(category, i);\n }\n if (nullIdx !== -1) {\n categories.push('null');\n categoriesIndexes.set('null', nullIdx);\n }\n\n this.mapColumnCategories.set(key, categories);\n this.mapColumnCategoriesRowIndexes.set(key, categoriesIndexes);\n }\n\n setGrouping(groupingColumnIds: (string | null)[], groupingKeys?: (GroupKey[] | undefined)[]) { \n const root = {grouped: {} as RowsGroup, rowIndexes: this.rowIndexes};\n let groups: RowsGroup[keyof RowsGroup][] = [root];\n groupingColumnIds.forEach((column, idx) => {\n const keys: GroupKey[] = column === null ? [NO_GROUPED] : (groupingKeys?.[idx] ?? this.getColumnCategories(column, false));\n const nextGroups: RowsGroup[keyof RowsGroup][] = [];\n groups.forEach(group => {\n if (column === null) {\n group.grouped = {\n [NO_GROUPED]: {\n rowIndexes: group.rowIndexes,\n grouped: {} as RowsGroup,\n },\n };\n nextGroups.push(group.grouped[NO_GROUPED]);\n } else {\n const groupedBy = groupBy(group.rowIndexes, idx => this.getColumnValueCategory(column, idx));\n group.grouped = keys.reduce((res, key) => {\n res[key] = {\n rowIndexes: new Uint32Array(groupedBy[key as string] ?? []),\n grouped: {} as RowsGroup,\n };\n nextGroups.push(res[key]);\n return res;\n }, {} as RowsGroup);\n }\n });\n groups = nextGroups;\n });\n this.rowsGrouped = root.grouped;\n }\n\n // TODO: fix all places where this method is used\n getColumnByGrouping(groupingKeys: GroupKey[], keyYColumn: string): number[] {\n if (!this.rowsGrouped) {\n return [];\n }\n if (!groupingKeys.length) {\n return Array.from(this.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n groupingKeys.forEach(key => {\n const nextGroup = result.grouped[key ?? 'null'];\n if (!nextGroup) {\n return [];\n }\n result = nextGroup;\n });\n return Array.from(result.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n\n // TODO: fix all places where this method is used\n getRowsByGrouping(groupingKeys: GroupKey[]): Uint32Array {\n if (!this.rowsGrouped) {\n return EMPTY_INDEXES;\n }\n if (!groupingKeys.length) {\n return this.rowIndexes;\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n for (const key of groupingKeys) {\n const nextGroup = result.grouped[key];\n if (!nextGroup) {\n return EMPTY_INDEXES;\n }\n result = nextGroup;\n }\n return result.rowIndexes;\n }\n}\n"],"mappings":"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"}
|