Explore o Linux como uma Plataforma de Cálculo Científico

Calcule com Sage e Python

O Linux ® é uma plataforma excelente para cálculos científicos e bastante utilizada pela comunidade acadêmica para diversas tarefas. Embora muitos projetos de software livre sejam voltados para aplicativos específicos, o projeto matemático Sage oferece um recurso mais genérico de resolução de problemas. O Python é a linguagem principal de muitos dos aplicativos científicos que este artigo aborda.

Paul Ferrill, CTO, ATAC

Paul Ferrill escreve nos meios de comunicação de comércio de computadores há mais de 20 anos. Começou escrevendo resenhas de rede para o PC Magazine sobre produtos como LANtastic e versões anteriores do Novell Netware. Paul é graduado e possui mestrado em engenharia elétrica e escreveu softwares para mais arquiteturas e plataformas de computador do que consegue se lembrar.



24/Ago/2012

Linux na comunidade científica

Não é de se admirar que o Linux tenha uma presença significativa na comunidade científica. Há uma grande quantidade de soluções: de clusters de cálculo de alto desempenho a software de visualização. Existe até uma distribuição inteira do Linux baseada no Red Hat Enterprise Linux que é voltada para o cálculo científico, denominada apropriadamente Scientific Linux.

Sage e Enthought Python Distribution

Este artigo aborda duas formas diferentes de usar uma estação de trabalho Linux para cálculos científicos. A primeira forma é com Sage, um sistema matemático de software livre, e a segunda é com o Enthought Python Distribution (EPD). As duas usam várias ferramentas Python de software livre "por baixo dos panos" para fazer o trabalho pesado. Se quiser experimentá-las, instale as partes individuais usando o gerenciador de software Ubuntu.

O Sage é mais abrangente dos dois, já que é semelhante a um shell sobre vários mecanismos subjacentes. A partir da linha de comando do Sage, é possível até interagir com produtos comerciais, como MATLAB ou Mathematica. No prompt do Sage, você basicamente interage com o IPython, com acesso a todos os seus recursos. Também é necessário pensar em termos de objetos e métodos ao começar a explorar os recursos do Sage. O Sage inclui vários sistemas de álgebra computadorizada e permite que o usuário interaja com eles a partir da linha de comando.

É importante ressaltar que o Sage se baseia no Python, mas não analisa previamente cada instrução antes de passá-la para o interpretador do Python. Isso pode causar confusão em relação a comandos interativos simples do Sage. A lógica desse comportamento é a intenção de deixar a digitação de comandos no Sage tão intuitiva quanto possível no aspecto matemático. O símbolo de exponenciação é um bom exemplo. No Python puro, é necessário digitar 2**4 para elevar dois à quarta potência. No Sage, pode-se usar o símbolo de seta para cima (^), como em 2^4. Além disso, o Sage também manipula algumas operações, como a divisão de números inteiros, de forma diferente do Python básico.

NumPy e SciPy

As duas peças mais conhecidas do quebra-cabeça subjacente ao Sage e ao EDP são NumPy e SciPy. Os dois projetos existem desde meados da década de 90 e foram iniciados originalmente por Travis Oliphant, que atualmente é funcionário da Enthought. O NumPy fornece os métodos numéricos principais para manipular arrays e matrizes. O SciPy depende do NumPy para a sua estrutura básico de dados de array e contém uma ampla variedade de módulos para tudo, de álgebra linear a processamento de sinal. A Enthought patrocina os dois projetos e continua contribuindo bastante para novos releases.


Instalando o Sage

Há várias opções disponíveis para instalar o Sage. Para dar uma olhada no Sage sem instalá-lo fisicamente, é possível usar uma versão em Live CD. Também é possível executar o Live CD em uma máquina virtual, como o Oracle VM VirtualBox ou o VMware Player. Este artigo aborda a instalação do Sage tanto em uma máquina física quanto em uma máquina virtual que executa o release mais recente do Ubuntu (12.04).

Máquina física

A instalação do Sage a partir da fonte é o método mais confiável para começar a usar o Ubuntu 12.04, porque o sistema operacional só foi liberado recentemente. Faça o download do tarball de fonte e descompacte-o em um diretório conveniente. Também é necessário instalar alguns pré-requisitos antes de desenvolver. É possível fazer isso com os seguintes comandos:

sudo apt-get install build-essential gfortran
sudo apt-get install texlive xpdf evince

sudo apt-get install tk8.5-dev

Depois de instalar os pré-requisitos, você deve estar pronto para desenvolver o Sage, que pode ser ativado com o seguinte comando:

make

Nesse ponto, vá ver um filme ou tirar uma soneca. O processo de desenvolvimento completo pode levar várias horas em uma máquina desktop típica. Você deverá ver uma tela semelhante à Figura 1 se tudo correr bem no desenvolvimento.

Figura 1. Tela de desenvolvimento do Sage
Tela de desenvolvimento do Sage

