CPTEC-MODEL Documentação

Framework-CPTEC - É um pacote in Python para a distribuição de dados brutos dos Modelos Numéricos de forma segmentada/particionada. Com esse pacote o usuário não necessita fazer o Download de todo o volume bruto. O pacote auxilia a manipular somente a sua necessidade.

Note

support Python >= 3.10.

Contents

Instalação

  • Criar ambiente conda

conda create -n cptec python=3.10

conda activate cptec

Via conda

conda install -c conda-forge  cptec-model

Via pip

pip install cptec-model

Via fonte

  • Instalar Pacotes Requeridos

conda install -c conda-forge matplotlib pycurl cfgrib netCDF4 pynio xarray dask esmpy scipy mpi4py xesmf ipykernel
  • Instalar Pacote cptec-model

git clone https://github.com/framework-CPTEC/CPTEC-user.git

cd CPTEC-user

python setup.py install

Erros Encontrados

  • EcCodes

Engine 'cfgrib' loading failed:
Could not load the ecCodes library!

Ação

python -m eccodes selfcheck
RuntimeError: Could not load the ecCodes library!

pip uninstall eccodes

pip install eccodes==1.2.0

python -m eccodes selfcheck
ecCodes library not found using ['eccodes', 'libeccodes.so', 'libeccodes']

pip install ecmwflibs

python -m eccodes selfcheck
Found: ecCodes v2.30.0.
Your system is ready.
  • PyNio

Unexpected err=ValueError("unrecognized engine pynio must be one of: ['netcdf4', 'scipy',
'cfgrib', 'store']"), type(err)=<class 'ValueError'>

Ação

conda install -c conda-forge pynio
  • PyCurl

import pycurl
ImportError: pycurl: libcurl link-time ssl backends (secure-transport, openssl)
do not include compile-time ssl backend (none/other)

Ação

1 - pip uninstall pycurl
2 - conda install -c conda-forge  pycurl

Caso o erro persista, verifique o link para maiores detalhes: http://pycurl.io/docs/7.21.5/install.html#ssl.

Como Usar

Modelos Disponíveis

Modelo

import

BAM

import cptecmodel.CPTEC_BAM as BAM

Eta

import cptecmodel.CPTEC_ETA as ETA

GFS

import cptecmodel.CPTEC_GFS as GFS

WRF

import cptecmodel.CPTEC_WRF as WRF

BRAMS

import cptecmodel.CPTEC_BRAMS as BRAMS

Outros Pacotes

CPTEC_UTIL

Funções para uso nos diversos modelos

CPTEC_Widgets

Funções para uso no sistema interativo

Utilizando o BAM

Warning

Alterar a data para os valores exibidos na inicialização

Note

Definição de Steps

steps = <int>

Define o número de steps que serão pedidos

Ex. steps = 6

O pedido será os steps 0,1,2,3,4,5,6

steps = <list>

Define os steps que serão pedidos

Ex. steps = [0,2,4,6]

O pedido será os steps específicos pedidos 0,2,4,6

# Import para os modelos disponiveis
# CPTEC_BAM, CPTEC_WRF, CPTEC_ETA, CPTEC_GFS
import cptecmodel.CPTEC_BAM as BAM

# Durante a inicialização do construtor informações sobre os dados são exibidas
# Entre elas informações de variaveis, niveis e frequência disponiveis para consulta

bam = BAM.model()

# Data da IC
date = '2023011700'

# Variaveis
vars = ['t']

# Niveis
levels = [1000]

# Steps = Numero de simulações futuras a partir da inicialização do modelo
steps = 1

# Utizando o método load
f = bam.load(date=date, var=vars,level=levels, steps=steps)

# Imprimir os valores recuperados
print(f)

Observações

Após a inicialização do Modelo Específico algumas configurações são plotadas.

Exemplo do BAM

The Brazilian Global Atmospheric Model (TQ0666L064 / Hybrid)

Forecast data available for reading between 20221211 and 20221221.

Surface variables: t2m, u10m, v10m, slp, psfc, precip terrain, sbcape, sbcin, pw. Level variables: t, u, v, rh, g, omega.

levels (hPa): 1000 925 850 775 700 500 400 300 250 200 150 100 70 50 30 20 10 3.

Frequency: every 6 hours [0, 6, 12, 18,…,168].

Warning

Usar essas informações da inicialização na definição dos valores das variáveis (date,vars,levels,steps)

Exemplos Python

Warning

Alterar a data para os valores exibidos na inicialização

Note

Definição de Steps

steps = <int>

Define o número de steps que serão pedidos

Ex. steps = 6

O pedido será os steps 0,1,2,3,4,5,6

steps = <list>

Define os steps que serão pedidos

Ex. steps = [0,2,4,6]

O pedido será os steps específicos pedidos 0,2,4,6

Recuperar Dados de Modelos Numéricos

# Importa a ferramenta
import cptecmodel.CPTEC_BAM as BAM

# Inicializa o construtor
bam = BAM.model()

