Analisando a lista de fenótipos do OMIM - Parte 1

Nós últimos dias eu estava interessado em fazer algumas análises na lista de fenótipos do OMIM. Mais especificamente, queria saber quais os nomes mais comuns de epônimos das doenças genéticas já registradas no banco de dados. 

Talvez um bom início seria começar baixando o banco de dados do site para fazer algumas análises. A pesquisa do OMIM permite listar até 100 entradas por página e te traz a opção de fazer download dos resultados no formato excel ou TSV, mas com um problema: o limite é de 200 ítens, a não ser que você se registre. Ao se registrar, seria possível fazer o download de alguns arquivos do banco de dados do site, porém é necessário preencher um formulário e aguardar resposta. 

Como ainda estou aguardando, e sendo um bom ansioso, decidi procurar uma alternativa para fazer o download da lista. Na verdade existe uma forma interessante, que inclusive permite listar os fenótipos e genes OMIM associados com regiões específicas do genoma humano. É o UCSC genome browser. Mais especificamente, no formato Table Browser: 



Ele permite baixar dados e anotações de regiões genômicas específicas (que podem ser definidas no browser gráfico) em diferentes formatos de arquivos. Acho que um dia eu posso falar mais sobre o Genome Browser, mas hoje vamos ao arquivo que foi resultante - um arquivo sem formato de 352KB com o nome mimGenes-2. Ok, aqui eu posso fazer um mea culpa: testando isso, eu baixei um arquivo antes desse: o mimGenes (sem número, mas seria o 1). Eu havia selecionado outros dados da tabela disponível no UCSC, mas percebi que no fim das contas o importante para mim seria apenas o que estava no campo "description" - que contem justamente o título da condição. 


Dois arquivos bem parecidos - Um deles com dois campos aparentemente redundantes com o número do fenótipo no OMIM

É interessante notar que não selecionei nenhuma região específica, então o arquivo contem todos os fenótipos associados com genes ao longo do genoma humano. Aqui também temos fenótipos de suscetibilidade e alguns fenótipos bem gerais, como "Myopia 14". Para esse contexto, eu achei que seria interessante selecionar todos os fenótipos que contem as palavras "Syndrome" ou "Disease", pensando em obter as síndromes genéticas per se. 

Aqui, estando no mac, podemos usar um pouco de shell script para fazer isso. Abrindo o terminal, vamos mudar a pasta de trabalho para onde o arquivo está salvo, no caso a pasta downloads. Por padrão, o terminal do Mac irá abrir na pasta do usuário que está com a sessão logada, no meu caso isto é /Users/celuladaglia 

Então vou usar o comando cd (que muda o diretório atual) para ir para a pasta downloads:

(base) celuladaglia@Davids-MacBook-Pro ~ % cd downloads
(base) celuladaglia@Davids-MacBook-Pro downloads %

E aqui vou usar o grep para fazer duas operações com as linhas de texto do arquivo mimGenes-2. O grep é um comando bastante útil nos sistemas Unix que busca por linhas de texto que correspondem a um padrão específico que é inserido quando ele é executado. Talvez seja mais fácil de entender isso vendo na pratica:

grep -E -w "syndrome|disease" mimGenes-2 > mimPhenotypes.txt

Esse primeiro comando está usando duas opções do grep: -E (que seleciona o tipo de expressões regulares que vamos utilizar. Também chamadas de regex, elas são formas de construir padrões para pesquisar tudo que corresponda àquele padrão em um arquivo) e -w (queremos as linhas do arquivo que tenham correspondências que formem palavras inteiras). A regex "syndrome|disease" utiliza o caractere especial | (geralmente entendido como OR neste contexto) para definir que queremos uma palavra ou outra. O arquivo que queremos processar é o mimGenes-2

Por padrão, o grep irá imprimir o resultado do processamento do arquivo na própria tela do prompt de comandos. Quando queremos salvar a saída de um comando em um arquivo, utilizamos o caractere '>' seguido pelo nome do arquivo: mimPhenotypes.txt 

Assim, teremos um arquivo que contem todas as entradas com a palavra "syndrome" ou "disease": 


Mas ainda existem algumas entradas que estão entre chaves {} que são de fenótipos de suscetibilidade. Eu gostaria de retirar essas entradas para que nosso trabalho seja mais fácil na análise posterior. Nesse caso, vamos para outro comando do grep:

grep -E -v "\{.*\}" mimPhenotypes.txt > mimPhenotypes2.txt

Utilizamos uma opção diferente desta vez: -v significa que queremos inverter a seleção. Ou seja, tudo que não corresponda à regex inserida. A expressão entre aspas "\{.*\}" parece estranha e eu confesso que também acho. Toda vez que preciso usar expressões regulares, geralmente preciso consultar alguma referência antes. Mas basicamente \{ significa que queremos identificar um caractere de abrir chaves. Utilizamos a barra invertida porque o { tem significado próprio dentro da regex, assim como seu primo }. Normalmente vem após um caractere para especificar quantos daquele símbolo queremos identificar: a{2}, por exemplo, iria corresponder a qualquer local do arquivo em que o a ocorra duas vezes seguidas. 

Nesse caso, precisamos utilizar o backslash (\) para especificar que queremos encontrar o { ou }, e não que estamos utilizando esses caracteres em outro contexto. Esse tipo de caractere é chamado de escape character no mundo da programação e na imensa maioria das linguagens utiliza-se a barra invertida neste contexto. 

Voltando à regex, temos um .* - Aqui utilizamos dois carácteres "coringa". O ponto irá corresponder a tudo exceto uma quebra de linha, enquanto que o asterisco significa que queremos identificar 0 ou mais ocorrências do caractere anterior, até encontrar o próximo caractere da sequência, que é o } (fecha chaves). 

