yieldfile = findfile(files, 'yield') if not yieldfile: yvar = masked_array(zeros((ntimes,) + planting_date.shape), mask=zeros((ntimes,) + planting_date.shape)) else: with Dataset(yieldfile) as f: yvar = f.variables['yield_' + crop][:] yvar = shiftdata(yvar, planting_date, harvest_date, yearthr) # shift data yvar = masked_where(yvar < yieldthr1, yvar) # mask yields below threshold yvar = masked_where(yvar > yieldthr2, yvar) # mask yields above threshold yvar = yvar[yrsinrange] # restrict to overlapping years ymsk = logical_not(yvar.mask) # compute areas print ymsk.sum(), ymsk.shape, adata.shape, weights[iidx].shape areas[:, :, iidx] = avobj.areas(yvar, adata, lats, weights[iidx], calc_area) for j in range(nvariables): varfile = findfile(files, variables[j]) print "Reading %s" % varfile if not varfile: continue with Dataset(varfile) as f: var = f.variables[variables[j] + '_' + crop] if not i: vunits[j] = var.units if 'units' in var.ncattrs() else '' var = var[:] var[isnan(var)] = 0. # change NaNs to zero var = shiftdata(var, planting_date, harvest_date, yearthr) # shift data var = var[yrsinrange] # restrict to overlapping years
# load yield file yieldfile = findfile(files, scen_irr, 'yield') if yieldfile == []: yvar = masked_array(zeros((nt,) + pd.shape), mask = zeros((nt,) + pd.shape)) else: with nc(indir + sep + yieldfile) as f: yvar = f.variables['yield_' + crop][:] yvar = shiftdata(yvar, pd, hd, yearthr) # shift data yvar = masked_where(yvar < yieldthr1, yvar) # mask yields below threshold yvar = masked_where(yvar > yieldthr2, yvar) # mask yields above threshold yvar = yvar[yrsinrange] # restrict to overlapping years ymsk = logical_not(yvar.mask) # compute areas areas[:, :, sidx, iidx] = avobj.areas(yvar, adata, lats, weights[iidx], calcarea) for j in range(nv): # load variable varfile = findfile(files, scen_irr, variables[j]) if not len(varfile): continue with nc(indir + sep + varfile) as f: var = f.variables[variables[j] + '_' + crop] if not i: vunits[j] = var.units if 'units' in var.ncattrs() else '' var = var[:] var[isnan(var)] = 0. # change NaNs to zero var = shiftdata(var, pd, hd, yearthr) # shift data var = var[yrsinrange] # restrict to overlapping years # aggregate averages[j, :, :, sidx, iidx] = avobj.sum(var, adata, lats, weights[iidx], calcarea, ymsk)