Filipe Saraiva's blog

Tecnologia, sociedade e política.

Indo para Goiânia – SBSE 2012

without comments

Amanhã começa um dos principais congressos brasileiros na área de sistemas elétricos de potência, o Simpósio Brasileiro de Sistemas Elétricos – SBSE.

Tive um artigo aprovado para publicação neste evento, onde trato das semelhanças entre as redes elétricas inteligentes e os sistemas multiagentes, justificando o uso desta tecnologia para estudos com simulações computacionais nesta área.

Abaixo você pode dar uma olhada no pôster que preparei para o SBSE. Claro, ele não é muito detalhado (detesto pôster ;) ), mas depois disponibilizo o artigo por aqui.

Aproveitando, se tiver alguém que acompanha esse singelo blog e é de Goiânia, querendo trocar ideias é só entrar em contato. ;)

Achou Interessante?
Veja também:

  1. Indo para São João del-Rei – SBAI 2011
  2. Defesa da dissertação marcada
  3. ROSCon 2012
  4. Pôster – Comparação entre Operadores de Crossover para um Algoritmo Genético…
  5. Indo para Berlim!

Written by Filipe Saraiva

May 14th, 2012 at 6:54 pm

LaKademy results – starting development of Python backend to Cantor

with 11 comments

LaKademy is over and I will report about the event in several themed posts. This is about I developed during the Latin American meeting of KDE developers. More posts in LaKademy tag.

In this year I submitted a proposal to Google Summer of Code to develop a Python backend for scientific programming in Cantor. In the last year, I developed a Scilab backend. Unfortunately my proposal was not accepted.

But that’s okay, life goes on. This does not discourage me to begin the project.

During the LaKademy, I put as a goal to make communication between Cantor and Python. My first idea was to make a fork of Sage backend, which is also a technology based in Python. But in the evaluation phase of proposal for Google Summer of Code, the Cantor main developer, Alex Rieder, suggested to me take a look in Python/C API.

I began studying this API and other resources on the web (like this one, based on Elmer). I realized that send Python commands from C/C++ code would be easy, however, capture the output of the Python interpreter would be the real challenge. All this communication could be simple if Python would use standard streams by default, which would allow to use kprocess. Scilab didn’t support, but I implemented this support and it allowed the use of kprocess approach. However, in Python I could not do that – or would be harder to do it.

After searches in internet and some studies, I implemented a Python class that redirects messages from the Python interpreter, both conventional outputs and error messages, to a variable that can later be retrieved in a string type by Python/C API. Voilà!

Using this recovered variable, I can say that the core of Python backend for Cantor is working and ready to implement more features. Let see some screenshots:

Computation of a simple counter in Python

Cantor + Python + matplotlib in a external plot

Python error message in Cantor

From this implemented part, the new features that will be added: append plot figure in Cantor workspace, syntax highlighting, auto-complete pre-defined functions, and more. I intend to support in particular for libraries numpy, scipy and matplotlib, which when added to Python make it an interesting tool for scientific programming, like others we have in the free world as GNU Octave, Scilab, Maxima, Sage.

The code is avaiable in python-backend branch of Cantor repository. But remember: it is a experimental version, and the main fatures will be develop yet. Only communication between C++ <-> Python, the core of application, is working for now.

Watch this blog (or follow python-backend tag) for more informations about this project. ;-)

Achou Interessante?
Veja também:

  1. Python backend para Cantor nascendo no LaKademy
  2. All right to LAkademy!
  3. LaKademy Group Photo
  4. Scilab Backend to Cantor: Syntax Highlight and Tab Complete
  5. LaKademy – primeiro encontro latino-americano de contribuidores do KDE

Python backend para Cantor nascendo no LaKademy

with 2 comments

Aconteceu muita coisa no LaKademy e irei reportar tudo em vários posts temáticos. Este é sobre o que desenvolvi no sentido técnico, durante o encontro latino-americano dos colaboradores do KDE. Mais posts na tag LaKademy.

