CORAZON (Correlation Analyses Zipper Online) é uma ferramenta criada com o objetivo de normalizar dados de expressão gênica e agrupar os genes através de seus valores de expressão nos tecidos. Neste trabalho, os resultados foram focados nos processos biológicos, funções moleculares e estudos em evolução.
Esta ferramenta foi implementada com 3 algoritmos de aprendizagem de máquina não supervisionada: Mean Shift, K-Means e Hierárquico. Estes métodos operam através da construção de um modelo com base no conjunto de entrada e, assim, faz as predições de dados. Assim, os métodos transformam os valores das
expressões gênicas nas coordenadas de um ponto no espaço, que seria o gene, e agrupa pelas semelhanças. O indutor analisa os exemplos fornecidos e tenta determinar se alguns deles podem ser agrupados através das similaridades entre seus atributos (valores de expressão gênica em diferentes tecidos), formando grupos.
CORAZON também inclui 6 metodologias de normalização: Fragmentos por Kilobase por Milhão (do inglês, Fragments per Kilobase Million (FPKM)), Transcritos por Milhão (do inglês, Transcripts per Million (TPM)), Contagens por Milhão (do inglês, Counts per million (CPM)), log base-2, normalização pela soma dos valores das instâncias e normalização pelo atributo de maior valor para cada instância. Além disso, foi implementada uma estratégia para observar a influência dos atributos nos resultados. Esta ferramenta pode ser utilizada para agrupar qualquer tipo de dado, mas as normalizações implementadas são, principalmente, para análise de dados de bioinformática, em especial, dados de expressão gênica.
4.2.1 Métodos de normalização implementados
Quando os valores estão fora dos padrões, as normalizações podem ser utilizadas para ajustar os valores medidos em diferentes escalas a uma escala teoricamente comum, portanto, considerando i, a posição da linha e j, a posição da coluna, seis métodos de normalização foram implementados:
1) Transformar para um arquivo de dados FPKM: O cálculo do FPKM é baseado no número de leituras (reads), no tamanho do gene e nas regiões (tecidos) e pode ser matematicamente mostrado na Equação 4.1.
Equação 4.1- Fórmula da FPKM. Onde número de leituras da região seria o número de leituras (reads) de um tecido e total de leituras seria a soma de todas as leituras deste tecido.
2) Transformar para um arquivo de dados TPM: Com o FPKM calculado, o cálculo da TPM fica mais simples, e esta normalização pode ser calculada de acordo com a Equação 4.2.
Equação 4.2- Fórmula da TPM.
3) O cálculo do CPM é baseado no número de leituras (reads) e nas regiões (tecidos) e seu cálculo matemático é mostrado na Equação 4.3.
Equação 4.3- Fórmula da CPM. Onde número de leituras da região seria o número de leituras (reads) de um tecido e total de leituras seria a soma de todas as leituras deste tecido.
4) Calcular o log2 das instâncias do arquivo de dados: Esta normalização extrai o log2 para cada valor de expressão do gene, e pode ser matematicamente mostrada na Equação 4.4.
Equação 4.4- Normalização pelo log2.
5) Normalização pela soma dos valores das instâncias: Aqui, os genes serão normalizados pela soma dos seus valores de expressão. O objetivo é limitar os valores entre 0 e 1. A normalização é calculada de acordo com a Equação 4.5.
Equação 4.5- Normalização pela soma do vetor de atributos.
6) Normalização pelo valor mais alto da instância: Utiliza-se o mesmo princípio da anterior, limitar os valores entre 0 e 1, porém, em vez de somar os valores
de cada instância, apenas divide o valor pelo valor mais alto da instância, e o valor é dado em porcentagem. O cálculo desta normalização pode ser visualizado na Equação 4.6.
Equação 4.6- Normalização pelo atributo de maior valor de cada instância.
4.2.2 Parâmetros da ferramenta disponíveis
Parâmetro é qualquer característica que pode ajudar a definir ou classificar um sistema específico. Neste caso, é uma referência ou valor que é passado para o algoritmo, no qual é essencial para criar o modelo de agrupamento e agrupar as instâncias. Um breve detalhamento dos parâmetros utilizados, dependendo do algoritmo, estão descritos a seguir:
a) Combinação de todos os atributos-1: Esta é uma estratégia implementada para observar a influência dos atributos nos resultados. Este método agrupa os dados removendo cada atributo por execução do agrupamento para ver sua influência, ou seja, na primeira execução, o primeiro atributo é removido e os dados são agrupados, na segunda execução, o primeiro atributo é devolvido e o segundo é removido, e o agrupamento é realizado, e assim sucessivamente.
b) Cluster All: O algoritmo Mean Shift tem a opção de forçar todas as instâncias a pertencer a um grupo, se for selecionado como verdadeiro; se falso, uma instância pode pertencer a nenhum grupo, ou seja, a instância pode não ser agrupada.
c) Utilizar uma versão discretizada dos pontos: se for marcado como verdadeiro, as posições iniciais do kernel não são as localizações de todos os pontos, mas sim a localização da versão discretizada dos pontos, onde são armazenados em uma grade cuja rugosidade corresponde à largura de banda (bandwidth).
Definir esta opção como verdadeira irá acelerar o algoritmo pois menos sementes serão inicializadas.
d) Bandwidth: Este é o principal parâmetro do Mean Shift, é o parâmetro de largura de banda, no qual no fim irá determinar o número de grupos encontrados no agrupamento. Então, o usuário pode utilizar a estratégia padrão para selecionar automaticamente o tamanho da largura de banda (bandwidth) ou definir o valor que deseja.
e) Número de grupos: Principal parâmetro dos algoritmos K-Means e Hierárquico e define o número de grupos utilizados no agrupamento destes algoritmos. Este parâmetro deve ser especificado pelo usuário, determinando assim, o número de grupos no qual os dados serão agrupados.
f) Iteração máxima: número máximo de iterações do algoritmo K-Means para uma única execução.
g) Linkage: É a função de critério para agrupar as instâncias no hierárquico.
4.2.3 Implementação da ferramenta Web
O CORAZON é uma aplicação Web cujo back-end foi criado em Python (Versões 2.7 e 3.3) e o agrupamento hierárquico na linguagem R. Mysql foi utilizada para pesquisar e fornecer os resultados dos trabalhos submetidos pelos usuários. Para fazer o front-end, a comunicação e a interação com a página Web foram utilizadas as linguagens HTML, CSS, Bootstrap e Javascript.