Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Include Page
PSDM:PageMenuBegin
PSDM:PageMenuBegin
Table of Contents
Include Page
PSDM:PageMenuEnd
PSDM:PageMenuEnd

Motivation

Development of this application was stimulated by the discussion with Marcin Sikorski (meeting on 2012-08-30), doing xcs experiments.
Users need in real-time algorithm for calculation of image vs time auto-correlation function

...

Wiki Markup
{HTMLcomment:hidden}
Here is my comment
{HTMLcomment}

GUI Implementation

Updated on 2013-04-01

As an example of GUI style Marcin suggested to use XPCSGUI - earlier implementation of similar application.

...

h3 Plots for intensity in q-static bins

Intensity monitors

FEEGasDetEnergy, XCS-IPM-02, XCS-IPM-mono, XcsBeamline.1:Ipimb.4, and XcsBeamline.1:Ipimb.5

Reflective scattering geometry


Source code from Marcin: q_functions.txt

Code location

Everything resides in CorAna package, which is included in LCLS offline releases beginning from ana-0.7.16.
References to the specific algorithms can be found in Algorithms for Time Correlation Experiments.
Original data processing code from Marcin is described in Note on XCS code from Marcin.

Modules

In tables below we list modules from packages CorAna and ImgAlgos, which were developed for this project.
Notations:
(tick) - is done (at least it is assumed for now...)
(plus) - needs more work
(info) - test or deprecated modules

Package CorAna

Updated on 2013-10-14

All module names beginning with letters GUI implements different Graphical User Interfaces.

...

Module

Description

(tick) AppDataPath.py

Local version with added path to data from src directory.

(tick) BatchJob.py

Suprclass for other BatchJob*.py modules

(tick) BatchJobCorAna.py

 

(tick) BatchJobData.py

 

(tick) BatchJobPedestals.py

Class contains methods for batch job submission and monitoring for pedestals.

(tick) BatchLogParser.py

 

(tick) ConfigFileGenerator.py

Class has methods to generate psana configuration and other scripts from stubs located in CorAna/data/scripts/.

(tick) ConfigParameters.py

Base class for configuration parameters.

(tick) ConfigParametersCorAna.py

Sub-class for CorAna specific configuration parameters.

(tick) CorAnaUtils.py

Junk for eamples.

(tick) Drag.py

 

(tick) DragCenter.py

 

(tick) DragCircle.py

 

(tick) DragLine.py

 

(tick) DragObjectSet.py

 

(tick) DragPolygon.py

 

(tick) DragRectangle.py

 

(tick) DragWedge.py

 

(tick) EventTimeRecords.py

 

(tick) FileNameManager.py

Class dynamically generates all file names for current configuration parameters.

(tick) GUIAnaPartitions.py

 

(tick) GUIAnaSettings.py

 

(tick) GUIAnaSettingsLeft.py

 

(tick) GUIAnaSettingsOptions.py

 

(tick) GUIAnaSettingsRight.py

 

(tick) GUIBlamish.py

Sub-GUI of GUIFiles.py

(tick) GUICCDSettings.py

 

(tick) GUIConfigParameters.py

GUI for the configuration parameters file management.

(tick) GUIDark.py

Sub-GUI of GUIFiles.py - manipulations with dark runs

(tick) GUIData.py

 

(tick) GUIELogPostingDialog.py

Dialog window for submission of messages with attachments to ELog using response ID and Igor's new interface: Python module for posting message into ELog

(tick) GUIELogPostingFields

Widget with necessary fields for GUIELogPostingDialog

(tick) GUIFileBrowser.py

Text file browser for this project

(tick) GUIFiles.py

Central GUI for file settings contains tab-bar for other widget selection

(tick) GUIFlatField.py

Sub-GUI of GUIFiles.py

(tick) GUIHelp.py

WIdget for messages, i.e. help

(tick) GUIImgSizePosition.py

 

(tick) GUIInstrExpRun.py

depricated GUI

(tick) GUIIntensityMonitors.py

Control GUI for intensity monitors

(tick) GUIKineticMode.py

 

(tick) GUIListOfTau.py

GUI manipulation with list of tau indexes

(tick) GUILogger.py

GUI for logger

(tick) GUIMain.py

The first GUI at start of this application

(tick) GUIMainSplit.py

The same as GUIMainTB.py with integrated GUILogger.py

(tick) GUIMainTB.py

The first GUI at start of this application with tab bar

(tick) GUINonKineticMode.py

 

(tick) GUIRun.py

 

(tick) GUIRunAuto.py

 

(tick) GUIRunInput.py

 

(tick) GUIRunMerge.py

 

(tick) GUIRunProc.py

 

(tick) GUIRunSplit.py

 