Máquina virtual

A instalação em uma máquina virtual é uma boa opção para os menos aventureiros que só querem começar a usar o Sage. Há um pacote de Open Virtualization Archive (OVA) disponível para download no site do Sage, juntamente com pacotes binários para Fedora 16 e Ubuntu 10.04.3. OVA é um arquivo de pacote único (basicamente um arquivo tar) que contém todos os arquivos necessários para ativar a máquina virtual no Open Virtualization Format (OVF).


Usando o Sage

Após a instalação do Sage, você está pronto para iniciar a jornada de descoberta e exploração da matemática. O Sage tem linha de comando e também uma interface baseada na web.

Interface da linha de comandos

Para ativar a versão de linha de comando a partir do diretório em que o Sage foi desenvolvido, basta digitar o seguinte comando:

./sage

A Figura 2 mostra um exemplo do interpretador do Sage e algumas das interpretações matemáticas mencionadas anteriormente.

Figura 2. Interface de linha de comando do Sage e interpretações matemáticas
Interface de linha de comando do Sage e interpretações matemáticas

A diferença na divisão de números inteiros tem a ver com a forma de manipulação do tipo de operação no Python (número inteiro, flutuante, etc.). No Python, a expressão 2/3 designa um resultado em números inteiros arredondada para zero. O Sage trata o operador de divisão como um construtor de números racionais, ou seja, é possível realizar operações em frações de uma forma semelhante ao que você faz no papel. Por exemplo, se você digita 2/3 + 2/3 no prompt do Sage, obtém o resultado 4/3. Se digitar a mesma coisa no Python, o resultado é 0. É possível forçar implicitamente o tipo de literais usando float() ou int() como na Figura 2.

Interface baseada na web

Para usar o Sage Notebook, é possível digitar notebook() depois de iniciar o Sage ou usar este comando:

./sage --notebook

Essa ação ativa o servidor do Sage e abre o navegador da web padrão na página inicial do Sage Notebook. No bloco de notas, você encontra vários recursos para facilitar a manipulação do trabalho, como salvar e carregar planilhas em um arquivo, além das funções normais de copiar, excluir e renomear. O Sage facilita o trabalho colaborativo com as funções Share e Publish mostradas na Figura 3.

Figura 3. Recursos do Sage Notebook
Recursos do Sage Notebook

Pacotes de álgebra computadorizada

A distribuição base do Sage inclui vários pacotes de álgebra computadorizada como GAP, Maxima, PARI e Singular. Cada um deles tem seus adeptos na comunidade matemática e fornece uma funcionalidade ligeiramente diferente. A questão é que o Sage inclui cada um desses pacotes em sua distribuição base, ou seja, não há necessidade de fazer o download e instalá-los separadamente.

A Figura 4 mostra um exemplo de uso do Maxima para realizar várias operações de matriz. Isso foi feito usando o Sage Notebook e mostra a entrada do usuário em preto, juntamente com a saída em azul. As duas primeiras linhas criam uma matriz com entradas do tipo i/j, em que i e j vão de 1 a 4. Observe que se trata de números racionais (frações).

Figura 4. Operações matriz com o Maxima
Operações matriz com o Maxima

Publicando trabalhos científicos

A publicação de trabalhos científicos é um requisito para muitas pessoas da comunidade educacional. O Sage exige que todo objeto tenha uma representação em LaTeX. Isso está diretamente ligado à necessidade de produzir gráficos e texto de qualidade para publicação usando a linguagem TeX. Tenha em mente que é necessário contar com uma instalação completa do TeX para aproveitar todos os recursos que o Sage tem a oferecer.


Instalando o EPD

O cálculo científico com o Python tem tudo a ver com a Enthought como empresa. São as ofertas de produtos comerciais e o suporte da Enthought que pagam as contas, mas mesmo assim a empresa contribui muito com a comunidade do software livre. As contribuições ocorrem por meio do trabalho direto na base de código do NumPy e do SciPy, da apresentação na conferência anual PyCon e da realização da conferência SciPy.

É possível usar o gerenciador de software do Ubuntu para instalar as várias partes necessárias para executar o IPython, NumPy e SciPy, mas também é possível fazer o download e instalar a versão grátis do EPD, conhecida como EPD Free. A Enthought fornece versões de 32 e 64 bits do EPD Free que foram testadas no Red Hat, Ubuntu e openSUSE. A empresa avisa que alguns sistemas Linux de 64 bits não incluem bibliotecas de 32 bits; daí a necessidade de uma versão de 64 bits do pacote.

Para instalar o EPD Free, primeiro faça o download do script de instalador e, em seguida, execute-o com o seguinte comando:

bash epd_free-7-2-2-rh5-x86.sh

