* enable centroid
* introduce new sizing
* scale point size based off hovered category
* add styling
* fix margins
* disable centroid labels
* remove unused code and add detail to comment
* remove cell dilation on selection toggle
* move hover to name label
* hover on value except for checkbox
* add border radius to value
* comment
* add histogram functionality to Dataframe; port category occupancy to use it
* fix binning and create histogram for continous by catagorical
* Remove unnecessary logs
* Begin work on KDE
* Replace broken KDE with working histogram
* Define domain and range based on data from histogram
* Fix occupancy
* Add continuous obs and switch to canvas
* Stop value from always rerendering
* clear before render
* Clear canvas on render
* refactor categorical occupancy to canvas
* Remove log
* simplify finding max
* refactor kde->histogram and occupancy->bins
* refactor svg -> canvas
* rename to occupancy stack
* create popup
* add metadata and categorical values to popup
* fix overflow
* remove zeros info
* style graph
* fix shouldComponentUpdate to look for world changes
* change categorySelected -> categoryValueSelected
* refactor out render
* remove comment
* conditionally have bottom border
* remove diff comp
* remove comments
* remove unnecessary mapping
* Add comments describing drawing functions
* comments
* flip comparison order
* remove logging
* move default to parameter
* move defaults to parameter
* disable popover if not showing histogram
* fix wording and styling
* add line break
* Connect mouse over events to reducer actions
* Change Styling on hover
* Rename reducer actions to be more descriptive
* Reorder reducer in cascade
* Create centroid calculation util
* Whitespace
* Typo fix, use correct action
* Create centroid calc util
* Create centroid svg setup
* Refactor existing svg layer to toolSVG
* Change calcCentroid signature and centroidXY to match mapPointToScreen
* Add id and styling
* Run prettier
* Set z-index to 999
* Draw the label
* Introduce the centroid SVG, refactor code to allow both SVG layers
* Add text label and compute radius based on population
* Implement optional chaining
* Update font family
* Optimize calcMeanCentroid()
* Create and utilize calcMedianCentroid()
* Remove mass circle from label
* Remove styling change on hover
* Remove reducer action logs
* Prettier
* Swap out binds for arrow functions
* Style text
* switch from selectAll() to select()
* Reflect centroid container's purpose in id
* Remove mass from the output
* Swap to obj
* Add finite check
* Don't draw centroid if no finite values
* Fix finite check
* Remove log
* Toggle label coloring based on colorBy state
* Pass cursor events through centroid svg
* add own range() function
* lodash cleanup
* remove redundant fill range implementations
* remove use of _.get
* sync test babel config with build
* update tests to match new range implementation
* immutable crossfilter
* first cut at reducer refactor with cascade model
* add initial redo/undo implementation
* small optimization
* integrate expression with history
* add tests for new reducers and fix a couple of small initialization bugs
* treat tiny lasso selections as a clear
* better function name for clarity
* fix undo for differential expression
* remove logging
* fix regression due to bad merge
* cleanup and comments for clarity
* improve undoable configuration for flexibility
* fix stale comments
* remove debugging code from production build
* rename categoricalSelectionState
* rename file
* improve comments
* initial dataframe commit
* initial dataframe port of core app
* rename variables for clarity
* remove unused import
* comment out unused code
* fix array handling bug in crossfilter dimension creation
* allow creation of empty dataframes
* handle non-existent columns
* handle non-existent columns
* revise tests for new dataframe
* comments for clarity
* comments for clarity
* generate bulk add placeholder with real gene names
* fix bug in gene name adding
* more dataframe unit tests
* fix bug - subset from current world, not universe
* put cut and pasted code into a single function
* improve caching of crossfilter
* remove cascading update bug from graph
* more performance work
* improve state handling for scatterplot
* performance optimization of critical path
* add column summarization
* dataframe utils
* add callOnceLazy
* fix tests
* minor updates found during review
* fix misspelling
* remove RESTv02 from function names
* comment cleanup
* cut/icut col parameter defaults to null
* break up large test
* improve tests and comments on dataframe at/has functions
* toast test
* modify webpack build to allow for global CSS; use CSS modules to scope component styling
* remove heatmap
* add label to index resets
* swapping out buttons for blueprint
* adding constants to globals
* swapping out blueprint buttons
* title position, sidebar improvements
* sidebar styles
* adding toasts for validation errors
* zebra section trial
* integrating blueprint, switching buttons over, breaking out scatter
* clean up console