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 |
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
Download Example_lib.ipynb
.
Example_lib_regrid
Utilização da biblioteca UTIL para realizar o Regrid para colocar os modelos na mesma grade.
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.

Janela filtro Área
Janela filtro Ponto
Janela Plot
Export NetCDF/CSV
Note
O arquivo NetCDF ou CSV é gerado no diretório corrente do .ipynb com o nome de output
Download Example_lib_Widgets.ipynb
.