-
Notifications
You must be signed in to change notification settings - Fork 24
Add data normalisation options to get_data #196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| Add ability to control the data normalisation to `~stixpy.product.sources.science.ScienceData.get_data` via the `vtype` keyword: | ||
| * 'c' - count [c] | ||
| * 'cr' - count rate [c/s] | ||
| * 'dcr' - differential count rate [c/(s keV)] | ||
| * 'dcrf' - differential count rate flux (geometric area) [c/(s keV cm^2)] |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -16,6 +16,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from matplotlib.widgets import Slider | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from sunpy.time.timerange import TimeRange | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from stixpy.config.instrument import STIX_INSTRUMENT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from stixpy.io.readers import read_subc_params | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from stixpy.product.product import L1Product | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -149,6 +150,7 @@ class SpectrogramPlotMixin: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def plot_spectrogram( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| axes=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype="dcr", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| energy_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| detector_indices="all", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -213,7 +215,11 @@ def plot_spectrogram( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pid = pixel_indices | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts, errors, times, timedeltas, energies = self.get_data( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| detector_indices=did, pixel_indices=pid, time_indices=time_indices, energy_indices=energy_indices | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype=vtype, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| detector_indices=did, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pixel_indices=pid, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices=time_indices, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| energy_indices=energy_indices, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts = counts.to(u.ct / u.s / u.keV) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| errors = errors.to(u.ct / u.s / u.keV) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
samaloney marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -257,6 +263,7 @@ class TimesSeriesPlotMixin: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def plot_timeseries( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype="dcr", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| energy_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| detector_indices="all", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -270,8 +277,12 @@ def plot_timeseries( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parameters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ---------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| axes : optional `matplotlib.axes` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The axes the plot the spectrogram. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype : str | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type of value to return control the default normalisation: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'c' - count [c] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'cr' - count rate [c/s] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'dcr' - differential count rate [c/(s keV)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'dcrf' - differential count rate flux (geometric area) [c/(s keV cm^2)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices : `list` or `numpy.ndarray` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If an 1xN array will be treated as mask if 2XN array will sum data between given | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| indices. For example `time_indices=[0, 2, 5]` would return only the first, third and | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -288,6 +299,8 @@ def plot_timeseries( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If an 1xN array will be treated as mask if 2XN array will sum data between given | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| indices. For example `pixel_indices=[0, 2, 5]` would return only the first, third and | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sixth pixels while `pixel_indices=[[0, 2],[3, 5]]` would sum the data between. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| axes : optional `matplotlib.axes` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The axes the plot the spectrogram. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
samaloney marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| error_bar : optional `bool` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Add error bars to plot. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| **plot_kwargs : `dict` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -348,12 +361,18 @@ class PixelPlotMixin: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Pixel plot mixin providing pixel plotting for pixel data. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def plot_pixels(self, *, kind="pixels", time_indices=None, energy_indices=None, fig=None, cmap=None): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def plot_pixels(self, *, vtype="dcr", kind="pixels", time_indices=None, energy_indices=None, fig=None, cmap=None): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Plot individual pixel data for each detector. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parameters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ---------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype : str | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type of value to return control the default normalisation: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'c' - count [c] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'cr' - count rate [c/s] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'dcr' - differential count rate [c/(s keV)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'dcrf' - differential count rate flux (geometric area) [c/(s keV cm^2)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| kind : `string` the options: 'pixels', 'errorbar', 'config' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This sets the visualization type of the subplots. The data will then be shown in the selected style. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices : `list` or `numpy.ndarray` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -387,7 +406,9 @@ def plot_pixels(self, *, kind="pixels", time_indices=None, energy_indices=None, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| else: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fig, axes = plt.subplots(nrows=4, ncols=8, sharex=True, sharey=True, figsize=(7, 7)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts, count_err, times, dt, energies = self.get_data(time_indices=time_indices, energy_indices=energy_indices) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts, count_err, times, dt, energies = self.get_data( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype=vtype, time_indices=time_indices, energy_indices=energy_indices | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| imaging_mask = np.ones(32, bool) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| imaging_mask[8:10] = False | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -854,15 +875,28 @@ def duration(self): | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return self.data["timedel"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def get_data( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self, time_indices=None, energy_indices=None, detector_indices=None, pixel_indices=None, sum_all_times=False | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype="dcr", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| energy_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| detector_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pixel_indices=None, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sum_all_times=False, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| r""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Return the counts, errors, times, durations and energies for selected data. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Optionally summing in time and or energy. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parameters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ---------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vtype : str | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type of value to return control the default normalisation: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'c' - count [c] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'cr' - count rate [c/s] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'dcr' - differential count rate [c/(s keV)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 'dcrf' - differential count rate flux (geometric area) [c/(s keV cm^2)] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time_indices : `list` or `numpy.ndarray` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If an 1xN array will be treated as mask if 2XN array will sum data between given | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| indices. For example `time_indices=[0, 2, 5]` would return only the first, third and | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -998,14 +1032,36 @@ def get_data( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts_var = np.sum(counts_var, axis=0, keepdims=True) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| t_norm = np.sum(dt) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| t_norm = t_norm.to("s") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if e_norm.size != 1: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| e_norm = e_norm.reshape(1, 1, 1, -1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if t_norm.size != 1: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| t_norm = t_norm.reshape(-1, 1, 1, 1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts_err = np.sqrt(counts * u.ct + counts_var) / (e_norm * t_norm) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| counts = counts / (e_norm * t_norm) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pixel_areas = STIX_INSTRUMENT.pixel_config["Area"].to("cm2") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
samaloney marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| a_norm = [] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for pixel_mask in self.data["pixel_masks"]: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| indices = np.nonzero(pixel_mask) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| areas = np.full(12, 0 * u.cm**2) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| areas[indices] = pixel_areas[indices].value | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1044
to
+1048
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| a_norm = [] | |
| for pixel_mask in self.data["pixel_masks"]: | |
| indices = np.nonzero(pixel_mask) | |
| areas = np.full(12, 0 * u.cm**2) | |
| areas[indices] = pixel_areas[indices].value | |
| # Aggregate pixel masks according to time_indices logic | |
| pixel_masks = self.data["pixel_masks"] | |
| if time_indices is not None: | |
| if time_indices.ndim == 1: | |
| pixel_masks = [pixel_masks[i] for i in time_indices] | |
| elif time_indices.ndim == 2: | |
| # For each merged bin, aggregate pixel masks (dt-weighted mean) | |
| pixel_masks_agg = [] | |
| for idx, (tl, th) in enumerate(time_indices): | |
| # Get time durations for weighting | |
| dt_bin = self.data["timedel"][tl : th + 1].to("s").value | |
| masks_bin = np.array(pixel_masks[tl : th + 1]) | |
| # Weighted mean mask (float, but we want area) | |
| weighted_mask = np.average(masks_bin, axis=0, weights=dt_bin) | |
| # For each pixel, if mask is >0.5, treat as active (or use weighted area) | |
| pixel_masks_agg.append(weighted_mask) | |
| pixel_masks = pixel_masks_agg | |
| elif t_norm.size == 1 and len(pixel_masks) > 1: | |
| # If all times summed, aggregate all masks (dt-weighted mean) | |
| dt_bin = self.data["timedel"].to("s").value | |
| masks_bin = np.array(pixel_masks) | |
| weighted_mask = np.average(masks_bin, axis=0, weights=dt_bin) | |
| pixel_masks = [weighted_mask] | |
| # Build a_norm from pixel_masks | |
| a_norm = [] | |
| for pixel_mask in pixel_masks: | |
| indices = np.nonzero(pixel_mask) | |
| areas = np.full(12, 0 * u.cm**2) | |
| # If mask is float (from weighted mean), use mask value as fraction of area | |
| if np.issubdtype(pixel_mask.dtype, np.floating): | |
| areas = pixel_areas.value * pixel_mask | |
| else: | |
| areas[indices] = pixel_areas[indices].value |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this is an interesting case if we sum on ground over a RCR change what area should we return the average or mask it out because we don't know?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we could sum over each RCR state separately and then average them in the bin once normalised?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potentially but as was discussed at the STIX meeting data at directly before/after are not reliable so I think will set all values for this time to be masked.
Uh oh!
There was an error while loading. Please reload this page.