Application - Introduction¶
The readDiag
package was designed to be a tool that enables easy access to diagnostic files generated by the Gridpoint Statistical Interpolation (GSI) system. The package is mainly composed of 2 classes, the first one for reading data (read_diag
) and the other for creating different types of figures with selected data (plot_diag
).
The read_diag
Class¶
The read_diag
class consists of 5 functions:
__init__(self, diagFile, diagFileAnl=None, isisList=None, zlevs=None)
: wherediagFile
is the diagnostic file of the first outer loop with OmF information, anddiagFileAnl
is the diagnostic file of the last outer loop with OmA information. Note that it is not necessary to inform both files;diagFileAnl
is optional. In this case, the read information (Omf or OmA) will depend on the outer loop (diagnostic file) provided.overview(self)
: this function creates and returns a dictionary with the information in the file.pfileinfo(self)
: this function elegantly prints a list with the information in the file.close(self)
: this function closes the last opened file.tocsv(self, varName=None, varType=None, dateIni=None, dateFin=None, nHour="06", Level=None, Lay=None, SingleL=None)
: this function generates a CSV file of the OmF and OmA parameters with the following information: date, mean, standard deviation, and total data for the chosen variable and type.
The input data for the function and functionalities are identical to those of the time_series
function presented in the next section in the plot_diag
class (item 7 - see also details of functionalities here). What distinguishes the two functions is that this one writes a CSV file, and the other generates time series figures.
The plot_diag
Class¶
The plot_diag
class consists of 7 functions:
-
plot(self, varName, varType, param, mask=None, **kwargs)
: theplot
function generates a figure for the variablevarName
(e.g.,uv
),varType
(e.g.,220
(dropssonda)), andparam
, which can be various options such asparam="obs"
for the observation value,param="omf"
for observation minus background, orparam="oma"
for observation minus analysis. It is also possible to mask the data with theiuse
variable, which indicates whether the data was (iuse=1
) or was not (iuse=-1
- monitored data) used in assimilation. Below is an example executed forvarName="uv"
,varType=220
,param="obs"
, and maskiuse==1"
: -
ptmap(self, varName, varType=None, mask=None, **kwargs)
: theptmap
function generates a figure with the location of all observations defined byvarName
(e.g.,uv
) andvarType
(can be a single type or a list, e.g.,[200]
or[220,221,257]
). IfvarType
is not informed, then all types will be included in the figure. It is also possible to mask the data with theiuse
variable, which indicates whether the data was (iuse=1
) or was not (iuse=-1
- monitored data) used in assimilation. Below is an example executed forvarName="uv"
,varType=[254,242,221,220,257,258,281,280]
, andmask=None
; -
pvmap(self, varName=None, mask=None, **kwargs)
: thepvmap
function is similar to theptmap
function, with the difference of not specifying the type (varType
), so you can choose a list of variables, e.g.,["uv","ps","t"]
. Below is an example executed forvarName=['uv','ps','t']
, andmask=None
; -
pcount(self,varName,**kwargs)
: thepcount
function generates a histogram of the data quantity for a specific variablevarName
(e.g.,uv
) and all available types (varType
); -
kxcount(self,**kwargs)
: thekxcount
function is similar topcount
but does not specify the variable (varName
). This function generates a histogram with the total data (all variables summed) for all available types (varType
); -
vcount(self,**kwargs)
: thevcount
function generates a histogram with the total quantity of data for each variable (ps
,t
,q
,uv
); -
time_series(self, varName=None, varType=None, dateIni=None, dateFin=None, nHour="06", vminOMA=None, vmaxOMA=None, vminSTD=0.0, vmaxSTD=14.0, Level=None, Lay=None, SingleL=None, Clean=None)
: thetime_series
function can generate 6 different types of figures, depending on the configuration specified in its call. The common feature among the 6 types is the time variation, while the difference between the 6 types is the way to treat the vertical levels. Basically, these ways are distributed between varying vertically (different values for different levels/layers) and fixed vertically (specific level, layer mean, or the entire atmosphere).
The input parameters for the function and each of the figure options will be explained in more detail below.
Parameter | Example | Description |
---|---|---|
self |
['/home/user/diag_conv_01.2019121000'] |
List with all full paths (path/file_name ) of each time in the time series. |
varName |
uv |
Variable name |
varType |
220 |
Variable type |
dateIni |
2019121000 |
Initial date of the time series |
dateFin |
2019121118 |
Final date of the time series |
nHour |
6 |
Time interval in hours between each file in the self list |
vminOMA |
-2.0 |
Minimum value of the y-scale (ordinate) for OmF and OmA |
vmaxOMA |
2.0 |
Maximum value of the y-scale (ordinate) for OmF and OmA |
vminSTD |
0.0 |
Minimum value of the y-scale (ordinate) for the standard deviation |
vmaxSTD |
14.0 |
Maximum value of the y-scale (ordinate) for the standard deviation |
Level |
Zlevs |
Value of the level to make the time series; options: numerical value corresponding to the level, e.g., 1000 for 1000 hPa; Zlevs to plot by layers (around the standard levels); None to plot all levels. |
Lay |
25 | Half of the layer size (if Level="Zlevs" ) in hPa if opting for layer sampling. If Lay=None , Lay will be internally calculated to fill the entire atmosphere containing the standard levels. |
SingleL |
All |
When Level is fixed, e.g., 1000 hPa, it will be considered exactly that level (using the option SingleL=None ) or at all levels as a single layer (using SingleL="All" ) or in a layer defined around the Level value ranging between Level-Lay and Level+Lay . If Lay is not informed, a default value of 50 hPa will be used. |
Clean |
True or False |
If True , after generating and saving the figure, the figure window is restarted (plt.clf() ) or closed (plt.close() ); if False , this procedure is eliminated, and the figure remains available for viewing with plt.show() . |
All figures generated with the option Level
equal to None
or Zlevs
will contain the term all_levels
in the name; otherwise, it will be level
or layer
, depending on the SingleL
option.
Throughout this notebook, examples with code snippets are shown to illustrate the use of the functions listed above.