Introdução ao BioPython (parte IV): MSA e filogenia

Frederico Schmitt Kremer
omixdata
Published in
3 min readMar 31, 2021

Olá pessoal! Hoje daremos continuidade à nossa série de posts “Introdução ao BioPython” com uma introdução à geração e manipulação de alinhamentos múltiplos de sequência (multiple sequence alignment, MSA) utilizando esta biblioteca, bem como uma ilustração de como é possível gerar árvores filogenéticas a partir de MSAs rapidamente.

Alinhamento Múltiplo de Sequências (MSA)

É uma abordagem de comparação de sequências que consiste na identificação das posições de maior similaridade entre múltiplas (3 ou mais) sequências de DNA ou proteínas. Clustal, Clustal Omega e MUSCLE são exemplos de programas que realizam este tipo de alinhamento. Um MSA permite identificar a conservação de uma determinada proteína ou família de proteínas, fornecendo assim indícios sobre a sua evolução.

Exemplo de um MSA de proteínas. Diferentes cores são utilizadas para ilustrar aminoácidos com propriedades similares.

Matriz de distância

A partir de um MSA de n sequências podemos computar uma matriz n x n que represente a distância entre cada sequência no alinhamento. Quanto maior a similaridade entre duas sequências, menor a distância evolutiva entre elas. Diferentes estratégias podem ser utilizadas para se calcular esta distância, sendo para proteínas bastante utilizadas das matrizes de substituição, como a BLOSUM62.

Árvore filogenética

Uma das principais aplicações das matrizes de distância é na construção de árvores filogenéticas com técnicas como Unweighted Pair Group Method with Arithmetic mean (UPGMA) e Neighbor Join (NJ). Nestes casos, as sequências com menor distância são “aglomeradas” em clusters de forma iterativa, até que todas estejam conectadas em uma estrutura de árvore, denominada árvore filogenética. Para entender melhor este conceito, considere a seguinte ilustração de um processo de clusterização hierárquica:

Note que as sequências mais “próximas” são agrupadas em conjuntos menores, e então passam a ser representadas como entidades maiores, denominadas clusters.

Instalando dependências

Para este tutorial, além do BioPython, precisaremos instalar também uma ferramenta para realizarmos o alinhamento múltiplo, sendo aqui usado para fins de ilustração o MUSCLE.

$ pip install biopython
$ sudo apt install muscle

Neste tutorial utilizaremos o Google Colab, mas caso queiram executar estas análises em um script Python na sua máquina, é importante também instalar a biblioteca matploblib para poder visualizar as árvores geradas:

$ pip install matplotlib

Obtendo os dados

Como dataset de exemplo utilizaremos um conjunto de 31 sequências de proteínas Spike de diferentes linhagens de Betacoronavírus (ex: SARS-Cov, SARS-Cov2, MERS), sendo todas obtidas a partir do UniProt. O arquivo com estas sequências pode ser baixado a partir deste link.

Executando a Análise

O Notebook do Google Colab com os códigos de exemplo está disponível abaixo. Para este tutorial foram utilizados os módulos Bio.Align.Applications, Bio.AlignIO e Bio.Phylo para realizar o alinhamento múltiplo das sequências e a construção de uma árvore filogenética.

Próximos passos

A estratégia de construção da árvore filogenética neste tutorial é bastante simplificada e não incluiu, por exemplo, validações com bootstrap para aferir a robusteza da topologia. Também não foram explorados outros tipos de construção de árvore, como máxima parcimônia ou máxima verossimilhança, mas pretendemos abordar estes temas em um próximo post 😄

--

--