Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
    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
Ejemplo n.º 15
0
    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
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
0
    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
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
    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
Ejemplo n.º 20
0
    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
Ejemplo n.º 21
0
    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
Ejemplo n.º 22
0
    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
Ejemplo n.º 23
0
    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
Ejemplo n.º 24
0
    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
Ejemplo n.º 25
0
    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
Ejemplo n.º 26
0
 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
Ejemplo n.º 27
0
 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
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
    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
Ejemplo n.º 30
0
 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
Ejemplo n.º 31
0
    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
Ejemplo n.º 32
0
    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
Ejemplo n.º 33
0
    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
Ejemplo n.º 34
0
    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
Ejemplo n.º 35
0
    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
Ejemplo n.º 36
0
    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
Ejemplo n.º 37
0
    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