예제 #1
0
if __name__ == "__main__":

    print("Visualization of correlation between neighbors 1.0")
    
    print("Loading data ...")
    gf = GeoField()
    gf.load("data/pres.mon.mean.nc", 'pres')
    gf.transform_to_anomalies()
    gf.slice_date_range(date(1948, 1, 1), date(2012, 1, 1))
    gf.slice_spatial(None, [20, 89])
    
    # initialize a parallel pool
    pool = Pool(POOL_SIZE)
    
    # get the correlation
    num_lats, num_lons = gf.spatial_dims()
    num_gpoints = num_lats * num_lons
    dfC = np.zeros([1, (num_lats - 1) * 2, num_lons], dtype = np.float64)
    
    # compute the neighbor correlations
    y = np.ones(shape=(num_gpoints, num_gpoints)) * 10e6
    Clats = []
    for lat in range(num_lats - 1):
        Clats.append(gf.lats[lat])
        Clats.append(0.5 * (gf.lats[lat] + gf.lats[lat+1]))
        for lon in range(num_lons):
            pt_1 = lat * num_lons + lon
            pt_2 = lat * num_lons + lon + 1
            
            lon1 = (lon + 1) % num_lons
            cc = np.corrcoef(gf.d[:, lat, lon], gf.d[:, lat, lon1], rowvar = 0)[0,1]