Page History
...
- acq-signal-amo01509-r0125-ave-wfs.txt- contains signal averaged arrays, which can be presented by full scale and zoomed plots:
Example for module ImgAlgos::NDArrAverage
- See Module ImgAlgos::NDArrAverage
The
NDArrAverage
module can be used for evaluation of averaged pedestals or background using dedicated runs.
Typical configuration file may looks like this:No Format # Run this script: # psana -c psana-meca1113-r0045-cspad-cspad-dark-hotpix.cfg [psana] files = exp=meca1113:run=45 events = 400 #skip-events = 0 modules = CSPadPixCoords.CSPadNDArrProducer \ ImgAlgos.NDArrAverage \ ImgAlgos.Tahometer [CSPadPixCoords.CSPadNDArrProducer] source = MecTargetChamber.0:Cspad.0 inkey = outkey = cspad_ndarr outtype = int16 is_fullsize = yes print_bits = 3 [ImgAlgos.NDArrAverage] source = MecTargetChamber.0:Cspad.0 key = cspad_ndarr avefile = cspad.0-ave rmsfile = cspad.0-rms maskfile = cspad.0-msk hotpixfile = cspad.0-hot thr_rms_ADU = 10 thr_min_ADU = 4 thr_max_ADU = 10000 print_bits = 29 [ImgAlgos.Tahometer] dn = 100 print_bits = 7
- Evaluation of average intensity in 2 or 3 stages using gate-based algorithms excludes out-layers in intensity spectra and makes average more stable. However, the gate width is not a universal parameter. In order to set this parameter one has to look at spectrum of averaged intensities for particular device. The same is valid for evaluation of hot/bad pixel masks. One has to plot spectra of averaged intensity and rms values. Averaged intensity and rms spectra for exp=meca1113:run=45 are shown on plots:
...
- thr_rms_ADU = 10 – to discard very noisy pixels,
- thr_min_ADU = 4 – to discard presumably dead pixels with 0-intensity,
- thr_max_ADU = 10000 – to discard pixels with intensity significantly exceeding average value.
Example for module ImgAlgos::ImgAverage
- See Module ImgAlgos::ImgAverage
- The
ImgAverage
module can be used for evaluation of averaged pedestals or background using dedicated runs. Typical configuration file may looks like this:
Code Block | ||
---|---|---|
| ||
[psana] files = /reg/d/psdm/<instrument>/<experiment>/xtc/<file-name>.xtc modules = ImgAlgos.CameraImageProducer \ ImgAlgos.ImgAverage events = 1000 [ImgAlgos.CameraImageProducer] source = DetInfo(:Opal1000) key_in = key_out = img subtract_offset = true print_bits = 1 [ImgAlgos.ImgAverage] source = DetInfo(:Opal1000) key = img avefile = img-ave.dat rmsfile = img-rms.dat print_bits = 31 evts_stage1 = 100 evts_stage2 = 100 gate_width1 = 200 gate_width2 = 20 |
Example for module ImgAlgos::ImgMaskEvaluation
- See Module ImgAlgos::ImgMaskEvaluation
- Configuration parameters for psana:
...
Note |
---|
In this example parameters were chosen in order to get a small number of "noisy" pixel just due to statistics. |
- Typical image:
- Plots for fraction of noisy pixels:
Plots for fraction of saturated pixels:
Masks: noisy, saturated, and combined:
Example for module ImgAlgos::ImgCalib
...
- Example of the mask file and resulting image:
Example for module ImgAlgos::ImgRadialCorrection
...
- Note: the option of the background subtraction (
ImgAlgos.CSPadBkgdSubtract
) is commented out in this configuration file . In order to evoke this option, the comment sign (#) should be removed from the list ofmodules
and thekey=bkgd_subtracted_arr
should be used inCSPadPixCoords.CSPadImageProducer
. - Calibrated image and spectrum:
- Calibrated and radial-corrected image, spectrum, and subtracted r-phi65 distribution for
n_phi_bins
=65:
Calibrated and radial-corrected image, spectrum, and subtracted r-phi12 distribution for n_phi_bins
=12:
Example for module ImgAlgos::ImgPeakFinder
- See Module ImgAlgos::ImgPeakFinder
- Configuration file example:
...
- This algorithm consumes ~15 ms/event on psana0101 for full Opal1000 (1024x1024) camera image.
- Smearing algorithm use a "safety margin" which is currently set to 10 pixels (offset from each boarder of the full image size).
- Image on different stages of this algorithm:
- raw image,
- image in the window with amplitudes above the
threshold_low
- few peaks at the edges were discarded by the window limits,
- image still contains many 1-photon pixels, which need to be eliminated,
- smeared image,
- raw image with found peaks (marked by the red circles)
- zoom of the previous plot.
Example for module ImgAlgos::ImgPeakFilter
Code Block | ||
---|---|---|
| ||
[ImgAlgos.ImgPeakFilter] source = DetInfo(:Opal1000) key = peaks threshold_peak = 5 threshold_total= 0 n_peaks_min = 10 print_bits = 11 fname = img selection_mode = SELECTION_ON |
Example for module ImgAlgos::ImgPeakFinderAB
- See Module ImgAlgos::ImgPeakFinderAB
- Configuration file example:
Code Block | ||
---|---|---|
| ||
[psana] files = /reg/d/psdm/<instrument>/<experiment>/xtc/<file-name>.xtc modules = ImgAlgos.CameraImageProducer \ ImgAlgos.ImgPeakFinderAB events = 10 [ImgAlgos.CameraImageProducer] source = DetInfo(:Opal1000) key_in = key_out = img subtract_offset = true print_bits = 1 [ImgAlgos.ImgPeakFinderAB] source = DetInfo(:Opal1000) key = img key_peaks_out = peaks #key_signal_out = signal-arr #hot_pix_mask_inp_file = ana-misc-exp/mask.dat #hot_pix_mask_out_file = noise-mask-out.dat #frac_noisy_evts_file = noise-frac-out.dat evt_file_out = tmp/img- rmin = 10 dr = 1 SoNThr_noise = 3 SoNThr_signal = 3 frac_noisy_imgs = 0.9 peak_npix_min = 3 peak_npix_max = 100 peak_amp_tot_thr = 0. peak_SoN_thr = 4. event_npeak_min = 5 event_npeak_max = 1000 event_amp_tot_thr = 0. nevents_mask_update = 0 nevents_mask_accum = 50 selection_mode = SELECTION_ON out_file_bits = 15 print_bits = 513 |
Results:
Example for module ImgAlgos::ImgHitFinder
- See Module ImgAlgos::ImgHitFinder
- ImgHitFinder in regular mode needs in file with pedestals (offset) to correct the image and file with threshold.
- In amo74213 run 93 these files can be obtained directly from data, discarding signal hits as outliers using
- ImgAlgos.ImgAverage module as follows with configuration file:
...
Code Block | ||
---|---|---|
| ||
psana -c psana-amo74213-r0093-opal-img-hit-finder.cfg |
Which creates the file: img-sum-result-r0093.dat for thre_mode = 2
and thre_mode = 3
, respectively:
Example for module ImgAlgos::ImgSpectra
- See Module ImgAlgos::ImgSpectra
- Configuration file for psana:
...
- This script can be used in order to produce text files with image and spectral array:
- or graphics for several images:
Example for module ImgAlgos::ImgSpectraProc
- See Module ImgAlgos::ImgSpectraProc
- Configuration file for psana:
...
Code Block | ||
---|---|---|
| ||
[info:ImgAlgos.ImgSpectraProc] Spectral array shape =3, 1024 [info:ImgAlgos.ImgSpectraProc] Image spectra for run=0060 Evt=000100 Column: 0 100 200 300 400 500 600 700 800 900 1000 Signal: 1211 4062 11150 17070 16406 12949 7991 5168 3968 3542 3811 Refer.: 933 3485 10425 17128 17791 13522 8315 5000 3390 2967 3193 Diff. : 0.259 0.153 0.067 -0.003 -0.081 -0.043 -0.040 0.033 0.157 0.177 0.176 [info:ImgAlgos.ImgSpectraProc] Run=0060 Evt=000100 Time=20120507-125420.982421325 done... |
Example for module ImgAlgos::ImgSaveInFile
Code Block | ||
---|---|---|
| ||
modules = ... ImgAlgos.ImgSaveInFile:1 ... [ImgAlgos.ImgSaveInFile:1] source = DetInfo(:Opal1000) # or CxiDs1.0:Cspad.0 key = img fname = my-img #ftype = txt #ftype = bin #ftype = png ftype = tiff #eventSave = 5 saveAll = true |
Example for module ImgPeakFinder and ImgPeakFilter for CSPad
- Module
ImgAlgos::ImgPeakFinder
works on image. In order to apply this algorithm to CSPad the image should be produced. In next example the image is produced using consequtive modulescspad_mod.CsPadCalib
,ImgAlgos.CSPadMaskApply
, andCSPadPixCoords.CSPadImageProducer
:
Code Block | ||
---|---|---|
| ||
[psana] files = /reg/d/psdm/<instrument>/<experiment>/xtc/<file-name-1>.xtc \ ... /reg/d/psdm/<instrument>/<experiment>/xtc/<file-name-N>.xtc events = 1000 experiment = cxii0212 calib-dir = ana-cxii0212/calib modules = cspad_mod.CsPadCalib \ ImgAlgos.CSPadMaskApply \ CSPadPixCoords.CSPadImageProducer \ ImgAlgos.ImgPeakFinder \ ImgAlgos.ImgPeakFilter \ ImgAlgos.ImgSaveInFile:1 [cspad_mod.CsPadCalib] inputKey = outputKey = calibrated doPedestals = yes doPixelStatus = no doCommonMode = yes [ImgAlgos.CSPadMaskApply] source = DetInfo(CxiDs1.0:Cspad.0) inkey = calibrated outkey = masked_arr mask_fname = <your-local-directory>/<mask-file-name>.dat masked_amp = 0 print_bits = 5 mask_control_bits = 15 [CSPadPixCoords.CSPadImageProducer] calibDir = /reg/d/psdm/<instrument>/<experiment>/calib typeGroupName = CsPad::CalibV1 source = CxiDs1.0:Cspad.0 key = masked_arr imgkey = img print_bits = 0 #tiltIsApplied = true [ImgAlgos.ImgPeakFinder] source = DetInfo(CxiDs1.0:Cspad.0) key = img peaksKey = peaks threshold_low = 2 threshold_high = 5 sigma = 1.5 smear_radius = 5 peak_radius = 7 xmin = 20 xmax = 1700 ymin = 20 ymax = 1700 #testEvent = 5 print_bits = 3 #finderIsOn = true [ImgAlgos.ImgPeakFilter] source = DetInfo(CxiDs1.0:Cspad.0) key = peaks threshold_peak = 5 threshold_total= 0 n_peaks_min = 10 print_bits = 11 fname = cspad-img selection_mode = SELECTION_ON [ImgAlgos.ImgSaveInFile:1] source = CxiDs1.0:Cspad.0 key = img fname = cspad-img #eventSave = 1 saveAll = true |
Example for module ImgAlgos::CSPadArrAverage
- See Module ImgAlgos::CSPadArrAverage
- Configuration file example for evaluation of pedestals:
...
- Images of the CSPad arrays for averaged and rms values, respectively, in one of the CXI runs:
Example for module ImgAlgos::CSPadBkgdSubtract
...
- The file with the background array,
bkgd_fname
, was obtained by averaging 1000 events using module CSPadArrAverage. Subtraction is done with normalization fornorm_sector=0
. - Event image and pixel amplitude spectrum before and after the background subtraction are shown in plots:
- Other event with better subtracted background:
Example for Module ImgAlgos::CSPadMaskApply
- See Module ImgAlgos::CSPadMaskApply
- The array for mask contains zeros and ones for masked and passed pixels, respectively, and has a shape of full-size CSPad array 4*8*185388.
- For example, it can be generated by the command
...
- for the averaged background amplitude array
<input-background-cspad-arr-file-name>
abtained as a result ofImgAlgos::CSPadArrAverage
module. - Plots show the averaged background, and the mask arrays generated from this background for three thresholds 10, 20, and 30 EDU:
The best results in filtering can be achieved in combination of modiles:
Code Block | ||
---|---|---|
| ||
modules = cspad_mod.CsPadCalib \ ImgAlgos.CSPadBkgdSubtract \ ImgAlgos.CSPadMaskApply \ ... [cspad_mod.CsPadCalib] inputKey = outputKey = calibrated_arr doPedestals = yes doPixelStatus = no doCommonMode = no [ImgAlgos.CSPadBkgdSubtract] source = DetInfo(CxiDs1.0:Cspad.0) inputKey = calibrated_arr outputKey = bkgd_subtracted_arr bkgd_fname = ana-cxi49012/cspad-cxi49012-r0025-background-ave.dat norm_sector = 0 print_bits = 0 [ImgAlgos.CSPadMaskApply] source = DetInfo(CxiDs1.0:Cspad.0) inkey = bkgd_subtracted_arr outkey = masked_arr mask_fname = ana-cxi49012/cspad-cxi49012-r0025-mask-40.dat masked_amp = 0 print_bits = 3 mask_control_bits = 1 |
where
cspad_mod.CsPadCalib
- subtracts the pedestals from raw CSPad data,ImgAlgos.CSPadBkgdSubtract
- subtracts the background,ImgAlgos.CSPadMaskApply
- apply the mask.- In the test with images for background represented by the water and solvent rings this filter provides the background suppression factor about 100.
- The background images that still pass this filter have significantly larger intensity with respect to averaged background:
Input parametermask_control_bits
allows to control masking regions of 2x1. For example, if all edges need to be masked, then usemask_control_bits = 15
, which gives image array like:
where red regions/lines of pixels of amplitude=8 are masked.
Example for module ImgAlgos::CSPadArrNoise
...
Overview
Content Tools