ADC/DAC overflows

The LIGO real-time controls system is a sophisticated collection of control loops designed to hold the arm cavities in resonance. At fairly regular intervals, this system can experience overflows in digital-to-analogue (DAC) and analogue-to-digital (ADC) conversion, which we can keep track of using a few command-line tools.

The gwdetchar.daq module provides the following functions:

find_overflows(timeseries[, cumulative])

Find the times of overflows from an overflow counter

find_overflow_segments(timeseries[, ...])

Find the segments during which the given counter indicated an overflow

ligo_accum_overflow_channel(dcuid[, ifo])

Returns the channel name for cumulative overflows for this DCUID

ligo_model_overflow_channels(dcuid[, ifo, ...])

Find the CDS overflow channel names for a given DCUID

find_crossings(timeseries, threshold)

Find the times that a timeseries crosses a specific value

Another module, gwdetchar.cds, is used to find mappings between front-end data collection units.

Command-line utilities

Note

These utilities require authentication with LIGO.ORG credentials for archived frame data access.

gwdetchar.overflow

The gwdetchar.overflow command-line interface searches for overflows in a given time range over a given set of data collection unit identifiers (DCUIDs) from the front-end computing system. The simplest usage is as follows:

python -m gwdetchar.overflow -i <interferometer> <gps-start-time> <gps-end-time> <DCUIDs>

For example,

python -m gwdetchar.overflow -i H1 1126259442 1126259502 8 10 19 29 30 88 97 98

For a full explanation of the available command-line arguments and options, you can run

$ python -m gwdetchar.overflow --help
usage: python -m gwdetchar.overflow [-h] [-V] -i IFO -f FRAMETYPE [-j NPROC]
                                    [--deep] [-a FLAG] [--nds HOST:PORT]
                                    [-o OUTPUT_FILE] [-I] [-p SEGMENT_PAD]
                                    [-s SEGMENT_END_PAD] [-m HTML] [-v]
                                    [-c FEC_MAP] [-u SIMULINK] [-d DAQSVN]
                                    gpsstart gpsend dcuid [dcuid ...]

Find ADC/DAC overflows associated with a particular front-end model

positional arguments:
  gpsstart              GPS start time or datetime of analysis
  gpsend                GPS end time or datetime of analysis
  dcuid                 DCUID for the relevant front-end model

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  -i IFO, --ifo IFO     IFO prefix for this analysis, default: None
  -f FRAMETYPE, --frametype FRAMETYPE
                        the frame type name
  -j NPROC, --nproc NPROC
                        the number of processes to use when reading data,
                        default: 8
  --deep                perform deep scan, default: False
  -a FLAG, --state-flag FLAG
                        restrict search to times when FLAG was active
  --nds HOST:PORT       use the given NDS host:port to access data, default:
                        use datafind
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        path to output data file, default name will be
                        automatically generated based on IFO and GPS times
  -I, --integer-segments
                        pad all overflow segments to integer boundaries
                        (default: False)
  -p SEGMENT_PAD, --segment-pad SEGMENT_PAD
                        minimum padding (one-sided) for output segments when
                        using --output-format [segments|integer-segments]
  -s SEGMENT_END_PAD, --segment-end-pad SEGMENT_END_PAD
                        amount of time to remove from the end of each analysis
                        segment
  -m HTML, --html HTML  path to write html output
  -v, --plot            make plots of all overflows, default: None
  -c FEC_MAP, --fec-map FEC_MAP
                        URL of human-readable FEC map, default: infer from IFO
  -u SIMULINK, --simulink SIMULINK
                        URL of human-readable Simulink model, default: infer
                        from IFO
  -d DAQSVN, --daqsvn DAQSVN
                        URL of the front-end data gathering configuration,
                        default: internal LIGO DAQ subversion repository

gwdetchar.mct

Similarly, the gwdetchar.mct tool can be used to find times when any input signal crosses a given threshold:

$ python -m gwdetchar.mct --help
usage: python -m gwdetchar.mct [-h] [-V] -i IFO [-j NPROC] -f FRAMETYPE
                               [-a FLAG] [-o OUTPUT_PATH]
                               [-t THRESHOLD [THRESHOLD ...]] -c CHANNEL
                               [-r RATE_THRESH]
                               gpsstart gpsend

Find times when an input signal crosses a particular threshold

positional arguments:
  gpsstart              GPS start time or datetime of analysis
  gpsend                GPS end time or datetime of analysis

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  -i IFO, --ifo IFO     IFO prefix for this analysis, default: None
  -j NPROC, --nproc NPROC
                        the number of processes to use when reading data,
                        default: 8
  -f FRAMETYPE, --frametype FRAMETYPE
                        the frame type name
  -a FLAG, --state-flag FLAG
                        restrict search to times when FLAG was active
  -o OUTPUT_PATH, --output-path OUTPUT_PATH
                        path to output HDF5 file, name will be automatically
                        generated based on IFO and GPS times
  -t THRESHOLD [THRESHOLD ...], --threshold THRESHOLD [THRESHOLD ...]
                        threshold for marking input data crossings
  -c CHANNEL, --channel CHANNEL
                        channel to read for input data
  -r RATE_THRESH, --rate-thresh RATE_THRESH
                        if the trigger rate (Hz) is above this value for a
                        given segment, crossings for that segment will not be
                        recorded