No Google Summer of Code deste ano submeti o projeto de desenvolvimento de um backend para programação científica em Python no Cantor, a exemplo do ano passado em que implementei um backend para o Scilab. Infelizmente a proposta não foi aceita.

Mas tudo bem, a vida continua. Isso não me desmotivaria a tocar o projeto para frente.

Durante a preparação para o LaKademy, coloquei como meta conseguir fazer funcionar a comunicação entre Cantor e Python. Minha primeira ideia foi fazer um fork do backend para Sage, que é também uma tecnologia de programação científica baseada em Python. Porém, ainda na fase de avaliação do projeto para o Google Summer of Code, o desenvolvedor principal do Cantor Alex Rieder me sugeriu a dar uma olhada na API Python/C.

Comecei a estudar esta API e outros materiais na web (como este, baseado em Elmer), ver exemplos e mais. Percebi que enviar comandos Python a partir de código C/C++ seria fácil, entretanto, a captura das saídas do interpretador seria o real desafio. Toda esta comunicação poderia ser simples se Python usásse standard streams por padrão, o que permitiria utilizar kprocess para fazer esta ponte. Scilab também não usava, o que me levou a implementar este suporte ano passado e possibilitar esta abordagem. Porém, em Python eu não poderia fazer isso – ou seria mais difícil de fazê-lo.

Com pesquisas na internet e alguns estudos, consegui implementar uma classe Python que redireciona as mensagens do interpretador, tanto de saídas convencionais quanto de de erro, para uma variável que depois pode ser recuperada em um tipo string via API Python/C. Voilà!

Com essa variável recuperada, posso dizer que o core do Python backend para Cantor está funcionando e pronto para implementação de mais funcionalidades. Vamos a alguns screenshots:

Computação de um simples contador em Python.

Cantor + Python + matplotlib realizando um plot externo

Mensagem de erro de Python no Cantor

Com esta parte implementada, as novas funcionalidades a serem adicionadas serão: adição de gráficos no ambiente de trabalho do Cantor; destaque de sintaxe; auto-complete de funções pré-definidas; e mais. Pretendo dar suporte em especial para as bibliotecas numpy, scipy e matplotlib, que quando adicionadas ao Python tornam-o uma interessante ferramenta para programação científica, a exemplo de outras que temos no mundo livre como GNU Octave, Scilab, Maxima, Sage e outras.

Quem quiser testar, o código está disponível no branch python-backend, no repositório do Cantor. Mas é sempre bom avisar: trata-se de uma versão experimental, e as principais funcionalidades ainda serão adicionadas. O que está funcionando é a comunicação de mão dupla C++ <-> Python, o core da aplicação.

Fiquem ligados para maiores informações. ;)

Achou Interessante?
Veja também:

  1. LaKademy results – starting development of Python backend to Cantor
  2. Tudo pronto para o LAkademy
  3. Backend do Cantor para Scilab: Destaque de Sintaxe e Autocomplete
  4. LaKademy – primeiro encontro latino-americano de contribuidores do KDE
  5. All right to LAkademy!

LaKademy Group Photo

without comments

Acompanhando o LaKademy nas redes sociais

without comments

Atualização rápida: se quiser acompanhar o que está acontecendo no LaKademy, dê uma olhada na tag no twitter e identi.ca. Volta e meia estou upando algumas fotos para minha conta no Diaspora também.

Depois irei elaborar alguns posts mais detalhados sobre o que estamos fazendo por aqui.

Até logo! ;)

Achou Interessante?
Veja também:

  1. KDE Brasil nas redes sociais
  2. Python backend para Cantor nascendo no LaKademy
  3. LaKademy – primeiro encontro latino-americano de contribuidores do KDE
  4. Tudo pronto para o LAkademy
  5. LaKademy Group Photo

Written by Filipe Saraiva

April 28th, 2012 at 10:39 pm