diff --git a/gstlal-burst/python/excesspower/utils.py b/gstlal-burst/python/excesspower/utils.py index 246f8ea9fdcb875ac5a8550d7317dbddc5e68dc0..5ef695c9a13beaa6e63d429883fbcefbdfe87734 100644 --- a/gstlal-burst/python/excesspower/utils.py +++ b/gstlal-burst/python/excesspower/utils.py @@ -27,8 +27,8 @@ from scipy.stats import chi2, poisson, mannwhitneyu, norm from pylal import datatypes as laltypes -from glue import lal -from glue.segments import segment, segmentlist +from lal.utils import CacheEntry +from ligo import segments # # ============================================================================= @@ -104,14 +104,14 @@ class SBStats(object): Calculate the Poissonian significance of the 'on source' trial set for up to the loudest nevents. """ - offtime = float(abs(segmentlist(self.offsource.keys()))) + offtime = float(abs(segments.segmentlist(self.offsource.keys()))) offsource = sorted(chain(*self.offsource.values()), key=lambda sb: -sb.snr ) offrate = zip(offsource, map(lambda i:i/offtime, range(1, len(offsource)+1))) offrate = offrate[::-1] offsource = offsource[::-1] offsnr = [sb.snr for sb in offsource] - ontime = float(abs(segmentlist(self.onsource.keys()))) + ontime = float(abs(segments.segmentlist(self.onsource.keys()))) if ontime == 0: return [] onsource = sorted(chain(*self.onsource.values()), key=lambda sb: -sb.snr) @@ -133,14 +133,14 @@ class SBStats(object): if rank_fcn is None: rank_fcn = lambda e: e.snr - offtime = float(abs(segmentlist(self.offsource.keys()))) + offtime = float(abs(segments.segmentlist(self.offsource.keys()))) offsource = sorted(chain(*self.offsource.values()), key=lambda sb: -sb.snr) offrate = zip(offsource, map( lambda i:i/offtime, range(1, len(offsource)+1))) offrate = offrate[::-1] offsource = offsource[::-1] offsnr = map(rank_fcn, offsource) - ontime = float(abs(segmentlist(self.onsource.keys()))) + ontime = float(abs(segments.segmentlist(self.onsource.keys()))) if ontime == 0: return [] onsource = sorted(chain(*self.onsource.values()), key=lambda sb: -sb.snr) @@ -195,12 +195,12 @@ class SBStats(object): """ Redistribute events to offsource and onsource based on current time span. """ - all_segs = segmentlist(self.onsource.keys()) + all_segs = segments.segmentlist(self.onsource.keys()) if len(all_segs) == 0: return if len(self.offsource.keys()) > 0: - all_segs += segmentlist(self.offsource.keys()) + all_segs += segments.segmentlist(self.offsource.keys()) all_segs.coalesce() begin, end = all_segs[0][0], all_segs[-1][1] span = float(end-begin) @@ -211,8 +211,8 @@ class SBStats(object): if span > self.offsource_interval + self.onsource_interval: begin = end - (self.offsource_interval + self.onsource_interval) - onsource_seg = segment(end-self.onsource_interval, end) - offsource_seg = segment(begin, end-self.onsource_interval) + onsource_seg = segments.segment(end-self.onsource_interval, end) + offsource_seg = segments.segment(begin, end-self.onsource_interval) for seg, sbt in self.offsource.items(): try: @@ -260,9 +260,9 @@ class SBStats(object): for sb in sbtable: start = sb.start_time + 1e-9*sb.start_time_ns stop = sb.start_time + sb.duration - inseg.append(segment(start, stop)) - inseg = segmentlist(inseg).coalesce() - inseg = segment(inseg[0][0], inseg[-1][1]) + inseg.append(segments.segment(start, stop)) + inseg = segments.segmentlist(inseg).coalesce() + inseg = segments.segment(inseg[0][0], inseg[-1][1]) oldsegs = filter(lambda s: s.intersects(inseg), self.onsource.keys()) @@ -292,27 +292,24 @@ def subdivide(seglist, length, min_length=0): newlist = [] for seg in seglist: while abs(seg) - min_length > length + min_length: - newlist.append(segment(seg[0], seg[0]+length)) - seg = segment(seg[0] + length, seg[1]) + newlist.append(segments.segment(seg[0], seg[0]+length)) + seg = segments.segment(seg[0] + length, seg[1]) if abs(seg) > 0: - newlist.append(segment(seg[0], seg[1] - min_length)) - newlist.append(segment(seg[1] - min_length, seg[1])) + newlist.append(segments.segment(seg[0], seg[1] - min_length)) + newlist.append(segments.segment(seg[1] - min_length, seg[1])) - return segmentlist(newlist) + return segments.segmentlist(newlist) def duration_from_cache(cachen): """ Determine the spanned duration of a cachefile - FIXME: Replace with the method to_segmentlistdict """ - with open(cachen) as cachef: - cache = lal.Cache.fromfile(open(cachef)) - duration = cache[0].segment - for entry in cache[1:]: - duration |= entry.segment - - return duration[0], abs(duration) + segs = segments.segmentlistdict() + for entry in map(CacheEntry, open(cachef)): + segs |= entry.segmentlistdict + segs = segs.union(segs) + return segs[0], abs(segs) def determine_thresh_from_fap(fap, ndof = 2): """ @@ -329,7 +326,7 @@ def determine_segment_with_whitening(analysis_segment, whiten_seg): if analysis_segment in whiten_seg: # All the analyzed time is within the settling time # We make this explicit because the segment constructor will just reverse the arguments if arg2 < arg1 and create an incorrect segment - analysis_segment = segment(analysis_segment[1], analysis_segment[1]) + analysis_segment = segments.segment(analysis_segment[1], analysis_segment[1]) else: analysis_segment -= whiten_seg return analysis_segment diff --git a/gstlal/python/pipeline.py b/gstlal/python/pipeline.py index cba86cac7f464f882db9ede6ecfd784cd6256904..7d8114c1c4abdabb44cbd02e2333f0903ff1ff9a 100644 --- a/gstlal/python/pipeline.py +++ b/gstlal/python/pipeline.py @@ -21,9 +21,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. from __future__ import print_function __author__ = 'Duncan Brown <duncan@gravity.phys.uwm.edu>' -from glue import git_version -__date__ = git_version.date -__version__ = git_version.id +from . import __date__, __version__ from collections import OrderedDict import os