3 pontos por GN⁺ 2025-03-12 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A visualização de dados científicos passou a enfrentar gargalos maiores devido a dados volumosos e de alta dimensionalidade, além da demanda por análise em tempo real; o fastplotlib é uma biblioteca Python que busca reduzir isso com plotagem acelerada por GPU
  • Com renderização baseada em WGPU, ele oferece suporte a exploração de dados em grande escala, prototipagem rápida, design de algoritmos e construção de sistemas de aquisição em tempo real para instrumentação
  • Adota uma API centrada em arrays, permitindo alterar dinamicamente propriedades gráficas como cor, colormap e dados com indexação no estilo NumPy mesmo após o plot inicial
  • Com um sistema de eventos baseado em callbacks, define interações do usuário como cliques; no exemplo, o fluxo encontra o círculo mais próximo da posição clicada e muda sua cor
  • A renderização é abstraída sobre o pygfx e, via WGPU, tem como alvo Vulkan, Metal e DX12, focando no uso de GPUs modernas mais do que ferramentas centradas em OpenGL

Os gargalos de visualização científica que o fastplotlib quer resolver

  • fastplotlib é uma biblioteca de plotagem científica acelerada por GPU com WGPU, voltada para visualizações rápidas e interativas
  • Em geral, a visualização científica se torna difícil pelos seguintes motivos
    • os dados podem chegar à escala de terabytes e muitas vezes são de alta dimensionalidade
    • é difícil usar os recursos computacionais com eficiência
    • muitas ferramentas são focadas em plots estáticos ou não escalam bem para grandes volumes de dados
    • a visualização fica mais lenta que a geração dos dados, atrasando análises em tempo real
  • Para visualização interativa e de alto desempenho, o fastplotlib destaca os seguintes usos
    • visualização acelerada por GPU
    • prototipagem rápida e design de algoritmos
    • exploração de grandes volumes de dados e renderização rápida
    • criação de sistemas de aquisição em tempo real para instrumentação
  • Para a maioria dos casos de uso, uma GPU integrada moderna já é suficiente

Exploração interativa além dos plots estáticos

  • A visualização científica tradicional dependeu por muito tempo de plots estáticos, mas visualizações dinâmicas e interativas tornam a exploração e a análise de dados mais diretas
  • Como exemplo, a matriz de covariância do Olivetti faces dataset é visualizada de forma interativa com fastplotlib
    • o subplot da esquerda mostra a matriz de covariância do Olivetti faces dataset
    • cada item da matriz de covariância representa como a intensidade de dois pixels varia em conjunto
    • o subplot da direita é uma imagem reconstruída da linha atualmente selecionada da matriz de covariância
    • ao mover o seletor, é possível trocar facilmente a linha observada
  • Em vez de ver apenas a matriz de covariância de forma estática, observar junto a imagem reconstruída de cada linha ajuda a entender melhor como a intensidade dos pixels varia entre os rostos do dataset
  • Este exemplo mostra que, mesmo com um nível pequeno de interação, já é possível melhorar a compreensão dos dados
  • O fastplotlib quer ampliar o alcance da visualização científica oferecendo mecanismos para criar plots interativos de alto nível

Uma API tratada como array

  • O ecossistema Python de visualização científica tem muitas ferramentas open source, mas algumas bibliotecas elevam a barreira de entrada para cientistas e usuários por causa de APIs complexas
  • O fastplotlib busca oferecer visualização interativa rápida com uma API intuitiva
  • A ideia central do design é permitir que os dados na visualização não precisem ser pensados como algo além de arrays
  • Quando os dados mantêm uma estrutura de array familiar, a interação com a visualização também se torna mais simples
  • No exemplo, após desenhar uma onda senoidal, a cor de um ponto a cada três é alterada para vermelho com indexação no estilo NumPy
sine_wave.colors[::3] = "red"
  • Dessa forma, várias propriedades do gráfico podem ser manipuladas dinamicamente mesmo após o plot inicial
    • colormap
    • cor
    • dados
  • A API baseada em arrays é a base para tornar o fastplotlib flexível e intuitivo de usar

Um sistema de eventos construído com callbacks

  • O fastplotlib também foi projetado para tornar o sistema de eventos simples de lidar
  • Eventos entre gráficos ou plots podem ser definidos com funções de callback, permitindo criar e expandir visualizações interativas
  • O exemplo de evento de clique funciona no seguinte fluxo
    • gera vários dados de círculos
    • adiciona os círculos ao plot com add_line_collection
    • registra um handler do evento "click" no renderizador
    • converte a posição do clique de coordenadas de tela para coordenadas de mundo
    • encontra o gráfico mais próximo da posição clicada
    • muda a cor do círculo mais próximo para branco
  • O tratamento de eventos funciona definindo primeiro o comportamento em uma função e depois adicionando o handler ao gráfico ou plot correspondente
  • Em vez de aprender uma API complexa e específica da biblioteca, o usuário pode montar a interação simplesmente definindo funções

Uso de GPUs modernas e APIs gráficas atuais

  • GPUs praticamente se tornaram um pré-requisito em trabalhos científicos, e a visualização não é exceção
  • Para criar visualizações em alta resolução com bom desempenho, é preciso aproveitar ao máximo os recursos computacionais da GPU
  • Um exemplo do fastplotlib plota 3 milhões de pontos enquanto executa as seguintes tarefas
    • plota linhas
    • realiza zoom in e zoom out
    • altera o colormap da linha
    • muda individualmente a cor de pontos específicos
  • Em outras bibliotecas Python de visualização científica, é difícil plotar tantos pontos de uma vez e controlar com esse nível de detalhe a cor de cada ponto
  • O fastplotlib é abstraído sobre o motor de renderização pygfx
  • O pygfx é executado com WGPU, e o WGPU usa as seguintes APIs gráficas em cada plataforma
    • Linux: Vulkan
    • Mac: Metal
    • Windows: DX12
  • Vulkan, Metal e DX12 são APIs gráficas mais novas que o OpenGL, sendo mais rápidas, mais eficientes e melhores no aproveitamento do hardware da GPU
  • O fastplotlib foi construído sobre o pygfx para abstrair detalhes de baixo nível do motor de renderização e código repetitivo, como câmera, renderizador e cena, permitindo que o usuário foque nos dados

Documentação e próximos conteúdos

  • O fastplotlib busca lidar com os problemas atuais da visualização científica em Python combinando uma API baseada em arrays e hardware gráfico moderno
  • A documentação e os exemplos estão disponíveis na documentação do fastplotlib
    • guia do usuário
    • como começar
    • galeria de exemplos
  • Perguntas e discussões são recebidas via GitHub Issue ou Discussion
  • No futuro, devem ser adicionados textos que abordem com mais profundidade exemplos de uso do fastplotlib e a tecnologia gráfica em que ele se apoia

Ainda não há comentários.

Ainda não há comentários.