def libPESkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that LIB PE posted a skymap looks for the existence of a skymap and the correct tagnames """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) fitsname = "LIB.fits.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def libPEPostSamp(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that LIB PE posted posterior samples NOTE: this is likely associated with the same log message as libPEFinishCheck and it is not clear that we should seprate them as we have... """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) filename = "posterior_samples.dat" self.warning, action_required = esUtils.check4file( graceid, gdb, filename, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def oLIBTrigger(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ event creation sanity check for oLIB we check for the existence of : %(gpstime).2f-(.*).json while ignoring log messsages and tagnames """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) logger.debug( "retrieving event details" ) event = gdb.event( graceid ).json() ### we need the gpstime, so we query template = "%.2f-(.*).json"%event['gpstime'] ### NOTE: may be fragile template = template.replace('.00', '.0') ### This is required because of the peculiarities of how oLIB ### names things when the event lands on an integer second self.warning, action_required = esUtils.check4file( graceid, gdb, template, tagnames=None, verbose=verbose, regex=True, logTag=logger.name if verbose else None ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def idqActiveChanPlot(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ check that iDQ uploaded a plot of possible active channels """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) figname = "%s_%s(.*)_chanstrip-(.*)-(.*).png"%(self.ifo, self.classifier) ### NOTE: this may be fragile fragment = "iDQ channel strip chart for %s at %s"%(self.classifier, self.ifo) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, figname, regex=True, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=False, logTag=logger.name if logger else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def skyviewer(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that plotting jobs ran and tagged figures properly """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) logger.debug("retrieving files") jsonname = "%s.json" % self.fitsname[:-8] if self.fitsname.endswith( '.fits.gz') else "%s.json" % self.fitsname[:-5] self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def cWBTrigger(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ query GraceDB to check for proper event creation we check for the existence of: trigger_%(gpstime).4f.txt while ignoring log messages and tagnames """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) logger.debug( "retrieving event details" ) event = gdb.event( graceid ).json() ### we need the gpstime, so we query filename = "trigger_%.4f.txt"%event['gpstime'] ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, filename, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def idqROCPlot(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that iDQ reported preformance metrics as expected """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) figname = "%s_%s(.*)_ROC-(.*)-(.*).png"%(self.ifo, self.classifier) ### NOTE: this may be fragile fragment = "iDQ local ROC figure for %s at %s"%(self.classifier, self.ifo) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, figname, regex=True, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def cbcCoinc(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ check for coinc.xml file via direct string comparison while ignoring log comments and tagnames """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) filename = "coinc.xml" self.warning, action_required = esUtils.check4file( graceid, gdb, filename, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def segDB2grcDBAny(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that segDB2grcDB uploaded the query for any active segments """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) jsonname = "allActive-(.*)-(.*).json" self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, regex=True, tagnames=None, verbose=verbose, logFragment=None, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def segDB2grcDBFlag(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that segDB2grcDB uploaded the expected individual flags by requiring xml.gz files to exist (with expected nomenclature) """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) flagname = self.flag.split(":") flagname = "%s-%s-(.*)-(.*).xml.gz"%(flagname[0], "_".join(_.replace("-","_") for _ in flagname[1:])) self.warning, action_required = esUtils.check4file( graceid, gdb, flagname, regex=True, tagnames=None, verbose=verbose, logFragment=None, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def idqTables(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that iDQ reported the xml tables as expected """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) filename = "%s_idq_%s(.*)-(.*)-(.*).xml.gz"%(self.ifo, self.classifier) ### NOTE: this may be fragile fragment = "iDQ glitch tables %s:"%(self.ifo) ### NOTE: this is bad... but it's what we have at the moment within iDQ self.warning, action_required = esUtils.check4file( graceid, gdb, filename, regex=True, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def idqRank(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that iDQ reported the gltich-FAP as expected """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) jsonname = "%s_%s_maxRANK_%s-(.*)-(.*).json"%(self.ifo, self.classifier, graceid) ### NOTE: this may be fragile fragment = "maximum glitch-RANK for %s at %s within \[(.*), (.*)\] is (.*)"%(self.classifier, self.ifo) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, regex=True, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=True, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def idqRankFrame(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ check that iDQ uploads rank timeseries files """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) framename = "%s_idq_%s_rank(.*)-(.*)-(.*).gwf"%(self.ifo, self.classifier) ### NOTE: this may be fragile fragment = "iDQ glitch-rank frame for %s at %s within \[(.*), (.*)\] :"%(self.classifier, self.ifo) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, framename, regex=True, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=True, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def omegaScanData(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that OmegaScans uploaded data """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) jsonname = "%s.json"%self.chanset self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, regex=False, tagnames=None, verbose=verbose, logFragment=None, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def skyviewer(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that plotting jobs ran and tagged figures properly """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) logger.debug( "retrieving files") jsonname = "%s.json"%self.fitsname[:-8] if self.fitsname.endswith('.fits.gz') else "%s.json"%self.fitsname[:-5] self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def plotSkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that plotting jobs ran and tagged figures properly """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) figname = "%s.png"%(self.fitsname.split('.')[0]) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, figname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None, ) ### looK for the figure if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def bayestarNoVirgoSkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that bayestar produced a skymap which excludes virgo Only checks for a skymap iff Virgo is present in the instrument list. Otherwise, ignores this event (return False) looks for the existence of a skymap and the correct tagnames """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) ### FIXME: the following might be fragile... if 'V1' not in gdb.event(graceid).json()['instruments'].split(','): if verbose or annotate: message = 'no action required : V1 not in list of instruments and therefore existence of bayestar_no_virgo.fits.gz is irrelevant' if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return False ### not the trigger set I was expecting fitsname = "bayestar_no_virgo.fits.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def emBright(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that emBright posted a result WARNING: currently only check for a file and do not check for log message or tags """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) jsonname = "Source_Classification_%s.json"%(graceid) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, regex=False, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def oLIBTrigger(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ event creation sanity check for oLIB we check for the existence of : %(gpstime).2f-(.*).json while ignoring log messsages and tagnames """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) logger.debug("retrieving event details") event = gdb.event(graceid).json() ### we need the gpstime, so we query template = "%.2f-(.*).json" % event[ 'gpstime'] ### NOTE: may be fragile template = template.replace( '.00', '.0' ) ### This is required because of the peculiarities of how oLIB ### names things when the event lands on an integer second self.warning, action_required = esUtils.check4file( graceid, gdb, template, tagnames=None, verbose=verbose, regex=True, logTag=logger.name if verbose else None) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def cbcPSD(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ check for existence of psd.xml.gz file while ignoring log comments and tagnames. if psd.xml.gz exists, we ensure that a string representation is longer than self.psdStrLenThr via len(gdb.files(graceid, filename).read()) < self.psdStrLenThr) this hopefully ensures the PSD is not "empty" or mal-formatted, although it is a pretty loose constraint. """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) filename = "psd.xml.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, filename, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None) # found the file check it's length if (not action_required) and ( len(gdb.files(graceid, filename).read()) < self.psdStrLenThr ): ### found file, but need to check whether it's empty self.warning += ". However, the file's size seems suspiciously small." action_required = True if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def bayestarNoVirgoSkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that bayestar produced a skymap which excludes virgo Only checks for a skymap iff Virgo is present in the instrument list. Otherwise, ignores this event (return False) looks for the existence of a skymap and the correct tagnames """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) ### FIXME: the following might be fragile... if 'V1' not in gdb.event(graceid).json()['instruments'].split(','): if verbose or annotate: message = 'no action required : V1 not in list of instruments and therefore existence of bayestar_no_virgo.fits.gz is irrelevant' if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return False ### not the trigger set I was expecting fitsname = "bayestar_no_virgo.fits.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def snglFITShtml(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that snglFITS posted an html as expected """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) htmlname = "%s-skymapSummary.html" % (self.fitsname.split('.fits')[0] ) ### NOTE: this may be fragile fragment = "skymap summary for .*%s.*can be found.*here.*" % ( self.fitsname) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, htmlname, regex=False, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=True, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def cWBTrigger(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ query GraceDB to check for proper event creation we check for the existence of: trigger_%(gpstime).4f.txt while ignoring log messages and tagnames """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) logger.debug("retrieving event details") event = gdb.event(graceid).json() ### we need the gpstime, so we query filename = "trigger_%.4f.txt" % event[ 'gpstime'] ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, filename, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def multFITShtml(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that multFITS posted an htmlas expected """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) htmlname = "%s-skymapComparison.html" % ( graceid) ### NOTE: this may be fragile fragment = "comparison of skymaps can be found <a href=\"(.*)\">here</a>" self.warning, action_required = esUtils.check4file( graceid, gdb, htmlname, regex=False, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=True, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def segDB2grcDBFlag(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that segDB2grcDB uploaded the expected individual flags by requiring xml.gz files to exist (with expected nomenclature) """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) flagname = self.flag.split(":") flagname = "%s-%s-(.*)-(.*).xml.gz" % (flagname[0], "_".join( _.replace("-", "_") for _ in flagname[1:])) self.warning, action_required = esUtils.check4file( graceid, gdb, flagname, regex=True, tagnames=None, verbose=verbose, logFragment=None, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def bayeswavePESkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that BayesWave PE posted a skymap """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) fitsname = "BayesWave.fits.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def bayestarSkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that bayestar produced a skymap looks for the existence of a skymap and the correct tagnames """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) fitsname = "bayestar.fits.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def omegaScanData(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that OmegaScans uploaded data """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) jsonname = "%s.json" % self.chanset self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, regex=False, tagnames=None, verbose=verbose, logFragment=None, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def segDB2grcDBAny(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that segDB2grcDB uploaded the query for any active segments """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) jsonname = "allActive-(.*)-(.*).json" self.warning, action_required = esUtils.check4file( graceid, gdb, jsonname, regex=True, tagnames=None, verbose=verbose, logFragment=None, logRegex=False, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def libPEPostSamp(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that LIB PE posted posterior samples NOTE: this is likely associated with the same log message as libPEFinishCheck and it is not clear that we should seprate them as we have... """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) filename = "posterior_samples.dat" self.warning, action_required = esUtils.check4file( graceid, gdb, filename, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def plotSkymap(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that plotting jobs ran and tagged figures properly """ if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) figname = "%s.png" % (self.fitsname.split('.')[0] ) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, figname, tagnames=self.tagnames, verbose=verbose, logTag=logger.name if verbose else None, ) ### looK for the figure if verbose or annotate: ### format message if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning ### post message if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def lalinfPostSamp(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that LALInference posted posterior samples NOT IMPLEMENTED """ raise NotImplementedError("not sure what the posterior_samples filename is for lalinference follow-ups...") if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) filename = "posterior_samples.dat" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def lalinfPostSamp(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that LALInference posted posterior samples NOT IMPLEMENTED """ raise NotImplementedError( "not sure what the posterior_samples filename is for lalinference follow-ups..." ) if verbose: logger = esUtils.genTaskLogger(self.logDir, self.name, logTag=self.logTag) logger.info("%s : %s" % (graceid, self.description)) filename = "posterior_samples.dat" self.warning, action_required = esUtils.check4file( graceid, gdb, fitsname, verbose=verbose, logTag=logger.name if verbose else None) if verbose or annotate: if action_required: message = "action required : " + self.warning else: message = "no action required : " + self.warning if verbose: logger.debug(message) if annotate: esUtils.writeGDBLog(gdb, graceid, message) return action_required
def cbcCoinc(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ check for coinc.xml file via direct string comparison while ignoring log comments and tagnames """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) filename = "coinc.xml" self.warning, action_required = esUtils.check4file( graceid, gdb, filename, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def cbcPSD(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ check for existence of psd.xml.gz file while ignoring log comments and tagnames. if psd.xml.gz exists, we ensure that a string representation is longer than self.psdStrLenThr via len(gdb.files(graceid, filename).read()) < self.psdStrLenThr) this hopefully ensures the PSD is not "empty" or mal-formatted, although it is a pretty loose constraint. """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) filename = "psd.xml.gz" self.warning, action_required = esUtils.check4file( graceid, gdb, filename, tagnames=None, verbose=verbose, logTag=logger.name if verbose else None ) # found the file check it's length if (not action_required) and (len(gdb.files(graceid, filename).read()) < self.psdStrLenThr): ### found file, but need to check whether it's empty self.warning += ". However, the file's size seems suspiciously small." action_required = True if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def snglFITShtml(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that snglFITS posted an html as expected """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) htmlname = "%s-skymapSummary.html"%(self.fitsname.split('.fits')[0]) ### NOTE: this may be fragile fragment = "skymap summary for .*%s.*can be found.*here.*"%(self.fitsname) ### NOTE: this may be fragile self.warning, action_required = esUtils.check4file( graceid, gdb, htmlname, regex=False, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=True, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required
def multFITShtml(self, graceid, gdb, verbose=False, annotate=False, **kwargs): """ a check that multFITS posted an htmlas expected """ if verbose: logger = esUtils.genTaskLogger( self.logDir, self.name, logTag=self.logTag ) logger.info( "%s : %s"%(graceid, self.description) ) htmlname = "%s-skymapComparison.html"%(graceid) ### NOTE: this may be fragile fragment = "comparison of skymaps can be found <a href=\"(.*)\">here</a>" self.warning, action_required = esUtils.check4file( graceid, gdb, htmlname, regex=False, tagnames=None, verbose=verbose, logFragment=fragment, logRegex=True, logTag=logger.name if verbose else None, ) if verbose or annotate: ### format message if action_required: message = "action required : "+self.warning else: message = "no action required : "+self.warning ### post message if verbose: logger.debug( message ) if annotate: esUtils.writeGDBLog( gdb, graceid, message ) return action_required