Page tree

 
beamtimedaqaccess (version 0.1.2)</td >
<br /> >index
/afs/desy.de/user/e/erlandm/work/PAH/camp/pah/beamtimedaqaccess.py


camp.pah.beamtimedaqaccess
 
BeamtimeDaqAccess is a library facilitating near online FLASH DAQ access.
 
The DAQ distributes its data across many small HDF files, which contain
gaps and overlaps. This library allows to read complete datasets for given
DAQ channels without the need to find out which data live in which individual
HDF file.
 
The DAQ data can be accessed by time (``latestValues``), by run (``allValuesOfRun``),
by time and run (``firstValuesOfRun``) or by pulse ID (``valuesOfInterval``).
 
:copyright: 2016 Amanda Steber and Erland Muller
:license: GPL v3, see http://www.gnu.org/licenses/
 
Origin: https://stash.desy.de/projects/CS/repos/pah



 
Classes
      

__builtin__.object BeamtimeDaqAccess exceptions.Exception(exceptions.BaseException) MissingValuesException



 
class BeamtimeDaqAccess(__builtin__.object)
   BeamtimeDaqAccess object provides access to distributed DAQ datasets - API
 
This class is the *facade* to the library, facilitating access to datasets
originating from the FLASH DAQ.
 
An object of this class caches meta data of the many HDF files. Therefore,
reuse of the object is strongly advised. It is specific to the root directory
of the HDF files, specified at construction time.
 
To obtain an BeamtimeDaqAccess object use the static method ``crate``.
 
Note, the object is not thread safe.
 
Example::
    >>> from camp.pah.beamtimedaqaccess import BeamtimeDaqAccess
    >>> daq= BeamtimeDaqAccess.create("./testresources")
    >>> saseSpectrumName= "/Photon Diagnostic/GMD/Average energy/energy tunnel (raw)"
    >>> timeIntervalSeconds= 10
    >>> saseSpectrum, idInterval= daq.latestValues(saseSpectrumName, timeIntervalSeconds)
 

Methods defined here:

__init__(self, fileaccess)No API, use ``create`` instead


allChannelNames(self)Returns all known channels for FLASH1 - API   The method returns all channel names, which appear in FLASH 1 DAQ HDF files. The sequence of names is useful to search for a specific channel name. It also permits to implement design by contract style.   Returns:     channelNames (sequence of :obj:`str`): Known channel names appearing in HDF files


allValuesOfRun(self, channelName, runNumber, valueSlice=':')Returns all available values and pulse ID interval for given channel name and run number - API   Parameters:     channelName (str): The fully qualified name of the dataset in the HDF files     runNumber (int): The FLASH DAQ run number, the given channel was recorded with     valueSlice (:obj:`str`, optional): A slice expression as a string; the slicing is             done in the spectral dimensions, not in pulse ID dimension   Returns:     values (np.array): The recored values of the run for given channel name.     idInterval (pair of :obj:`int`): The corresponding pulse ID interval. The first             element of the pair is the first pulse ID and the second element corresponds             to the last pulse ID + 1, i.e. an exclusive interval.   Raises:     AssertionError: If the channel name is invalid     NoDaqDataException: If there are no data for the given channel in the given run


firstValuesOfRun(self, channelName, runNumber, timeLengthSecs=1, valueSlice=':')Returns recorded values for a specific run and a particular time period - API   This method selects the first values available from the specified run and time duration. If no time duration is specified it defaults to 1 second.   Parameters:     channelName (str): The fully qualified name of the dataset in the HDF files     runNumber (int): The FLASH DAQ run number, the given channel was recorded with     timeLengthSecs (:obj:`Number`,  optional): The time length in seconds     valueSlice (:obj:`str`, optional): A slice expression as a string; the slicing is             done in the spectral dimensions, not in pulse ID dimension   Returns:     values (np.array): The first recored values of the run and the given length of time     idInterval (pair of :obj:`int`): The corresponding pulse ID interval. The first             element of the pair is the first pulse ID and the second element corresponds             to the last pulse ID + 1, i.e. an exclusive interval.   Raises:     AssertionError: If the channel name is invalid     NoDaqDataException: If there are no data for the given channel in the given run


isChannelAvailable(self, channelName, pulseIdInterval)Predicate tests if given channel values are available for given channel - API   Parameters:     channelName (str): The fully qualified name of the dataset in the HDF files     pulseIdInterval (pair of :obj:`int`): The pair defining the interval of pulse             IDs for the values are returned. The first element of the pair is the             first pulse ID and the second element corresponds to the last pulse ID + 1.   Returns:     bool: True if channel is available for complete ID interval (allowing for gaps),             False otherwise.


