Python e Computação Científica

Uma visão geral dos principais pacotes do ecossistema Python para Computação Científica

Érick Barbosa
Data Hackers
5 min readMar 16, 2020

--

Computadores são excelentes na execução de tarefas repetitivas. Eles estão disponíveis 24h por dia, não se cansam e realizam as tarefas que lhe cabem da forma mais precisa e muito mais rápida que um ser humano. Estes são alguns dos fatores relevantes que tornaram os computadores fundamentais no campo científico.

A computação científica explora o uso de recursos computacionais para resolver problemas da ciência e da engenharia. De forma bastante simplificada, podemos dizer que a partir do modelo matemático que descreve o evento estudado, é possível reproduzir este mesmo evento em um computador.

Diagrama simplificado da criação e utilização do modelo matemático

Esta é a versão simplificada do mecanismo utilizado, por exemplo, na previsão do tempo. Da observação e análise sistemática do evento real cria-se o modelo matemático. A combinação do modelo desenvolvido por meteorologistas com os dados coletados por satélites em todo o globo resulta em previsões do tempo de curto a longo prazo.

Por que Python?

Por ser uma linguagem interpretada, Python oferece a vantagem do desenvolvedor focar na resolução do problema e não em questões técnicas do desenvolvimento como compilação e portabilidade entre Sistemas Operacionais. Isso torna o processo de desenvolvimento mais ágil e facilita a prototipação.

Python consegue driblar uma grande desvantagem de linguagens interpretadas: a lentidão do processamento. Os principais pacotes de computação científica, aqueles que possuem cálculos exaustivos, são escritos em linguagem compilada. Ou seja, o desenvolvedor tem a vantagem de codificar com uma sintaxe fácil e o computador executa o programa com código de máquina.

Possui uma comunidade extensa e ativa que desenvolve continuamente pacotes utilizados em projetos reais. Além dos pacotes de computação científica, a linguagem possui um rico e consolidado ecossistema para desenvolvimento web. A combinação destes possibilita a criação de serviços inteligentes que possam ser colocados em ambiente de produção.

Principais pacotes

Os pacotes de computação científica dão suporte às tarefas de obtenção, manipulação, processamento e visualização de dados. Os três pacotes destacados neste tópico formam a base da maior parte do ecossistema de computação científica em Python.

Para ter acesso a estes e muitos outros pacotes, considere a instalação do pacote Anaconda. Além de instalar importantes pacotes, ele também serve como gerenciador de dependências. O processo de instalação é fácil e rápido, tanto para Linux, Windows ou MacOS.

1. NumPy

Este pacote permite que a linguagem Python trabalhe com vetores e matrizes de N dimensões de forma extremamente eficiente. Praticamente todas as bibliotecas que trabalham com cálculos numéricos são escritas levando-o em consideração.

Para importar o numpy ao projeto, basta inserir a linha abaixo no topo do arquivo.

Possui elementos para criação de arrays multidimensionais, operações de álgebra linear e transformadas de Fourier. Operações como média, desvio padrão, máximo ou mínimo possuem sintaxe simples. Seguem alguns exemplos.

Os arrays criados pelo numpy podem ser utilizados no armazenamento de valores de uma simulação de eventos discretos, valores de sinais medidos por algum aparelho/sensor ou até mesmo pixels de uma imagem. Estas são algumas das inúmeras aplicações deste pacote, considerado fundamental para computação científica.

No momento sua versão mais recente é a 1.18.1, lançada no dia 6 de Janeiro deste ano. O projeto está submetido a licença BSD license.

2. Scipy

O Scipy é composto por vários submodulos dedicados a tarefas específicas da computação científica. Todos eles operam de forma eficiente utilizando o NumPy como container.

Alguns dos submodulos do Scipy

A importação deste pacote para qualquer código Python requer a importação do numpy.

Desenvolvedores que conhecem as bibliotecas de computação científica para C/C++ já devem ter percebido que o Scipy se assemelha ao GSL (GNU Scientific Library).

É tentador escrever suas próprias rotinas de cálculo numérico, eu mesmo já escrevi muitas enquanto estudante de graduação e mestrado. Mas é importante considerar o uso do Scipy, pois todas as rotinas deste pacote são testadas e desenvolvidas de forma otimizada. Quanto maior o projeto, mais relevante será esta recomendação.

3. Matplotlib

Este talvez seja o pacote mais popular para visualização de dados 2D. Produz gráficos com formatação adequada para serem inseridos em relatórios e dashboards. A galeria da documentação contém inúmeros exemplos de gráficos com seus respectivos códigos.

Com poucas linhas é possível construir histogramas, gráficos de linha, de barras, dispersão, pizza e muitos outros. A importação do pacote pode ser feita da seguinte forma:

Um gráfico de linha, sem maiores customizações, pode ser construído com os comandos abaixo:

Gráfico gerado pelo código acima

A dificuldade na criação de gráficos com o matplotlib está na criação de gráficos sofisticados e na customização necessária para deixar a informação obtida apresentável e mais atrativa.

Atualmente o projeto conta com mais de 33 mil commits, o que indica certa maturidade. Para efeito de comparação, alternativas para visualização de dados como Seaborn, Plotly, ggplot2 e Altair contam, cada uma delas, com menos de 5 mil commits.

Outros pacotes

Outros pacotes muito conhecidos pela comunidade são listados a seguir:

  • Pandas oferece estrutura de dados de alta performance e rotinas para ajudar na leitura, manipulação e análise de dados.
  • Scikit-image é uma coleção de algoritmos para processamento de imagens.
  • Scikit-learn possui algoritmos e ferramentas para a aplicação de Machine Learning.
  • H5py permite a leitura e escrita de arquivos no formato HDF5, essencial para o Big Data.

Python é uma linguagem que se adequá muito bem ao fluxo de trabalho de um pesquisador. A sintaxe simples permite que o desenvolvedor se concentre no problema a ser resolvido e não em questões técnicas. A eficiência computacional, proporcionada pelos pacotes escritos em linguagem compilada, faz com que o Python seja uma boa alternativa às demais linguagens interpretadas.

Uma outra ferramenta que vale mencionar aqui é o Matlab. Desenvolvido e distribuído pela MathWorks, o Matlab é muito conhecido em universidades e laboratórios. Possui módulo de integração com Python, enriquecendo ainda mais aplicações as desenvolvidas nesta linguagem. Apesar de ser excelente em seu propósito, o fato dele ser pago oferece uma barreira para a sua adoção.

As ferramentas e métodos utilizados na computação científica extrapolam o meio acadêmico, não é somente nas universidades e centros de pesquisa que eles são utilizados. Por exemplo, o desenvolvimento de sistemas de recomendação requer análise estatísticas, álgebra linear, algoritmos e modelos matemáticos. Graças ao ecossistema de computação científica estas e outras aplicações podem ser escritas em Python.

--

--