Merge branch 'visium-beta' of github.com:chanzuckerberg/cellxgene into visium-beta

This commit is contained in:
Emanuele Bezzi
2021-12-07 19:42:53 -05:00
5 changed files with 62 additions and 5 deletions

View File

@@ -16,10 +16,11 @@ import actions from "../../actions";
import { getDiscreteCellEmbeddingRowIndex } from "../../util/stateManager/viewStackHelpers";
@connect((state) => ({
layoutChoice: state.layoutChoice, // TODO: really should clean up naming, s/layout/embedding/g
schema: state.annoMatrix?.schema,
crossfilter: state.obsCrossfilter,
}))
imageUnderlay: state.imageUnderlay,
layoutChoice: state.layoutChoice, // TODO: really should clean up naming, s/layout/embedding/g
schema: state.annoMatrix?.schema,
crossfilter: state.obsCrossfilter,
}))
class Embedding extends React.PureComponent {
constructor(props) {
super(props);
@@ -27,8 +28,18 @@ class Embedding extends React.PureComponent {
}
handleLayoutChoiceChange = (e) => {
const { dispatch } = this.props;
const { dispatch, imageUnderlay } = this.props;
dispatch(actions.layoutChoiceAction(e.currentTarget.value));
// if we just switched off spatial, if the image is on, turn it off
if (
imageUnderlay.isActive &&
e.target.value !== globals.spatialEmbeddingKeyword
) {
dispatch({
type: "toggle image underlay",
});
}
};
render() {

View File

@@ -28,6 +28,8 @@ import { getEmbSubsetView } from "../../util/stateManager/viewStackHelpers";
subsetPossible,
subsetResetPossible,
graphInteractionMode: state.controls.graphInteractionMode,
imageUnderlay: state.imageUnderlay,
layoutChoice: state.layoutChoice, // TODO: really should clean up naming, s/layout/embedding/g
clipPercentileMin: Math.round(100 * (annoMatrix?.clipRange?.[0] ?? 0)),
clipPercentileMax: Math.round(100 * (annoMatrix?.clipRange?.[1] ?? 1)),
userDefinedGenes: state.controls.userDefinedGenes,
@@ -206,6 +208,8 @@ class MenuBar extends React.PureComponent {
colorAccessor,
subsetPossible,
subsetResetPossible,
imageUnderlay,
layoutChoice,
} = this.props;
const { pendingClipPercentiles } = this.state;
@@ -268,6 +272,29 @@ class MenuBar extends React.PureComponent {
disabled={!isColoredByCategorical}
/>
</Tooltip>
{layoutChoice?.available?.includes(globals.spatialEmbeddingKeyword) && (
<ButtonGroup className={styles.menubarButton}>
<Tooltip
content={"Toggle image"}
position="bottom"
hoverOpenDelay={globals.tooltipHoverOpenDelay}
>
<AnchorButton
type="button"
data-testid="toggle-image-underlay"
icon={"media"}
intent={imageUnderlay.isActive ? "primary" : "none"}
active={imageUnderlay.isActive}
onClick={() => {
dispatch({
type: "toggle image underlay",
});
}}
/>
</Tooltip>
</ButtonGroup>
)}
<ButtonGroup className={styles.menubarButton}>
<Tooltip
content={selectionTooltip}

View File

@@ -2,6 +2,9 @@ import { Colors } from "@blueprintjs/core";
import { dispatchNetworkErrorMessageToUser } from "./util/actionHelpers";
import ENV_DEFAULT from "../../environment.default.json";
// visium embedding word, spatial image underlay
export const spatialEmbeddingKeyword = "spatial";
/* overflow category values are created using this string */
export const overflowCategoryLabel = ": all other labels";

View File

@@ -0,0 +1,14 @@
const imageUnderlay = (state = { isActive: false }, action) => {
switch (action.type) {
case "toggle image underlay":
return {
...state,
isActive: !state.isActive,
};
default:
return state;
}
};
export default imageUnderlay;

View File

@@ -20,6 +20,7 @@ import genesetsUI from "./genesetsUI";
import autosave from "./autosave";
import centroidLabels from "./centroidLabels";
import pointDialation from "./pointDilation";
import imageUnderlay from "./imageUnderlay";
import { gcMiddleware as annoMatrixGC } from "../annoMatrix";
import undoableConfig from "./undoableConfig";
@@ -41,6 +42,7 @@ const Reducer = undoable(
["differential", differential],
["spatial", spatial],
["centroidLabels", centroidLabels],
["imageUnderlay", imageUnderlay],
["pointDilation", pointDialation],
["autosave", autosave],
]),