Good bug - Bad bug

Para a felicidade de nosso editor-chefe, e para não ficar com a fama de ser o último a atender os incansáveis pedidos do mesmo, eis que após me deparar com um post que li no Suicyte Notes, um blog sobre bioinformática e coisas afins (viu editor-chefe, não só escrevo algo, como este algo é sobre bioinformática!!) e me animei a escrever.

O post comenta sobre um artigo que saiu na Nature, onde os autores descobriram um erro no programa utilizado para construir as famosas matrizes BLOSUM - matrizes utlizadas para pontuar alinhamentos entre aminoácidos, que se baseiam nas probabilidades de substituição de um aminoácido em outro (se tiver mais interesse no assunto, cheque os links). Estas matrizes têm sido empregadas por mais de 15 anos, e servido de base em diversos estudos científicos. Imagine o impacto que a descoberta deste bug não teria, levando milhares de pesquisadores a rever seus resultados.

No entanto, para a sorte dos autores do programa - Steven e Jorja Henikoff - que gerou estas matrizes, Murphy estava de férias naquele dia. O autor do artigo corrige o problema, refaz as matrizes, e faz a comparação entre as matrizes “zicadas” e as corrigidas. Resultado: as matrizes “zicadas” funcionam melhor que as corrigidas. Quisera Geoffrey Chang tivesse essa sorte.

Chang é um pesquisador que no início do ano passado, teve que se retratar publicamente, após ter publicado cinco artigos sobre estruturas de duas proteínas que ele e sua equipe haviam determinado. Cinco anos depois do primeiro artigo, 720 citações, e a comprovação por parte de outros grupos que as estruturas que eles haviam determinado estavam erradas, Chang e seus amigos descobriram um bug no programa que eles haviam criado, que resultou nas estruturas erradas. Ou seja, todos que desenvolveram pesquisas confiando nas descobertas de Chang, se deram mal. Incineração de filme no mais alto grau.

Fica aí a dica: se você não testa seus códigos, torça pra ter a sorte de Steve e Jorja, senão você pode se dar mal como Chang.

OpenSource na ciência

Para quem trabalha com pesquisa e desenvolvimento, acompanhar as últimas publicações em sua área é de fundamental importância. No entanto isto pode ser custoso, dado que as assinaturas de revistas científicas têm preços muito altos, dificultando o acesso ao conhecimento científico, e em última instância, desacelerando a evolução da ciência.

O conceito de “código livre” já é bastante antigo entre nós computeiros, e é certamente um dos principais fatores que contribuiu para o acelerado desenvolvimento de nossa área. Se não fossem iniciativas como o Linux, Apache e Mozilla, dentre outros, estaríamos talvez num estágio de desenvolvimento tecnológico similar ao de cinco anos atrás. Com este tipo de visão, diversas iniciativas têm sido criadas na área de divulgação científica, para fazer frente ao domínio das editoras científicas, e permitir a ampla divulgação de conhecimento. BioMed Central e PLoS são exemplos de editoras eletrônicas OpenAccess bastante conhecidas (ao menos na área em que trabalho - bioinformática, biologia e afins). Esta já é uma realidade mundial, que certamente substituirá o modelo anterior.

Seguindo esta tendência, a Faculdade de Artes e Ciências da Universidade Harvard decidiu tornar público todos os artigos publicados por seus pesquisadores a partir de 12 de fevereiro de 2008. De acordo com matéria da Agência FAPESP, também a Escola Médica Harvard pretende utilizar o modelo OpenAccess aos artigos resultantes de pesquisas apoiadas pelos Institutos Nacionais de Saúde. Iniciativas como estas, de centros de pesquisa renomados como os de Harvard, atestam o sucesso deste novo modelo de divulgação científica, e uma preocupação cada vez maior no que diz respeito à disseminação de conhecimento.

Para quem tiver interesse, o DOAJ é um diretório de publicações OpenAccess, compreendendo as mais diversas áreas. Talvez lá você possa encontrar alguma publicação que te interesse, não só para acompanhar as pesquisas recentes em sua área, como também para divulgar sua pesquisa.

Folding@HOME e PS3 (ou “Os vídeo-games e a inovação na computação - parte 3″)

Andei meio distante deste blog nos últimos três meses por diversos motivos mas voltando a escrever, queria falar de um mesmo assunto sobre o qual eu estava falando da última vez que eu escrevi aqui: Os vídeo-games e a inovação na computação. Para quem tiver interesse em ler os dois primeiros artigos sobre este assunto eles estão aqui e aqui.

Desta vez queria falar sobre como todo o poder de processamento dos novos vídeo-games podem ser usados para… não rodar jogos! Mas, se não formos rodar jogos em vídeo-games, o que faremos com eles?

Bom, como disse no primeiro artigo sobre este assunto, pelo menos dois dos vídeo-games desta nova geração, o PlayStation 3 e o XBox 360, na minha opinião, tem como objetivos se tornarem as centrais de entertenimento da casa, gerenciando conteúdo e conectando todos os dispositivos multimídia de uma casa. Mas além disso, pelo menos o PlayStation 3, já nasceu como um computador completo. Desde que foi lançado era possível conectar um teclado e um mouse a ele, rodar Linux e, com isso, usá-lo como um desktop. Vá lá que não é um desktop lá grandes coisas porque a pouco memória (só 256 MB) e o mal uso do processador Cell pela maior parte dos aplicativos do sistema operacional, que utilizam apenas um dos nove núcleos dele, tornam a experiência não muito boa.

