From de8033e551f938fc661fc498e04f1f22d1e37a87 Mon Sep 17 00:00:00 2001 From: Bruce Martin Date: Fri, 3 Apr 2020 16:50:02 -0600 Subject: [PATCH] correctly handle categoricals that are not strings (#1346) --- client/src/components/categorical/occupancy.js | 4 ++-- client/src/util/dataframe/dataframe.js | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/client/src/components/categorical/occupancy.js b/client/src/components/categorical/occupancy.js index ca6689fc..7960164c 100644 --- a/client/src/components/categorical/occupancy.js +++ b/client/src/components/categorical/occupancy.js @@ -101,7 +101,7 @@ class Occupancy extends React.PureComponent { const groupBy = world.obsAnnotations.col(metadataField); const occupancyMap = world.obsAnnotations .col(colorAccessor) - .histogram(groupBy); + .histogramCategorical(groupBy); const occupancy = occupancyMap.get(category.categoryValues[categoryIndex]); @@ -117,7 +117,7 @@ class Occupancy extends React.PureComponent { let currentOffset = 0; const dfColumn = world.obsAnnotations.col(colorAccessor); - const categoryValues = dfColumn.summarize().categories; + const categoryValues = dfColumn.summarizeCategorical().categories; let o; let scaledValue; diff --git a/client/src/util/dataframe/dataframe.js b/client/src/util/dataframe/dataframe.js index 689fda4e..c0cf412b 100644 --- a/client/src/util/dataframe/dataframe.js +++ b/client/src/util/dataframe/dataframe.js @@ -12,7 +12,7 @@ import { summarizeCategorical as _summarizeCategorical } from "./summarize"; import { - histogramCategorical, + histogramCategorical as _histogramCategorical, hashCategorical, histogramContinuous, hashContinuous @@ -260,16 +260,20 @@ class Dataframe { /* Create histogram bins for this column. Memoized. */ + const _memoHistoCat = memoize(_histogramCategorical, hashCategorical); + const histogramCategorical = by => _memoHistoCat(get, by); + let histogram = null; if (isTypedArray(column)) { const mFn = memoize(histogramContinuous, hashContinuous); - get.histogram = (bins, domain, by) => mFn(get, bins, domain, by); + histogram = (bins, domain, by) => mFn(get, bins, domain, by); } else { - const mFn = memoize(histogramCategorical, hashCategorical); - get.histogram = by => mFn(get, by); + histogram = histogramCategorical; } get.summarize = summarize; get.summarizeCategorical = summarizeCategorical; + get.histogram = histogram; + get.histogramCategorical = histogramCategorical; get.asArray = asArray; get.has = has; get.ihas = ihas;