Com isso, vamos remover todas as entradas da nossa lista que estejam entre chaves e que são fenótipos de suscetibilidade. Aqui eu decidi que seria interessante analisar o arquivo .txt e pensar nos próximos passos. 

Aqui podemos perceber que estamos diante de um problema que já foi bastante estudado por linguistas e que já tem até um ramo específico da linguística dedicado ao seu estudo: A linguística de corpus. Corpus (o plural é corpora) é basicamente um texto ou conjunto de textos que se deseja analisar. Os textos podem estar em uma única linguagem ou em muitas linguagens. O nosso corpus é relativamente pequeno, contendo 1927 linhas e 7474 palavras. Alguns pesquisadores se dedicam a estudar bancos com milhares de textos em um mesmo idioma, por exemplo.

Neste momento, poderíamos usar diversas ferramentas para analisar. Como não tenho grande experiência com análise de corpus, fui atrás de uma ferramenta mais simples (rs) e com interface gráfica. Encontrei uma interessante chamada de Antconc, que é gratuita e parece ser relativamente fácil de usar. 

Após carregar o arquivo .txt no AntConc, algumas ferramentas estão disponíveis. A primeira que me chama atenção é a aba word. 



Não surpreende que Syndrome e Disease sejam as duas palavras mais frequentes. Na verdade nós selecionamos as linhas de texto que continham uma dessas duas. Algumas palavras que não estamos querendo analisar também aparecem com uma certa frequência. Conectores como and, with, or. Temos a letra q (56 vezes, na verdade) e a letra p (31 vezes). Imagino que seja por entradas que contem no nome o locus em que há uma CNV. Aliás, temos deletion 51 vezes e  duplication 24 vezes. 

Podemos analisar melhor essas ocorrências da letra q com o uso da aba KWIC (key word in context). Vejamos o resultado para o token q:

Realmente, na maioria das vezes, o q está junto de uma citobanda e em minúsculo. Uma exceção está selecionada: a letra Q, em maiúsculo, no fenótipo de Charcot-Marie-Tooth 2Q. O que vem em seguida na verdade se refere a outras linhas (Alzheimer Disease-7 e Refsum...). 

Aliás, falando em Charcot-Marie-Tooth, talvez tenham reparado que na primeira imagem Charcot e Marie aparecem 71 vezes, enquanto Tooth aparece 72. Vamos ver onde está essa ocorrência adicional de Tooth?



Sim, em um fenótipo que incluiu defeito do esmalte dentário: HADDTS - síndrome de hipotonia, ataxia, atraso do desenvolvimento e defeito do esmalte dentário. 

Podemos ainda compilar uma imagem que geralmente é muito usada quando se faz uma análise de corpus linguístico. Talvez vocês já tenham visto uma Wordcloud por aí:


Ah, type também aparece bastante (um exemplo seria o Type 2Q que foi visto junto com Charcot-Marie-Tooth), além de termos relacionados à herança: autosomal, recessive, dominant. 

Quem leu o texto até aqui talvez tenha pensado em uma ou duas questões para fazer a respeito da seleção inicial dos termos. Uma delas foi omitida intencionalmente na pesquisa inicial. A outra eu só me lembrei quando estava já com uma boa parte deste texto escrito. São os termos dysplasia (que eu omiti intencionalmente) e disorder (que eu me esqueci). Dysplasia terá alguns gatos pingados com epônimos, enquanto que disorder inclui, acredito que exclusivamente, fenótipos com nomes relacionados a uma descrição do quadro: neurodevelopmental disorder, por exemplo. Além dos mil e um tipos de defeitos congênitos de glicosilação conhecidos (Sim, CDGs, eu estou olhando pra vocês agora).

Agora farei algo não muito elegante e vou realizar uma análise manual da lista de palavras e retirar algumas que não são tão desejadas do corpus. E vou utilizar uma ferramenta online para isso: RemoveWords no site textcompare.io. 

Na verdade eu retirei poucas palavras: and, type, syndrome, disease, or e with. Agora reabrindo o corpus resultante no AntConc...


Agora temos uma WordCloud mais apresentável. A palavra mais comum foi chromosome. Podemos identificar alguns outros termos que aparecem em vários fenótipos. Especificamente Charcot, Marie e Tooth chamam atenção, sendo que esse último é 1 unidade maior que os outros dois nomes (mas não por uma outra síndrome com epônimo, como vimos acima).

Eu pretendo compilar os termos que foram usados especificamente em epônimos, mas acredito que esses resultados ficarão para um momento posterior (que está próximo, eu prometo). Obrigado por acompanharem essa saga de hoje e fiquem bem.


Comentários

Postagens mais visitadas deste blog

Entendendo o genoma de referência (parte 1)

Entendendo o genoma de referência (Introdução)

Entendendo o genoma de referência (parte 3)