Ejemplo n.º 1
0
            else:
                if future:
                    ys = '2065_2099'
                else:
                    ys = moddct['yrfname']

            ### Location for olr input & outputs
            olrfile = bkdir + dset + '/'+name+'/' + name + '.' + globv + \
                      '.mon.mean.' + ys + '.nc'

            print 'Opening ' + olrfile
            # Check if OLR file exists for this model
            if os.path.exists(olrfile):

                ### Open olr nc file
                ncout = mync.open_multi(olrfile,globv,name,\
                                                            dataset=dset,subs=sub)
                ndim = len(ncout)
                if ndim == 5:
                    olr, time, lat, lon, dtime = ncout
                elif ndim == 6:
                    olr, time, lat, lon, lev, dtime = ncout
                    olr = np.squeeze(olr)
                else:
                    print 'Check number of levels in ncfile'

                lat4sf = lat
                lon4sf = lon

            else:
                print "No OLR data found for " + name
Ejemplo n.º 2
0
                    ys = moddct['yrfname']

                    ### Open rain data - historical
                    print 'Getting historical rain data'
                    globp = 'pr'
                    raindset = dset
                    rainmod = name
                    rmoddct = moddct
                    rcal = cal
                    rys = ys

                    rainname = rmoddct['prname']
                    rainfile = botdir + raindset + "/" + rainmod + "." + globp + ".day.mean." + rys + ".nc"
                    print 'Opening ' + rainfile

                    rainout = mync.open_multi(rainfile, globp, rainmod, \
                                              dataset=raindset, subs=sub)

                    rdim = len(rainout)
                    if rdim == 5:
                        rain, rtime, rlat, rlon, rdtime = rainout
                    elif rdim == 6:
                        rain, rtime, rlat, rlon, rlev, rdtime = rainout
                        rain = np.squeeze(rain)
                    else:
                        print 'Check number of levels in ncfile'
                    rdtime[:, 3] = 0
                    nlat = len(rlat)
                    nlon = len(rlon)
                    nboxes = float(nlat * nlon)

                    print 'Checking for duplicate timesteps'  # do retain this - IPSL A LR has double tsteps
                        ys = '1950_2009'
                    else:
                        print 'variable ' + globv + ' has unclear yearname for ' + name2
                else:
                    ys = moddct['fullrun']

        # Open ltmonmean file
        meanfile = bkdir + 'metbot_multi_dset/' + dset2 + '/' + name2 + '/' \
                   + name2 + '.' + globv + '.mon.mean.' + ys + '.nc'

        print meanfile

        if os.path.exists(meanfile):

            if levsel:
                ncout = mync.open_multi(meanfile, globv, name2, \
                                        dataset=dset2, subs=sub, levsel=levc)
            else:
                ncout = mync.open_multi(meanfile, globv, name2, \
                                        dataset=dset2, subs=sub)
            print '...file opened'
            ndim = len(ncout)
            if ndim == 5:
                meandata, time, lat, lon, dtime = ncout
            elif ndim == 6:
                meandata, time, lat, lon, lev, dtime = ncout
                meandata = np.squeeze(meandata)
            else:
                print 'Check number of dims in ncfile'
            dtime[:, 3] = 0

            # Fix lat and lons if it spans 0
Ejemplo n.º 4
0
                    print 'Subsetting by latitude?'
                    print 'Selecting CBs between ' + str(wlon) + ' and ' + str(elon)
                    dates_ln, cXs_ln, cYs_ln, degs_ln, chs_ln, keys_ln, daynos_ln, tworecdt_ln = \
                        sset.sel_cen_lon(wlon, elon, dates_dd, cXs_dd, cYs_dd, degs_dd, chs_dd, \
                                         keys_dd, daynos_dd, tworecdt_dd)

                    # Second get info for mean rain
                    rys_clim = rys_clims[cent]

                    rainmeanfile = botdir + dset + '/' + name + '/' \
                                   + name + '.' + globp + '.mon.mean.' + rys_clim + '.nc'

                    print 'Opening ' + rainmeanfile
                    print 'for domain ' + pr_dom

                    rainmean = mync.open_multi(rainmeanfile, globp, name, \
                                               dataset=dset, subs=pr_dom)

                    rdim = len(rainmean)
                    if rdim == 5:
                        rain_monmn, rtime, rlat_mn, rlon, rdtime_monmn = rainmean
                    elif rdim == 6:
                        rain, rtime, rlat_mn, rlon, rlev, rdtime_monmn = rainmean
                        rain_monmn = np.squeeze(rain)
                    else:
                        print 'Check number of levels in ncfile'
                    rdtime_monmn[:, 3] = 0
                    rainmons = rdtime_monmn[:, 1]

                    if weightlats:
                        latr = np.deg2rad(rlat_mn)
                        weights = np.cos(latr)
