def __init__(self, filename, ax=[], tx=[], debug=False): ''' Initialize FVCOM class.''' self._debug = debug if debug: print '-Debug mode on-' #Loading pickle file if filename.endswith('.p'): f = open(filename, "rb") data = pkl.load(f) self._origin_file = data['Origin'] self.History = data['History'] if debug: print "Turn keys into attributs" self.Grid = ObjectFromDict(data['Grid']) self.Variables = ObjectFromDict(data['Variables']) try: if self._origin_file.startswith('http'): #Look for file through OpenDAP server print "Retrieving data through OpenDap server..." self.Data = open_url(data['Origin']) #Create fake attribut to be consistent with the rest of the code self.Data.variables = self.Data else: #WB_Alternative: self.Data = sio.netcdf.netcdf_file(filename, 'r') #WB_comments: scipy has causes some errors, and even though can be # faster, can be unreliable #self.Data = nc.Dataset(data['Origin'], 'r') self.Data = netcdf.netcdf_file(data['Origin'], 'r', mmap=True) except: #TR: need to precise the type of error here print "the original *.nc file has not been found" pass #Loading netcdf file elif filename.endswith('.nc'): if filename.startswith('http'): #Look for file through OpenDAP server print "Retrieving data through OpenDap server..." self.Data = open_url(filename) #Create fake attribut to be consistent with the rest of the code self.Data.variables = self.Data else: #Look for file locally print "Retrieving data from " + filename + " ..." #WB_Alternative: self.Data = sio.netcdf.netcdf_file(filename, 'r') #WB_comments: scipy has causes some errors, and even though can be # faster, can be unreliable #self.Data = nc.Dataset(filename, 'r') self.Data = netcdf.netcdf_file(filename, 'r', mmap=True) text = 'Created from ' + filename self._origin_file = filename #Metadata self.History = [text] # Calling sub-class print "Initialisation..." #print "This might take some time..." try: self.Grid = _load_grid(self.Data, ax, self.History, debug=self._debug) self.Variables = _load_var(self.Data, self.Grid, tx, self.History, debug=self._debug) except MemoryError: print '---Data too large for machine memory---' print 'Tip: use ax or tx during class initialisation' print '--- to use partial data' raise elif filename.endswith('.mat'): print "---Functionality not yet implemented---" sys.exit() else: print "---Wrong file format---" sys.exit() self.Plots = PlotsFvcom(self.Variables, self.Grid, self._debug) self.Util2D = FunctionsFvcom(self.Variables, self.Grid, self.Plots, self.History, self._debug) if self.Variables._3D: self.Util3D = FunctionsFvcomThreeD(self.Variables, self.Grid, self.Plots, self.Util2D, self.History, self._debug) self.Plots.vertical_slice = self.Util3D._vertical_slice
def __init__(self, filename, ax=[], tx=[], debug=False): """ Initialize FVCOM class.""" self._debug = debug if debug: print '-Debug mode on-' #Force garbage collector when fvcom object created gc.collect() #Loading pickle file if filename.endswith('.p'): f = open(filename, "rb") try: data = pkl.load(f) except MemoryError: try: data = Pkl.load(f) except KeyError: data = pkl.load(f,2) self._origin_file = data['Origin'] self.History = data['History'] if debug: print "Turn keys into attributs" self.Grid = ObjectFromDict(data['Grid']) self.Variables = ObjectFromDict(data['Variables']) try: if self._origin_file.startswith('http'): #Look for file through OpenDAP server print "Retrieving data through OpenDap server..." self.Data = open_url(data['Origin']) #Create fake attribut to be consistent with the rest of the code self.Data.variables = self.Data else: #WB_Alternative: self.Data = sio.netcdf.netcdf_file(filename, 'r') #WB_comments: scipy has causes some errors, and even though can be # faster, can be unreliable if isfile(data['Origin']): try: self.Data = netcdf.netcdf_file(data['Origin'], 'r',mmap=True) #due to mmap not coping with big array > 4Gib except (OverflowError, TypeError, ValueError) as e: self.Data = nc.Dataset(data['Origin'], 'r', format='NETCDF4_CLASSIC') else: print "the original *.nc file has not been found" except: #TR: need to precise the type of error here print "the original *.nc file has not been found" pass #Loading netcdf file elif filename.endswith('.nc'): if filename.startswith('http'): #Look for file through OpenDAP server print "Retrieving data through OpenDap server..." self.Data = open_url(filename) #Create fake attribut to be consistent with the rest of the code self.Data.variables = self.Data else: #Look for file locally print "Retrieving data from " + filename + " ..." #WB_Alternative: self.Data = sio.netcdf.netcdf_file(filename, 'r') #WB_comments: scipy has causes some errors, and even though can be # faster, can be unreliable try: self.Data = netcdf.netcdf_file(filename, 'r',mmap=True) #due to mmap not coping with big array > 4Gib except (OverflowError, TypeError, ValueError) as e: self.Data = nc.Dataset(filename, 'r', format='NETCDF4_CLASSIC') text = 'Created from ' + filename self._origin_file = filename #Metadata self.History = [text] # Calling sub-class print "Initialisation..." #print "This might take some time..." try: self.Grid = _load_grid(self.Data, ax, self.History, debug=self._debug) self.Variables = _load_var(self.Data, self.Grid, tx, self.History, debug=self._debug) except MemoryError: print '---Data too large for machine memory---' print 'Tip: use ax or tx during class initialisation' print '--- to use partial data' raise elif filename.endswith('.mat'): raise PyseidonError("---Functionality not yet implemented---") else: raise PyseidonError("---Wrong file format---") self.Plots = PlotsFvcom(self.Variables, self.Grid, self._debug) self.Util2D = FunctionsFvcom(self.Variables, self.Grid, self.Plots, self.History, self._debug) if self.Variables._3D: self.Util3D = FunctionsFvcomThreeD(self.Variables, self.Grid, self.Plots, self.Util2D, self.History, self._debug) self.Plots.vertical_slice = self.Util3D._vertical_slice ##Re-assignement of utility functions as methods #self.dump_profile_data = self.Plots._dump_profile_data_as_csv #self.dump_map_data = self.Plots._dump_map_data_as_csv return
def __init__(self, filename, ax=[], tx=[], debug=False): ''' Initialize FVCOM class.''' self._debug = debug if debug: print '-Debug mode on-' #Loading pickle file if filename.endswith('.p'): f = open(filename, "rb") data = pkl.load(f) self._origin_file = data['Origin'] self.History = data['History'] if debug: print "Turn keys into attributs" self.Grid = ObjectFromDict(data['Grid']) self.Variables = ObjectFromDict(data['Variables']) try: if self._origin_file.startswith('http'): #Look for file through OpenDAP server print "Retrieving data through OpenDap server..." self.Data = open_url(data['Origin']) #Create fake attribut to be consistent with the rest of the code self.Data.variables = self.Data else: #WB_Alternative: self.Data = sio.netcdf.netcdf_file(filename, 'r') #WB_comments: scipy has causes some errors, and even though can be # faster, can be unreliable #self.Data = nc.Dataset(data['Origin'], 'r') self.Data = netcdf.netcdf_file(data['Origin'], 'r',mmap=True) except: #TR: need to precise the type of error here print "the original *.nc file has not been found" pass #Loading netcdf file elif filename.endswith('.nc'): if filename.startswith('http'): #Look for file through OpenDAP server print "Retrieving data through OpenDap server..." self.Data = open_url(filename) #Create fake attribut to be consistent with the rest of the code self.Data.variables = self.Data else: #Look for file locally print "Retrieving data from " + filename + " ..." #WB_Alternative: self.Data = sio.netcdf.netcdf_file(filename, 'r') #WB_comments: scipy has causes some errors, and even though can be # faster, can be unreliable #self.Data = nc.Dataset(filename, 'r') self.Data = netcdf.netcdf_file(filename, 'r',mmap=True) text = 'Created from ' + filename self._origin_file = filename #Metadata self.History = [text] # Calling sub-class print "Initialisation..." #print "This might take some time..." try: self.Grid = _load_grid(self.Data, ax, self.History, debug=self._debug) self.Variables = _load_var(self.Data, self.Grid, tx, self.History, debug=self._debug) except MemoryError: print '---Data too large for machine memory---' print 'Tip: use ax or tx during class initialisation' print '--- to use partial data' raise elif filename.endswith('.mat'): print "---Functionality not yet implemented---" sys.exit() else: print "---Wrong file format---" sys.exit() self.Plots = PlotsFvcom(self.Variables, self.Grid, self._debug) self.Util2D = FunctionsFvcom(self.Variables, self.Grid, self.Plots, self.History, self._debug) if self.Variables._3D: self.Util3D = FunctionsFvcomThreeD(self.Variables, self.Grid, self.Plots, self.Util2D, self.History, self._debug) self.Plots.vertical_slice = self.Util3D._vertical_slice