Skip to main content

Correlação

Este módulo define a classe GraficoCorrelacao, que implementa uma interface para a análise de inconsistências e adequação de dados hidrológicos baseada na correlação entre estações de referência e estações adjacentes.

Índice

  1. Visão Geral
  2. Gráfico correlação

Visão Geral

O módulo grafico_correlacao oferece uma ferramenta poderosa para investigar inconsistências em dados de cota através da comparação entre estações. Suas funcionalidades incluem:

  • Análise Multiestação: Permite visualizar e comparar dados de uma estação de referência com múltiplas estações adjacentes.

  • Detecção Contextual de Inconsistências: Utiliza métodos avançados (regressão de erro e correlação em janela deslizante) para identificar anomalias nos dados.

  • Modelagem de Regressão: Oferece a capacidade de criar modelos de regressão para corrigir inconsistências, tanto com variação temporal quanto sem.

  • Visualização Interativa: Apresenta gráficos e tabelas Bokeh para exibir dados brutos, dados corrigidos e pontos de inconsistência.

  • Navegação Flexível: Permite navegar entre os períodos ou inconsistências detectadas.

  • Persistência de Adequações: Envia as adequações realizadas para o sistema de backend.

Gráfico correlação

Classe para a criação de gráfico para a técnica de investigação a partir de correlação de estações.

Init

Inicializa uma nova instância de GraficoCorrelacao.

Parâmetros: doc (Document): O documento Bokeh ao qual a página será associada. token_manager (TokenManager): O gerenciador de tokens para autenticação. codigo (int): O código da estação de referência. added_stations (List[int]): Uma lista de códigos de estações adjacentes a serem comparadas. date (date): A data de referência inicial. Padrão é None.

Setup data

Obtém e organiza os dados de todas as estações envolvidas, e calcula as inconsistências correlatas.

Build stations DF

Organiza os dados de todas as estações (referência e adjacentes) em um único DataFrame para manipulação e uso em tabelas e plots.

Retorno: pd.DataFrame: Os dados organizados.

Maps

Navega para a próxima ou anterior inconsistência ou período com base na data selecionada e no período de filtro.

Parâmetros: direction (str): O sentido da navegação ("next" ou "prev").

Create widgets

Cria os widgets da interface, incluindo o gráfico base, tabelas, seletores e botões de navegação.

Create base figure

Cria a figura inicial para a plotagem do gráfico de correlação de estações.

Parâmetros: title (str): O título do gráfico. Padrão é "Correlação entre estações".

Retorno: figure: O objeto de figura Bokeh base.

Create hovertool

Cria um HoverTool para um gráfico com informações de uma estação específica.

Parâmetros: station (DataProvider): A estação referente à linha para o HoverTool. renderer (DataRenderer): O glifo para o HoverTool.

Retorno: HoverTool: Um HoverTool configurado com os dados necessários para o glifo.

Update table cols

Atualiza as colunas visíveis da tabela de estações com base na seleção dos checkboxes.

Parâmetros: attr: O nome do atributo modificado. old: O valor antigo do atributo. new: O novo valor do atributo (índices das estações ativas).

Create checkbox options

Cria um CheckboxButtonGroup para permitir ao usuário selecionar quais estações adjacentes exibir na tabela e no gráfico.

Retorno: CheckboxButtonGroup: O grupo de checkboxes das estações.

Detect inconsistencies

Detecta inconsistências contextuais utilizando múltiplos métodos (regressão de erro e correlação em janela deslizante).

Parâmetros: ref_data (pd.DataFrame): Os dados de referência. comp_data (pd.DataFrame): Os dados de comparação. hour (int): A hora para o cálculo.

Raises: ValueError: Se não houver amostras suficientes para a detecção de inconsistências contextuais. Exception: Exceção genérica para o caso de erro nos cálculos.

Returns: pd.DataFrame: DataFrame com as inconsistências detectadas ou um DataFrame vazio em caso de exceção.

Calc regression

Realiza o cálculo da regressão para corrigir os dados de cota, com base na seleção de estação de comparação e nos pontos selecionados (âncora ou inconsistentes).

Returns: np.ndarray | None: Os valores y corrigidos pela regressão, ou None se a regressão não puder ser calculada.

Create regression modal

Cria o modal de seleção de pontos da regressão, exibindo o gráfico das estações com o modelo gerado e uma tabela para seleção dos pontos a serem corrigidos.

Parâmetros: data (pd.DataFrame): DataFrame com os dados das estações e da cota corrigida. ref_col (str): Nome da coluna da estação de referência. comp_col (str): Nome da coluna da estação de comparação. comp_idx (int): Índice da estação de comparação em self.added_stations. r_squared (np.float64): Coeficiente de determinação R². Padrão é None.

Detect changes

Detecta as adequações realizadas pelo analista diretamente na tabela e as registra na lista de cotas_adequadas.

Parâmetros: attr: O nome do atributo modificado. old: O valor antigo do atributo. new: O novo valor do atributo.

Update inconsistency source

Atualiza o ColumnDataSource das inconsistências (inc_source) com base no estado atual das estações ativas e do horário selecionado.

Get filtered inconsistencies

Obtém as inconsistências filtradas com base nas estações ativas e no horário selecionado, incluindo lacunas nos dados da estação de referência.

Retorno: pd.DataFrame: DataFrame com as inconsistências filtradas.

Update Y ranges

Atualiza os intervalos dos eixos Y do gráfico (y_range principal e extra_y_ranges["range_proximas"]) com base nos dados das estações visíveis.

Update data

Atualiza os dados exibidos no gráfico e na tabela, aplicando os filtros de período e horário selecionados.

Discard

Descarta as adequações realizadas, revertendo os valores na quota_df e limpando a lista cotas_adequadas.

Enviar adequações

Envia as adequações realizadas para o serviço de backend para persistência no banco de dados.

Parâmetros: changes_df: DataFrame contendo as mudanças a serem persistidas.

Create layout

Cria o layout da página, organizando os widgets, a tabela e o gráfico.

Retorno: row: O layout completo da página.

Filter exact period with offset

Filtra um DataFrame com base em um período exato de tempo e uma data de referência.

Parâmetros: df (pd.DataFrame): DataFrame com DateTimeIndex. period_option (str): Opção de período como "3 meses", "6 meses", "1 ano", "2 anos". reference_date (date): Data de referência.

Raises: ValueError: Se a period_option for inválida.

Returns: pd.DataFrame: DataFrame filtrado