def test_query_dqsegdb(self): try: flag = DataQualityFlag.query_dqsegdb( QUERY_FLAG, QUERY_START, QUERY_END, url=QUERY_URL) except (ImportError, URLError) as e: self.skipTest(str(e)) else: self.assertEqual(flag.known, QUERY_KNOWN) self.assertEqual(flag.active, QUERY_ACTIVE)
def test_query_dqsegdb_multi(self): querymid = int(QUERY_START + (QUERY_END - QUERY_START) /2.) segs = SegmentList([Segment(QUERY_START, querymid), Segment(querymid, QUERY_END)]) try: flag = DataQualityFlag.query_dqsegdb( QUERY_FLAG, segs, url=QUERY_URL) except (ImportError, URLError) as e: self.skipTest(str(e)) else: self.assertEqual(flag.known, QUERY_KNOWN) self.assertEqual(flag.active, QUERY_ACTIVE)
def write_segs(flag, st, et, directory='./'): """ Write segments to a file saved in: `directory/flag-st-duration` Parameters ---------- flag : `str` DQ flag to query database for st : `int` start time et : `int` end time directory : `str`, optional, default='./' top level directory for saving segments """ segments = DataQualityFlag.query_dqsegdb(flag, st, et, url='https://segments.ligo.org') directory = get_directory_structure('SEGMENTS', st, directory=directory) segments.write('%s/%s-%d-%d.xml.gz' % (directory, flag, st, (et - st)))
# set up channel name for grabbing data channel = ['%s,m-trend' % args.channel] # Threshold used to generate this flag thresh = 190 #nm/s # set up segment file name chan = channel[0].replace(':', '_') segment_file = 'L1_EARTHQUAKE_GT_%s_%s-%s.xml' % (thresh, args.start, abs(args.end-args.start)) # name the DQ flag optic = channel[0].split('_')[2] flag_name = 'L1:DCH-EQ_%s_GT_%s:1' % (optic, thresh) # grab all observing (or whatever is defined) time active = DataQualityFlag.query_dqsegdb(args.science, args.start, args.end).active # grab only data for the STS channel in observing time data = get_timeseries_dict(channel, active, frametype='L1_M') # find times above threshold time = [j.times[j > thresh] for j in data[channel[0]]] times = numpy.concatenate(time) # put all times above threshold in to segments segs = segments.segmentlist() segs.extend([segments.segment(int(t.value), int(t.value)+args.stride) for t in times]) segs = segs.coalesce() # set up the xml file by making a list of the start and end times of the flag start_time = []
def write_segs(flag, st, et, directory='./'): segments = DataQualityFlag.query_dqsegdb(flag, st, et, url='https://segments.ligo.org') directory = get_directory_structure('SEGMENTS', st, directory=directory) segments.write('%s/%s-%d-%d.xml.gz' % (directory, flag, st, (et - st)))
'value (optional)') parser.add_argument('-st', '--stride', type=float, default=1, help='Stide for the flag (s) (optional)') args = parser.parse_args() # Define the ALS channels needed channels = ['H1:ALS-X_TR_A_LF_OUT16','H1:ALS-Y_TR_A_LF_OUT16'] # Define the segment file name and flag name segment_file = 'H1_ALS_UNSHUTTERED_%s-%s.xml' % (args.start, abs(args.end-args.start)) flag_name = 'H1:DCH-ALS_UNSHUTTERED:1' # Find times when the low noise flag is active active = DataQualityFlag.query_dqsegdb(args.low_noise, args.start, args.end).active # Grab ALS channel data only during low noise time als = get_timeseries_dict(channels, active, frametype='H1_R') # Define empty segment list segs = segments.segmentlist() # loop over channels and find times when the timseries of each channel strays # +/- threshold for c in channels: # Find times when the timeseries > threshold time1 = [j.times[j.value > args.threshold] for j in als[c]] time1 = numpy.concatenate(time1) # Find times when the timeseries < -threshold
'tstop': 1, 'tcent': 2, 'fcent': 3, 'uenergy': 4, 'nenergy': 5, 'npix': 6, 'signif': 7, } col = col_kw.copy() ### Read in channels with open(channellist) as f: channels = f.read().splitlines() print(channels) locktimes = DataQualityFlag.query_dqsegdb(flag, gpsstart, gpsstop) print("Locktimes") print(locktimes.active) for i, seg in enumerate(locktimes.active): #Loop through lock segments print("Locksegment %d: %d-%d" % (i, seg[0], seg[1])) if (seg[1] - seg[0]) <= fftlength: #Ignore lock segments that are too short continue ### Get triggers print("Collecting triggers for labelling") trig_files = idq.get_all_files_in_range(trigger_dir, seg[0], seg[1], pad=0, suffix='.trg') trigger_dict = event.loadkwm(trig_files)