latestValues(self, channelName, timeIntervalSeconds, valueSlice=':')Returns latest values and ID interval - API   Parameters:     channelName (str): The fully qualified name of the dataset in the HDF files     timeIntervalSeconds (int): The length of time over which the values are returned     valueSlice (:obj:`str`, optional): A slice expression as a string; the slicing is             done in the spectral dimensions, not in pulse ID dimension   Returns:     values (np.array): The latest recored values over the given time interval     idInterval (pair of :obj:`int`): The pulse ID interval. The first element of the             pair is the first pulse ID and the second element corresponds to the last             pulse ID + 1, i.e. an exclusive interval.   Raises:     AssertionError: If the channel name is invalid     NoDaqDataException: If there are no data for the given channel


pulseIdIntervalOfRun(self, channelName, runNumber)Returns the complete pulse ID interval for channel and run number - API   Parameters:     channelName (str): The fully qualified name of the dataset in the HDF files     runNumber (int): The FLASH DAQ run number, the given channel was recorded with   Returns:     idInterval (pair of :obj:`int`): The pulse ID interval for the given channel. The first             element of the pair is the first pulse ID and the second element corresponds             to the last pulse ID + 1, i.e. an exclusive interval.   Raises:     AssertionError: If the channel name is invalid     NoDaqDataException: If there are no data for the given channel in the given run


valuesOfInterval(self, channelName, pulseIdInterval, valueSlice=':')Returns values for given channel and ID interval - API   Parameters:     channelName (str): The fully qualified name of the dataset in the HDF files     pulseIdInterval (pair of :obj:`int`): The pair defining the interval of pulse             IDs for the values are returned. The first element of the pair is the             first pulse ID and the second element corresponds to the last pulse ID + 1.     valueSlice (:obj:`str`, optional): A slice expression as a string; the slicing is             done in the spectral dimensions, not in pulse ID dimension   Returns:     values (np.array): The values for the given channel and pulse ID interval.   Raises:     AssertionError: If the channel name is invalid     NoDaqDataException: If there are no data for the given channel     MissingValuesException: If values for only a sub interval of the interval given             could be returned. Note, the exception contains the values available and             the corresponding ID interval; see ``MissingValuesException``.



Static methods defined here:

create(rootDirectoryOfH5Files)Creates a BeamtimeDaqAccess object for the given root directory - API   Parameters:     rootDirectoryOfH5Files (str): The root directory of the HDF files. The root             directory contains sub directories for different FLASH DAQ streams.   Returns:     BeamtimeDaqAccess: The ready to use beamtime DAQ access object.   Raises:     AssertionError: If the given rootDirectoryOfH5Files does not exist.



Data descriptors defined here:

__dict__ dictionary for instance variables (if defined)

__weakref__ list of weak references to the object (if defined)



 
class MissingValuesException(exceptions.Exception)
   MissingValuesException indicates values do not cover the complete ID interval - API
 
This exception is raised, if values for a given channel and pulse ID interval are partially
available only. An object of this class carries the values and the corresponding ID interval
that actually could be retrieved.
 
Example::
    >>> try:
    >>>     daq.valuesOfInterval(saseSpectrumName, tooLargeInterval)
    >>> except MissingValuesException as ex:
    >>>     actualValues= ex.values()
    >>>     actualInterval= ex.pulseIdInterval()
 

Method resolution order: MissingValuesException exceptions.Exception exceptions.BaseException __builtin__.object


Methods defined here:

__init__(self, actualPulseIdInterval, requestedPulseIdInterval, values)*No* API


pulseIdInterval(self)Returns the pulse ID interval for the values actually retrieved - API   Returns:     idInterval (pair of :obj:`int`): The pulse ID interval for the actually retrieved values             (the values are available by the method ``values``).


values(self)Returns the values for the originally given channel name actually retrieved - API   Returns:     values (np.array): The recored values of the run for given channel name. Note, the             method ``pulseIdInterval`` gives the corresponding pulse ID interval.



Data descriptors defined here:

__weakref__ list of weak references to the object (if defined)


Data and other attributes inherited from exceptions.Exception:

__new__ = <built-in method new of type object>T.__new__(S, ...) -> a new object with type S, a subtype of T



Methods inherited from exceptions.BaseException:

__delattr__(...)x.__delattr__('name') <==> del x.name


__getattribute__(...)x.__getattribute__('name') <==> x.name


__getitem__(...)x.__getitem__(y) <==> x[y]


__getslice__(...)x.__getslice__(i, j) <==> x[i:j]   Use of negative indices is not supported.


__reduce__(...)


__repr__(...)x.__repr__() <==> repr(x)


__setattr__(...)x.__setattr__('name', value) <==> x.name = value


__setstate__(...)


__str__(...)x.__str__() <==> str(x)


__unicode__(...)



Data descriptors inherited from exceptions.BaseException:

__dict__

args

message



 
Data
      
__version__ = '0.1.2'
absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 16384)
division = _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
print_function = _Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 65536)
  • No labels