def synthetic(hsfile, spectrum, sr): curpath = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(curpath,hsfile),'r') as f: raw = f.read().split('\n') data = [[float(r.split(',')[0]),float(r.split(',')[1])] for r in raw if r] """ constants for spectrum and sea water level generation. we define them outside the loop to save some time """ max_t = 3600 # maximum duration of time series nyq_f = sr/2 # nyquist frequency of spectra: highest frequency bin del_f = 1.0/max_t # interval between frequency bins f = np.linspace(del_f,nyq_f,max_t) # array containing all frequency bins t = np.linspace(0,max_t,max_t*sr) #t = np.reshape(t, (t.size,1)) # lists of relevant hourly data hmean = [] hmax = [] hhts = [] hht10 = [] index = 0 # jonswap if spectrum == 0: for dat in data: index += 1 # generate spectrum S = wave_util.jonswap(dat[0], dat[1], 3600, f) # generate elevation data E = wave_util.ema(S, 0.5, del_f) # zerodowncross mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) # wallops elif spectrum == 1: for dat in data: index += 1 # generate spectrum S = wave_util.wallops(dat[0], dat[1], 10.0, f) # generate elevation data E = wave_util.ema(S, 0.5, del_f) # zerodowncross mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) # custom spectrum -- based on bert-schneider elif spectrum == 2: for dat in data: index += 1 #generate spectrum S = wave_util.genspec(hs=dat[0], ts=dat[1]-1., f=f, foffset=0, A=0.072, C=0) E = wave_util.ema(S, 0.5, del_f) mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) data[:] = np.asarray(data) hhts[:] = np.asarray(hhts) print np.mean(data), np.mean(hhts) return (hmean, hmax, hhts, hht10, data)
def synthetic(hsfile, spectrum, sr): curpath = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(curpath, hsfile), 'r') as f: raw = f.read().split('\n') data = [[float(r.split(',')[0]), float(r.split(',')[1])] for r in raw if r] """ constants for spectrum and sea water level generation. we define them outside the loop to save some time """ max_t = 3600 # maximum duration of time series nyq_f = sr / 2 # nyquist frequency of spectra: highest frequency bin del_f = 1.0 / max_t # interval between frequency bins f = np.linspace(del_f, nyq_f, max_t) # array containing all frequency bins t = np.linspace(0, max_t, max_t * sr) #t = np.reshape(t, (t.size,1)) # lists of relevant hourly data hmean = [] hmax = [] hhts = [] hht10 = [] index = 0 # jonswap if spectrum == 0: for dat in data: index += 1 # generate spectrum S = wave_util.jonswap(dat[0], dat[1], 3600, f) # generate elevation data E = wave_util.ema(S, 0.5, del_f) # zerodowncross mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) # wallops elif spectrum == 1: for dat in data: index += 1 # generate spectrum S = wave_util.wallops(dat[0], dat[1], 10.0, f) # generate elevation data E = wave_util.ema(S, 0.5, del_f) # zerodowncross mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) # custom spectrum -- based on bert-schneider elif spectrum == 2: for dat in data: index += 1 #generate spectrum S = wave_util.genspec(hs=dat[0], ts=dat[1] - 1., f=f, foffset=0, A=0.072, C=0) E = wave_util.ema(S, 0.5, del_f) mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) data[:] = np.asarray(data) hhts[:] = np.asarray(hhts) print np.mean(data), np.mean(hhts) return (hmean, hmax, hhts, hht10, data)
def maximizem(sr): curpath = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(curpath,'hts_data'),'r') as f: hts_raw = f.read().split('\n') dhts = [[float(r.split(',')[0]),float(r.split(',')[1])] for r in hts_raw if r] with open(os.path.join(curpath,'mean_data'),'r') as f: mean_raw = f.read().split('\n') dmean = [[float(r.split(',')[0]),float(r.split(',')[1])] for r in mean_raw if r] with open(os.path.join(curpath,'max_data'),'r') as f: max_raw = f.read().split('\n') dmax = [[float(r.split(',')[0]),float(r.split(',')[1])] for r in max_raw if r] with open(os.path.join(curpath,'ht10_data'),'r') as f: ht10_raw = f.read().split('\n') dht10 = [[float(r.split(',')[0]),float(r.split(',')[1])] for r in ht10_raw if r] """ constants for spectrum and sea water level generation. we define them outside the loop to save some time """ max_t = 3600 # maximum duration of time series nyq_f = sr/2 # nyquist frequency of spectra: highest frequency bin del_f = 1.0/max_t # interval between frequency bins f = np.linspace(del_f,nyq_f,max_t) # array containing all frequency bins t = np.linspace(0,max_t,max_t*sr) #t = np.reshape(t, (t.size,1)) # list of hourly error rates emean = [] emax = [] ehts = [] eht10 = [] for m in xrange(2,10): # lists of relevant hourly data hmean = [] hmax = [] hhts = [] hht10 = [] index = 0 for dat in dhts: index += 1 # generate spectrum S = wave_util.wallops(dat[0], dat[1], m, f) # generate elevation data E = wave_util.ema(S, 0.5, del_f) # zerodowncross mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) hhts[:] = np.asarray(hhts) hmean[:] = np.asarray(hmean) hmax[:] = np.asarray(hmax) hht10[:] = np.asarray(hht10) meandmean = np.mean(np.asarray(dmean)) meandmax = np.mean(np.asarray(dmax)) meandhts = np.mean(np.asarray(dhts)) meandht10 = np.mean(np.asarray(dht10)) emean.append((np.mean(hmean) - meandmean) / meandmean) emax.append((np.mean(hmax) - meandmax) / meandmax) ehts.append((np.mean(hhts) - meandhts) / meandhts) eht10.append((np.mean(hht10) - meandht10) / meandht10) return emean, emax, ehts, eht10
def maximizem(sr): curpath = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(curpath, 'hts_data'), 'r') as f: hts_raw = f.read().split('\n') dhts = [[float(r.split(',')[0]), float(r.split(',')[1])] for r in hts_raw if r] with open(os.path.join(curpath, 'mean_data'), 'r') as f: mean_raw = f.read().split('\n') dmean = [[float(r.split(',')[0]), float(r.split(',')[1])] for r in mean_raw if r] with open(os.path.join(curpath, 'max_data'), 'r') as f: max_raw = f.read().split('\n') dmax = [[float(r.split(',')[0]), float(r.split(',')[1])] for r in max_raw if r] with open(os.path.join(curpath, 'ht10_data'), 'r') as f: ht10_raw = f.read().split('\n') dht10 = [[float(r.split(',')[0]), float(r.split(',')[1])] for r in ht10_raw if r] """ constants for spectrum and sea water level generation. we define them outside the loop to save some time """ max_t = 3600 # maximum duration of time series nyq_f = sr / 2 # nyquist frequency of spectra: highest frequency bin del_f = 1.0 / max_t # interval between frequency bins f = np.linspace(del_f, nyq_f, max_t) # array containing all frequency bins t = np.linspace(0, max_t, max_t * sr) #t = np.reshape(t, (t.size,1)) # list of hourly error rates emean = [] emax = [] ehts = [] eht10 = [] for m in xrange(2, 10): # lists of relevant hourly data hmean = [] hmax = [] hhts = [] hht10 = [] index = 0 for dat in dhts: index += 1 # generate spectrum S = wave_util.wallops(dat[0], dat[1], m, f) # generate elevation data E = wave_util.ema(S, 0.5, del_f) # zerodowncross mean, max, hts, ht10 = wave_util.zerodown(E, sr) print index, [dat[0] - hts[0], dat[1] - hts[1]] # add to our hourly list #print file, mean, max, hts, ht10 hmean.append(mean) hmax.append(max) hhts.append(hts) hht10.append(ht10) hhts[:] = np.asarray(hhts) hmean[:] = np.asarray(hmean) hmax[:] = np.asarray(hmax) hht10[:] = np.asarray(hht10) meandmean = np.mean(np.asarray(dmean)) meandmax = np.mean(np.asarray(dmax)) meandhts = np.mean(np.asarray(dhts)) meandht10 = np.mean(np.asarray(dht10)) emean.append((np.mean(hmean) - meandmean) / meandmean) emax.append((np.mean(hmax) - meandmax) / meandmax) ehts.append((np.mean(hhts) - meandhts) / meandhts) eht10.append((np.mean(hht10) - meandht10) / meandht10) return emean, emax, ehts, eht10