def read(source, channels, start=None, end=None, series_class=TimeSeries,<EOL>scaled=None):
<EOL>if scaled is not None:<EOL><INDENT>warnings.warn(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>",<EOL>)<EOL><DEDENT>stream = open_data_source(source)<EOL>epoch = lal.LIGOTimeGPS(stream.epoch.gpsSeconds,<EOL>stream.epoch.gpsNanoSeconds)<EOL>streamdur = get_stream_duration(stream)<EOL>if start is None:<EOL><INDENT>start = epoch<EOL><DEDENT>else:<EOL><INDENT>start = max(epoch, lalutils.to_lal_ligotimegps(start))<EOL><DEDENT>if end is None:<EOL><INDENT>offset = float(start - epoch)<EOL>duration = streamdur - offset<EOL><DEDENT>else:<EOL><INDENT>end = min(epoch + streamdur, lalutils.to_lal_ligotimegps(end))<EOL>duration = float(end - start)<EOL><DEDENT>out = series_class.DictClass()<EOL>for name in channels:<EOL><INDENT>out[name] = series_class.from_lal(<EOL>_read_channel(stream, str(name), start=start, duration=duration),<EOL>copy=False)<EOL>lalframe.FrStreamSeek(stream, epoch)<EOL><DEDENT>return out<EOL>
Read data from one or more GWF files using the LALFrame API