Beispiel #1
0
def master():
    pars1 = np.linspace(0.0, 0.03, nstep)  # alpha_max
    pars2 = np.linspace(0.0, 0.3, nstep)  # thresh_geo

    for index in xrange(nstep):  # loop over alpha_max
        par1 = pars1[index]
        # Submit a job which will calculate partial sum 
        mpi.submit_call("loop", (par1, pars2), id=index)

    for i in xrange(nstep):
        print i
        a = mpi.get_result(id=i)
        if i == 0:
            a_alpha_max_thresh_geo = a
        else:
            a_alpha_max_thresh_geo = np.vstack([a_alpha_max_thresh_geo, a])

    print a_alpha_max_thresh_geo
    np.save('/save/a_alpha_max_thresh_geo_c_max=0.2', a_alpha_max_thresh_geo)
def master():
    regions = ['nism']
    prefix = ''
    prefix2 = '/p/tmp/boers/'

    data = 'trmm7'

    lat = np.load(prefix + '%s_lat_global.npy' % data)
    lon = np.load(prefix + '%s_lon_global.npy' % data)

    c = 0
    for perc in [80, 85, 90, 94, 95, 96]:
        print perc
        for tm in [3, 10, 30]:
            print "tm = ", tm
            for region in regions:
                print "region: ", region

                if region == 'sam2':
                    j = 0
                else:
                    j = 2

                events = np.load(
                    prefix +
                    '%s_global_wd_nob_cor_seasonal_rain_perc%d_season%d.npy' %
                    (data, perc, j))
                deg = np.load(
                    prefix +
                    'degree01_%s_global_wd_perc%d_tm%d_season%d_2_nb_sig005.npy'
                    % (data, perc, tm, j))
                cu_deg = np.load(
                    prefix +
                    'cu_degree01_%s_global_wd_perc%d_tm%d_season%d_2_nb_sig005.npy'
                    % (data, perc, tm, j))
                nlist = np.load(
                    prefix2 +
                    'nlist01_%s_global_wd_perc%d_tm%d_season%d_2_nb_sig005.npy'
                    % (data, perc, tm, j))

                links = np.array([], dtype='int')
                index = np.array([], dtype='int')

                for lat_t in [27.5, 27.75, 28., 28.25, 28.5]:
                    for lon_t in [78.5, 78.75, 79., 79.25, 79.5]:
                        index = np.concatenate(
                            (index,
                             get_index_from_coord(lat, lon, lat_t, lon_t)))

                lat_t = 28
                lon_t = 79

                index = np.unique(index)

                links = np.load(
                    '%s_geo_links_samples_perc%d_tm%d_season%d_%s_nb_sig005.npy'
                    % (data, perc, tm, j, region))

                print "nol = ", links.shape[0]
                index = get_index_from_coord(lat, lon, lat_t, lon_t)

                from itertools import product
                coords = np.array(list(product(lat, lon)))
                lat0 = coords[index, 0]
                lon0 = coords[index, 1]
                lat1 = coords[links, 0]
                lon1 = coords[links, 1]
                nol = links.shape[0]

                values = np.vstack([coords[links, 0], coords[links, 1]]).T
                values *= np.pi / 180.
                X, Y = np.meshgrid(lon, lat)
                xy = np.vstack([Y.ravel(), X.ravel()]).T
                xy *= np.pi / 180.

                bw_opt = .2 * values.shape[0]**(-1. / (2 + 4))
                print ".2 * bw_scott = ", bw_opt

                nos = 15
                ser = 35
                dats = np.zeros((nos * ser, X.shape[0], X.shape[1]))
                for k in xrange(ser):
                    for i in xrange(nos):
                        noel2 = np.where(events > 2)[0]
                        values = np.vstack([
                            np.random.choice(coords[noel2, 0], nol),
                            np.random.choice(coords[noel2, 1], nol)
                        ]).T
                        values *= np.pi / 180.
                        mpi.submit_call("shperical_kde", (values, xy, bw_opt),
                                        id=c * nos * ser + k * nos + i)
                        print "bash %d submitted" % (k * nos + i)
                    for i in xrange(nos):
                        datss = mpi.get_result(id=c * nos * ser + k * nos + i)
                        dats[k * nos + i] = datss.reshape(X.shape)
                        print "bash %d picked up" % (k * nos + i)
                np.save(
                    prefix2 +
                    '%s_geo_link_tc_sphkde_nm_perc%d_tm%d_season%d_%s_bw02_nb'
                    % (data, perc, tm, j, region), dats)
                mean = np.mean(dats, axis=0)
                std = np.std(dats, axis=0)
                perc90 = st.scoreatpercentile(dats, 90, axis=0)
                perc95 = st.scoreatpercentile(dats, 95, axis=0)
                perc99 = st.scoreatpercentile(dats, 99, axis=0)
                perc995 = st.scoreatpercentile(dats, 99.5, axis=0)
                perc999 = st.scoreatpercentile(dats, 99.9, axis=0)

                stats = np.array(
                    [mean, std, perc90, perc95, perc99, perc995, perc999])
                np.save(
                    '%s_geo_link_tc_sphkde_stats_perc%d_tm%d_season%d_%s_bw02_nb.npy'
                    % (data, perc, tm, j, region), stats)
                c += 1