Conda, Miniconda, Bioconda e Anaconda

Quando lidamos com software e ambientes de computação científica, as ferramentas utilizadas costumam ser construídas de forma a fazer uso de funcionalidades que já existem. Se um desenvolvedor quiser criar, por exemplo, um programa que analisa ontologias de genes (como o projeto Gene Ontology), seria bastante trabalhoso implementar todas as rotinas para ler os arquivos de ontologias. Por isso o mais comum é apenas utilizar uma biblioteca como a “obonet”, que já faz essa parte. Toda a comunidade de desenvolvimento de software livre se baseia fortemente nesse princípio e os software costumam ser distribuídos no formato de pacotes, os quais podem ter outros pacotes como requisitos.

Porém essa solução também pode trazer problemas. Digamos que na sua pesquisa você precisa dos resultados dos software 'A' e 'B'. 'A' requer o pacote 'C' versão 0.9 para funcionar corretamente, pois nessa versão 'C' cria arquivos no formato GFF2. Já o pacote 'B' requer a versão 2.0 de 'C', que produz arquivos no formato GFF3. Se você instalar 'A' e depois 'B', 'A' muito provavelmente vai parar de funcionar. Isto é um exemplo de conflito de dependências, ou para usar um termo que melhor captura o quanto isso pode ser frustrante no meio de um projeto, um “inferno de dependências”. Este problema pode ser frequente num campo como a Bioinformática, onde a evolução das técnicas significa que a forma como representamos e interpretamos nossos dados muda de maneira rápida — como é exemplificado pela mudança do uso do formato de anotação GFF2/GTF para o padrão GFF3.

Uma solução para esse problema é separar seus software em ambientes, o que pode ser feito de forma relativamente simples com o gerenciador de pacotes e ambientes Conda. Com ele o usuário pode inserir novos pacotes em ambientes isolados diferentes, de forma que um não afete o outro, alternando entre os ambientes criados de forma rápida e prática. Para resolver o nosso problema anterior, você só precisaria realizar dois comandos:

$ conda create --name ambiente_A A
$ conda create --name ambiente_B B

Basta dar um nome ao ambiente utilizando o parâmetro --name (neste caso ‘ambiente_A’ e ‘ambiente_B’) e em seguida listar os pacotes para ele (neste caso, ‘A’ ou ‘B’), e assim Conda cria os ambientes com os respectivos pacotes e suas dependências instalados para você. Agora, para trocar de ambiente, basta usar o subcomando conda activate:

$ conda activate ambiente_A

ou

$ conda activate ambiente_B

Dentro de 'ambiente_A', os pacotes ‘A’ e a versão 0.9 de 'C' estarão instalados, mas dentro de 'ambiente_B', estarão os pacotes ‘B’ e a versão 2.0 de ‘C’, então para usar as duas ferramentas basta trocar de ambiente. Dentro do Conda tudo é um pacote, até mesmo compiladores e linguagens de programação inteiras. Então caso você precise utilizar o Python 2.7 quando o seu sistema usa 3.7 como padrão, basta criar um ambiente para isso e entrar nele:

$ conda create --name python2 python=2.7
$ conda activate python2

Mais uma das vantagens de instalar ferramentas assim é que por padrão eles são instalados na sua pasta pessoal, o que significa que permissões de administrador não são necessárias. Quando você compartilha máquinas com outros usuários, isso é muito mais prático do que requisitar instalações ao usuário administrador do sistema.

Há duas formas principais de instalar o Conda na sua máquina: Miniconda e Anaconda — duas distribuições baseadas no Conda. Miniconda pode ser utilizado para instalar Conda apenas na linha de comando do seu computador, com um conjunto mínimo de pacotes instalados inicialmente. Já Anaconda é a opção mais robusta e também a mais atraente para usuários sem experiência em linhas de comando.

Interface inicial do Anaconda Navigator, o ambiente gráfico para Conda.

Anaconda contém o Anaconda Navigator, uma interface gráfica para gerenciar ambientes Conda e instalar pacotes. Além disso, ela já vem com muitos software importantes para trabalhar com computação científica como RStudio (o famoso ambiente gráfico para R), Spyder (o equivalente ao RStudio para Python) e Jupyter Notebook (uma forma prática de juntar código-fonte, texto e gráficos num único documento).

Os pacotes são baixados a partir de canais, que são endereços na internet onde eles são armazenados. Além dos oficiais, há muitos canais gerenciados pela comunidade. Dentre eles está o projeto Bioconda, que disponibiliza um local onde estão disponíveis todos os principais softwares utilizados dentro da Bioinformática. Os endereços para baixar Miniconda e Anaconda estão disponíveis abaixo:

Para ler mais sobre o assunto:

Glossário:

  • Gene Ontology: Uma iniciativa cujo objetivo é unificar a representação de processos biológicos, funções moleculares e componentes celulares, através de termos que possam ser utilizados de forma universal em espécies diferentes.
  • Biblioteca: Um tipo de software cujo objetivo é prover funcionalidades básicas a outros software, para que esses não precisem "reinventar a roda" implementando tudo novamente.
  • Software Livre: Software que concede liberdade ao usuário para executar, acessar e modificar o código fonte, e redistribuir cópias com ou sem modificações.