From bcbec4ad901c5a27d377c9ac96e6076239b39f46 Mon Sep 17 00:00:00 2001
From: Cole Kendrick <kendrickcj@ornl.gov>
Date: Thu, 18 Mar 2021 16:29:02 -0400
Subject: [PATCH] Plot tweaks and added docs

---
 .../PowderDiffractionCalibration.rst          |  59 ++++++++++++++++++
 .../images/VULCAN_relstrain_diagnostic.png    | Bin 0 -> 36172 bytes
 docs/source/release/v6.1.0/diffraction.rst    |   1 +
 scripts/Calibration/tofpd/diagnostics.py      |  35 +++++++----
 4 files changed, 84 insertions(+), 11 deletions(-)
 create mode 100644 docs/source/images/VULCAN_relstrain_diagnostic.png

diff --git a/docs/source/concepts/calibration/PowderDiffractionCalibration.rst b/docs/source/concepts/calibration/PowderDiffractionCalibration.rst
index 9d363da088e..dae5d677dbc 100644
--- a/docs/source/concepts/calibration/PowderDiffractionCalibration.rst
+++ b/docs/source/concepts/calibration/PowderDiffractionCalibration.rst
@@ -292,4 +292,63 @@ A mask can also be applied with a ``MaskWorkspace`` to hide pixels from the plot
     LoadDiffCal(Filename="NOM_calibrate_d131573_2019_08_18.h5", WorkspaceName="old")
     fig, ax = diagnostics.difc_plot2d("new_cal", "old_cal", instr_ws="new_group", mask="new_mask")
 
+Relative Strain
+###############
+
+Plotting the relative strain of the d-spacing for a peak to the nominal d value can be used as
+another method to check the calibration consistency at the pixel level. The relative strain
+is plotted along the Y-axis for each detector pixel, with the mean and standard deviation reported
+on the plot. A solid black line is drawn at the mean, and two dashed lines are drawn above and below
+the mean by a threshold percentage (one percent of the mean by default). This can be used to determine
+which pixels are bad up to a specific threshold.
+
+Below is an example of the relative strain plot for VULCAN at peak position 1.2615:
+
+.. figure:: /images/VULCAN_relstrain_diagnostic.png
+  :width: 400px
+
+The plot shown above can be generated from the following script:
+
+.. code::
+
+    import numpy as np
+    from mantid.simpleapi import (LoadEventAndCompress, LoadInstrument, PDCalibration, Rebin)
+    from Calibration.tofpd import diagnostics
+
+    FILENAME = 'VULCAN_192227.nxs.h5'
+    CALFILE = 'VULCAN_Calibration_CC_4runs_hybrid.h5'
+
+    peakpositions = np.asarray(
+      (0.3117, 0.3257, 0.3499, 0.3916, 0.4205, 0.4645, 0.4768, 0.4996, 0.515, 0.5441, 0.5642, 0.6307, 0.6867,
+       0.7283, 0.8186, 0.892, 1.0758, 1.2615, 2.06))
+
+    LoadEventAndCompress(Filename=FILENAME, OutputWorkspace='ws', FilterBadPulses=0)
+    LoadInstrument(Workspace='ws', InstrumentName="VULCAN", RewriteSpectraMap='True')
+    Rebin(InputWorkspace='ws', OutputWorkspace='ws', Params=(5000, -.002, 70000))
+
+    PDCalibration(InputWorkspace='ws', TofBinning=(5000,-.002,70000),
+                  PeakPositions=peakpositions,
+                  MinimumPeakHeight=5,
+                  OutputCalibrationTable='calib',
+                  DiagnosticWorkspaces='diag')
+
+    dspacing = diagnostics.collect_peaks('diag_dspacing', 'dspacing', donor='diag_fitted',
+                                         infotype='dspacing')
+    strain = diagnostics.collect_peaks('diag_dspacing', 'strain', donor='diag_fitted')
+
+    fig, ax = diagnostics.plot_peakd('strain', 1.2615, drange=(0, 200000))
+
+The vertical lines shown in the plot are drawn between detector regions and can be used to report the
+count of bad pixels found in each region. The solid vertical line indicates the start of a region,
+while the dashed vertical line indicates the end of a region. The vertical lines can be turned off
+with ``plot_regions=False`` and displaying the number of bad counts for each region can also be disabled
+with ``show_bad_cnt=False``.
+
+As seen in the above example, the x-range of the plot can be narrowed down using the ``drange`` option,
+which accepts a tuple of the starting detector ID and ending detector ID to plot.
+
+To adjust the horizontal bars above and below the mean, a percent can be passed to the ``threshold`` option.
+
+To plot the relative strain for multiple peaks, an array of positions can be passed instead of a single value.
+
 .. categories:: Calibration
diff --git a/docs/source/images/VULCAN_relstrain_diagnostic.png b/docs/source/images/VULCAN_relstrain_diagnostic.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4801cea3d1bfb13e7adecc52398174dd025ddc8
GIT binary patch
literal 36172
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
DIBnTJ

literal 0
HcmV?d00001

diff --git a/docs/source/release/v6.1.0/diffraction.rst b/docs/source/release/v6.1.0/diffraction.rst
index 1d0eebd90f3..7f1034563d3 100644
--- a/docs/source/release/v6.1.0/diffraction.rst
+++ b/docs/source/release/v6.1.0/diffraction.rst
@@ -18,6 +18,7 @@ New features
 - :ref:`PDCalibration <algm-PDCalibration>` now supports workspaces with grouped detectors (i.e. more than one detector per spectrum).
 - New diagnostic plotting tool `Calibration.tofpd..diagnostics.plot2d` which adds markers for expected peak positions
 - New diagnostic plotting tool `Calibration.tofpd.diagnostics.difc_plot2d` which plots the change in DIFC between two instrument calibrations.
+- New diagnostic plotting tool `Calibration.tofpd.diagnostics.plot_peakd` which plots the d-spacing relative strain of peak positions.
 
 Improvements
 ############
diff --git a/scripts/Calibration/tofpd/diagnostics.py b/scripts/Calibration/tofpd/diagnostics.py
index 224b0e109e8..bc6e84afb38 100644
--- a/scripts/Calibration/tofpd/diagnostics.py
+++ b/scripts/Calibration/tofpd/diagnostics.py
@@ -413,8 +413,11 @@ def plot_peakd(wksp, peak_positions, plot_regions=True, show_bad_cnt=True, drang
         raise ValueError("Could not find provided workspace in ADS")
 
     fig, ax = plt.subplots()
-    ax.set_xlabel("det IDs")
-    ax.set_ylabel("rel strain")
+    ax.set_xlabel("detector IDs")
+    if len(peaks) > 1:
+        ax.set_xlabel("rel strain")
+    else:
+        ax.set_ylabel("rel strain (peak {})".format(peaks[0]))
 
     # Hold the mean and stddev for each peak to compute total at end
     means = []
@@ -431,7 +434,6 @@ def plot_peakd(wksp, peak_positions, plot_regions=True, show_bad_cnt=True, drang
 
     # Plot data for each peak position
     for peak in peaks:
-        print("Processing peak position {}".format(peak))
         single = extract_peak_info(wksp, 'single', peak)
 
         # get x and y arrays from single peak ws
@@ -443,9 +445,22 @@ def plot_peakd(wksp, peak_positions, plot_regions=True, show_bad_cnt=True, drang
 
         # skip if y was entirely nans
         if len(y_val) == 0:
+            print("No valid y-data was found for peak {}, so it will be skipped".format(peak))
             continue
 
-        cut_id = (single.yIndexOfX(drange[0]), single.yIndexOfX(drange[1]))
+        try:
+            dstart = single.yIndexOfX(drange[0])
+        except:
+            # If detector id not valid, find next closest range
+            dstart = single.yIndexOfX(int(x.searchsorted(drange[0])) - 1)
+            print("Specified starting detector range was not valid, adjusted to detID={}".format(dstart))
+        try:
+            dend = single.yIndexOfX(drange[1])
+        except:
+            dend = single.yIndexOfX(int(x.searchsorted(drange[1])))
+            print("Specified ending detector range was not valid, adjusted to detID={}".format(dend))
+
+        cut_id = (dstart, dend)
 
         means.append(np.mean(y_val[cut_id[0]:cut_id[1]]))
         stddevs.append(np.std(y_val[cut_id[0]:cut_id[1]]))
@@ -458,14 +473,12 @@ def plot_peakd(wksp, peak_positions, plot_regions=True, show_bad_cnt=True, drang
                 ax.axvline(x=region[1])
                 det_start = single.yIndexOfX(region[0])
                 det_end = single.yIndexOfX(region[1])
-                cnt = __get_bad_counts(y[det_start:det_end], means[len(means)-1])
+                cnt = __get_bad_counts(y[det_start:det_end], means[len(means)-1], band=threshold)
                 region_cnts.append(cnt)
                 if show_bad_cnt:
                     mid_region = 0.5 * (region[1] - region[0])
-                    text = ax.annotate("{}".format(cnt), xy=(mid_region, 0.05), xycoords=('data', 'axes fraction'),
-                                       clip_on=True)
-                    width = text.get_window_extent(renderer=fig.canvas.get_renderer()).width
-                    text.set_x(region[0] + mid_region - 0.5 * width)
+                    ax.annotate("{}".format(cnt), xy=(mid_region, 0.05), xycoords=('data', 'axes fraction'),
+                                clip_on=True, ha="center")
 
         ax.plot(x[cut_id[0]:cut_id[1]], y[cut_id[0]:cut_id[1]], marker="x", linestyle="None", label="{:0.6f}".format(peak))
         ax.legend(bbox_to_anchor=(1, 1), loc="upper left")
@@ -487,8 +500,8 @@ def plot_peakd(wksp, peak_positions, plot_regions=True, show_bad_cnt=True, drang
     ax.axhline(total_mean - band, color="black", ls="--")
 
     # Add mean and stddev text annotations
-    stat_str = "Mean = {:0.6f} Stdev = {:0.6f}".format(total_mean, total_stddev)
-    plt_text = pltbox.AnchoredText(stat_str, loc="upper center", frameon=False)
+    stat_str = "Mean = {:0.6f} Stdev = {:1.5e}".format(total_mean, total_stddev)
+    plt_text = pltbox.AnchoredText(stat_str, loc="upper center", frameon=True)
     ax.add_artist(plt_text)
 
     plt.show()
-- 
GitLab