Ejemplo n.º 5
0
                            ys = '1950_2009'
                        else:
                            print 'variable ' + globv1 + ' has unclear yearname for ' + name2
                    else:
                        ys = moddct['fullrun']

            # Open ltmonmean file
            meanfile = bkdir + 'metbot_multi_dset/' + dset2 + '/' + name2 + '/' \
                       + name2 + '.' + globv1 + '.mon.mean.' + ys + '.nc'

            print 'Attempting to open ' + meanfile

            if os.path.exists(meanfile):

                if levsel1:
                    ncout = mync.open_multi(meanfile, globv1, name2, \
                                            dataset=dset2, subs=sub_x, levsel=levc)
                else:
                    ncout = mync.open_multi(meanfile, globv1, name2, \
                                            dataset=dset2, subs=sub_x)
                print '...file opened'
                ndim = len(ncout)
                if ndim == 5:
                    meandata, time, lat, lon, dtime = ncout
                elif ndim == 6:
                    meandata, time, lat, lon, lev, dtime = ncout
                    meandata = np.squeeze(meandata)
                else:
                    print 'Check number of dims in ncfile'
                dtime[:, 3] = 0

                # Remove duplicate timesteps
Ejemplo n.º 6
0
ys = refmoddct['yrfname']

# Open ltmonmean file
meanfile = botdir + refdset + '/' + refmod + '/' \
           + refmod + '.' + globv + '.mon.mean.' + ys + '.nc'

