for itime, modeltime in enumerate(model_TL.Timelist): print modeltime CoupledList = sat_TL.couple_with([modeltime]) sattime = CoupledList[0][0] satfile = REF_DIR + sattime.strftime(IOname.Input.dateformat) + IOname.Output.suffix + ".nc" modfile = model_TL.filelist[itime] De = DataExtractor(TheMask,filename=modfile, varname='P_i') Model = MapBuilder.get_layer_average(De, surf_layer) #ncIN = NC.netcdf_file(modfile,'r') #Model = ncIN.variables['P_i'].data[0,0,:,:].copy()#.astype(np.float64) #Model = ncIN.variables['lchlm'].data.copy() #ncIN.close() Sat16 = Sat.readfromfile(satfile,var='lchlm') #.astype(np.float64) cloudsLand = (np.isnan(Sat16)) | (Sat16 > 1.e19) modelLand = np.isnan(Model) #lands are nan nodata = cloudsLand | modelLand selection = ~nodata & mask200_2D M = matchup.matchup(Model[selection], Sat16[selection]) for isub, sub in enumerate(OGS.P): selection = SUB[sub.name] & (~nodata) & mask200_2D M = matchup.matchup(Model[selection], Sat16[selection]) BGC_CLASS4_CHL_RMS_SURF_BASIN[itime,isub] = M.RMSE() BGC_CLASS4_CHL_BIAS_SURF_BASIN[itime,isub] = M.bias() BGC_CLASS4_CHL_EAN_RMS_SURF_BASIN = BGC_CLASS4_CHL_RMS_SURF_BASIN.mean(axis=0)
IOname = IOnames.IOnames(IonamesFile) WEEK_reqs=TLCheck.getWeeklyList(2) jpi = Sat.NativeMesh.jpi jpj = Sat.NativeMesh.jpj for req in WEEK_reqs: outfile = req.string + IOname.Output.suffix + ".nc" outpathfile = WEEKLYDIR + outfile conditionToSkip = (os.path.exists(outpathfile)) and (not reset) if conditionToSkip: continue print outfile ii, w = TLCheck.select(req) nFiles = len(ii) if nFiles < 3 : print req print "less than 3 files" continue M = np.zeros((nFiles,jpj,jpi),np.float32) for iFrame, j in enumerate(ii): inputfile = TLCheck.filelist[j] CHL = Sat.readfromfile(inputfile) M[iFrame,:,:] = CHL CHL_OUT = Sat.logAverager(M) Sat.dumpV4file(outpathfile, CHL_OUT)
if somecheck: MEAN, STD = Sat.readClimatology(CLIM_FILE) else: print "All checks done" for iTime, filename in enumerate(TL_orig.filelist): outfile = CHECKDIR + os.path.basename(filename) exit_condition = os.path.exists(outfile) and (not reset) if exit_condition: continue julian = int(TL_orig.Timelist[iTime].strftime("%j")) DAILY_REF_MEAN = MEAN[julian - 1, :, :] DAILY_REF_STD = STD[julian - 1, :, :] CHL_IN = Sat.readfromfile(filename) CHL_IN[581:, 164:] = Sat.fillValue # BLACK SEA cloudsLandTIME = CHL_IN == Sat.fillValue cloudlandsCLIM = DAILY_REF_MEAN == Sat.fillValue CHL_OUT = CHL_IN.copy() CHL_OUT[cloudsLandTIME] = Sat.fillValue CHL_OUT[cloudlandsCLIM] = Sat.fillValue counter_refNAN = (~cloudsLandTIME & cloudlandsCLIM).sum(axis=None) outOfRange = np.abs(CHL_IN - DAILY_REF_MEAN) > DAILY_REF_STD * 2.0 outOfRange[cloudsLandTIME | cloudlandsCLIM] = False counter_elim = outOfRange.sum(axis=None) CHL_OUT[outOfRange] = Sat.fillValue
MODEL_DIR="/gpfs/work/OGS_prod/CalVal/Q_REP_MODEL_FORECAST/" REF_DIR = "/gss/gss_work/DRES_OGS_BiGe/Observations/TIME_RAW_DATA/ONLINE/SAT/MODIS/WEEKLY/" Timestart="20150701" Time__end="20151001" TI = TimeInterval(Timestart,Time__end,"%Y%m%d") model_TL = TimeList.fromfilenames(TI, MODEL_DIR,"*.nc",prefix='',dateformat='%Y%m%d') IonamesFile = '../postproc/IOnames_sat.xml' IOname = IOnames.IOnames(IonamesFile) ngib=52 for itime, time in enumerate(model_TL.Timelist[:1]): satfile = REF_DIR + time.strftime(IOname.Input.dateformat) + IOname.Output.suffix + ".nc" modfile = model_TL.filelist[itime] ncIN = NC.netcdf_file(modfile,'r') For = ncIN.variables['chl'].data[0,0,:,:].copy().astype(np.float64) ncIN.close() Sat16 = Sat.convertinV4format(Sat.readfromfile(satfile)).astype(np.float64) Sat16 = Sat16[:,ngib:] cloudsLand = np.isnan(Sat16) modelLand = For > 1.0e+19 nodata = cloudsLand | modelLand M = matchup.matchup(For[~nodata], Sat16[~nodata]) print M.bias()