From da41bccc1c29f3966c8c415a8cc8d0ad079c6b45 Mon Sep 17 00:00:00 2001 From: Duc Le <duc.le@stfc.ac.uk> Date: Fri, 23 Feb 2018 02:46:09 +0000 Subject: [PATCH] Re #20599 - restored system_test_speed. Updated docs. Updated pictures for SofQW docs - old bins should be parallelograms Added equations for signal and error in Rebin and Rebin2D --- docs/source/algorithms/Rebin-v1.rst | 10 +++++++- docs/source/algorithms/Rebin2D-v1.rst | 11 ++++++-- docs/source/images/RebinnedOutputStep1.png | Bin 13348 -> 13183 bytes docs/source/images/RebinnedOutputStep2.png | Bin 12573 -> 12710 bytes tools/system_test_speed.py | 28 +++++++++++++++++++++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 tools/system_test_speed.py diff --git a/docs/source/algorithms/Rebin-v1.rst b/docs/source/algorithms/Rebin-v1.rst index 50e225683de..593accdcd91 100644 --- a/docs/source/algorithms/Rebin-v1.rst +++ b/docs/source/algorithms/Rebin-v1.rst @@ -26,6 +26,15 @@ be no gaps between bins. Rebin ensures that any of these space filling bins cannot be less than 25% or more than 125% of the width that was specified. +In both cases, where a new bin only partially overlaps one or more input +bins, the new counts are calculated as the sum of the old bins weighted +by the fractional overlaping widths of the new bin over the old bin: + +.. math:: Y^{\mathrm{new}} = \sum_i Y^{\mathrm{old}}_i F_i +.. math:: E^{\mathrm{new}} = \sqrt{\sum_i (E^{\mathrm{old}}_i)^2 F_i} + +where :math:`F_i = w^{\mathrm{overlap}}_i / w^{\mathrm{old}}_i` is the +ratio of the overlap width of the new and old bin over the old bin width. .. _rebin-example-strings: @@ -79,7 +88,6 @@ following will happen: Hence the actual *Param* string used is "0, 2, 4, 3, 10". - .. _rebin-usage: Usage diff --git a/docs/source/algorithms/Rebin2D-v1.rst b/docs/source/algorithms/Rebin2D-v1.rst index 83313f033f0..d9efd20d2ac 100644 --- a/docs/source/algorithms/Rebin2D-v1.rst +++ b/docs/source/algorithms/Rebin2D-v1.rst @@ -14,8 +14,15 @@ The bin parameters are used to form an output grid. A positive create logarithmic binning using the formula :math:`x(j+1)=x(j)(1+|\Delta x_i|)\,`. The overlap of the polygons formed from the old and new grids is tested to compute the required -signal weight for the each of the new bins on the workspace. The errors -are summed in quadrature. +signal weight for the each of the new bins on the workspace, like in +:ref:`algm-Rebin`, and the errors are summed in quadrature, as: + +.. math:: Y^{\mathrm{new}} = \sum_i Y^{\mathrm{old}}_i F_i +.. math:: E^{\mathrm{new}} = \sqrt{\sum_i (E^{\mathrm{old}}_i)^2 F_i} + +where :math:`F_i = A^{\mathrm{overlap}}_i / A^{\mathrm{old}}_i` is the +ratio of the overlap area of the new and old bin over the area of the +old bin. Requirements ------------ diff --git a/docs/source/images/RebinnedOutputStep1.png b/docs/source/images/RebinnedOutputStep1.png index 06632d534a2aa396e2a3f5f09680bb456d94c541..262108dba3ca28a69e25405f3ec98bf61290b615 100644 GIT binary patch literal 13183 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 literal 13348 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 F{{YCKtM~u_ diff --git a/docs/source/images/RebinnedOutputStep2.png b/docs/source/images/RebinnedOutputStep2.png index 7a1c20b1978e0df478ad7b8dfb3ef8994b8794cc..280095d3cad56f9fe6f1e56d992b7ba03fb6ccb4 100644 GIT binary patch literal 12710 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 literal 12573 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 an|xyT&7rqT3HYxJfUKmVM46cWxBmgkC+M{R diff --git a/tools/system_test_speed.py b/tools/system_test_speed.py new file mode 100644 index 00000000000..3a9f84b2fff --- /dev/null +++ b/tools/system_test_speed.py @@ -0,0 +1,28 @@ +""" +Usage system_test_speed.py <build-log> <output-csv> + +Given a the raw output from a Jenkins build server log this script will output +a CSV file of the speed & memory for each system test. +""" +import sys + +with open(sys.argv[1], 'r') as f: + lines = f.readlines() + +lines = filter(lambda x: "RESULT|" in x or ": Executing" in x, lines) + +# Strip out tests that did not run +# look ahead and remove tests that have no results +idxs = [] +for i, (x, y) in enumerate(zip(lines, lines[1::])): + if "Executing" in x and "Executing" in y: + idxs.append(i) +lines = [i for j, i in enumerate(lines) if j not in idxs] + +with open(sys.argv[2], 'w') as f: + f.write("name, time, memory\n") + for name, time, memory in zip(lines[::3], lines[1::3], lines[2::3]): + name = name.split("Executing")[-1].strip() + time = time.split("|1")[-1].strip() + memory = memory.split("|")[-1].strip() + f.write(", ".join([name, time, memory]) + "\n") -- GitLab