# Open with two different domains
doms = [dom_a, dom_b]
ndoms = len(doms)
seas_picks = [all_ttt_seas, per_ttt_seas]
reg_ref_means = np.zeros(ndoms, dtype=np.float32)
for do in range(ndoms):
    thisdom = doms[do]
    ths_seas = seas_picks[do]

    ncout = mync.open_multi(meanfile, globv, refmod, \
                        dataset=refdset, subs=thisdom)
    ndim = len(ncout)
    if ndim == 5:
        meandata, time, lat, lon, dtime = ncout
    elif ndim == 6:
        meandata, time, lat, lon, lev, dtime = ncout
        meandata = np.squeeze(meandata)
    dtime[:, 3] = 0

    nlat = len(lat)
    nlon = len(lon)

    # Remove duplicate timesteps
    print 'Checking for duplicate timesteps'
    tmp = np.ascontiguousarray(dtime).view(
        np.dtype((np.void, dtime.dtype.itemsize * dtime.shape[1])))
        rawfile_u = bkdir  + dset2 + '/' + name2 + \
                    '.' + globv1 + '.day.mean.' + gys + '.nc'
        rawfile_v = bkdir + dset2 + '/' + name2 + \
                    '.' + globv2 + '.day.mean.' + gys + '.nc'

        if variable == 'qflux':
            rawfile_q = bkdir + dset2 + '/' + name2 + \
                        '.' + globv3 + '.day.mean.' + gys + '.nc'

        print 'Opening ' + rawfile_u
        print 'and corresponding file: ' + rawfile_v
        if variable == 'qflux':
            print 'and q file:' + rawfile_q

        if levsel:
            ncout_u = mync.open_multi(rawfile_u, globv1, name2, \
                                      dataset=dset2, subs=subvar, levsel=levc)
            ncout_v = mync.open_multi(rawfile_v, globv2, name2, \
                                      dataset=dset2, subs=subvar, levsel=levc)

            if variable == 'qflux':
                ncout_q = mync.open_multi(rawfile_q, globv3, name2, \
                                          dataset=dset2, subs=subvar, levsel=levc)

        else:
            ncout_u = mync.open_multi(rawfile_u, globv1, name2, \
                                      dataset=dset2, subs=subvar)
            ncout_v = mync.open_multi(rawfile_v, globv2, name2, \
                                      dataset=dset2, subs=subvar)

            if variable == 'qflux':
                ncout_q = mync.open_multi(rawfile_q, globv3, name2, \
### Get saddle of distribution for ref dset (specified above)
moddct = dsetdict.dset_deets[refdset][refmod]
vname = moddct['olrname']
if testfile:
    ys = moddct['testfileyr']
else:
    ys = moddct['yrfname']
if testyear:
    beginatyr = moddct['startyr']
else:
    beginatyr = moddct['testyr']

indir = bkdir + "/" + refdset + "/"
infile = indir + refmod + ".olr.day.mean." + ys + ".nc"
print infile
ncout = mync.open_multi(infile, globv, refmod,\
                           dataset=refdset, subs=sub)
ndim = len(ncout)
if ndim == 5:
    olr, time, lat, lon, dtime = ncout
elif ndim == 6:
    olr, time, lat, lon, lev, dtime = ncout
    olr = np.squeeze(olr)
else:
    print 'Check number of levels in ncfile'

### Select data to run
### Get time information
units = moddct['olrtimeunit']
cal = moddct['calendar']
### If testfile run on all days available
if testfile:
                    meanfile_u = botdir + dset2 + '/' + name2 + '/' \
                                 + name2 + '.' + globv1 + '.mon.mean.' + ysclim + '.nc'

                    meanfile_v = botdir + dset2 + '/' + name2 + '/' \
                             + name2 + '.' + globv2 + '.mon.mean.' + ysclim + '.nc'

                    if var == 'qflux':
                        meanfile_q = botdir + dset2 + '/' + name2 + '/' \
                                     + name2 + '.' + globv3 + '.mon.mean.' + ysclim + '.nc'

                    print 'Opening ' + meanfile_u
                    print 'and corresponding file: ' + meanfile_v
                    if var == 'qflux':
                        print 'and q file:' + meanfile_q

                    ncout_u = mync.open_multi(meanfile_u, globv1, name2, \
                                              dataset=dset2, subs=sub, levsel=levc)
                    ncout_v = mync.open_multi(meanfile_v, globv2, name2, \
                                              dataset=dset2, subs=sub, levsel=levc)

                    if var == 'qflux':
                        ncout_q = mync.open_multi(meanfile_q, globv3, name2, \
                                                  dataset=dset2, subs=sub, levsel=levc)

                    ndim = len(ncout_u)

                    if ndim == 5:

                        meandata_u, time, lat, lon, dtime = ncout_u
                        meandata_v, time, lat, lon, dtime = ncout_v

                        if var == 'qflux':
        my.mkdir_p(outdir)

        # Get info
        moddct = dsetdict.dset_deets[dset][name]
        vnamedict = globv + 'name'
        varstr = moddct[vnamedict]
        ys = moddct['yrfname']
        dimdict = dim_exdict.dim_deets[globv][dset]
        latname = dimdict[1]
        lonname = dimdict[2]

        # Open olr file
        olrfile=botdir+dset+'/'+name+'.'+globv+\
                '.day.mean.'+ys+'.nc'
        print 'Opening ' + olrfile
        ncout = mync.open_multi(olrfile, globv, name, \
                                dataset=dset, subs=sub)
        ndim = len(ncout)
        if ndim == 5:
            olrdata, time, lat, lon, dtime = ncout
        elif ndim == 6:
            olrdata, time, lat, lon, lev, dtime = ncout
            olrdata = np.squeeze(olrdata)
        else:
            print 'Check number of dims in ncfile'
        dtime[:, 3] = 0

        # print name
        # print lon
        # print lat

        # # Fix lat and lons if it spans 0