def ligolw_sicluster(doc, **kwargs): # Extract segments and tables inseg, outseg, snglinspiraltable = get_tables(doc) # Add process information try: process = append_process(doc, **kwargs) except ValueError: process = None # Delete all triggers below threshold if kwargs["snr_threshold"] > 0: thresh = float(kwargs["snr_threshold"]) if kwargs["verbose"]: print >>sys.stderr, "discarding triggers with snr < %f ..." % \ kwargs["snr_threshold"] for i in range(len(snglinspiraltable) - 1, -1, -1): if snglinspiraltable[i].snr <= thresh: del snglinspiraltable[i] # Cluster snglcluster.cluster_events( snglinspiraltable, testfunc=lambda a, b: SnglInspiralUtils.CompareSnglInspiral( a, b, twindow=kwargs["cluster_window"]), clusterfunc=SnglInspiralCluster, sortfunc=SnglInspiralUtils.CompareSnglInspiralByEndTime, bailoutfunc=lambda a, b: SnglInspiralUtils.CompareSnglInspiral( a, b, twindow=kwargs["cluster_window"]), verbose=kwargs["verbose"]) # Sort by signal-to-noise ratio if kwargs["sort_ascending_snr"] or kwargs["sort_descending_snr"]: if kwargs["verbose"]: print >> sys.stderr, "sorting by snr ..." snglinspiraltable.sort(SnglInspiralUtils.CompareSnglInspiralBySnr) if kwargs["sort_descending_snr"]: snglinspiraltable.reverse() # Add search summary information if process and inseg and outseg: ligolw_search_summary.append_search_summary( doc, process, inseg=inseg, outseg=outseg, nevents=len(snglinspiraltable)) if process: ligolw_process.set_process_end_time(process) return doc
def InspiralNearCoincCompare(sim, inspiral): """ Return False if the peak time of the sim is within 9 seconds of the inspiral event. """ return SnglInspiralUtils.CompareSnglInspiral(sim, inspiral, twindow=LIGOTimeGPS(9))