In [1]:
import sys
sys.path.append('../scripts')
import constants as c
import matplotlib.pyplot as plt
import numpy
import qcio
import qcutils
from ffnet import ffnet,mlgraph,tmlgraph
In [2]:
ncname=qcio.get_filename_dialog()
In [29]:
ds=qcio.nc_read_series(ncname)
ldt=ds.series["DateTime"]["Data"]
Fsd,f,a,=qcutils.GetSeriesasMA(ds,"Fsd")
ustar,f,a=qcutils.GetSeriesasMA(ds,"ustar")
Fc,Fc_flag,Fc_attr=qcutils.GetSeriesasMA(ds,"Fc")
Reco1 = numpy.ma.masked_where(Fsd>10,Fc,copy=True)
Reco2 = numpy.ma.masked_where(ustar<0.3,Reco1,copy=True)
Reco3 = numpy.ma.masked_where(Reco2<0,Reco2,copy=True)
attr = qcutils.MakeAttributeDictionary(long_name='Ecosystem respiration (observed)',units=Fc_attr["units"])
qcutils.CreateSeries(ds,"Reco",Reco3,Flag=Fc_flag,Attr=attr)
In [30]:
Reco,f,a = qcutils.GetSeriesasMA(ds,"Reco")
drivers = ["Ts","Sws"]
mask = numpy.ma.getmask(Reco)
for val in drivers:
d,f,a = qcutils.GetSeriesasMA(ds,val)
mask = numpy.ma.mask_or(mask,d.mask)
Reco.mask = mask
nRecs = numpy.ma.count(Reco)
data_nm = numpy.empty((nRecs,len(drivers)+1))
for idx,val in enumerate(drivers):
d,f,a = qcutils.GetSeriesasMA(ds,val)
d.mask = mask
data_nm[:,idx] = numpy.ma.compressed(d)
data_nm[:,idx+1] = numpy.ma.compressed(Reco)
input_train = data_nm[:,0:idx+1]
target_train = data_nm[:,idx+1]
In [31]:
conec=mlgraph((2,2,1))
net=ffnet(conec)
net.train_tnc(input_train,target_train)
In [36]:
input_predict = numpy.empty((len(Reco),len(drivers)))
for idx,val in enumerate(drivers):
d,f,a = qcutils.GetSeries(ds,val)
input_predict[:,idx] = d[:]
In [37]:
output,regress=net.test(input_train,target_train)
In [38]:
output=net.call(input_predict)
In [39]:
plt.plot(ldt,Reco,'b.')
plt.plot(ldt,output,'r+')
Out[39]:
In [ ]: