diff --git a/client/index.html b/client/index.html index 332616c9..4d5b2864 100644 --- a/client/index.html +++ b/client/index.html @@ -24,7 +24,6 @@
- - + diff --git a/client/index_template.html b/client/index_template.html index 5a1e0a30..490167fe 100644 --- a/client/index_template.html +++ b/client/index_template.html @@ -23,7 +23,5 @@ window.CELLXGENE.datasetTitle = "{{ datasetTitle }}";
- - diff --git a/client/package-lock.json b/client/package-lock.json index 75527e74..5ef0701e 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -3693,6 +3693,21 @@ "d3-transition": "1.1.1", "d3-voronoi": "1.1.2", "d3-zoom": "1.7.1" + }, + "dependencies": { + "d3-color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", + "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" + }, + "d3-interpolate": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", + "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", + "requires": { + "d3-color": "1" + } + } } }, "d3-array": { @@ -3732,9 +3747,9 @@ "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" }, "d3-color": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", - "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.0.tgz", + "integrity": "sha512-dmL9Zr/v39aSSMnLOTd58in2RbregCg4UtGyUArvEKTTN6S3HKEy+ziBWVYo9PTzRyVW+pUBHUtRKz0HYX+SQg==" }, "d3-dispatch": { "version": "1.0.3", @@ -3795,9 +3810,9 @@ "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" }, "d3-interpolate": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", - "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.2.0.tgz", + "integrity": "sha512-zLvTk8CREPFfc/2XglPQriAsXkzoRDAyBzndtKJWrZmHw7kmOWHNS11e40kPTd/oGk8P5mFJW5uBbcFQ+ybxyA==", "requires": { "d3-color": "1" } @@ -3852,6 +3867,15 @@ "d3-time-format": "2" } }, + "d3-scale-chromatic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.3.0.tgz", + "integrity": "sha512-YwMbiaW2bStWvQFByK8hA6hk7ToWflspIo2TRukCqERd8isiafEMBXmwfh8c7/0Z94mVvIzIveRLVC6RAjhgeA==", + "requires": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, "d3-selection": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", diff --git a/client/package.json b/client/package.json index 317c5144..f04256bc 100644 --- a/client/package.json +++ b/client/package.json @@ -29,6 +29,7 @@ "dependencies": { "canvas-fit": "^1.5.0", "d3": "^4.10.0", + "d3-scale-chromatic": "^1.3.0", "font-color-contrast": "^1.0.3", "gl-mat4": "^1.1.4", "gl-matrix": "^2.7.1", diff --git a/client/src/components/app.js b/client/src/components/app.js index 73fdaa65..462211c4 100644 --- a/client/src/components/app.js +++ b/client/src/components/app.js @@ -9,7 +9,7 @@ import { connect } from "react-redux"; import LeftSideBar from "./leftsidebar"; import Parallel from "./continuous/parallel"; import Legend from "./continuousLegend"; -import Joy from "./joy/joy"; +// import Joy from "./joy/joy"; import Graph from "./graph/graph"; import * as globals from "../globals"; import actions from "../actions"; @@ -78,11 +78,7 @@ class App extends React.Component { ) : null} {this.props.cells.error ? "Error loading cells" : null} - {false ? ( - - ) : ( - "" - )} +
diff --git a/client/src/components/continuous/histogramBrush.js b/client/src/components/continuous/histogramBrush.js index 13e21dc5..edcbf7de 100644 --- a/client/src/components/continuous/histogramBrush.js +++ b/client/src/components/continuous/histogramBrush.js @@ -9,6 +9,7 @@ import _ from "lodash"; import { connect } from "react-redux"; import FaPaintBrush from "react-icons/lib/fa/paint-brush"; import * as globals from "../../globals"; +import * as d3 from "d3"; @connect(state => { const initializeRanges = _.get(state, "initialize.data.data.ranges", null); @@ -155,9 +156,23 @@ class HistogramBrush extends React.Component { render() { return (
+ { + this.drawHistogram(svgRef); + }} + > + {this.props.ranges.min} + {" to "} + {this.props.ranges.max} + - { - this.drawHistogram(svgRef); - }} - > - {this.props.ranges.min} - {" to "} - {this.props.ranges.max} -
); } diff --git a/client/src/components/continuous/util.js b/client/src/components/continuous/util.js index 5d6ea0a0..80b18baa 100644 --- a/client/src/components/continuous/util.js +++ b/client/src/components/continuous/util.js @@ -1,5 +1,6 @@ // jshint esversion: 6 import _ from "lodash"; +import * as d3 from "d3"; const paddingRight = 120; const continuousChartWidth = 1200; diff --git a/client/src/components/continuousLegend/index.js b/client/src/components/continuousLegend/index.js index e0aa3b1a..06be9b3b 100644 --- a/client/src/components/continuousLegend/index.js +++ b/client/src/components/continuousLegend/index.js @@ -3,6 +3,8 @@ import React from "react"; import _ from "lodash"; import { connect } from "react-redux"; import * as globals from "../../globals"; +import * as d3 from "d3"; +import { interpolateViridis } from "d3-scale-chromatic"; // create continuous color legend // http://bl.ocks.org/syntagmatic/e8ccca52559796be775553b467593a9f diff --git a/client/src/components/expression/diffExpHeatmap.js b/client/src/components/expression/diffExpHeatmap.js index dc5319c4..de28a174 100644 --- a/client/src/components/expression/diffExpHeatmap.js +++ b/client/src/components/expression/diffExpHeatmap.js @@ -9,6 +9,8 @@ import actions from "../../actions"; import ReactAutocomplete from "react-autocomplete"; /* http://emilebres.github.io/react-virtualized-checkbox/ */ import getContrast from "font-color-contrast"; // https://www.npmjs.com/package/font-color-contrast import FaPaintBrush from "react-icons/lib/fa/paint-brush"; +import * as d3 from "d3"; +import { interpolateGreys } from "d3-scale-chromatic"; class HeatmapSquare extends React.Component { constructor(props) { @@ -121,15 +123,13 @@ class HeatmapRow extends React.Component { style={{ fontSize: 12, marginLeft: 10, - marginRight: 10, + marginRight: 10 }} > {this.props.aveDiff.toFixed(2)} diff --git a/client/src/components/graph/graph.js b/client/src/components/graph/graph.js index f9e3f794..41e3c5e2 100644 --- a/client/src/components/graph/graph.js +++ b/client/src/components/graph/graph.js @@ -7,6 +7,7 @@ import { setupSVGandBrushElements } from "./setupSVGandBrush"; import SectionHeader from "../framework/sectionHeader"; import { connect } from "react-redux"; import actions from "../../actions"; +import * as d3 from "d3"; import mat4 from "gl-mat4"; import fit from "canvas-fit"; diff --git a/client/src/components/graph/setupSVGandBrush.js b/client/src/components/graph/setupSVGandBrush.js index 3234748b..9bdd6988 100644 --- a/client/src/components/graph/setupSVGandBrush.js +++ b/client/src/components/graph/setupSVGandBrush.js @@ -2,6 +2,7 @@ import styles from "./graph.css"; import _ from "lodash"; import * as globals from "../../globals"; +import * as d3 from "d3"; /****************************************** ******************************************* diff --git a/client/src/components/scatterplot/scatterplot.js b/client/src/components/scatterplot/scatterplot.js index 712eb886..1807f010 100644 --- a/client/src/components/scatterplot/scatterplot.js +++ b/client/src/components/scatterplot/scatterplot.js @@ -9,6 +9,7 @@ import { connect } from "react-redux"; import scatterplot from "./scatterplot"; import setupScatterplot from "./setupScatterplot"; import styles from "./scatterplot.css"; +import * as d3 from "d3"; import mat4 from "gl-mat4"; import fit from "canvas-fit"; diff --git a/client/src/components/scatterplot/setupScatterplot.js b/client/src/components/scatterplot/setupScatterplot.js index 42c1baca..80c03846 100644 --- a/client/src/components/scatterplot/setupScatterplot.js +++ b/client/src/components/scatterplot/setupScatterplot.js @@ -5,6 +5,8 @@ ****************************************** ******************************************/ +import * as d3 from "d3"; + const setupScatterplot = (width, height, margin) => { var container = d3.select("#scatterplot"); diff --git a/client/src/middleware/updateCellColors.js b/client/src/middleware/updateCellColors.js index aca5ef19..ff0a393f 100644 --- a/client/src/middleware/updateCellColors.js +++ b/client/src/middleware/updateCellColors.js @@ -3,6 +3,8 @@ import uri from "urijs"; import * as globals from "../globals"; import _ from "lodash"; import { parseRGB } from "../util/parseRGB"; +import * as d3 from "d3"; +import { interpolateViridis } from "d3-scale-chromatic"; /* https://medium.com/@jacobp100/you-arent-using-redux-middleware-enough-94ffe991e6 @@ -67,7 +69,7 @@ const updateCellColorsMiddleware = store => { .range([1, 0]); _.each(cellsMetadataWithUpdatedColors, (cell, i) => { - let c = d3.interpolateViridis(colorScale(cell[action.colorAccessor])); + let c = interpolateViridis(colorScale(cell[action.colorAccessor])); cellsMetadataWithUpdatedColors[i]["__color__"] = c; cellsMetadataWithUpdatedColors[i]["__colorRGB__"] = parseRGB(c); }); @@ -112,7 +114,7 @@ const updateCellColorsMiddleware = store => { ]); /* invert viridis... probably pass this scale through to others */ _.each(cellsMetadataWithUpdatedColors, (cell, i) => { - let c = d3.interpolateViridis( + let c = interpolateViridis( colorScale(expressionMap[cell.CellName][indexOfGene]) ); cellsMetadataWithUpdatedColors[i]["__color__"] = c;