Changes in the interfaces:
This release contains some non-backward compatible changes in the psana interfaces.
psana C++ API to Event:
Most of psana modules will always return the constant version of ndarray
. It means that the following code:
shared_ptr< ndarray<T,N> > shp = evt.get(src, key);
needs to be migrated to:
shared_ptr< ndarray<const T,N> > shp = evt.get(src, key);
The list of calibration modules which are now producing the const
version of ndarray
:
- ImgAlgos.AndorImageProducer
- ImgAlgos.CameraImageProducer
- ImgAlgos.PnccdImageProducer
- ImgAlgos.PnccdNDArrProducer
- ImgAlgos.PrincetonImageProducer
- ImgAlgos.ImgCalib
- ImgAlgos.NDArrCalib
- CSPadPixCoords.CSPadImageProducer
- CSPadPixCoords.CSPadNDArrProducer
- CSPadPixCoords.CSPad2x2ImageProducer
- CSPadPixCoords.CSPad2x2NDArrProducer
psana Python API to Event:
The Python interface to DAQ datatypes has been made consistent with the C++ interface - methods of DAQ datatypes that return numpy arrays now return read-only arrays. Users that were modifying the data in place now need to make a deep copy, i.e.:
my_array = my_array.copy()
using psana on the monitoring nodes
This release is compatible with the new DAQ shared-memory interface to data streams on the monitoring nodes. The new interface is incompatible with the old one, and it requires to use this release.
New features and improvements:
HDF5 Translator:
- is now able to translate variable length ndarray-s, see Outdated: The XTC to HDF5 Translator for more information.
Calibration Manager:
- Improve bookkeeping quality in log files
- Add group operations in the file manager of the GUI application
psana Python API to Event:
- Check for ambiguous conversion of a const/non-const pair of ndarrays to one numpy array.
psana C++ API to Event:
- Print warning to help C++ users get ndarrays of const elements from the Event when they forgot to add the const qualifier.
Bugs fixed:
- Fix bug with printing event keys that include ndarray's of const items.The bug affected the Python API to the psana event
- Fixed psana XTC input module to only add one damagemap for the case where indexing tries to fix split events. Previously the code would throw an "identical key" exception.
- Fixed a memory management problem in the psana calibration modules
- Fixed problems with Doxygen documentation generation in a number of packages
Known issues:
The Python module scipy.optimized is incompatible with the interactive psana module. The following order of importing modules will result in a crash:
import psana import scipy.optimize
There is a workaround to that problem - to change the order in which teh modules are being imported. For example, the following code will work:
import scipy.optimize import psana
The issue is expected to be fixed in the next release.