Aplicação - Introdução¶
O pacote readDiag foi concebido para ser uma ferramenta que possibilita o fácil acesso aos arquivos diagnósticos gerados pelo Gridpoint Statistical Interpolation (GSI) system. O pacote é composto principalmente por 2 classes, a primeira para ler os dados (read_diag) e outra para fazer diferentes tipos de figuras com dados selecionados (plot_diag).
Classe read_diag¶
A classe read_diag é composta por 5 funções:
__init__(self, diagFile, diagFileAnl=None, isisList=None, zlevs=None): sendodiagFileo arquivo de diagnóstico do primeiro outer loop com informação do OmF ediagFileAnldo último outer loop com informação do OmA. Note que não é necessário informar os dois arquivos, odiagFileAnlé opcional. Neste caso, a informação lida (Omf ou OmA) dependerá do outer loop (arquivo diagnóstico) fornecido;overview(self): esta função cria e retorna um dicionário com as informações existentes no arquivo;pfileinfo(self): esta função imprime de forma elegante uma lista com as informações existentes no arquivo;close(self): esta função fecha o último arquivo aberto;tocsv(self, varName=None, varType=None, dateIni=None, dateFin=None, nHour="06", Level=None, Lay=None, SingleL=None): esta função gera um arquivo CSV dos parâmetros OmF e OmA com as seguintes informações: data, média, desvio-padrão e total de dados para a variável e tipo escolhidos.
Os dados de entrada da função e funcionalidades são idênticas àquelas da função time_series que é apresentada na próxima seção na classe plot_diag (item 7 - ver também detalhes das funcionalidades aqui). O que distingue as duas funções é que esta escreve um arquivo CSV e a outra gera figuras de séries temporais.
Classe plot_diag¶
A classe plot_diag é composta por 7 funções:
- 
plot(self, varName, varType, param, mask=None, **kwargs): a funçãoplotgera uma figura para a variávelvarName(ex:uv),varType(ex:220(dropssonda)) eparam, que pode ser várias opções como:param="obs"para o valor da observação,param="omf"para observação menos background ouparam="oma"para observação menos análise. Também é possível mascarar os dados com a variáveliuse, que indica se o dado foi (iuse=1) ou não (iuse=-1- dado monitorado) utilizado na assimilação. Abaixo há um exemplo executado paravarName="uv",varType=220,param="obs"e maskiuse==1";
 - 
ptmap(self, varName, varType=None, mask=None, **kwargs): a funçãoptmapgera uma figura com a localização de todas as observações definidas porvarName(ex:uv) evarType(pode ser um único tipo ou uma lista, ex:[200]ou[220,221,257]. SevarTypenão for informado, então todos os tipos serão incluídos na figura. Também é possível mascarar os dados com a variáveliuse, que indica se o dado foi (iuse=1) ou não (iuse=-1- dado monitorado) utilizado na assimilação. Abaixo há um exemplo executado paravarName="uv",varType=[254,242,221,220,257,258,281,280]emask=None;
 - 
pvmap(self, varName=None, mask=None, **kwargs): a funçãopvmapé similar à funçãoptmap, com a diferença de não especificar o tipo (varType), podendo então escolher uma lista de variáveis, ex:["uv","ps","t"]. Abaixo há um exemplo executado paravarName=['uv','ps','t'], emask=None;
 - 
pcount(self,varName,**kwargs): a funçãopcountgera um histograma da quantidade de dados para uma determinada variávelvarName(ex:uv) e todos os tipos disponíveis (varType);
 - 
kxcount(self,**kwargs): a funçãokxcounté similar àpcount, porém não especifica a variável (varName). Esta função gera um histograma com o total de dados (todas as variáveis somadas) para todos os tipos disponíveis (varType);
 - 
vcount(self,**kwargs): a funçãovcountgera um histograma com a quantidade total de dados para cada variável (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): a funçãotime_seriespode gerar 6 tipos distintos de figuras, dependendo da configuração especificada na sua chamada. A característica comum entre os 6 tipos é a variação no tempo, enquanto que a diferença entre os 6 tipos é a forma de tratar os níveis verticais. Basicamente estas formas são distribuídas entre variar na vertical (diferentes valores para diferentes níveis/camadas) e fixo na vertical (nível específico, média na camada ou toda a atmosfera). 
A seguir são apresentados os parâmetros de entrada na função e cada uma das opções de figuras será explicada em mais detalhes.
| Parâmetro | Exemplo | Descrição | 
|---|---|---|
self | 
['/home/user/diag_conv_01.2019121000'] | 
Lista com todos os caminhos completos (caminho/nome_do_arquivo) de cada tempo da série temporal. | 
varName | 
uv | 
Nome da variável | 
varType | 
220 | 
Tipo da variável | 
dateIni | 
2019121000 | 
Data inicial da série temporal | 
dateFin | 
2019121118 | 
Data final da série temporal | 
nHour | 
6 | 
Intervalo de tempo em horas entre cada arquivo na lista self | 
vminOMA | 
-2.0 | 
Valor mínimo da escala y (ordenada) para OmF e OmA | 
vmaxOMA | 
2.0 | 
Valor máximo da escala y (ordenada) para OmF e OmA | 
vminSTD | 
0.0 | 
Valor mínimo da escala y (ordenada) para o desvio-padrão | 
vmaxSTD | 
14.0 | 
Valor máximo da escala y (ordenada) para o desvio-padrão | 
Level | 
Zlevs | 
Valor do nível a ser feita a série temporal, opções: valor numérico referente ao nível, ex.: 1000 p/ 1000 hPa; Zlevs para plotar por camadas (em torno dos níveis padrão); None para plotar de todos os níveis. | 
Lay | 
25 | Metade do tamanho da camada (se Level="Zlevs") em hPa se optar por amostragem em camadas. Se Lay=None, Lay será calculada internamente para preencher toda a atmosfera contendo os níveis padrão. | 
SingleL | 
All | 
Quando Level for fixo, ex: 1000 hPa, será considerado exatamente esse nível (usando a opção SingleL=None) ou em todos os níveis como uma única camada (usando SingleL="All") ou em uma camada definida em torno do valor de Level variando entre Level-Lay e Level+Lay. Se Lay não for informado, será usado um valor padrão de 50 hPa. | 
Clean | 
True ou False | 
Se True, após gerar e salvar a figura, a janela da figura é reiniciada (plt.clf()) ou fechada (plt.close()), se False, este procedimento é eliminado e a figura continua disponível para visualização com plt.show(). | 
Todas as figuras geradas com a opção Level igual a None ou Zlevs conterá no nome o termo all_levels, caso contrário será level ou layer, dependendo da opção SingleL.
No decorrer deste notebook são mostrados exemplos com recortes de código para exemplificar o uso das funções acima elencadas.