def common_limits(datasets, default_min=0, default_max=0): """Find the global maxima and minima of a list of datasets. Parameters ---------- datasets : `iterable` list (or any other iterable) of data arrays to analyse. default_min : `float`, optional fall-back minimum value if datasets are all empty. default_max : `float`, optional fall-back maximum value if datasets are all empty. Returns ------- (min, max) : `float` 2-tuple of common minimum and maximum over all datasets. """ from glue import iterutils if isinstance(datasets, numpy.ndarray) or not iterable(datasets[0]): datasets = [datasets] max_stat = max(list(iterutils.flatten(datasets)) + [-numpy.inf]) min_stat = min(list(iterutils.flatten(datasets)) + [numpy.inf]) if numpy.isinf(-max_stat): max_stat = default_max if numpy.isinf(min_stat): min_stat = default_min return min_stat, max_stat
def common_limits(data_sets, default_min=0, default_max=0): """Find the global maxima and minima of a list of datasets """ max_stat = max(list(iterutils.flatten(data_sets)) + [-numpy.inf]) min_stat = min(list(iterutils.flatten(data_sets)) + [numpy.inf]) if numpy.isinf(-max_stat): max_stat = default_max if numpy.isinf(min_stat): min_stat = default_min return min_stat, max_stat
def determine_common_bin_limits(data_sets, default_min=0, default_max=0): """ Given a some nested sequences (e.g. list of lists), determine the largest and smallest values over the data sets and determine a common binning. """ max_stat = max(list(iterutils.flatten(data_sets)) + [-numpy.inf]) min_stat = min(list(iterutils.flatten(data_sets)) + [numpy.inf]) if numpy.isinf(-max_stat): max_stat = default_max if numpy.isinf(min_stat): min_stat = default_min return min_stat, max_stat
def get_slide_coincs_from_cache(cachefile, pattern, match, verb, coinc_stat): full_coinc_table = [] cache = cachefile.sieve(description=pattern, exact_match=match) found, missed = cache.checkfilesexist() files = found.pfnlist() if not len(files): print >>sys.stderr, "cache contains no files with " + pattern + " description" return None # split the time slide files into 105 groups to aid with I/O num_files=len(files) #Changed by Tristan Miller as a memory fix #groups_of_files = split_seq(files,105) groups_of_files = split_seq(files,50) for filegroup in groups_of_files: if filegroup: # extract the coinc table coinc_table = SnglInspiralUtils.ReadSnglInspiralFromFiles(filegroup, mangle_event_id=False, verbose=verb, non_lsc_tables_ok=False) segDict = SearchSummaryUtils.GetSegListFromSearchSummaries(filegroup) rings = segments.segmentlist(iterutils.flatten(segDict.values())) rings.sort() for k,ring in enumerate(rings): rings[k] = segments.segment(rings[k][0], rings[k][1] + 10**(-9)) shift_vector = {"H1": 0, "H2": 0, "L1": 5, "V1": 5} if coinc_table: SnglInspiralUtils.slideTriggersOnRingWithVector(coinc_table, shift_vector, rings) full_coinc_table.extend(CoincInspiralUtils.coincInspiralTable(coinc_table,coinc_stat)) return full_coinc_table
def ReadSnglInspiralSlidesFromFiles(fileList, shiftVector, vetoFile=None, verbose=False): """ Function for reading time-slided single inspiral triggers with automatic resliding the times, given a list of input files. @param fileList: List of files containing single inspiral time-slided triggers @param shiftVector: Dictionary of time shifts to apply to triggers keyed by IFO @param vetoFile: segwizard formatted file used to veto all triggers @param verbose: print progress """ # NOTE: This function also will not mangle (reassign) lalapps_thinca # style event IDs (see the previous function). # Hence it will fail if fed event ID-related options. # read raw triggers inspTriggers = ReadSnglInspiralFromFiles(fileList, verbose=verbose) if inspTriggers: # get the rings segDict = SearchSummaryUtils.GetSegListFromSearchSummaries(fileList) rings = segments.segmentlist(iterutils.flatten(segDict.values())) rings.sort() # perform the veto if vetoFile is not None: segList = segmentsUtils.fromsegwizard(open(vetoFile)) inspTriggers = inspTriggers.veto(segList) # now slide all the triggers within their appropriate ring slideTriggersOnRingWithVector(inspTriggers, shiftVector, rings) # return the re-slided triggers return inspTriggers