(tick) GUISetupBeamZero.py

 

(tick) GUISetupData.py

 

(tick) GUISetupEnergyAngle.py

 

(tick) GUISetupInfo.py

 

(tick) GUISetupInfoLeft.py

 

(tick) GUISetupInfoRight.py

 

(tick) GUISetupPars.py

 

(tick) GUISetupSpecular.py

 

(tick) GUISystemSettings.py

 

(tick) GUISystemSettingsLeft.py

 

(tick) GUISystemSettingsRight.py

 

(tick) GUIViewControl.py

 

(tick) GUIViewResults.py

 

(tick) GUIWorkResDirs.py

 

(tick) GlobalExternal.py

 

(tick) GlobalUtils.py

Module contains all possible global methods.

(info) ImgSpeNavToolBar.py

Re-implemented standard tool-bar (depricated)

(tick) Logger.py

Core class for logger

(tick) MaskEditor.py

 

(tick) MaskEditorButtons.py

 

(info) Overlay.py

Demonstration of how to draw something on the top of GUI

(tick) PlotArray.py

Main class for array presentation plot

(tick) PlotArrayButtons.py

Widget for custom button-bar

(tick) PlotArrayWidget.py

Widget for graphical window

(tick) PlotG2.py

 

(tick) PlotG2Buttons.py

 

(tick) PlotG2Widget.py

 

(tick) PlotGraph.py

 

(tick) PlotGraphWidget.py

 

(tick) PlotImgSpe.py

Main class for interactive plot with custom button bar

(tick) PlotImgSpeButtons.py

Widget for custom button-bar

(tick) PlotImgSpeWidget.py

Graphical image for image and spectral histogram

(tick) PlotTime.py

Main class for time record presentation plot

(tick) PlotTimeWidget.py

Widget for graphical window

(tick) RecordsFromFiles.py

 

(tick) ThreadWorker.py

 

(tick) ViewResults.py

 

(tick) data/scripts/psana-*.cfg

Stub-scripts for ConfigFileGenerator.py

Modules used from package ImgAlgos

Updated on 2013-10-14

List of modules in alphabetic order:

Module

Description

(tick) CorAna

Superclass for all CorAna* modules

(tick) CorAnaData

Processing of split images, evaluation of correlators

(tick) CorAnaInputParameters

Input parameters parser

(tick) CorAnaMergeFiles

Merges split files with correlatros in a single file

(tick) CorAnaPars.py

Holds common parameters

(tick) CorAnaProcResults

Example of stand-alone processing of the file with correlators

(tick) CorAnaSubmit.py

Command-line submission procedure for processing

(tick) GlobalMethods

Common global methods for ImgAlgos package

(tick) ImgAverage

Generic psana module for image average

(tick) ImgCalib

Generic psana module for image calibration

(tick) ImgIntForBins

Generic psana module for intensity(averaged over bin pixels) in bins per event, bin numbers are defined by the map

(tick) ImgIntMonCorr

Generic psana module for image normalization on intensity monitors' data

(tick) ImgMaskEvaluation

Generic psana module for saturation and noisy pixel mask evaluation from data

(tick) ImgTimeStampList

Generic psana module produces the file with inage time stamps and indexes

(tick) ImgVsTimeSplitInFiles

Generic psana module accumulates split image for all events in files

(tick) IntensityMonitorsData

Generic psana module produces the file with intensity monitor data for all events

(tick) PrincetonImageProducer

Generic psana module gets the Princeton camera image and save it as a ndarray<uint16_t,2> image in the event

(tick) Tahometer

Generic psana module for performance report

Functional description

Updated on 2013-10-14
In this section modules are listed in functional order.

PSANA modules

Dark run pre-processing

Scaner
Runs in batch for the dark file to get preliminary information.
(tick) ImgAlgos.ImgTimeStampList

...

Pedestals
Runs in batch for the dark file to get averaged pedestals.
(tick) ImgAlgos.PrincetonImageProducer gets image from event as an ndarray object
(tick) ImgAlgos.Tahometer evaluates performance of the batch job
(tick) ImgAlgos.ImgAverage produces files with averaged, rms-spread, and hot-pixel mask for images in a given range of events.

Data pre-processing

Scaner
Runs in batch for the data file to get preliminary information.
(tick) ImgAlgos.Tahometer evaluates performance of the batch job, counts number of events in the data file
(tick) ImgAlgos.ImgTimeStampList makes file with time stamps and time record counters for tau
(tick) ImgAlgos.IntensityMonitorsData makes file with intensity monitor records

