def read_frvect(vect, epoch, start, end, name=None, series_class=TimeSeries):
<EOL>if vect.GetName() and name and vect.GetName() != name:<EOL><INDENT>raise _Skip()<EOL><DEDENT>arr = vect.GetDataArray()<EOL>nsamp = arr.size<EOL>dim = vect.GetDim(<NUM_LIT:0>)<EOL>dx = dim.dx<EOL>x0 = dim.startX<EOL>dimstart = epoch + x0<EOL>dimend = dimstart + nsamp * dx<EOL>nxstart = int(max(<NUM_LIT:0.>, float(start-dimstart)) / dx)<EOL>if nxstart >= nsamp:<EOL><INDENT>raise _Skip()<EOL><DEDENT>if end:<EOL><INDENT>nxend = int(nsamp - ceil(max(<NUM_LIT:0.>, float(dimend-end)) / dx))<EOL><DEDENT>else:<EOL><INDENT>nxend = None<EOL><DEDENT>if nxstart or nxend:<EOL><INDENT>arr = arr[nxstart:nxend]<EOL><DEDENT>unit = vect.GetUnitY() or None<EOL>series = series_class(arr, t0=dimstart+nxstart*dx, dt=dx, name=name,<EOL>channel=name, unit=unit, copy=False)<EOL>series.channel.sample_rate = series.sample_rate.value<EOL>series.channel.unit = unit<EOL>series.channel.dtype = series.dtype<EOL>return series<EOL>
Read an array from an `FrVect` structure

    Parameters
    ----------
    vect : `LDASTools.frameCPP.FrVect`
        the frame vector structur to read

    start : `float`
        the GPS start time of the request

    end : `float`
        the GPS end time of the request

    epoch : `float`
        the GPS start time of the containing `FrData` structure

    name : `str`, optional
        the name of the output `series_class`; this is also used
        to ignore ``FrVect`` structures containing other information

    series_class : `type`, optional
        the `Series` sub-type to return.

    Returns
    -------
    series : `~gwpy.timeseries.TimeSeriesBase`
        the formatted data series

    Raises
    ------
    _Skip
        if this vect doesn't overlap with the requested
        ``[start, end)`` interval, or the name doesn't match.