def readWindFile(self, file): """ Parsing this file is straight forward: we'll need the timestamp and *scalar* quantities from each row. """ # read cleo forecast (ground) print 'Process cleo forecast data (ground) ...', file f = open(file, 'r') lines = f.readlines() header = lines[0] assert header.strip() == windFileHeader.strip() for line in lines[1:]: row = line.split(' ') timestamp = TimeAgent.hour(TimeAgent.mjd2dt(float(row[0]))) #mjd self.data[timestamp] = {} # what forecast type will this be? self.data[timestamp]['forecast_type_id'] = \ self.getForecastTypeIdFromTimestamp(timestamp) self.readWindFileValues(header, timestamp, row) # Note: we'll stop doing this eventually, but for now: # need to insert a corrected wind speed into the DB. speed_mph = self.data[timestamp]['speed_mph'] self.data[timestamp]['speed_ms'] = \ self.dbimport.correctWindSpeed(timestamp , self.mph2mps(speed_mph)) f.close()
def readAtmoFile(self, file): """ Parsing this file is more complicated, because each row contains *vector* quantities. """ # read cleo forecast (atmosphere) print 'Process cleo forecast data (atmosphere) ... ', file f = open(file, 'r') lines = f.readlines() header = lines[0] assert header.strip() == freqFileHeader.strip() first = lines[0].split(' ') lines = lines[1:] for line in lines: row = line.split(' ') timestamp = TimeAgent.hour(TimeAgent.mjd2dt(float(row[0]))) #mjdt1 if not self.data.has_key(timestamp): self.reportLine("ERROR: No wind data for %s\n" % timestamp) continue # frequencies self.data[timestamp]['freqs'] = [] # OpacityTime<freq>List_avrg self.data[timestamp]['tauCleo'] = [] # TsysTime<freq>List_avrg self.data[timestamp]['tSysCleo'] = [] # TatmTime<freq>List_avrg self.data[timestamp]['tAtmCleo'] = [] num = self.numAtmoFreqs for i in range(num): #print first[ifreq+1], first[ifreq+51], first[ifreq+101] self.data[timestamp]['freqs'].append(self.atmoFreqs[i]) self.data[timestamp]['tauCleo'].append(float(row[i + 1])) self.data[timestamp]['tSysCleo'].append(float(row[i + num + 1])) self.data[timestamp]['tAtmCleo'].append( float(row[i + (num * 2) + 1])) f.close()
def readAtmoFile(self, file): """ Parsing this file is more complicated, because each row contains *vector* quantities. """ # read cleo forecast (atmosphere) print 'Process cleo forecast data (atmosphere) ... ', file f = open(file, 'r') lines = f.readlines() header = lines[0] assert header.strip() == freqFileHeader.strip() first = lines[0].split(' ') lines = lines[1:] for line in lines: row = line.split(' ') timestamp = TimeAgent.hour(TimeAgent.mjd2dt(float(row[0]))) #mjdt1 if not self.data.has_key(timestamp): self.reportLine("ERROR: No wind data for %s\n" % timestamp) continue # frequencies self.data[timestamp]['freqs'] = [] # OpacityTime<freq>List_avrg self.data[timestamp]['tauCleo'] = [] # TsysTime<freq>List_avrg self.data[timestamp]['tSysCleo'] = [] # TatmTime<freq>List_avrg self.data[timestamp]['tAtmCleo'] = [] num = self.numAtmoFreqs for i in range(num): #print first[ifreq+1], first[ifreq+51], first[ifreq+101] self.data[timestamp]['freqs'].append(self.atmoFreqs[i]) self.data[timestamp]['tauCleo'].append(float(row[i+1])) self.data[timestamp]['tSysCleo'].append(float(row[i+num+1])) self.data[timestamp]['tAtmCleo'].append(float(row[i+(num*2)+1])) f.close()