...

  • saturated mask - pixel is considered as saturated if its amplitude exceeds the threshold at least once per run
  • noise mask - pixel is considered as noisy if its amplitude exceeds the MEAN+5*RMS in 5% of events. The "noise" MEAN and RMS are evaluated for 8 (or less on the boarder) surrounding pixels. This mask is not used in current analysis.

Data processing

Split
(tick) ImgAlgos.Tahometer for performance evaluation.
(tick) ImgAlgos.PrincetonImageProducer
(tick) ImgAlgos::ImgCalib module is configured to:

...

Code Block
    sp.cor_arr = np.fromfile(sp.fname, dtype=np.float32)
    <image-size> = rows * cols
    nptau = <file-size>/<image-size>/3
    sp.cor_arr.shape = (nptau, 3, rows, cols)

GUI

The system of GUIs, consisting of dozens of CorAna.GUI... modules is implemented in the draft approximation. Roughly it reproduces all features of the old program.

Input parameters GUIs

(tick)(plus) CorAna.GUI... most of them are available. Will be added or extended if necessary.
(tick) Files - define input files and do pre-processing
(tick) Setup Info
(tick) Analysis Info
(tick) System
(tick) Intensity Monitor

Run GUI

(tick) Input - short summary of input info for data processing
(tick) Split - control and monitoring for the 1st stage of processing
(tick) Process - ... 2nd stage ...
(tick) Merge - ... 3d stage ...
(tick) Auto - ... for all 3 stages ...

View Results GUI

Contains a set of control fields for presentation of results
(tick) Direct and reflected beam geometry is implemented in ViewResults.py. Currently the switch between the direct and reflected beam geometry is used from tab status variable: cp.exp_setup_geom.value().
(plus) If the PV variable will be used, then the switch should be changed in ViewResults.get_q_map(sp) module.

Graphics

(tick) PlotArray*.py - for intensity monitors
(tick) PlotImgSpe*.py - for images, partition maps, masks etc.
(tick) PlotTime*.py - for time stamp monitoring
(tick) PlotG2*.py - G2 plot
(tick) PlotGraph*.py - I(q) and I(q,t) plot
(tick) MaskEditor*.py, Drag*.py - Mask Editor for

  • region of interest (ROI-mask)
  • blemish mask
    (tick) ViewResults.pyQ - all evaluations for resulting array of correlators
  • maps for pixel x,y coordinates, r, phi
  • q maps for transmission and reflective geometry
  • etc.

Infrastructural modules

Infrastructural modules provide basic infrastructure of the project.
(tick) ConfigParameters.py, ConfigParametersCorAna.py, and GUIConfigParameters.py provides convenient approach for maintenance of all configuration parameters.
(tick) Infrastructural modules Logger.py and GUILogger.py provides a generic approach to logging system.
(tick) Module ConfigFileGenerator.py use current settings of configuration parameters and stub-file scripts from CorAna/data/scripts/ and generates the psana configuration files.
(tick)(plus) Module FileNameManager.py is a single place which provides a dynamic file names for current version of the configuration parameters.
(tick) GlobalUtils.py - global utilities for common operations.
(tick) BatchJob.py - superclass for batch job submission.
(tick) BatchJobPedestals.py - pre-processing for dark run files.
(tick) BatchJobData.py - re-processing for data files.
(tick) BatchJobCorAna.py - main data processing - calculation algorithm.
(tick) RecordsFromFiles.py - class helps to access data in files.

Status of the project

  • This project is in the stage of comparison of results between old Marcin's scripts and this application.

Comparison of results

Conditions

  1. dark run: /reg/d/ana12/xcs/xcsi0112/xtc/e167-r0020-s00-c00.xtc use all 75 events
  2. data run: /reg/d/ana12/xcs/xcsi0112/xtc/e167-r0015-s00-c00.xtc use all 500 events
  3. do not use any intensity monitor selection or correction
  4. do not use any mask including hot pixel, saturation, blemish, ROI, and restriction on the image size.
  5. use LLD as a constant ADU threshold = 20
  6. use a single q-phi static bin
  7. use a single q-phi dynamic bin
  8. q value is not an issue for current comparison, so geometry does not matter.

...

Code Block
1 2 3 4 5 6 7 8 9 10 12 14 16 20

See Data Processing for Time Correlations Progress section for more details on comparison.

Progress

Weekly progress of the IDPE project for TCE

To-do list

Processing (at psana Split level)
(minus) Get cp.photon_energy, cp.nominal_angle and other PV variables from data scan and setup confiruration

...

  • plot for all fits with beta=1 and float,
  • tau0 vs q-dynamic
  • C vs q-dynamic
  • B vs q-dynamic
  • beta vs q-dynamic

References

Photon Correlation Spectroscopy, article in wikipedia
Algorithms for Time Correlation Experiments
Note on XCS code from Marcin