Ejemplo n.º 1
0
    def __setattr__(self, name, value):
        self.__dict__[name] = value

        if (name == 'observation_number' and value is not None):
            # if the observation_number is set, compute everything else

            self._settimes_fromgps()

            if (self.db is None):
                return

            try:
                self._MWA_Setting = schedule.MWA_Setting(
                    self.observation_number, db=self.db)
            except (psycopg2.InternalError, psycopg2.ProgrammingError), e:
                logger.warning('Database error=%s' % (e.pgerror))
                db.rollback()
            if (self._MWA_Setting.stoptime == 0):
                logger.error('MWA_Setting for %d has stoptime=0' %
                             (self.observation_number))

            self.duration = self._MWA_Setting.stoptime - self._MWA_Setting.starttime
            self.filename = self._MWA_Setting.obsname
            try:
                self.inttime = self._MWA_Setting.int_time
                self.fine_channel = self._MWA_Setting.freq_res
            except:
                pass

            try:
                self._RFstream = schedule.RFstream(self.observation_number,
                                                   db=self.db)
            except (psycopg2.InternalError, psycopg2.ProgrammingError), e:
                logger.warning('Database error=%s' % (e.pgerror))
                db.rollback()
Ejemplo n.º 2
0
def find_closest_observation(gpstime, maxdiff=10, db=db):
    """
    observation_num=find_closest_observation(gpstime, maxdiff=10,db=db)
    finds a scheduled MWA_Setting object at the time nearest the gpstime
    that has a valid stoptime
    will search up to +/-maxdiff seconds
    """
    if schedule.MWA_Setting(int(gpstime), db=db).stoptime > 0:
        logger.info(
            'Found matching observation in MWA_Setting database at GPS time=%d\n'
            % (gpstime))
        return gpstime
    for searchtime in xrange(
            int(gpstime) - maxdiff,
            int(gpstime) + maxdiff + 1):
        if schedule.MWA_Setting(int(searchtime), db=db).stoptime > 0:
            logger.info(
                'Found matching observation for GPS time %d in MWA_Setting database at GPS time=%d (difference=%d s)\n'
                % (gpstime, searchtime, searchtime - gpstime))
            return searchtime
    return None
Ejemplo n.º 3
0
        observations=dbobj.execute('select starttime from mwa_setting where starttime>=%d and starttime<%d order by starttime' % (starttime, stoptime),
                                   db=db)
    except (psycopg2.InternalError, psycopg2.ProgrammingError) , e:
        logger.warning('Database error=%s' % (e.pgerror))
        db.rollback()
        return None

    logger.info('%d observations found' % (len(observations)))
    starttimes=[]
    stoptimes=[]
    obsnames=[]
    calibrators=[]
    projects=[]
    for observation in observations:
        try:
            s=schedule.MWA_Setting(observation[0], db=db)
        except (psycopg2.InternalError, psycopg2.ProgrammingError) , e:
            logger.warning('Database error=%s' % (e.pgerror))
            db.rollback()
            return None

        starttimes.append(s.starttime)
        stoptimes.append(s.stoptime)
        obsnames.append(s.obsname)
        projects.append(s.projectid)
        try:
            m=schedule.Schedule_Metadata(observation[0], db=db)
        except (psycopg2.InternalError, psycopg2.ProgrammingError) , e:
            logger.warning('Database error=%s' % (e.pgerror))
            db.rollback()
            return None