Para facilitar a ativação do EPD no futuro, é necessário incluir algumas linhas no arquivo de inicialização do shell (.cshrc ou .bash_profile). O Ubuntu usa o Bash shell como padrão, portanto, eu mostro o código baseado nele. Para este artigo, eu usei as linhas a seguir:

export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH

Usando o EPD

O IPython é outro denominador comum entre o EPD e o Sage, já que é a principal ferramenta de interface do usuário. O EPD instala a interface da linha de comandos e um bloco de notas baseado na web, muito parecido com o Sage.

Interface da linha de comandos

O console baseado em Qt oferece algumas funcionalidades aprimoradas, como o destaque da sintaxe completo usando a biblioteca Pygments. Também fornece a capacidade de fazer plots sequenciais. Para obter esse recurso, é possível ativar o IPython com o comando a seguir:

ipython --pylab

A Figura 5 mostra o console do Qt com um plot integrado.

Figura 5. Criando um novo projeto do PyDev
Criando um novo projeto do PyDev

Interface baseada na web

O release mais recente do IPython (0.12) inclui um recurso de bloco de notas baseado na web que é semelhante ao Sage. Para obter a funcionalidade de notebook, é necessário instalar várias dependências, como o ZeroMQ e o servidor da web Tornado. Para ativar o bloco de notas a partir da linha de comando, digite o seguinte em uma janela do terminal:

ipython notebook

Essa ação inicia o mecanismo da web Tornado e ativa o navegador da web padrão, que abre na página do painel. Se, em seguida, você seleciona o bloco de notas padrão, deve ver uma nova janela como a da Figura 6.

Figura 6. iPython Notebook
iPython Notebook

A única diferença em relação ao bloco de notas da web é a necessidade de usar Control-Enter para executar o código. Isso possibilita a inserção de várias linhas de código, como na Figura 6, e a execução sequencial de tudo o que está na caixa de entrada. Portanto, é possível dividir facilmente as funções em blocos gerenciáveis.

É possível anotar os blocos de notas usando a sintaxe do Markdown. Se você não está familiarizado com o Markdown, saiba que ele é basicamente uma forma de criar Linguagem de Marcação de Hipertexto (HTML) formatado usando texto simples. Por exemplo, usa-se um único sinal de sustenido (#) seguido de um espaço para indicar um H1 em HTML, dois sinais para indicar H2 e assim sucessivamente. Isso permite incluir anotação ou documentação para complementar o seu código e gráficos.

Pandas

O Python Data Analysis Library (Pandas) é mais uma ferramenta que tem ligação com o SciPy e NumPy, criada especificamente para executar a tarefa de análise de dados. O Pandas incorpora uma grande quantidade de bibliotecas, juntamente com alguns modelos de dados padrão para fornecer as ferramentas necessárias para manipular conjuntos de dados grandes com eficiência. Os valores separados por vírgula (CSV) representam uma das formas mais comuns de distribuir dados entre as partes interessadas. O Pandas fornece uma função de biblioteca otimizada para ler e gravar vários formatos de arquivo, inclusive o CSV e o eficiente formato HDF5.

O módulo read_csv sabe analisar arquivos CSV típicos com informações do cabeçalho na primeira linha. Também sabe manipular arquivos com datas ou horas por meio do analisador integrado. O Pandas inclui um módulo datetools com uma lista longa de rotinas de manipulação para realizar vários tipos de cálculo com datas. A Listagem 1 mostra um fragmento de código da documentação do Pandas que mostra como localizar uma data a quatro meses e cinco dias de outra:

Lista 1. Amostra de projeção de data do Pandas
d = datetime(2012, 4, 20)
d + pandas.DateOffset(months=4, days=5)
datetime.datetime(2012, 8, 25, 0, 0)

O Pandas realmente se destaca na tarefa de fatiar e fragmentar grandes conjuntos de dados. Depois que os dados são importados para uma estrutura de dados nativos, há várias ferramentas à sua disposição para realizar literalmente qualquer tipo de manipulação. É possível fatiar os dados usando a sintaxe padrão de fatiamento de Python, realizar operações em todos os dados ou parte deles ou plotá-los usando o matplotlib. Se você precisa executar qualquer tipo de tarefa de manipulação de dados, com certeza deve conhecer o Pandas.


Concluindo

Não há dúvida de que o Linux está altamente qualificado para suportar praticamente qualquer tarefa de cálculo científico necessário. Tem muitos adeptos na comunidade acadêmica e está adquirindo rapidamente novos usuários nos segmentos de mercado que procuram formas de reduzir o orçamento de software. Essas ferramentas fornecem um substituto mais do que adequado dos seus correspondentes comerciais, e o melhor de tudo: todas são grátis. Para os clientes que procuram um software com suporte total, há a Enthought e o EPD, sua oferta comercial. Eles fornecem suporte total para e treinamento para todos os clientes pagantes.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux, Software livre
ArticleID=831377
ArticleTitle=Explore o Linux como uma Plataforma de Cálculo Científico
publish-date=08242012