def onselect(self, verts): path = Path(verts) self.ind = np.nonzero(path.contains_points(self.xys))[0] self.fc[:, -1] = self.alpha_other self.fc[self.ind, -1] = 1 self.collection.set_facecolors(self.fc) self.canvas.draw_idle()
def points_to_label(self, points): """Get label of region that contains all the points, or return None if points are not in any region. """ for label, paths in self.paths.items(): for path in paths: if np.sum(path.contains_points(points)) == 4: return label return None
def get_iso3(self, coordinates): points = self._map_(*coordinates) # don't ask questions points = (points, ) result = None for iso, path in self._paths: if path.contains_points(points): result = iso break return result
def get_country_code(self, coordinates): points = self.map_(*coordinates) # don't ask questions points = (points, ) result = None for iso, path in self._cache_path: if path.contains_points(points): result = iso break return result
def find_stars_in_contour(self, contour, survey): """ From the photometry catalog we determine which stars are inside the contour of the cloud. """ verts = np.array(contour, float) path = Path(verts) if (survey == "UKIDSS") or (survey == "VISTA"): points = np.column_stack((self.catalog['L'], self.catalog['B'])) yo = path.contains_points(points) try: self.catalog["CloudMask"] = yo except ValueError: self.catalog['CloudMask'] = self.catalog['CloudMask'] + yo
def find_stars_in_contour(self,contour,survey): """ From the photometry catalog we determine which stars are inside the contour of the cloud. """ verts = np.array(contour,float) path = Path(verts) if (survey == "UKIDSS") or (survey == "VISTA"): points = np.column_stack((self.catalog['L'],self.catalog['B'])) yo = path.contains_points(points) try: self.catalog["CloudMask"] = yo except ValueError: self.catalog['CloudMask'] = self.catalog['CloudMask'] + yo
def __init__(self, polygon, thickness, bbox = None, d=None, material=None, folder=None): Iso_FROM_FILE.__init__(self, d=d, material=material, folder=folder) polygon= np.array(polygon) p_min = polygon.min(0) p_max = polygon.max(0) poly_centre = (p_min+p_max)/2 poly_size = p_max-p_min if bbox is None: bbox_corner = p_min bbox_size = poly_size elif len(bbox) == 2: bbox_corner = poly_centre - np.array(bbox)/2 bbox_size = np.array(bbox) elif len(bbox) == 4: bbox_corner = np.array(bbox[:2]) bbox_size = np.array(bbox[-2:]) else: raise ValueError('Argument bbox must have length 2 or 4') px_size = np.ceil((bbox_size / self.d)).astype(int) scale = min(px_size / bbox_size) # map the vertices into dipole space self.verts = (polygon - bbox_corner)*scale path = mpl.path.Path(self.verts) x, y = np.meshgrid(np.arange(px_size[0]),np.arange(px_size[1])) x, y = x.flatten(), y.flatten() xy = np.vstack((x,y)).T grid = path.contains_points(xy) grid = grid.reshape(px_size).astype(int) self.grid = np.tile(grid, (round(thickness/self.d), 1, 1)) self.origin = np.array(tuple(poly_centre)+(thickness/2.,))
def run(self): """Code à exécuter pendant l'exécution du thread.""" if self.basin == 'ALB_W': y = [37, 37, 34, 34] x = [-6, -4.5, -4.5, -6] elif self.basin == 'ALB_C': y = [37, 34, 34, 37] x = [-4.5, -4.5, -3, -3] elif self.basin == 'ALB_E': y = [34, 37, 37, 34] x = [-2.5, -2.5, -1, -1] elif self.basin == 'ALG_W': y = [35, 38, 39, 35] x = [-0.6, -0.6, 1, 1] # if self.basin == 'ALL_MED': # y = [37,35,35,30.5,30.5,38,46,45,44]; # x = [-5.5,-5.5,10,10,36.5,36.5,13.5,10,3]; # elif self.basin == 'W': # y = [37, 35, 35, 36.4, 37.8, 38, 38.5, 39.5, 45, 44] # x = [-5.5, -5.5, 10, 10, 12.8, 15, 16.5, 16.5, 10, 3] # elif self.basin == 'E': # y = [36.4, 37.8, 38, 38.5, 39.5, 45, 46, 38, 30.5, 30.5] # x = [10, 12.8, 15, 16.5, 16.5, 10, 13.5, 36.5, 36.5, 10] # elif self.basin == 'GOL': # y = [43.44829732432269, 42.97458858683228, 43.0604306783546, 42.96837802751135, 41.96306909843022, # 41.43113753799402, 41.16267859938984, 40.91067143551019, 39.12845260900497, 39.938244, 38.756497, # 39.247095, 46.4938123, 44.4124705] # x = [11.68790444824612, 10.82516607380484, 9.82460045736472, 9.409248985801327, 9.294900137395576, # 9.198952404436941, 9.339783959671131, 9.097279040223231, 8.925644550468935, 4.159323, -0.162487, # -1.17747, 5.2446879, 10.1001797] # elif self.basin == 'ALB': # y = [37.252960, 35.093681, 35, 37] # x = [-2.159892, -0.690137, -5.5, -5.5] # elif self.basin == 'ALG': # y = [35.093681, 37.252960, 38.756497, 39.938244, 39.1284526, 36.93272338, 35.930524] # x = [-0.690137, -2.159892, -0.162487, 4.159323, 8.92564455, 9.90934876, 3.994854] # elif self.basin == 'TYR': # y = [39.12845260900497, 37.88508389278273, 38.03532811253486, 38.19020427258793, 38.206530069008, # 38.49522011750975, 39.25645461354518, 40.44930918149475, 43.44829732432269, 42.97458858683228, # 43.0604306783546, 42.96837802751135, 41.96306909843022, 41.43113753799402, 41.16267859938984, # 40.91067143551019] # x = [8.925644550468935, 13.3111744311976, 15.29159159227882, 15.48719160249115, 15.74199259491107, # 16.21860737848962, 16.43223864162354, 16.01437911440215, 11.68790444824612, 10.82516607380484, # 9.824600457364721, 9.409248985801327, 9.294900137395576, 9.198952404436941, 9.339783959671131, # 9.097279040223231] # elif self.basin == 'CMED': # y = [39.12845260900497, 37.88508389278273, 37.001816, 31.924008, 33.259229, 36.93272338] # x = [8.925644550468935, 13.3111744311976, 15.084801, 15.081913, 7.954713, 9.90934876] # elif self.basin == 'ION': # y = [37.88508389278273, 38.03532811253486, 38.19020427258793, 38.206530069008, 38.49522011750975, # 39.25645461354518, 40.44930918149475, 40.857014, 40.138887, 39.74605, 38.155586, 37.503355, # 29.658354, 30.941890, 31.924008, 37.001816] # x = [13.3111744311976, 15.29159159227882, 15.48719160249115, 15.74199259491107, 16.21860737848962, # 16.43223864162354, 16.01437911440215, 16.854632, 18.343058, 20.052826, 23.556638, 21.936077, # 20.090485, 15.297679, 15.081913, 15.084801] # elif self.basin == 'ADR': # y = [45.123088, 46.248509, 42.990612, 41.876774, 39.746050, 40.138887, 40.857014, 41.497860] # x = [10.040714, 14.099647, 17.690915, 20.079333, 20.052826, 18.343058, 16.854632, 15.316464] # elif self.basin == 'AEG': # y = [39.746050, 38.155586, 37.503355, 35.335479, 35.045582, 35.478996, 36.113327, 40.879240, 42.000219, # 41.876774] # x = [20.052826, 23.556638, 21.936077, 23.620988, 26.217209, 27.159167, 28.006273, 30.504893, 23.493337, # 20.079333] # elif self.basin == 'LEV': # y = [37.503355, 35.335479, 35.045582, 35.478996, 36.113327, 40.879240, 37.180585, 30.329515, 29.658354] # x = [21.936077, 23.620988, 26.217209, 27.159167, 28.006273, 30.504893, 37.441401, 35.238352, 20.090485] else: print 'Les coordonnées pour : ', self.basin, ' ne sont pas définies ici' print 'Basin :', self.basin print ' ' # Selecting the data vertices = np.array([np.hstack( (x, 0)), np.hstack((y, 0))], float).transpose() path = Path(vertices, codes=None, closed=True) indices = path.contains_points(np.array([ np.reshape(lon_t, (np.size(lon_t))), np.reshape(lat_t, (np.size(lat_t))) ]).T, transform=None, radius=0.0) indices_re = np.reshape(indices, np.shape(lon_t)) # this our mask for the zone vol_levels = read_csv('../vol_lev_' + self.basin + '.csv') j = 0 # compteur for nutrient in nut_list: for vert_lev in vert_lev_list: vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev] = np.zeros([len(list_len)]) vars()[nutrient + '_SUMM_' + self.basin] = np.zeros( [len(list_len)]) for o, fn in enumerate(list_len): our_file = list_len[o] # capturer la date date_file = our_file[0:8] f = Dataset(file_path + list_len[o], 'r') # open netcdf file for nutrient in nut_list: # Extracting data from files in file_list extracted_var = f.variables[nutrient][:] extracted_nut = extracted_var # pourquoi cette étape est-elle utile??? for vert_lev in vert_lev_list: if vert_lev in ('SW'): #lev_range = range(30, 43) lev_range = range(31, 43) #vars()[nutrient + '_' + self.basin + '_' + vert_lev + '_' + date_file] = np.zeros([14]) vars()[nutrient + '_' + self.basin + '_' + vert_lev + '_' + date_file] = np.zeros([13]) elif vert_lev in ('IW'): lev_range = range(23, 30) vars()[nutrient + '_' + self.basin + '_' + vert_lev + '_' + date_file] = np.zeros([8]) elif vert_lev in ('DW'): lev_range = range(0, 23) vars()[nutrient + '_' + self.basin + '_' + vert_lev + '_' + date_file] = np.zeros([23]) else: print 'Error vertical levels' for z in lev_range: curr_ind = len(lev_range) - ( (lev_range[len(lev_range) - 1] + 1) - z) nut = extracted_nut[0, z, :, :] # On applique notre masque au nouveau jeu de données new_nut = np.ma.masked_where(np.ma.getmask(new_bath), nut) vars()[nutrient + '_' + self.basin + '_' + vert_lev + '_' + date_file][curr_ind] = np.nansum( np.ma.masked_array( new_nut, indices_re == False)) * vol_levels.vol_m3[z] # tous les niveaux faits # sum le tout = stock sur tous les niveaux à date en question vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev][j] = np.nansum( vars()[nutrient + '_' + self.basin + '_' + vert_lev + '_' + date_file]) # vars()[nutrient + '_SUMM_' + self.basin][j] = (vars()[nutrient + '_ALL_STOCK_' + self.basin + '_SW'][j] + vars()[nutrient + '_ALL_STOCK_' + self.basin + '_IW'][j] # + vars()[nutrient + '_ALL_STOCK_' + self.basin + '_DW'][j]) vars()[nutrient + '_SUMM_' + self.basin][j] = vars()[nutrient + '_ALL_STOCK_' + self.basin + '_SW'][j] extracted_var = [] # TEST ALEX 01/11 18h15 j += 1 f.close() # closing netcdf file print 'SECOND LOOP TO WRITE CSV FILES' for vert_lev in vert_lev_list: for nutrient in nut_list: print 'Creating variable:', nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev if nutrient in ('nitrate', 'ammonium', 'modn', 'smopn', 'lmopn', 'nanon', 'dian', 'synen', 'silice', 'smopsi', 'lmopsi', 'diasi', 'phosphate'): vars()[nutrient + '_STOCK_' + self.basin + '_' + vert_lev] = DataFrame(dates, columns=['date']) vars()[nutrient + '_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev] vars( )[nutrient + '_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/' + nutrient + '_STOCK_' + self.basin + '_' + vert_lev + '.csv') elif nutrient in ('zoonanoc', 'zoomicroc', 'zoomesoc'): vars()[nutrient + '_N_ALL_STOCK_' + self.basin + '_' + vert_lev] = vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev] * 0.18 vars()[nutrient + '_N_STOCK_' + self.basin + '_' + vert_lev] = DataFrame(dates, columns=['date']) vars()[nutrient + '_N_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()[ nutrient + '_N_ALL_STOCK_' + self.basin + '_' + vert_lev] # final results seem ok vars( )[nutrient + '_N_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/' + nutrient + '_N_STOCK_' + self.basin + '_' + vert_lev + '.csv') # nécessite pd.DataFrame elif nutrient in ('bactc'): vars()[nutrient + '_N_ALL_STOCK_' + self.basin + '_' + vert_lev] = vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev] * 0.232 vars()['bactn_STOCK_' + self.basin + '_' + vert_lev] = DataFrame(dates, columns=['date']) vars()['bactn_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()[ nutrient + '_N_ALL_STOCK_' + self.basin + '_' + vert_lev] # final results seem ok vars( )['bactn_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/bactn_STOCK_' + self.basin + '_' + vert_lev + '.csv') # nécessite pd.DataFrame else: print 'Error nutrient' vars()['allzoo_ALL_STOCK_' + self.basin + '_' + vert_lev] = ( vars()['zoonanoc_N_ALL_STOCK_' + self.basin + '_' + vert_lev] + vars()['zoomicroc_N_ALL_STOCK_' + self.basin + '_' + vert_lev] + vars()['zoomesoc_N_ALL_STOCK_' + self.basin + '_' + vert_lev]) vars()['allphy_ALL_STOCK_' + self.basin + '_' + vert_lev] = ( vars()['synen_ALL_STOCK_' + self.basin + '_' + vert_lev] + vars()['nanon_ALL_STOCK_' + self.basin + '_' + vert_lev] + vars()['dian_ALL_STOCK_' + self.basin + '_' + vert_lev]) vars()['allzoo_STOCK_' + self.basin + '_' + vert_lev] = DataFrame( dates, columns=['date']) vars()['allzoo_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()['allzoo_ALL_STOCK_' + self.basin + '_' + vert_lev] # final results seem ok vars()['allzoo_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/allzoo_STOCK_' + self.basin + '_' + vert_lev + '.csv') # nécessite pd.DataFrame vars()['allphy_STOCK_' + self.basin + '_' + vert_lev] = DataFrame( dates, columns=['date']) vars()['allphy_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()['allphy_ALL_STOCK_' + self.basin + '_' + vert_lev] # final results seem ok vars()['allphy_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/allphy_STOCK_' + self.basin + '_' + vert_lev + '.csv') # nécessite pd.DataFrame vars()['DIN_ALL_STOCK_' + self.basin + '_' + vert_lev] = ( vars()['nitrate_ALL_STOCK_' + self.basin + '_' + vert_lev] + vars()['ammonium_ALL_STOCK_' + self.basin + '_' + vert_lev]) vars()['DIN_STOCK_' + self.basin + '_' + vert_lev] = DataFrame( dates, columns=['date']) vars()['DIN_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()['DIN_ALL_STOCK_' + self.basin + '_' + vert_lev] # final results seem ok vars()['DIN_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/DIN_STOCK_' + self.basin + '_' + vert_lev + '.csv') # nécessite pd.DataFrame vars()['DIN_DIP_ALL_STOCK_' + self.basin + '_' + vert_lev] = ( vars()['DIN_ALL_STOCK_' + self.basin + '_' + vert_lev] / vars()['phosphate_ALL_STOCK_' + self.basin + '_' + vert_lev]) vars()['DIN_DIP_STOCK_' + self.basin + '_' + vert_lev] = DataFrame( dates, columns=['date']) vars()['DIN_DIP_STOCK_' + self.basin + '_' + vert_lev]['var'] = vars()['DIN_DIP_ALL_STOCK_' + self.basin + '_' + vert_lev] # final results seem ok vars()['DIN_DIP_STOCK_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/DIN_DIP_STOCK_' + self.basin + '_' + vert_lev + '.csv') # nécessite pd.DataFrame vars()['allzoo_SUMM_' + self.basin] = vars()['allzoo_ALL_STOCK_' + self.basin + '_SW'] # vars()['allzoo_SUMM_' + self.basin] = (vars()['allzoo_ALL_STOCK_' + self.basin + '_SW'] + vars()['allzoo_ALL_STOCK_' + self.basin + '_IW'] # + vars()['allzoo_ALL_STOCK_' + self.basin + '_DW']) vars()['allphy_SUMM_' + self.basin] = vars()['allphy_ALL_STOCK_' + self.basin + '_SW'] # vars()['allphy_SUMM_' + self.basin] = (vars()['allphy_ALL_STOCK_' + self.basin + '_SW'] + vars()['allphy_ALL_STOCK_' + self.basin + '_IW'] # + vars()['allphy_ALL_STOCK_' + self.basin + '_DW']) vars()['bactn_SUMM_' + self.basin] = vars()['bactc_N_ALL_STOCK_' + self.basin + '_SW'] # vars()['bactn_SUMM_' + self.basin] = (vars()['bactc_N_ALL_STOCK_' + self.basin + '_SW'] + vars()['bactc_N_ALL_STOCK_' + self.basin + '_IW'] # + vars()['bactc_N_ALL_STOCK_' + self.basin + '_DW']) vars()['synen_SUMM_' + self.basin] = vars()['synen_ALL_STOCK_' + self.basin + '_SW'] vars()['nanon_SUMM_' + self.basin] = vars()['nanon_ALL_STOCK_' + self.basin + '_SW'] vars()['dian_SUMM_' + self.basin] = vars()['dian_ALL_STOCK_' + self.basin + '_SW'] # vars()['synen_SUMM_' + self.basin] = (vars()['synen_ALL_STOCK_' + self.basin + '_SW'] + vars()['synen_ALL_STOCK_' + self.basin + '_IW'] # + vars()['synen_ALL_STOCK_' + self.basin + '_DW']) # vars()['nanon_SUMM_' + self.basin] = (vars()['nanon_ALL_STOCK_' + self.basin + '_SW'] + vars()['nanon_ALL_STOCK_' + self.basin + '_IW'] # + vars()['nanon_ALL_STOCK_' + self.basin + '_DW']) # vars()['dian_SUMM_' + self.basin] = (vars()['dian_ALL_STOCK_' + self.basin + '_SW'] + vars()['dian_ALL_STOCK_' + self.basin + '_IW'] # + vars()['dian_ALL_STOCK_' + self.basin + '_DW']) vars()['diasi_SUMM_' + self.basin] = vars()['diasi_ALL_STOCK_' + self.basin + '_SW'] # vars()['diasi_SUMM_' + self.basin] = (vars()['diasi_ALL_STOCK_' + self.basin + '_SW'] + vars()['diasi_ALL_STOCK_' + self.basin + '_IW'] # + vars()['diasi_ALL_STOCK_' + self.basin + '_DW']) vars()['zoonanon_SUMM_' + self.basin] = vars()['zoonanoc_N_ALL_STOCK_' + self.basin + '_SW'] vars()['zoomicron_SUMM_' + self.basin] = vars()['zoomicroc_N_ALL_STOCK_' + self.basin + '_SW'] vars()['zoomeson_SUMM_' + self.basin] = vars()['zoomesoc_N_ALL_STOCK_' + self.basin + '_SW'] # vars()['zoonanon_SUMM_' + self.basin] = (vars()['zoonanoc_N_ALL_STOCK_' + self.basin + '_SW'] + vars()['zoonanoc_N_ALL_STOCK_' + self.basin + '_IW'] # + vars()['zoonanoc_N_ALL_STOCK_' + self.basin + '_DW']) # vars()['zoomicron_SUMM_' + self.basin] = (vars()['zoomicroc_N_ALL_STOCK_' + self.basin + '_SW'] + vars()['zoomicroc_N_ALL_STOCK_' + self.basin + '_IW'] # + vars()['zoomicroc_N_ALL_STOCK_' + self.basin + '_DW']) # vars()['zoomeson_SUMM_' + self.basin] = (vars()['zoomesoc_N_ALL_STOCK_' + self.basin + '_SW'] + vars()['zoomesoc_N_ALL_STOCK_' + self.basin + '_IW'] # + vars()['zoomesoc_N_ALL_STOCK_' + self.basin + '_DW']) vars()['DIN_SUMM_' + self.basin] = vars()['DIN_ALL_STOCK_' + self.basin + '_SW'] vars()['DIN_DIP_SUMM_' + self.basin] = vars()['DIN_DIP_ALL_STOCK_' + self.basin + '_SW'] # vars()['DIN_SUMM_' + self.basin] = (vars()['DIN_ALL_STOCK_' + self.basin + '_SW'] + vars()['DIN_ALL_STOCK_' + self.basin + '_IW'] # + vars()['DIN_ALL_STOCK_' + self.basin + '_DW']) # vars()['DIN_DIP_SUMM_' + self.basin] = ((vars()['DIN_DIP_ALL_STOCK_' + self.basin + '_SW']*13 + vars()['DIN_DIP_ALL_STOCK_' + self.basin + '_IW']*7 # + vars()['DIN_DIP_ALL_STOCK_' + self.basin + '_DW']*23)/43) # Moyenne par nombre de niveaux # attention ici DIN_DIP_SUMM est en fait une moyenne sur la colonne d'eau et pas une SUMM (notation conservee pour simplifier le code) for nutrient in ('nitrate', 'ammonium', 'modn', 'smopn', 'lmopn', 'allphy', 'allzoo', 'bactn', 'synen', 'nanon', 'dian', 'zoonanon', 'zoomicron', 'zoomeson', 'silice', 'smopsi', 'lmopsi', 'diasi', 'phosphate', 'DIN', 'DIN_DIP'): vars()[nutrient + '_SUM_' + self.basin] = DataFrame( dates, columns=['date']) vars()[nutrient + '_SUM_' + self.basin]['var'] = vars()[nutrient + '_SUMM_' + self.basin] vars()[nutrient + '_SUM_' + self.basin].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/' + nutrient + '_SUM_' + self.basin + '.csv') """Fin du code à exécuter."""
def run(self): """Code à exécuter pendant l'exécution du thread.""" if self.basin == 'ALB': y = [37.252960, 35.093681, 35, 37] x = [-2.159892, -0.690137, -5.5, -5.5] elif self.basin == 'ALG': y = [ 35.093681, 37.252960, 38.756497, 39.938244, 39.1284526, 36.93272338, 35.930524 ] x = [ -0.690137, -2.159892, -0.162487, 4.159323, 8.92564455, 9.90934876, 3.994854 ] elif self.basin == 'GIB': y = [35.5, 36.5, 36.5, 35.5] x = [-5.5, -5.5, -5, -5] else: print 'Les coordonnées pour : ', self.basin, ' ne sont pas définies ici' print 'Basin :', self.basin print ' ' # Selecting the data vertices = np.array([np.hstack( (x, 0)), np.hstack((y, 0))], float).transpose() path = Path(vertices, codes=None, closed=True) indices = path.contains_points(np.array([ np.reshape(lon_t, (np.size(lon_t))), np.reshape(lat_t, (np.size(lat_t))) ]).T, transform=None, radius=0.0) indices_re = np.reshape(indices, np.shape(lon_t)) # this our mask for the zone j = 0 # compteur for nutrient in nut_list: for vert_lev in vert_lev_list: vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev] = np.zeros([43, len(list_len)]) for o, fn in enumerate(list_len): our_file = list_len[o] print 'o:', o print 'our_file:', our_file # capturer la date date_file = our_file[0:8] f = Dataset(file_path + list_len[o], 'r') # open netcdf file for nutrient in nut_list: print 'nutrient:', nutrient # Extracting data from files in file_list extracted_var = f.variables[nutrient][0, :, :, :] print 'shape extracted_var:', np.shape(extracted_var) lev_range = range(0, 43) for z in lev_range: print 'z:', z temp_arr = extracted_var[z, :, :] temp_arr2 = np.ma.masked_where(np.ma.getmask(new_bath), temp_arr) temp_arr3 = np.ma.masked_where(indices_re == False, temp_arr2) print 'indexing:', nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev, z, o vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev][z, o] = np.mean(temp_arr3) print 'np mean:', np.mean(temp_arr3) #print 'np nanmean:', np.nanmean(temp_arr3) print 'before changing file' j += 1 f.close() # closing netcdf file print 'SECOND LOOP TO WRITE CSV FILES' for vert_lev in vert_lev_list: for nutrient in nut_list: print 'Creating variable:', nutrient + '_OUTPUT_' + self.basin + '_' + vert_lev if nutrient in ('nitrate', 'ammonium', 'modn', 'smopn', 'lmopn', 'phosphate', 'modp', 'smopp', 'lmopp', 'sal'): print nutrient print nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev print 'shape Dataframe:', np.shape( vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev]) vars()[nutrient + '_OUTPUT_' + self.basin + '_' + vert_lev] = DataFrame( vars()[nutrient + '_ALL_STOCK_' + self.basin + '_' + vert_lev]) vars( )[nutrient + '_OUTPUT_' + self.basin + '_' + vert_lev].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/' + nutrient + '_1DMEAN_' + self.basin + '_' + vert_lev + '.csv') else: print 'Error nutrient' """Fin du code à exécuter."""
def run(self): """Code à exécuter pendant l'exécution du thread.""" if self.basin == 'ALB_W': y = [37, 37, 34, 34] x = [-6, -4.5, -4.5, -6] elif self.basin == 'ALB_C': y = [37, 34, 34, 37] x = [-4.5, -4.5, -3, -3] elif self.basin == 'ALB_E': y = [34, 37, 37, 34] x = [-2.5, -2.5, -1, -1] elif self.basin == 'ALG_W': y = [35, 38, 39, 35] x = [-0.6, -0.6, 1, 1] # if self.basin == 'NWE': # y = [40,40,45,45]; # x = [0,9,9,0]; # elif self.basin == 'SWE': # y = [40,40,35,35]; # x = [1.5,9,9,1.5]; # elif self.basin == 'ION': # y = [30,38,38,40,40,30]; # x = [15,15,16,16,22.5,22.5]; # elif self.basin == 'LEV': # y = [30,35,35,39,39,30]; # x = [22.5,22.5,28,28,37,37]; else: print 'Les coordonnées pour : ', self.basin, ' ne sont pas définies ici' print 'Basin :', self.basin print ' ' # Selecting the data vertices = np.array([np.hstack( (x, 0)), np.hstack((y, 0))], float).transpose() path = Path(vertices, codes=None, closed=True) indices = path.contains_points(np.array([ np.reshape(lon_t, (np.size(lon_t))), np.reshape(lat_t, (np.size(lat_t))) ]).T, transform=None, radius=0.0) indices_re = np.reshape(indices, np.shape(lon_t)) # this our mask for the zone for nutrient in nut_list: for basin in basin_list: vars()['all_mean_' + nutrient + '_' + self.basin] = np.empty( [len(list_len)]) #print list_len for o, fn in enumerate(list_len): our_file = list_len[o] # capturer la date date_file = our_file[0:8] f = Dataset(file_path + list_len[o], 'r') # open netcdf file for nutrient in nut_list: # Extracting data from files in file_list extracted_var = f.variables[nutrient][:] extracted_nut = extracted_var # pourquoi cette étape est-elle utile??? # Modif Alex 20/05/2018 for 2D variables if nutrient == 'chl_tot': nut = extracted_nut[0, 42, :, :] else: nut = extracted_nut[0, :, :] # On applique notre masque au nouveau jeu de données new_nut = np.ma.masked_where(np.ma.getmask(new_bath), nut) vars()['all_mean_' + nutrient + '_' + self.basin][o] = np.nanmean( np.ma.masked_array(new_nut, indices_re == False)) extracted_var = [] # TEST ALEX 01/11 18h15 new_nut = [] nut = [] extracted_nut = [] f.close() # closing netcdf file print 'SECOND LOOP TO WRITE CSV FILES' # for vert_lev in vert_lev_list: for nutrient in nut_list: print 'Creating variable:', 'all_mean_' + nutrient + '_' + self.basin vars()[nutrient + '_2D_' + self.basin] = DataFrame( dates, columns=['date']) vars()[nutrient + '_2D_' + self.basin]['var'] = vars()['all_mean_' + nutrient + '_' + self.basin] vars()[nutrient + '_2D_' + self.basin].to_csv( path_or_buf= '/tmpdir/alex/PYTHON/FIGS/BestAjustRivE_BoostW_BOUCLE/' + nutrient + '_2D_' + self.basin + '.csv') """Fin du code à exécuter."""