Loading py/cso_catalogue.py +10 −6 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ # 2024-01, Arjo Segers # Use new plotting routines based on cartopy. # # 2025-04, Arjo Segers # Updated for latest changes in CSO_Listing class. # ######################################################################## ### Loading Loading @@ -311,9 +315,9 @@ class CSO_Catalogue(CSO_CatalogueBase): # read listing: lst = cso_file.CSO_Listing(lstfile, indent=indent) # subset of files in timerange: df = lst.Select(tr=(t1, t2)) xlst = lst.Select(tr=(t1, t2)) # number of records: nrec = len(df) nrec = len(xlst) # info ... logging.info(" records within timerange: %i" % nrec) Loading Loading @@ -361,21 +365,21 @@ class CSO_Catalogue(CSO_CatalogueBase): # info .. logging.info(indent + "loop over orbit files ...") # loop: for fname in df.index: for fname in xlst.GetValues(): # info .. logging.info(indent + " %s ..." % fname) # full path: filename = os.path.join(inputdir, fname) # orbit key: orbit = df.at[fname, "orbit"] orbit = xlst.GetValue(fname, "orbit") ## testing ... # if '1200' not in filename : continue # time range: tr1 = df.at[fname, "start_time"] tr2 = df.at[fname, "end_time"] tr1 = xlst.GetValue(fname, "start_time") tr2 = xlst.GetValue(fname, "end_time") # mid time: taver = tr1 + 0.5 * (tr2 - tr1) Loading py/cso_file.py +36 −11 Original line number Diff line number Diff line Loading @@ -30,6 +30,13 @@ # Option to CheckDir to set directory creation mode. # Accept dmode=None as default. # # 2025-04, Arjo Segers # Convert datetime time values in listing files after reading to keep default str values in table. # Updated methods of CSO_Listing class: # - GetValues now returns the index column by defaul. # - added GetValue method # Removed usage of undefined filename in error messages. # ######################################################################## ### Loading Loading @@ -1285,9 +1292,12 @@ class CSO_Listing(object): filename, sep=self.sep, index_col=self.index_label, parse_dates=["start_time", "end_time"], dtype="str", ) # convert datetime columns, as the default is "str" # the "parse_dates" argument could not be used: self.df["start_time"] = pandas.to_datetime( self.df["start_time"] ) self.df["end_time"] = pandas.to_datetime( self.df["end_time"] ) else: # new table: Loading Loading @@ -1351,20 +1361,35 @@ class CSO_Listing(object): # * def GetValues(self, name): def GetValue(self, filename, key ): """ Return :py:class:`pandas.Series` object with all values for provided column ``name``. Return ``key`` value for record of ``filename``. """ # check .. if name not in self.df.keys(): logging.error(f"column '{name}' not found in: {self.filename}") # copy: return self.df.at[filename,key] # enddef GetValue # * def GetValues(self, name=None): """ Return :py:class:`pandas.Series` object with all values for provided column ``name``, or the filenames if ``name`` is not provided. """ # switch .. if name is None : return self.df.index elif name in self.df.keys(): return self.df[name] else: logging.error(f"column '{name}' not found in listing") raise Exception # endif # extract: return self.df[name] # enddef GetRecord # enddef GetValues # * Loading Loading @@ -1426,7 +1451,7 @@ class CSO_Listing(object): # check .. if fname not in self.df.index: logging.error('file "%s" is not a record in table: %s' % (fname, self.filename)) logging.error('file "%s" is not a record in table: %s' % (fname, filename)) raise Exception # endif Loading Loading @@ -1555,7 +1580,7 @@ class CSO_Listing(object): for key, value in kwargs.items(): # check .. if key not in df.keys(): logging.error(f"key '{key}' not defined in listing: {self.filename}") logging.error(f"key '{key}' not defined in listing") raise Exception # endif # select: Loading py/cso_inquire.py +7 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ # 2025-02, Arjo Segers # Fixed type conversion of "dmode" setting. # # 2025-04, Arjo Segers # Convert datetime time values in listing files after reading to keep default str values in table. # ######################################################################## ### Loading Loading @@ -221,9 +224,12 @@ class CSO_Inquire_Plot(utopya.UtopyaRc): filename, sep=";", skip_blank_lines=True, parse_dates=["start_time", "end_time"], dtype="str", ) # convert datetime columns, as the default is "str" # the "parse_dates" argument could not be used: xdf["start_time"] = pandas.to_datetime( xdf["start_time"] ) xdf["end_time"] = pandas.to_datetime( xdf["end_time"] ) # combine: if df is None: df = xdf Loading Loading
py/cso_catalogue.py +10 −6 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ # 2024-01, Arjo Segers # Use new plotting routines based on cartopy. # # 2025-04, Arjo Segers # Updated for latest changes in CSO_Listing class. # ######################################################################## ### Loading Loading @@ -311,9 +315,9 @@ class CSO_Catalogue(CSO_CatalogueBase): # read listing: lst = cso_file.CSO_Listing(lstfile, indent=indent) # subset of files in timerange: df = lst.Select(tr=(t1, t2)) xlst = lst.Select(tr=(t1, t2)) # number of records: nrec = len(df) nrec = len(xlst) # info ... logging.info(" records within timerange: %i" % nrec) Loading Loading @@ -361,21 +365,21 @@ class CSO_Catalogue(CSO_CatalogueBase): # info .. logging.info(indent + "loop over orbit files ...") # loop: for fname in df.index: for fname in xlst.GetValues(): # info .. logging.info(indent + " %s ..." % fname) # full path: filename = os.path.join(inputdir, fname) # orbit key: orbit = df.at[fname, "orbit"] orbit = xlst.GetValue(fname, "orbit") ## testing ... # if '1200' not in filename : continue # time range: tr1 = df.at[fname, "start_time"] tr2 = df.at[fname, "end_time"] tr1 = xlst.GetValue(fname, "start_time") tr2 = xlst.GetValue(fname, "end_time") # mid time: taver = tr1 + 0.5 * (tr2 - tr1) Loading
py/cso_file.py +36 −11 Original line number Diff line number Diff line Loading @@ -30,6 +30,13 @@ # Option to CheckDir to set directory creation mode. # Accept dmode=None as default. # # 2025-04, Arjo Segers # Convert datetime time values in listing files after reading to keep default str values in table. # Updated methods of CSO_Listing class: # - GetValues now returns the index column by defaul. # - added GetValue method # Removed usage of undefined filename in error messages. # ######################################################################## ### Loading Loading @@ -1285,9 +1292,12 @@ class CSO_Listing(object): filename, sep=self.sep, index_col=self.index_label, parse_dates=["start_time", "end_time"], dtype="str", ) # convert datetime columns, as the default is "str" # the "parse_dates" argument could not be used: self.df["start_time"] = pandas.to_datetime( self.df["start_time"] ) self.df["end_time"] = pandas.to_datetime( self.df["end_time"] ) else: # new table: Loading Loading @@ -1351,20 +1361,35 @@ class CSO_Listing(object): # * def GetValues(self, name): def GetValue(self, filename, key ): """ Return :py:class:`pandas.Series` object with all values for provided column ``name``. Return ``key`` value for record of ``filename``. """ # check .. if name not in self.df.keys(): logging.error(f"column '{name}' not found in: {self.filename}") # copy: return self.df.at[filename,key] # enddef GetValue # * def GetValues(self, name=None): """ Return :py:class:`pandas.Series` object with all values for provided column ``name``, or the filenames if ``name`` is not provided. """ # switch .. if name is None : return self.df.index elif name in self.df.keys(): return self.df[name] else: logging.error(f"column '{name}' not found in listing") raise Exception # endif # extract: return self.df[name] # enddef GetRecord # enddef GetValues # * Loading Loading @@ -1426,7 +1451,7 @@ class CSO_Listing(object): # check .. if fname not in self.df.index: logging.error('file "%s" is not a record in table: %s' % (fname, self.filename)) logging.error('file "%s" is not a record in table: %s' % (fname, filename)) raise Exception # endif Loading Loading @@ -1555,7 +1580,7 @@ class CSO_Listing(object): for key, value in kwargs.items(): # check .. if key not in df.keys(): logging.error(f"key '{key}' not defined in listing: {self.filename}") logging.error(f"key '{key}' not defined in listing") raise Exception # endif # select: Loading
py/cso_inquire.py +7 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ # 2025-02, Arjo Segers # Fixed type conversion of "dmode" setting. # # 2025-04, Arjo Segers # Convert datetime time values in listing files after reading to keep default str values in table. # ######################################################################## ### Loading Loading @@ -221,9 +224,12 @@ class CSO_Inquire_Plot(utopya.UtopyaRc): filename, sep=";", skip_blank_lines=True, parse_dates=["start_time", "end_time"], dtype="str", ) # convert datetime columns, as the default is "str" # the "parse_dates" argument could not be used: xdf["start_time"] = pandas.to_datetime( xdf["start_time"] ) xdf["end_time"] = pandas.to_datetime( xdf["end_time"] ) # combine: if df is None: df = xdf Loading