# Data Condição Inicial (IC)
date = '2022111800'

# variaveis
vars = ['t2m', 'u', 'omega']

# Quantos passos previstos após inicialização do modelo
steps = 5

# Niveis desejados (aplicado apenas as variaveis em niveis)
levels = [1000, 850]

# Para ativar a função de escrita em disco com uma copia da resição basta alterar a função save_netcdf para True
bam.dict['save_netcdf'] = True

# # Diretorio onde serão salvas as requisições
# # Por padrão, quando não aterado, um diretorio chamado INPE será criado na pasta corrente do usuario

# bam.dict['path_to_save'] = '/home/framework/modelos'

# Requisição dos dados
f = bam.load(date=date, var=vars, level=levels, steps=steps)

# Um diretorio BAM será criado no diretorio corrente, no caso apresentado os dados serão salvos em:
# INPE/BAM/TQ0666L064/brutos/hibrido/2022/11/18/00/GPOSNMC20220818002022081906P.fct.TQ0666L064.nc4

quit()

Download get_data_oper.py.

Recuperar Dados e Salvar em NetCDF

# Importa a ferramenta
import cptecmodel.CPTEC_WRF as WRF

# Inicializa o construtor
wrf = WRF.model()

# Data Condição Inicial (IC)
date = '2022111800'

# variaveis
vars = ['t', 'precip']

# Quantos passos previstos após inicialização do modelo
steps = 5

# Niveis desejados (aplicado apenas as variaveis em niveis)
levels = [1000, 850]

# Requisição dos dados
f = wrf.load(date=date, var=vars, level=levels, steps=steps)

# Salva arquivo com os dados solicitados
f.to_netcdf('wrf_2022111800.nc')

quit()

Download get_netcdf.py.

Recuperar Dados e Plotar Figuras

# Importa a ferramenta
import cptecmodel.CPTEC_ETA as ETA
import matplotlib.pyplot as plt

# Inicializa o construtor
eta = ETA.model()

# Data condição inicial (IC)
date = '2022111800'

# variaveis
vars = ['u10m']

# Quantos passos previstos após inicialização do modelo
steps = 5

# O resultado da requisição dos dados são armazenados na variavel f
f = eta.load(date=date, var=vars, steps=steps)

# Para verificar as datas disponiveis, latitudes, longitudes e niveis quando presente use o exemplo abaixo
print('Horarios disponiveis:', f.time.values, '\n')
print('Latitude :', f.latitude.values, '\n')
print('Longitude:', f.longitude.values, '\n')
# print('Level:', f.level)

# Plot simples para verificação dos campos
# selecionando apenas por tempo

fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(7, 7))
f.sel(time='20221118T01:00').u10m.plot.pcolormesh(
        ax=axes, robust=True, add_colorbar=True, add_labels=True)
axes.set_title('Eta 2022-11-18T01:00 U10M', ha='center')
plt.show()

# Plot simples dando zoom em area
# selecionando apenas por tempo
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(7, 7))

f.sel(time='20221118T01:00', latitude=slice(-30,5), longitude=slice(280, 300)).u10m.plot.pcolormesh(
        ax=axes, robust=True, add_colorbar=True, add_labels=True)

axes.set_title('Eta 2022-11-18T01:00 U10M', ha='center')

plt.show()

quit()

Download plot_figure.py.

Exemplos Jupyter Notebook

Instalar biblioteca

pip install jupyter

Warning

Alterar a data para os valores exibidos na inicialização

Note

Definição de Steps

steps = <int>

Define o número de steps que serão pedidos

Ex. steps = 6

O pedido será os steps 0,1,2,3,4,5,6

steps = <list>

Define os steps que serão pedidos

Ex. steps = [0,2,4,6]

O pedido será os steps específicos pedidos 0,2,4,6

Example_lib

Este exemplo demonstra varios usos da biblioteca, tais como:

  • recuoeracao de dados com filtros (data, variaveis, niveis e step)

  • filtro de area

  • plotar campo

  • salvar NetCDF

pic11 - pic12 - pic13

Download Example_lib.ipynb.

Example_lib_regrid

Utilização da biblioteca UTIL para realizar o Regrid para colocar os modelos na mesma grade.

pic21 - pic22

Download Example_lib_regrid.ipynb.

Example_lib_Widgets

Utilizando Widgets para o desenvolvimento de uma Interface para: - recuperação de dados - filtagem de área ou ponto - plotagem de área ou ponto - exportar em NetCDF ou CSV

Janela de Recuperação de Dados

Note

Escolher data, campo/campos, nível/nîveis e o número de steps do Modelo Numérico.

Warning

O maior número de escolhas afeta o tempo de espera do pedido.

_images/pedido.png

Janela filtro Área

pic31 - pic32

Janela filtro Ponto

pic33 - pic34

Janela Plot

pic35 - pic36

Export NetCDF/CSV

pic37 - pic38

Note

O arquivo NetCDF ou CSV é gerado no diretório corrente do .ipynb com o nome de output

Download Example_lib_Widgets.ipynb.