Skip to content

Commit

Permalink
fixed bug with saving data and viewing raw values
Browse files Browse the repository at this point in the history
  • Loading branch information
nchuynh committed Dec 15, 2021
1 parent 234ff12 commit 9e5e172
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 33 deletions.
29 changes: 15 additions & 14 deletions minerva_analysis/client/src/js/views/channelList.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ class ChannelList {

// Update selections
self.selections.push(name);
self.sel[dataLayer.getFullChannelName(name)] = self.dataLayer.getImageBitRange();
self.sel[dataLayer.getFullChannelName(name)] = self.image_channels[name];

// Trigger
// this.eventHandler.trigger(ChannelList.events.CHANNEL_SELECT, this.sel);
Expand Down Expand Up @@ -222,7 +222,7 @@ class ChannelList {
let fullName = this.dataLayer.getFullChannelName(column)
let sliderMin = this.databaseDescription[fullName]['image_min']
let sliderMax = this.databaseDescription[fullName]['image_max']
self.image_channels[fullName] = [sliderMin, sliderMax];
self.image_channels[column] = [sliderMin, sliderMax];
let sliderRange = this.addSlider(sliderMin, sliderMax, column, document.getElementById("channel_list").getBoundingClientRect().width);
d3.select('div#channel-slider_' + column).style('display', "none");

Expand Down Expand Up @@ -298,7 +298,7 @@ class ChannelList {
let channelIdx = imageChannels[fullName];

if (this.sliders.get(col.channel)) {
if (col.start > this.image_channels[fullName][0] || col.end < this.image_channels[fullName][1]){
if (col.start > this.image_channels[col.channel][0] || col.end < this.image_channels[col.channel][1]){
this.sliders.get(col.channel).value([col.start, col.end]);
this.rangeConnector[channelIdx] = [col.start / defaultRange[1], col.end / defaultRange[1]];
}
Expand Down Expand Up @@ -338,7 +338,7 @@ class ChannelList {

let channelIdx = imageChannels[fullName];
let defaultRange = self.dataLayer.imageBitRange;
this.rangeConnector[channelIdx] = [Math.round(Math.exp(vmin)) / defaultRange[1], Math.round(Math.exp(vmax)) / defaultRange[1]];
this.rangeConnector[channelIdx] = [vmin / defaultRange[1], vmax / defaultRange[1]];
}


Expand Down Expand Up @@ -468,6 +468,7 @@ class ChannelList {
.width(swidth - 75)//.tickFormat(d3.format("s"))
.fill('orange')
.on('onchange', val => {
val = [Math.round(val[0]), Math.round(val[1])]
// d3.select('p#value-range').text(val.map(d3.format('.2%')).join('-'));
d3.select('#slider-input' + name + 0).attr('value', val[0]);
d3.select('#slider-input' + name + 0).property('value', val[0]);
Expand All @@ -478,7 +479,7 @@ class ChannelList {
let packet_val = [val[0], val[1]]
let packet = {name: name, dataRange: packet_val};
this.eventHandler.trigger(ChannelList.events.BRUSH_END, packet);
this.image_channels[this.dataLayer.getFullChannelName(name)] = packet_val;
this.image_channels[name] = packet_val;
})
.ticks(5)
.default([data_min, data_max])
Expand Down Expand Up @@ -572,7 +573,7 @@ class ChannelList {
let packetHandleVals = [handleVals[0], handleVals[1]]
let packet = {name: name, dataRange: packetHandleVals};
that.eventHandler.trigger(ChannelList.events.BRUSH_END, packet);
that.image_channels[fullName] = packetHandleVals;
that.image_channels[name] = packetHandleVals;
}
})

Expand Down Expand Up @@ -676,14 +677,14 @@ class ChannelList {
* on window resize we re-initialize (this should be better handled with an update pattern)
*/
window.addEventListener("resize", function () {
//reinitialize slider on window change..(had some bug updating with via d3 update)
if (typeof channelList != "undefined" && channelList) {
channelList.sliders.forEach(function (slider, name) {
d3.select('div#channel-slider_' + name).select('svg').remove();
channelList.addSlider(dataLayer.getImageBitRange(), slider.value(), name,
document.getElementById("channel_list").getBoundingClientRect().width);
});
}
// //reinitialize slider on window change..(had some bug updating with via d3 update)
// if (typeof channelList != "undefined" && channelList) {
// channelList.sliders.forEach(function (slider, name) {
// d3.select('div#channel-slider_' + name).select('svg').remove();
// channelList.addSlider(dataLayer.getImageBitRange(), slider.value(), name,
// document.getElementById("channel_list").getBoundingClientRect().width);
// });
// }
});

//static vars: events introduced in this class and used across the app
Expand Down
22 changes: 11 additions & 11 deletions minerva_analysis/client/src/js/views/csvGatingList.js
Original file line number Diff line number Diff line change
Expand Up @@ -776,17 +776,17 @@ window
,

function () {
//reinitialize slider on window change..(had some bug updating with via d3 update)
if (typeof csv_gatingList != "undefined" && csv_gatingList) {
csv_gatingList.sliders.forEach(function (slider, name) {
d3.select('div#csv_gating-slider_' + name).select('svg').remove();
//add and hide gating sliders (will be visible when gating is active)
let fullName = csv_gatingList.dataLayer.getFullChannelName(name);
let sliderRange = [csv_gatingList.databaseDescription[fullName].min, csv_gatingList.databaseDescription[fullName].max];
csv_gatingList.addSlider(sliderRange, slider.value(), name,
document.getElementById("csv_gating_list").getBoundingClientRect().width);
});
}
// //reinitialize slider on window change..(had some bug updating with via d3 update)
// if (typeof csv_gatingList != "undefined" && csv_gatingList) {
// csv_gatingList.sliders.forEach(function (slider, name) {
// d3.select('div#csv_gating-slider_' + name).select('svg').remove();
// //add and hide gating sliders (will be visible when gating is active)
// let fullName = csv_gatingList.dataLayer.getFullChannelName(name);
// let sliderRange = [csv_gatingList.databaseDescription[fullName].min, csv_gatingList.databaseDescription[fullName].max];
// csv_gatingList.addSlider(sliderRange, slider.value(), name,
// document.getElementById("csv_gating_list").getBoundingClientRect().width);
// });
// }
}
);

Expand Down
12 changes: 4 additions & 8 deletions minerva_analysis/server/models/data_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -676,8 +676,8 @@ def get_datasource_description(datasource_name):
dat.append(obj)

description[fullName]['image_histogram'] = dat
description[fullName]['image_min'] = np.exp(np.min(img_log))
description[fullName]['image_max'] = np.exp(np.max(img_log))
description[fullName]['image_min'] = np.int(np.exp(np.min(img_log)))
description[fullName]['image_max'] = np.int(np.exp(np.max(img_log)))

image_layer += 1
else:
Expand All @@ -701,10 +701,6 @@ def get_channel_gmm(channel_name, datasource_name):
image_channelIdx = next(
index for (index, d) in enumerate(config[datasource_name]['imageData']) if d["fullname"] == channel_name) - 1
image_data = zarray[image_channelIdx]
yi, xi = np.floor(np.linspace(0, image_data.shape, 200, endpoint=False)).astype(int).T
# Slice one dimension at a time. Should generally use less memory than a meshgrid.
image_data = image_data[yi]
image_data = image_data[:, xi]
img_log = np.log(image_data[image_data > 0])
gmm = GaussianMixture(3, max_iter=1000, tol=1e-6)
gmm.fit(img_log.reshape((-1, 1)))
Expand All @@ -719,8 +715,8 @@ def get_channel_gmm(channel_name, datasource_name):
vmin = means[i2] + covars[i2] ** 0.5 * -1
vmin = max(vmin, img_log.min(), 0)
vmax = min(vmax, img_log.max())
packet_gmm['vmin'] = np.exp(vmin)
packet_gmm['vmax'] = np.exp(vmax)
packet_gmm['vmin'] = np.int(np.exp(vmin))
packet_gmm['vmax'] = np.int(np.exp(vmax))

[hist, bin_edges] = np.histogram(img_log.flatten(), bins=50, density=True)
midpoints = (bin_edges[1:] + bin_edges[:-1]) / 2
Expand Down

0 comments on commit 9e5e172

Please sign in to comment.