def read(self, verbose=False, cfg=None): """ Lecture des fichiers NetCDF de NAR SST """ import cdms2, sys, os, glob import numpy, MV2 import cdtime from vacumm.misc.axes import create_lon, set_order from vacumm.misc.grid import create_grid, set_grid from vacumm.misc.atime import create_time from vacumm.misc.phys.units import kel2degc import gc # Get the configuration file information #cfg = self.get_config() #print cfg # -- Creation d'un objet cdms nomme self.data et d'un tableau cumt pour les dates extraites des noms de fichiers self.data = () #Initialise un tuple # =============== ATTENTION ==================== # Initialiser self.data pour ne pas dupliquer en memoire !!!!!!!!! # ============================================ # -- Methode amelioree # Cree une liste files = [] # Cree la liste des fichiers correspondants a la periode consideree if cfg is None: config = configparser.RawConfigParser() config.read(os.path.join(self.SCRIPT_DIR, 'config.cfg')) hr_satellites = config.get('Nar SST', 'hr_satellites') else: hr_satellites = cfg['Nar SST']['hr_satellites'] hr_satellites = hr_satellites.split(',') #hr_satellites = cfg['hr_satellites'] #print hr_satellites ctest = self.ctdeb while ctest <= self.ctfin: for isat, s_name in enumerate(hr_satellites): flnme_only = '%04d%02d%02d*%s*.nc' % (ctest.year, ctest.month, ctest.day, s_name) files.extend(glob.glob(os.path.join(flnme_only))) ctest = ctest.add(1, cdtime.Days) # -- if cfg is None: lomin = float(config.get('Domain', 'lomin')) lomax = float(config.get('Domain', 'lomax')) lamin = float(config.get('Domain', 'lamin')) lamax = float(config.get('Domain', 'lamax')) else: lomin = cfg['Domain']['lomin'] lomax = cfg['Domain']['lomax'] lamin = cfg['Domain']['lamin'] lamax = cfg['Domain']['lamax'] #print files if files == []: print('No data file to read ...') else: # ---- Lecture et creation de la grille ---- # # -- Lecture du fichier filename f = cdms2.open(files[0]) lo = f.getVariable('lon') la = f.getVariable('lat') # -- Creation des axes longitude et latitude # lat_axis = create_lon(la,id='latitude') # lon_axis = create_lon(lo,id='longitude') # -- Creation de la grille grid = create_grid(lo, la) del lo, la for ifile, filename in enumerate(files): # -- Lecture du fichier filename f = cdms2.open(filename) temp2 = f('sea_surface_temperature') set_order(temp2, 'tyx') # pour que averager.py fontionne # modif J.Gatti : utilisation de l'index de qualite (0:unprocessed 1:cloudy 2:bad 3:suspect 4:acceptable 5:excellent) temp2.set_fill_value(temp2._FillValue) conf = f('proximity_confidence') MV2.putmask(temp2.data, conf.data < 3, temp2._FillValue) # ne change que data MV2.putmask(temp2.mask, conf.data < 3, True) # ne change que mask #autre methode #-------------------- #temp2=MV2.masked_where(conf.data<3,temp2) # ne change que mask #oldmask=temp2.mask #temp2[:]=temp2.filled() # change data mais met mask a false partout #temp2.mask=oldmask # remet le bon mask sans lien del conf # fin modif J.Gatti : utilisation de l'index de qualite # -- Attribution de la grille a l'objet self.data set_grid(temp2, grid, axes=True) temp = temp2(lon=(lomin, lomax), lat=(lamin, lamax)) if verbose: # == TEST OCCUPATION MEMOIRE === print(ctest, 'Avant') #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() del temp2 if verbose: # == TEST OCCUPATION MEMOIRE === print(ctest, 'Apres del') #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() # =============== ATTENTION ================================== # Verifier que temp utilise tout le temps le meme espace memoire ... voir du cote de cdms # ========================================================== f.close() # -- Transfert de temp dans l'objet cdat self.data (concatenation) # =============== ATTENTION ==================== # Faire une variable intermediaire qui sera au prealable allouee en memoire pour eviter # trop de copies en memoire !!!!!!!!!!!!!!!! # ============================================ #self.data += temp, if ifile == 0: self.data = temp else: self.data = MV2.concatenate((self.data, temp)) if verbose: # == TEST OCCUPATION MEMOIRE === print(ctest, 'Avant gccollect') #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() print(gc.collect()) gc.collect() if verbose: # == TEST OCCUPATION MEMOIRE === print(ctest, 'Apres gccollect') #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() # -- Creation de l'axe temporel #taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) #self.data = MV2.concatenate(self.data) # -- Informations sur le dataset #self.data.name = "NAR_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - NAR" # -- Change unit self.data = kel2degc(self.data)
def read(self, cfg=None): """ Lecture des fichiers NetCDF de NAR SST """ import cdms2, sys, os, glob import numpy, MV2 import cdtime from vacumm.misc.axes import create_lon from vacumm.misc.grid import create_grid, set_grid from vacumm.misc.atime import create_time from vacumm.misc.phys.units import kel2degc if self.ctdeb >= cdtime.comptime(2012, 01, 01, 0, 0, 0): # -- Creation d'un objet cdms nomme self.data et d'un tableau cumt pour les dates extraites des noms de fichiers self.data = () #Initialise un tuple # =============== ATTENTION ==================== # Initialiser self.data pour ne pas dupliquer en memoire !!!!!!!!! # ============================================ # -- Methode amelioree # Cree une liste files = [] # Cree la liste des fichiers correspondants a la periode consideree ctest = self.ctdeb while ctest <= self.ctfin: for iH in numpy.arange(24): flnme_only = '%04d%02d%02d%02d*.nc' % ( ctest.year, ctest.month, ctest.day, iH) files.extend( glob.glob(os.path.join(self.OBSDIR, flnme_only))) ctest = ctest.add(1, cdtime.Days) # -- if cfg is None: config = ConfigParser.RawConfigParser() config.read(os.path.join(self.SCRIPT_DIR, 'config.cfg')) lomin = float(config.get('Domain', 'lomin')) lomax = float(config.get('Domain', 'lomax')) lamin = float(config.get('Domain', 'lamin')) lamax = float(config.get('Domain', 'lamax')) else: lomin = cfg['Domain']['lomin'] lomax = cfg['Domain']['lomax'] lamin = cfg['Domain']['lamin'] lamax = cfg['Domain']['lamax'] if cfg is None: try: timerange = config.get('Seviri SST', 'timerange') # timerange = 'midnight' pour donnees a minuit seulement # timerange = 'all' pour donnees a minuit seulement except ConfigParser.NoOptionError: #print 'No Time Range' timerange = 'all' # Par defaut, lecture de toutes les heures else: timerange = cfg['Seviri SST']['timerange'] if files == []: print 'No data file to read ...' else: for ifile, filename in enumerate(files): # -- Lecture du fichier filename f = cdms2.open(filename) temp = f('sea_surface_temperature', lon=(lomin, lomax), lat=(lamin, lamax)) f.close() # -- Transfert de temp dans l'objet cdat self.data (concatenation) self.data += temp, # -- Creation de l'axe temporel #taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) self.data = MV2.concatenate(self.data) # -- Informations sur le dataset #self.data.name = "SEVIRI_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - SEVIRI" # -- Change unit self.data = kel2degc(self.data)
def read(self): """ Lecture des fichiers NetCDF de NAR SST """ import cdms2, sys, os, glob import numpy, MV2 import cdtime from vacumm.misc.axes import create_lon from vacumm.misc.grid import create_grid, set_grid from vacumm.misc.atime import create_time from vacumm.misc.phys.units import kel2degc # -- Dans le cas d'un NAR SST on lit la grille lon lat dans le fichier grid # -- Lecture de la grille znar = self.ZONE_NAR gridfile = "grid_%(znar)s.nc" % vars() f = cdms2.open(gridfile) la = f('latitude') lo = f('longitude') f.close() # -- Creation des axes longitude et latitude lat_axis = create_lon(la, id='latitude') lon_axis = create_lon(lo, id='longitude') # -- Creation de la grille grid = create_grid(lon_axis, lat_axis) # -- Creation d'un objet cdms nomme self.data et d'un tableau cumt pour les dates extraites des noms de fichiers self.data = () #Initialise un tuple # =============== ATTENTION ==================== # Initialiser self.data pour ne pas dupliquer en memoire !!!!!!!!! # ============================================ #cumt = [] # Initialise un array # -- Boucle sur les fichiers presents dans le WORKDIR #url_file_def="%(YYYY)s%(MM)s%(DD)s%(HH)s%(ext)s"%vars() #self.ctdeb # -- Ancienne methode #files = glob.glob(os.path.join(self.WORKDIR, '2*.nc')) #files.sort() # -- # -- Methode amelioree # Cree une liste files = [] # Cree la liste des fichiers correspondants a la periode consideree ctest = self.ctdeb while ctest <= self.ctfin: flnme_only = '%(#)04d%(##)02d%(###)02d*.nc' % { '#': ctest.year, '##': ctest.month, '###': ctest.day } files.extend(glob.glob(os.path.join(self.WORKDIR, flnme_only))) ctest = ctest.add(1, cdtime.Days) # -- for filename in files: # -- Lecture du fichier filename f = cdms2.open(filename) temp = f('sea_surface_temperature') # =============== ATTENTION ================================== # Verifier que temp utilise tout le temps le meme espace memoire ... voir du cote de cdms # ========================================================== f.close() # -- Extraction de la date et heure du nom du fichier #ty = numpy.int(filename[-15:-11]) #tm = numpy.int(filename[-11:-9]) #tj = numpy.int(filename[-9:-7]) #th = numpy.int(filename[-7:-5]) #tt = cdtime.comptime(ty,tm,tj,th) #cumt.append(tt) # -- Transfert de temp dans l'objet cdat self.data (concatenation) # =============== ATTENTION ==================== # Faire une variable intermediaire qui sera au prealable allouee en memoire pour eviter # trop de copies en memoire !!!!!!!!!!!!!!!! # ============================================ self.data += temp, # -- Creation de l'axe temporel #taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) self.data = MV2.concatenate(self.data) # -- Attribution de la grille a l'objet self.data set_grid(self.data, grid, axes=True) # -- Informations sur le dataset self.data.name = "NAR_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - NAR" # -- Change unit self.data = kel2degc(self.data)
self.data += temp, # -- Creation de l'axe temporel #taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) self.data = MV2.concatenate(self.data) # -- Informations sur le dataset #self.data.name = "SEVIRI_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - SEVIRI" # -- Change unit self.data = kel2degc(self.data) #-- Fin de lecture des donnees #---------------------------------------------------- def read_assim(self, cfg=None): """ Lecture des fichiers NetCDF de SST SEVIRI formatte pour l'assimilation """ import cdms2, sys, os, glob import numpy, MV2 import cdtime # -- Creation d'un objet cdms nomme self.data if cfg is None: config = ConfigParser.RawConfigParser() config.read(os.path.join(self.SCRIPT_DIR, 'config.cfg'))
def read(self, cfg=None): """ Lecture des fichiers NetCDF de NAR SST """ import cdms2, sys, os, glob import numpy, MV2 import cdtime from vacumm.misc.axes import create_lon from vacumm.misc.grid import create_grid, set_grid from vacumm.misc.atime import create_time from vacumm.misc.phys.units import kel2degc if self.ctdeb >= cdtime.comptime(2012, 01, 01, 0, 0, 0): # -- Creation d'un objet cdms nomme self.data et d'un tableau cumt pour les dates extraites des noms de fichiers self.data = () # Initialise un tuple # =============== ATTENTION ==================== # Initialiser self.data pour ne pas dupliquer en memoire !!!!!!!!! # ============================================ # -- Methode amelioree # Cree une liste files = [] # Cree la liste des fichiers correspondants a la periode consideree ctest = self.ctdeb while ctest <= self.ctfin: for iH in numpy.arange(24): flnme_only = "%04d%02d%02d%02d*.nc" % (ctest.year, ctest.month, ctest.day, iH) files.extend(glob.glob(os.path.join(self.OBSDIR, flnme_only))) ctest = ctest.add(1, cdtime.Days) # -- if cfg is None: config = ConfigParser.RawConfigParser() config.read(os.path.join(self.SCRIPT_DIR, "config.cfg")) lomin = float(config.get("Domain", "lomin")) lomax = float(config.get("Domain", "lomax")) lamin = float(config.get("Domain", "lamin")) lamax = float(config.get("Domain", "lamax")) else: lomin = cfg["Domain"]["lomin"] lomax = cfg["Domain"]["lomax"] lamin = cfg["Domain"]["lamin"] lamax = cfg["Domain"]["lamax"] if cfg is None: try: timerange = config.get("Seviri SST", "timerange") # timerange = 'midnight' pour donnees a minuit seulement # timerange = 'all' pour donnees a minuit seulement except ConfigParser.NoOptionError: # print 'No Time Range' timerange = "all" # Par defaut, lecture de toutes les heures else: timerange = cfg["Seviri SST"]["timerange"] if files == []: print "No data file to read ..." else: for ifile, filename in enumerate(files): # -- Lecture du fichier filename f = cdms2.open(filename) temp = f("sea_surface_temperature", lon=(lomin, lomax), lat=(lamin, lamax)) f.close() # -- Transfert de temp dans l'objet cdat self.data (concatenation) self.data += (temp,) # -- Creation de l'axe temporel # taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) self.data = MV2.concatenate(self.data) # -- Informations sur le dataset # self.data.name = "SEVIRI_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - SEVIRI" # -- Change unit self.data = kel2degc(self.data)
self.data += (temp,) # -- Creation de l'axe temporel # taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) self.data = MV2.concatenate(self.data) # -- Informations sur le dataset # self.data.name = "SEVIRI_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - SEVIRI" # -- Change unit self.data = kel2degc(self.data) # -- Fin de lecture des donnees # ---------------------------------------------------- def read_assim(self, cfg=None): """ Lecture des fichiers NetCDF de SST SEVIRI formatte pour l'assimilation """ import cdms2, sys, os, glob import numpy, MV2 import cdtime # -- Creation d'un objet cdms nomme self.data if cfg is None: config = ConfigParser.RawConfigParser() config.read(os.path.join(self.SCRIPT_DIR, "config.cfg"))
def read(self, verbose=False, cfg=None): """ Lecture des fichiers NetCDF de NAR SST """ import cdms2,sys,os, glob import numpy,MV2 import cdtime from vacumm.misc.axes import create_lon, set_order from vacumm.misc.grid import create_grid, set_grid from vacumm.misc.atime import create_time from vacumm.misc.phys.units import kel2degc import gc # Get the configuration file information #cfg = self.get_config() #print cfg # -- Creation d'un objet cdms nomme self.data et d'un tableau cumt pour les dates extraites des noms de fichiers self.data = () #Initialise un tuple # =============== ATTENTION ==================== # Initialiser self.data pour ne pas dupliquer en memoire !!!!!!!!! # ============================================ # -- Methode amelioree # Cree une liste files = [] # Cree la liste des fichiers correspondants a la periode consideree if cfg is None: config = ConfigParser.RawConfigParser() config.read(os.path.join(self.SCRIPT_DIR,'config.cfg')) hr_satellites = config.get('Nar SST', 'hr_satellites') else: hr_satellites = cfg['Nar SST']['hr_satellites'] hr_satellites = hr_satellites.split(',') #hr_satellites = cfg['hr_satellites'] #print hr_satellites ctest = self.ctdeb while ctest <= self.ctfin: for isat, s_name in enumerate(hr_satellites): flnme_only = '%04d%02d%02d*%s*.nc'%(ctest.year, ctest.month, ctest.day, s_name) files.extend(glob.glob(os.path.join(flnme_only))) ctest=ctest.add(1,cdtime.Days) # -- if cfg is None: lomin = float(config.get('Domain', 'lomin') ) lomax = float(config.get('Domain', 'lomax') ) lamin = float(config.get('Domain', 'lamin') ) lamax = float(config.get('Domain', 'lamax') ) else: lomin = cfg['Domain']['lomin'] lomax = cfg['Domain']['lomax'] lamin = cfg['Domain']['lamin'] lamax = cfg['Domain']['lamax'] #print files if files == []: print 'No data file to read ...' else: # ---- Lecture et creation de la grille ---- # # -- Lecture du fichier filename f = cdms2.open(files[0]) lo = f.getVariable('lon') la = f.getVariable('lat') # -- Creation des axes longitude et latitude # lat_axis = create_lon(la,id='latitude') # lon_axis = create_lon(lo,id='longitude') # -- Creation de la grille grid = create_grid(lo, la) del lo, la for ifile, filename in enumerate(files): # -- Lecture du fichier filename f = cdms2.open(filename) temp2 = f('sea_surface_temperature') set_order(temp2, 'tyx') # pour que averager.py fontionne # modif J.Gatti : utilisation de l'index de qualite (0:unprocessed 1:cloudy 2:bad 3:suspect 4:acceptable 5:excellent) temp2.set_fill_value(temp2._FillValue) conf=f('proximity_confidence') MV2.putmask(temp2.data,conf.data<3,temp2._FillValue) # ne change que data MV2.putmask(temp2.mask,conf.data<3,True) # ne change que mask #autre methode #-------------------- #temp2=MV2.masked_where(conf.data<3,temp2) # ne change que mask #oldmask=temp2.mask #temp2[:]=temp2.filled() # change data mais met mask a false partout #temp2.mask=oldmask # remet le bon mask sans lien del conf # fin modif J.Gatti : utilisation de l'index de qualite # -- Attribution de la grille a l'objet self.data set_grid(temp2, grid, axes=True) temp = temp2(lon=(lomin, lomax), lat=(lamin, lamax)) if verbose: # == TEST OCCUPATION MEMOIRE === print ctest, 'Avant' #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() del temp2 if verbose: # == TEST OCCUPATION MEMOIRE === print ctest, 'Apres del' #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() # =============== ATTENTION ================================== # Verifier que temp utilise tout le temps le meme espace memoire ... voir du cote de cdms # ========================================================== f.close() # -- Transfert de temp dans l'objet cdat self.data (concatenation) # =============== ATTENTION ==================== # Faire une variable intermediaire qui sera au prealable allouee en memoire pour eviter # trop de copies en memoire !!!!!!!!!!!!!!!! # ============================================ #self.data += temp, if ifile == 0: self.data = temp else: self.data = MV2.concatenate((self.data, temp)) if verbose: # == TEST OCCUPATION MEMOIRE === print ctest, 'Avant gccollect' #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() print gc.collect() gc.collect() if verbose: # == TEST OCCUPATION MEMOIRE === print ctest, 'Apres gccollect' #print psutil.Process(os.getpid()).get_memory_percent() #print psutil.Process(os.getpid()).get_memory_info() #print 'CPU percent: ', psutil.cpu_percent(interval=0.1) #print 'Used phymem: ', psutil.used_phymem() #print 'Used virtmem: ', psutil.used_virtmem() # -- Creation de l'axe temporel #taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) #self.data = MV2.concatenate(self.data) # -- Informations sur le dataset #self.data.name = "NAR_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - NAR" # -- Change unit self.data = kel2degc(self.data)
def read(self): """ Lecture des fichiers NetCDF de NAR SST """ import cdms2,sys,os, glob import numpy,MV2 import cdtime from vacumm.misc.axes import create_lon from vacumm.misc.grid import create_grid, set_grid from vacumm.misc.atime import create_time from vacumm.misc.phys.units import kel2degc # -- Dans le cas d'un NAR SST on lit la grille lon lat dans le fichier grid # -- Lecture de la grille znar=self.ZONE_NAR gridfile="grid_%(znar)s.nc"%vars() f=cdms2.open(gridfile) la = f('latitude') lo = f('longitude') f.close() # -- Creation des axes longitude et latitude lat_axis = create_lon(la,id='latitude') lon_axis = create_lon(lo,id='longitude') # -- Creation de la grille grid = create_grid(lon_axis, lat_axis) # -- Creation d'un objet cdms nomme self.data et d'un tableau cumt pour les dates extraites des noms de fichiers self.data = () #Initialise un tuple # =============== ATTENTION ==================== # Initialiser self.data pour ne pas dupliquer en memoire !!!!!!!!! # ============================================ #cumt = [] # Initialise un array # -- Boucle sur les fichiers presents dans le WORKDIR #url_file_def="%(YYYY)s%(MM)s%(DD)s%(HH)s%(ext)s"%vars() #self.ctdeb # -- Ancienne methode #files = glob.glob(os.path.join(self.WORKDIR, '2*.nc')) #files.sort() # -- # -- Methode amelioree # Cree une liste files = [] # Cree la liste des fichiers correspondants a la periode consideree ctest = self.ctdeb while ctest <= self.ctfin: flnme_only = '%(#)04d%(##)02d%(###)02d*.nc'%{'#':ctest.year, '##':ctest.month, '###':ctest.day} files.extend(glob.glob(os.path.join(self.WORKDIR, flnme_only))) ctest=ctest.add(1,cdtime.Days) # -- for filename in files: # -- Lecture du fichier filename f = cdms2.open(filename) temp = f('sea_surface_temperature') # =============== ATTENTION ================================== # Verifier que temp utilise tout le temps le meme espace memoire ... voir du cote de cdms # ========================================================== f.close() # -- Extraction de la date et heure du nom du fichier #ty = numpy.int(filename[-15:-11]) #tm = numpy.int(filename[-11:-9]) #tj = numpy.int(filename[-9:-7]) #th = numpy.int(filename[-7:-5]) #tt = cdtime.comptime(ty,tm,tj,th) #cumt.append(tt) # -- Transfert de temp dans l'objet cdat self.data (concatenation) # =============== ATTENTION ==================== # Faire une variable intermediaire qui sera au prealable allouee en memoire pour eviter # trop de copies en memoire !!!!!!!!!!!!!!!! # ============================================ self.data += temp, # -- Creation de l'axe temporel #taxis = create_time(cumt) # -- MV2.concatenate pour concatener les informations dans self.data (entre autre construit l'axe temporel) self.data = MV2.concatenate(self.data) # -- Attribution de la grille a l'objet self.data set_grid(self.data, grid, axes=True) # -- Informations sur le dataset self.data.name = "NAR_SST" self.data.units = "degree_Celsius" self.data.standard_name = "satellite_sea_surface_temperature" self.data.long_name = "Satellite Sea Surface Temperature - NAR" # -- Change unit self.data = kel2degc(self.data)