def _test2(): append=0 for fpart in ['dxc-op','dxc-cl']: g1 = vutils.opendss('anninputs.dss') g2 = vutils.opendss('annoutputs.dss') g1.filterBy(fpart) refs = g1[:] tw = vutils.timewindow('01oct1975 0000 - 01sep1991 0000') #tw = vutils.timewindow('01oct1975 0000 - 01oct1976 0000') inps = [] for i in range(len(refs)): inps.append(vutils.interpolate(DataReference.create(refs[i],tw).getData(),'1day')) inputs = [] for i in range(len(inps)): print 'Building inputs for ',inps[i] inputs=inputs+buildinput(inps[i],7,10,7) # weekly averages print 'Built inputs' outputs = [] ccc_ref = vutils.findpath(g2,'//ccc/ec///%s/'%fpart)[0] outputs.append(vutils.interpolate(DataReference.create(ccc_ref,tw).getData(),'1day')) print 'Built outputs' print 'Dumping patterns' if append: dump_patterns(inputs,outputs,'junk',0.75,365,1) else: dump_patterns(inputs,outputs,'junk',0.75,365,append) append = 1
def _test3(): from ANN import fnet_cccec fpart = 'dxc-op' g1 = vutils.opendss('anninputs.dss') g2 = vutils.opendss('annoutputs.dss') g1.filterBy(fpart) g2.filterBy(fpart) refs = g1[:] tw = vutils.timewindow('01oct1975 0000 - 01sep1991 0000') #tw = vutils.timewindow('01oct1975 0000 - 01oct1976 0000') inps = [] for i in range(len(refs)): inps.append(vutils.interpolate(DataReference.create(refs[i],tw).getData(),'1day')) inputs = [] for i in range(len(inps)): print 'Building inputs for ',inps[i] inputs=inputs+buildinput(inps[i],7,10,7) # weekly averages print 'Built inputs' outputs = [] ccc_ref = vutils.findpath(g2,'//ccc/ec///%s/'%fpart)[0] outputs.append(vutils.interpolate(DataReference.create(ccc_ref,tw).getData(),'1day')) mi = MultiIterator(inputs) import jarray ninps = len(inputs) input = jarray.zeros(ninps,'f') output = jarray.zeros(1,'f') ann = fnet_cccec() ndata = len(inputs[0]) for input_no in range(365): mi.advance() outdata = jarray.zeros(ndata,'f') while input_no < ndata: el = mi.getElement() i=0 while i < ninps: input[i] = el.getY(i) i=i+1 ann.engine(input,output,0) outdata[input_no] = output[0] mi.advance() input_no=input_no+1 # stime = inputs[0].getStartTime() ti = inputs[0].getTimeInterval() rtsout = vutils.RegularTimeSeries('/ann/ccc_out/ec///annutils/',str(stime),\ str(ti),outdata) vutils.plot(rtsout,outputs[0]) rtsout = (rtsout-0.140516)/0.000396563 vutils.writedss('annout.dss','/ann/ccc_out/ec///annutils/',rtsout)
def _test4(): from ANN import fnet_cccec sac = vutils.RegularTimeSeries('inp1','31jan1990 2400', '1mon', [10000.0, 11000.0, 12000.0, 15000.0]) sac = sac*5.40394e-06+0.178546 sjr = vutils.RegularTimeSeries('inp1','31jan1990 2400', '1mon', [1000.0, 1100.0, 1200.0, 1500.0]) sjr = sjr*1.34396e-05+0.199247 exp = vutils.RegularTimeSeries('inp1','31jan1990 2400', '1mon', [5000.0, 6000.0, 7000.0, 8000.0]) exp = exp*-4.86697e-05+0.178537 dxc = vutils.RegularTimeSeries('inp1','31jan1990 2400', '1mon', [0.0, 0.0, 0.0, 0.0]) dxc = (1.-dxc/31)*0.6+0.2 inps = [dxc,exp,sac,sjr] inps = map(lambda x: vutils.interpolate(x,'1day'), inps) inputs = [] for i in range(len(inps)): print 'Building inputs for ',inps[i] inputs=inputs+buildinput(inps[i],7,10,7) # weekly averages print 'Built inputs' #outputs = [] #ccc_ref = vutils.findpath(g2,'//ccc/ec///%s/'%fpart)[0] #outputs.append(vutils.interpolate(DataReference.create(ccc_ref,tw).getData(),'1day')) mi = MultiIterator(inputs) import jarray ninps = len(inputs) input = jarray.zeros(ninps,'f') output = jarray.zeros(1,'f') ann = fnet_cccec() ndata = len(inputs[0]) for input_no in range(31+28+31+1): mi.advance() outdata = jarray.zeros(ndata,'f') fh = open('junk.out','w',15000) while input_no < ndata: el = mi.getElement() i=0 while i < ninps: input[i] = el.getY(i) i=i+1 ann.engine(input,output,0) fh.write('Input #: %d\n'%input_no) i=0 while i < ninps: fh.write('%13.6f'%input[i]) if i%5 == 4: fh.write('\n') i = i+1 fh.write('\nOutput #: %d\n'%input_no) fh.write('%13.6f\n'%output[0]) outdata[input_no] = output[0] mi.advance() input_no=input_no+1 fh.close()
def _test1(): g=vutils.opendss('/delta2/ann/hydrologies/sim809anndv.dss') refs = vutils.findpath(g,'//ndo/flow-ndo///') tw = vutils.timewindow('01jan1974 0000 - 01jan1992 0000') inps = [] for i in range(len(refs)): inps.append(vutils.interpolate(DataReference.create(refs[i],tw).getData(),'1day')) print 'Got data for ',tw scaling = 8.99649e-07 shift = 0.233677 crush(inps[0],scaling,shift) print 'Crushed data' inputs = buildinput(inps[0],8,10,7) print 'Built inputs' outputs = inps[:] print 'Dumping patterns' dump_patterns(inputs,outputs,'junk',0.75)
print "IN prep DOC" infile = sys.argv[1] config.setConfigVars(infile) tw = prepro_window() print "Expanding seasonal DICU DOC drainage values" expand_seasonal_bst.prep_dicu( config.getAttr('DICUFILE_DOC'), # original DICU DSS file for EC config.getAttr( 'DICUFILE_DOCE' ), # processed DICU DSS file (will be input for DSM2) "DRAIN-DOC", tw) print "Expanding seasonal boundary DOC values" # expand_seasonal_bst.prep_dicu( # config.getAttr('TSFILE_DOC'), # original DICU DSS file for EC # config.getAttr('DICUFILE_DOCE'), # processed DICU DSS file (will be input for DSM2) # "DOC",tw) f = opendss(config.getAttr("TSFILE_DOC")) # open DOC boundary file outfile = config.getAttr("BOUNDARYFILE") f2 = find(f, 'DOC', 'c') for ref in f2: path = ref.getPathname() daily = vutils.interpolate(ref.getData(), "1DAY") path.setPart(Pathname.E_PART, '1DAY') path.setPart(Pathname.F_PART, config.getAttr('DSM2MODIFIER')) mod_path = path.toString() writedss(outfile, mod_path, daily) sys.exit()
import sys
else: print "IN prep DOC" infile = sys.argv[1] config.setConfigVars(infile) tw=prepro_window() print "Expanding seasonal DICU DOC drainage values" expand_seasonal_bst.prep_dicu( config.getAttr('DICUFILE_DOC'), # original DICU DSS file for EC config.getAttr('DICUFILE_DOCE'), # processed DICU DSS file (will be input for DSM2) "DRAIN-DOC",tw) print "Expanding seasonal boundary DOC values" # expand_seasonal_bst.prep_dicu( # config.getAttr('TSFILE_DOC'), # original DICU DSS file for EC # config.getAttr('DICUFILE_DOCE'), # processed DICU DSS file (will be input for DSM2) # "DOC",tw) f=opendss(config.getAttr("TSFILE_DOC")) # open DOC boundary file outfile=config.getAttr("BOUNDARYFILE") f2=find(f,'DOC','c') for ref in f2: path = ref.getPathname() daily = vutils.interpolate(ref.getData(),"1DAY") path.setPart(Pathname.E_PART, '1DAY') path.setPart(Pathname.F_PART, config.getAttr('DSM2MODIFIER')) mod_path = path.toString() writedss(outfile, mod_path, daily) sys.exit()