No entanto, se bem usados todos os núcleos do processador Cell eles podem entregar até 200 GFlops, o que é muito se comparado com os cerca de 15 GFlops de um Athlon 64, por exemplo. No caso do processador Cell, as aplicações que tiram maior proveito deste poder de processamento são aquelas que possuem grande parte do seu trabalho concentrado em processamento matemático pesado e intenso.

E daí? E daí que se as aplicações forem bem escritas, podem usufruir de todo este poder de processamento e se tornarem muito poderosas. Um bom exemplo disso são as aplicações do BOINC. Para quem não conhece o BOINC, ele é um projeto criado pela Berkeley University. BOINC significa “Berkeley Open Infrastrucutre for Network Computing”. Ou seja, é basicamente um projeto que cria aplicações clientes para diversas plataformas que utilizam o tempo de processamento ocioso em computadores distribuídos em rede (na Internet, por exemplo) para processar coisas que um computador sozinho levaria milhares de anos para processar, mesmo que ele fosse bem poderoso. A rede criada pelo BOINC já possui diversas aplicações e uma das mais antigas e populares é o Folding@Home. O Folding@HOME utiliza a infra-estrutura do BOINC para fazer cálculos poderosos sobre como átomos e moléculas se juntam para formar proteínas. A formação de proteínas é um processo complexo e a forma espacial das moléculas de proteínas é importantíssima na função que elas exercem nos organismos vivos. O Folding@Home realiza cálculos para tentar entender como se dá o processo de empacotamento e desempacotamento das moléculas de proteínas e qual é a influência destes processos no desenvolvimento de doenças. Para quem quiser saber mais sobre o BOINC e o Folding@Home, pode ver aqui e aqui.

As aplicações do BOINC são um exemplo prático de aplicações que necessitam de grande poder de processamento. E, pensando nisso, o pessoal do Folding@Home ficou de olho grande no poder de processamento do processador Cell presente no PlayStation 3 e desenvolveu um cliente específico para esta plataforma para utilizar o poder de processamento ocioso dos vídeo-games! Ou seja, se você não estiver jogando, vai poder ajudar pesquisas importantes para o avanço da humanidade. Para se ter uma idéia da “ajudinha” que os PlayStation 3 estão dando para o Folding@Home, eles representam cerca de 10% dos processadores sendo utilizados de forma distribuída por esta aplicação, mas, por outro lado, entregam mais da metade do poder de processamento atual! Para maiores informações sobre isso, basta clicar aqui. Uma ajuda e tanto vindo de vídeo-games! Quem poderia imaginar algo assim há algum tempo atrás?

O ponto importante disso tudo é que o nível de convergência que estamos vivendo atualmente das várias tecnologias e mídias de distribuição de conteúdo estão fazendo com que coisas antes centradas apenas em entertenimento, como vídeo-games, já estão sendo pensadas hoje também como componentes centrais de sistemas distribuídos em todo o mundo. E, como vimos, não estou falando de jogos online.

Bioinformática

Definição do National Center of Biotechnology Information (NCBI):

Bioinformatics is the field of science in which biology, computer science, and information technology merge into a single discipline.There are three important sub-disciplines within bioinformatics: the development of new algorithms and statistics with which to assess relationships among members of large data sets; the analysis and interpretation of various types of data including nucleotide and amino acid sequences, protein domains, and protein structures; and the development and implementation of tools that enable efficient access and management of different types of information.”

Citando meu orientador Zanoni Dias sobre Bioinformática:

“Um dos aspectos decisivos para o grande avanço da genética atual  é o uso intensivo de técnicas computacionais. A Bioinformática é a ciência responsável pela aplicação da informática para análise e administração de grandes quantidades de dados genéticos. De certa forma, podemos considerar a Bioinformática como a faceta prática da Biologia Computacional. Toda a pesquisa da moderna Biologia Molecular não seria possível sem a computação. Os programas de computador, por exemplo, têm papel fundamental na montagem de um genoma, a partir dos fragmentos de DNA obtidos pelos laboratórios de seqüenciamento. Além disso, são estes programas que permitem a comparação das sequências descobertas com padrões genéticos já conhecidos e armazenados em bancos de dados. Para se ter uma idéia do volume hoje (abril de 2003) conhecido de informações genéticas, o GenBank, que  é o maior banco de dados internacional de sequências genéticas, possui as seqüências completas de 1328 vírus, 144 procariotos e 19 eucariotos. E este número não pára de crescer, quase dobrando a cada ano. E o Brasil, como um dos expoentes mundiais em genética, tem uma bioinformática de destaque. Boa parte deste reconhecimento se deve ao Laboratório de BioInformática (LBI) do Instituto de Computação da Unicamp, responsável pela bioinformática dos primeiros pro jetos de sequenciamento genético do país.” 

Recentemente recebi o título de Mestre em Ciência da Computação, ná área de Bioinformática, pelo Instituto de Computação da UNICAMP.