Skip to content

Prototyping a Qt signal/slot pipeline and two visualization widgets

Compare
Choose a tag to compare
@ericdill ericdill released this 08 Jul 12:31
· 311 commits to master since this release

Version Definition 0.0.1

  1. Version Date: 2014-07-02
  2. Target Audience: Simon Billinge
  3. Version Type: Demo
  4. Platform: n/a
  5. File to execute: vistools\qt_widgets\XPDPipelineDemo.py

In this demo, a simple python script is used that allows an arbitrary number of 2-D diffraction images to be loaded from disk and displayed in a 2-D widget. When a different image in the stack is shown, the analysis pipeline is triggered which computes the radial integration of the displayed image and appends it to a 1-D stack plot.

  1. 2-D Cross Section Widget Functionality
    1. Change the color map
    2. Change between linear/log intensity display
    3. Scroll through the images
    4. Limit the intensity displayed:
      1. Percentile
      2. Absolute number
      3. Full range
  2. 1-D Stack Plot Functionality
    1. Change the color map
    2. Shift curves by an incremental amount in x
    3. Shift curves by an incremental amount in y
  3. Azimuthal Integration Functionality
    1. nsls2.core.detector2D_to_1D which takes a 2-D numpy array and an image center (x,y) and converts it to three lists: x, y, intensity and returns those three lists as a tuple
    2. nsls2.core.bin1D which takes a list of x coordinates and a list of y coordinates and computes a weighted histogram returning the edges, the weights of the bins and the number of data points in each of the bins. The weights are divided by the number of data points in the bins and then plotted versus x.
  4. File input
    1. nsls2.io.binary.ReadBinary.py which takes a filename and a list of relevant parameters (data points in x, data points in y, size of each data element (e.g.; np.uint8, np.float32, etc.), header size (in bytes)

Use Case

  1. VIS: 2D Stack
    1. CSX/CHX
      1. View 2-time correlation
      2. View slices through reciprocal space reconstruction
      3. View raw data from 2D detector
    2. XPD
      1. View 2-D image stack with browsing capability
    3. SRX
      1. View a 2D XANES image stack
      2. View 2D absorption image (full-field tomography)
  2. VIS: 1D Stack
    1. CSX/CHX
      1. View 1-time correlation
    2. IXS
      1. View 6 1-D plots of channel vs photon counts
      2. View 6 elastic peaks with the fit overlay, model parameters and a difference plot
      3. Plot summed spectrum minus elastic peak as 2-theta is scanned
    3. XPD
      1. Display intensity histogram
      2. Waterfall plot (1-D stack)
  3. CALC: Azimuthal Integration
    1. XPD
      1. 2-D -> 1-D: Azimuthal Integration

Functionality

  1. Modular Visualization and Computation.

A primary goal of this project is to write as little code as possible to meet the requirements of the six NSLS-II project beamlines. In order to meet this goal, we are trying to make all functions and UI widgets be as modular and stateless as possible. To combine widgets and functions into an actual workflow requires the use of a workflow manager (VisTrails, Mantid, etc..) or simply a python script.

Another primary goal of this project is to avoid writing a workflow manager since an immense amount of work goes into such an endeavor.

Install and run this demo

@giltis Paste your code here when you've got the readme working