Avaliação dos Dados de Domínio de Análises Filogenéticas por Meio de Workflows Científicos e Mineração de Dados Lygia Marina Mendes da Costa Projeto de Graduação apresentado ao Curso de Engenharia de Computação e Informação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientadora: Kary Ann del Carmen Soriano Ocaña Orientadores: Rio de Janeiro Agosto de 2015 AVALIAÇÃO DOS DADOS DE DOMÍNIO DE ANÁLISES FILOGENÉTICAS POR MEIO DE WORKFLOWS CIENTÍFICOS E MINERAÇÃO DE DADOS Lygia Marina Mendes da Costa PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO DE ENGENHARIA DE COMPUTAÇÃO E INFORMAÇÃO DA ESCOLA POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE ENGENHEIRO DE COMPUTAÇÃO E INFORMAÇÃO. Examinada por: ______________________________________________ Profa. Kary Ann del Carmen Soriano Ocaña, D.Sc. ______________________________________________ Prof. Daniel Cardoso Moraes de Oliveira, D.Sc. ______________________________________________ Prof. Alexandre de Assis Bento Lima, D.Sc. RIO DE JANEIRO, RJ – BRASIL Agosto de 2015 da Costa, Lygia Marina Mendes Avaliação dos Dados de Domínio de Análises Filogenéticas por meio de Workflows Científicos e Mineração de Dados / Lygia Marina Mendes da Costa. – Rio de Janeiro: UFRJ/ Escola Politécnica, 2015. XIII, 64 p.: il.; 29,7 cm. Orientadora: Kary Ann del Carmen Soriano Ocaña Projeto de Graduação – UFRJ/ Escola Politécnica/ Curso de Engenharia de Computação e Informação, 2015. Referências Bibliográficas: p. 49 - 51. 1. Workflows Científicos 2. Análises Filogenéticas 3. Mineração de Dados 4. Dados de Domínio I. Ocaña, Kary Ann del Carmen Soriano. II. Universidade Federal do Rio de Janeiro, Escola Politécnica, Curso de Engenharia de Computação e Informação. III. Título. iii Aos meus pais e ao meu irmão, por todo amor e apoio. iv AGRADECIMENTOS Agradeço aos meus pais, Analucia e Carlos, por acreditarem em mim, sempre apoiando minhas escolhas, dando o melhor possível para que eu pudesse chegar até aqui com tranquilidade. Agradeço a eles por terem me educado e me mostrado que a vida é feita de escolhas e o sucesso de esforço e determinação, virtudes que me foram essenciais durante o curso de Engenharia. Agradeço ao meu irmão, Pedro, por ser o companheiro de todas as horas, me permitindo desabafar a respeito de todos os aborrecimentos, inseguranças e ansiedades. Obrigada, também, por sempre estar do meu lado, mesmo quando brigados. Agradeço ao meu namorado e melhor amigo, Nilton, por me permitir ocupar seu tempo discutindo assuntos acadêmicos. Não há outra pessoa que aceite discutir Aprendizado de Máquina em um bar, ou que me ensine Computação Gráfica na pizzaria. Obrigada, também, por sempre discordar de mim, enriquecendo nossas conversas e me ensinando muito mais do que imagina. Agradeço a todos os professores que fizeram parte da minha trajetória: aos professores de colégio que me deram base para me tornar aluna da UFRJ e aos professores de graduação pela dedicação. Em especial, obrigada Prof. Gerson Zaverucha e Juliana Bernardes, por me orientar durante a Iniciação Científica, despertando meu interesse em pesquisa. Agradeço à Profª. Kary Ocaña por aceitar me orientar nesse projeto final de graduação e tornar possível a conclusão do curso. Obrigada por todo seu tempo e conhecimento. Agradeço aos meus amigos, em especial àqueles que me acompanharam durante quase todo o curso, me proporcionando momentos descontraídos e a paz necessária para enfrentar cada período. Rodolfo Machado, Bernardo Narcizo, Luciano Leite, Rachel Castro, Janine Ma, Evana Carvalho, Bernardo Camilo, André Araújo, Thiago Vasconcelos e Pedro de Vasconcellos, muito obrigada pela amizade, de coração. A todos, muito obrigada. v Resumo do Projeto de Graduação apresentação à Escola Politécnica/ UFRJ como parte dos requisitos necessários para a obtenção do grau de Engenheiro de Computação e Informação. Avaliação dos Dados de Domínio de Análises Filogenéticas por Meio de Workflows Científicos e Mineração de Dados Lygia Marina Mendes da Costa Agosto/2015 Orientadora: Kary Ann del Carmen Soriano Ocaña Orientadores: Curso: Engenharia de Computação e Informação Experimentos de análises filogenéticas são experimentos caracterizados pela construção de árvores filogenéticas utilizadas para representar relações evolutivas entre espécies. São experimentos que, normalmente, se utilizam de simulações computacionais custosas e de um grande número de dados de entrada. Assim, cientistas têm utilizado workflows científicos, uma vez que permite melhor gerenciamento das etapas e dados intermediários do experimento. Entretanto, a análise dos dados de domínio resultantes da execução do experimento deve ser feita diretamente pelo cientista e, muitas vezes, de forma manual. Concluir ou inferir sobre essas dados se torna inviável, portanto, à medida que se aumenta o número de entradas. Sob essa motivação, este projeto propõe uma nova versão de um workflow científico de análises filogenéticas que permita ao cientista inferir sobre um grande número de árvores filogenéticas por meio de uma técnica de mineração de dados e de representação de árvores em tabelas. Palavras-chave: Workflows Científicos, Dados de Domínio, Análises Filogenéticas, Mineração de Dados. vi Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulfillment of the requirements for the degree of Computer and Information Engineer. Data Evaluation of Phylogenetic Analyses Domain using Scientific Workflows and Data Mining Lygia Marina Mendes da Costa Agosto/2015 Advisor: Kary Ann del Carmen Soriano Ocaña Advisors: Major: Computer and Information Engineering Phylogenetic analysis are experiments characterized by computing phylogenetic trees that represent evolutionary relationships between species. These are experiments that usually make use of expensive computer simulations and a large number of input data. Thus, scientists have been using scientific workflows, since it allows better management of the experiment' steps and data flow. However, analysing output data obtained from running the experiment must be made directly by the scientist and often manually. Concluding or inferring about these data is not feasible as the amount of input data increases. Under this motivation, this project proposes a new version of a scientific workflow of phylogenetic analysis that allow the scientist to infer about a large number of phylogenetic trees using data mining technique and tables for representing trees. Keywords: Scientific Workflows, Domain Data, Phylogenetic Analyses, Data Mining. vii SUMÁRIO 1. Introdução .................................................................................................................... 1 2. Fundamentação Teórica ............................................................................................... 5 2.1. Experimento Científico ...................................................................................... 5 2.1.1. Dados de Proveniência ........................................................................................ 8 2.2. Workflows Científicos ........................................................................................ 8 2.2.1. Sistemas de Gerência de Workflows Científicos ................................................. 9 2.2.2. SciCumulus ....................................................................................................... 10 2.3. Bioinformática .................................................................................................. 11 2.3.1. Análises Filogenéticas ...................................................................................... 12 2.4. Mineração de Dados e Estruturas ..................................................................... 13 2.4.1. Subárvores Frequentes ...................................................................................... 14 3. SciPhy: Um Workflow Científico para Análises Filogenéticas ................................. 20 4. SciPhyTreeMiner: SciPhy e Representação e Mineração de Árvores Filogenéticas . 23 4.1. Representação de Árvores Filogenéticas em Tabelas ...................................... 26 4.2. Mineração de Árvores Filogenéticas ................................................................ 29 5. Análise Experimental do SciPhyTreeMiner .............................................................. 31 5.1. Consultas de Atividades ................................................................................... 31 5.2. Consultas de Representação de Árvores Filogenéticas .................................... 34 5.3. Consultas de Mineração de Árvores Filogenéticas .......................................... 38 6. Avaliação de Desempenho do Workflow SciPhyTreeMiner...................................... 42 7. Conclusão................................................................................................................... 46 Referências Bibliográficas .............................................................................................. 49 viii ÍNDICE DE FIGURAS Figura 1 – Ciclo de vida de um experimento científico. Adaptado de Mattoso et al. (2010) ............................................................................................................................... 7 Figura 2 – Motivação para uso de FST no lugar de MAST. Adaptado de Deepak et al. (2014) ............................................................................................................................. 15 Figura 3 – Tipos de União entre Árvores de mesma Classe Equivalente. Retirado de Deepak et al. (2014) ....................................................................................................... 16 Figura 4 – Percurso Euler. D e U para descida e subida na árvore. ............................... 17 Figura 5 – Aplicação de Cálculo de fingerprint (Karp e Rabin 1987) a Árvores........... 18 Figura 6 – Diagrama de Atividades de um Workflow SciPhy. RAxML e PhyML são programas destinados à mesma atividade. ...................................................................... 20 Figura 7 – Especificação de uma Atividade no XML do workflow ............................... 21 Figura 8 – SciPhyTreeMiner: Extensão do SciPhy ........................................................ 23 Figura 9 – Diagrama de Atividades do SciPhyTreeMiner: SciPhy com Representação e Mineração de Árvores .................................................................................................... 24 Figura 10 – Redução do Nome da Entrada ..................................................................... 25 Figura 11 – Árvore Exemplo para Tabela de Adjacência (Tabela 1) ............................. 26 Figura 12 - Resultados da Consulta SQL 1: Tempo de Execução de Atividades de wftreeminer_1-1 ............................................................................................................. 33 Figura 13 – Resultados da Consulta SQL 2: Tempo de Execução de Atividades de wftreeminer_1-2 ............................................................................................................. 33 Figura 14 – Resultados da Consulta SQL 3: Nós Ancestrais de uma Folha .................. 35 Figura 15 - Árvore Filogenética Construída pelo PhyML para a Entrada ORTHOMCL337 ............................................................................................................ 35 Figura 16 – Resultados da Consulta SQL 4: Nós Ancestrais Comuns a duas Espécies . 36 Figura 17 - Resultados da Consulta SQL 6: Número de FSTs Maximais em Cada Execução ......................................................................................................................... 39 Figura 18 – Resultados da Consulta SQL 7: Número de Folhas das FSTs Maximais de cada Execução ................................................................................................................ 40 Figura 19 – Resultados da Consulta SQL 8: FSTs Maximais de Máxima Frequência de cada Execução ................................................................................................................ 41 ix ÍNDICE DE TABELAS Tabela 1 – Atividades e Relações do Workflow SciPhyTreeMiner ................................ 25 Tabela 2 – Tabela de Adjacência de Árvore................................................................... 26 Tabela 3 – Tabela de Registro de Árvores Filogenéticas em Banco de Dados .............. 27 Tabela 4 – Cenário Experimental ................................................................................... 31 x ÍNDICE DE GRÁFICOS Gráfico 1 – Tempo Total de Execução do SciPhyTreeMiner ........................................ 42 Gráfico 2 – Tempo Total de Execução das Atividades do SciPhyTreeMiner ................ 43 Gráfico 3 – Tempo Médio de Execução das Atividades do SciPhyTreeMiner .............. 44 xi ÍNDICE DE CONSULTAS SQL Consulta SQL 1 – Retorna Tempo de Execução das Atividades da Execução wftreeminer_1-1 do SciPhyTreeMiner ........................................................................... 32 Consulta SQL 2 – Retorna Tempo de Execução das Atividades da Execução wftreeminer_1-2 do SciPhyTreeMiner ........................................................................... 32 Consulta SQL 3 – Retorna Nós Ancestrais da Espécie 8 na Árvore Inferida pelo RAxML........................................................................................................................... 34 Consulta SQL 4 – Retorna Nós Ancestrais Comuns às Espécies 6 e 2 na Árvore Inferida pelo PhyML a partir da Entrada ORTHOMCL337 ........................................................ 36 Consulta SQL 5 – Retorna Tamanho do Caminho entre as Espécies 6 e 2 na Árvore Inferida pelo PhyML a partir de ORTHOMCL337 ........................................................ 37 Consulta SQL 6 – Retorna Número de Subárvores Frequentes Maximais em cada Execução ......................................................................................................................... 39 Consulta SQL 7 – Retorna o Número de Folhas nas Subárvores Maximais de cada Execução ......................................................................................................................... 39 Consulta SQL 8 – Retorna Nome de Referência das FSTs Maximais de Máxima Frequência de cada Execução ......................................................................................... 40 xii LISTA DE SIGLAS AMS – Alinhamento Múltiplo de Sequências FSM – Frequent Structure Mining FST – Frequent Subtree MAST – Maximum Agreement Subtree SGWfC – Sistema de Gerenciamento de Workflow Científico SQL – Structured Query Language XML – Extensible Markup Language xiii 1. Introdução Experimentos científicos (Mattoso et al. 2010) podem ser descritos como a associação de tarefas controladas (e.g. programas), que ao serem executadas, consomem e geram dados contendo informações sobre um fenômeno, a fim de refutar ou não uma determinada hipótese. Sua modelagem, execução e análise podem chegar a ser tarefas custosas e complexas, em especial para os experimentos que tratam de dados científicos reais e utilizam simulação computacional em larga escala. A gerência desses experimentos científicos, bem como dos dados consumidos e gerados por eles, se torna mais complexa à medida que se escala. Assim, para auxiliar as etapas de um experimento científico, o cientista pode se utilizar de um workflow científico, que consiste em modelar o experimento como um encadeamento de atividades e um fluxo de dados, em que os dados gerados durante sua execução são comumente chamados de dados de proveniência (Mattoso et al. 2010). A utilização de workflows científicos na execução de experimentos científicos acoplados a um sistema de gerenciamento de workflows científicos (SGWfC) tornou possível a execução de diversas configurações de um mesmo experimento de uma maneira estruturada passível a ser melhor gerenciada. Assim, o cientista passa a não só analisar as informações relacionadas ao workflow ou às suas atividades, como também a fazer uma análise comparativa entre os dados de domínio resultantes de diversas entradas e de workflows científicos específicos de determinadas áreas da ciência (i.e., ciências biológicas, ciências da terra e exatas, etc). No entanto, na fase de análise do experimento científico, é necessária a análise manual por parte do cientista (i.e. especialista) para determinar quais arquivos do conjunto de saída contém as informações importantes a serem analisadas e quais arquivos 1 serão desconsiderados (e.g. arquivos intermediários). Desses arquivos eleitos, será de responsabilidade do cientista extrair as informações necessárias para as inferências evolutivas ou computacionais. Assim, em muitos casos, o cientista deve analisar manualmente uma grande quantidade de dados de domínio. Esse cenário é bastante comum em experimentos científicos na área de bioinformática (Pevsner 2009), como, por exemplo, experimentos de filogenia (Felsenstein 2004). Análises filogenéticas têm por objetivo a construção de árvores filogenéticas a fim de inferir as relações evolutivas e filogenéticas de um grupo de sequências homólogas, i.e. sequências que são evolutivamente originárias de um mesmo ancestral comum. Neste cenário, a comparação entre as várias árvores resultantes possíveis – de diferentes entradas ou parâmetros – é essencial para a avaliação e validação do experimento, desde o ponto de vista biológico ao computacional Nesse sentido, este projeto visa trazer para o ambiente de workflows científicos, atividades adicionais que apoiem mais na fase de análise do ciclo de vida de experimentos científicos de análises filogenéticas. Essas atividades de análise focam na mineração e representação de dados de domínio, mais especificamente de topologias. Uma característica importante é que essas atividades são independentes ao SGWfC e podem consumir arquivos com árvores provenientes das diferentes variações de workflows do mesmo experimento. Dessa forma, o cientista deve ser capaz de analisar os dados de domínio de um grupo de arquivos sem a necessidade de acessar a cada diretório do experimento ou utilizar programas externos para visualização. Uma dessas atividades diz respeito a uma representação dos dados de domínio das árvores filogenéticas que permita a consulta às topologias por meio de SQL. Sua implementação consiste em reescrever os dados utilizando tabelas de adjacência entre entidades, como em grafos (Cormen 2009). 2 Outra atividade consiste na mineração das árvores a fim de retornar subárvores frequentes, ou seja, subárvores que sejam comuns a uma maioria de dados resultantes de análises filogenéticas. A implementação dessa última terá como base um algoritmo proposto por Deepak et al. (2014), que consiste na utilização de uma forma canônica da árvore filogenética, e da técnica de fingerprint (Karp e Rabin 1987) para busca de estruturas frequentes. Para isso, foi realizado o reaproveitamento e a reestruturação de workflows científicos de filogenia previamente definidos (i.e. SciPhy, Ocaña et al. 2011), uma vez que, além do desenvolvimento das novas atividades, foi necessário entender o fluxo de atividades e o consumo/geração de dados do SciPhy para a inserção das atividades propostas. Além disso, propõe-se a utilização de variações do workflow SciPhy, para o qual ele foi modificado na última atividade – construção de árvores filogenéticas – originalmente executado com RAxML e agora executado com o PhyML. Dessa forma, foram obtidas variações de árvores geradas, o que permite uma melhor avaliação dos dados de proveniência que apoie à comparação dos dados de domínio correspondentes. Em relação à adaptação de workflows científicos, foi realizada uma condensação dos workflows SciPhy-RAxML e SciPhy-PhyML em um único a fim de melhorar a representação e a execução, uma vez que eles se diferem apenas na última atividade. Assim, a execução das diversas variações de workflow científico de um mesmo experimento são reduzidas à execução de um único workflow. Essa abordagem será apresentada detalhadamente no decorrer desta monografia que está dividida em oito capítulos, sendo o primeiro esta introdução. No Capítulo 2, são apresentados os conceitos teóricos necessários para a compreensão do projeto como um todo. No Capítulo 3, é apresentado o workflow científico de análises filogenéticas adaptado à variações dos programas, bem como suas implementações. No Capítulo 4, é 3 apresentado a especificação e implementação do novo workflow proposto, bem como das atividades de representação e mineração de árvores filogenéticas. No Capítulo 5, é apresentada a análise experimental, com a execução do novo workflow científico e das novas atividades para análise de dados de filogenia. O Capítulo 6 analisa o desempenho e o nível de contribuição do novo workflow proposto. Por fim, no Capítulo 8, o trabalho é concluído. 4 2. Fundamentação Teórica Esse capítulo tem por objetivo apresentar conceitos e noções teóricas necessárias para o desenvolvimento e a compreensão deste projeto. A seção 2.1 apresenta conceitos de bioinformática e análises filogenéticas, essenciais para compreensão do contexto em que este projeto está inserido. A seção 2.2 apresenta o conceito de experimento científico, que está diretamente ligado à motivação deste projeto. A seção 2.3 e suas subseções apresentam os conceitos de workflow científico e seus elementos, definem Sistemas de Gerência de Workflows Científicos (SGWfC) e apresentam o SciCumulus como um SGWfC, base para os workflows científicos de análises filogenéticas utilizados neste projeto. Por fim, a seção 2.4 apresenta conceitos de mineração de dados e estruturas, bem como a técnica aplicada neste projeto: busca de subárvores frequentes. 2.1. Experimento Científico De acordo com Mattoso et al. (2010), um experimento científico consiste em um teste realizado em ambiente controlado que tem como finalidade verificar a validade de uma hipótese, demonstrar uma verdade conhecida ou a validade de algo não testado anteriormente. Portanto, como concluído por Mattoso et al. (2010), um experimento científico corresponde a um conjunto de ações controladas contento testes diversos cujos resultados podem ser comparados entre si a fim de se aceitar ou refutar uma hipótese. Um experimento científico deve ser reproduzível a fim de permitir que diversos cientistas verifiquem a validade do mesmo, verificando seus resultados. Dessa forma, é importante manter registro das atividades que o compõem para que possa ser utilizado a posteriori em uma análise mais detalhada do experimento, bem como dos resultados. 5 A configuração do ambiente de execução do experimento e das interações define o tipo de experimento científico. Quando realizado totalmente em ambiente computacional, o experimento é classificado como in silico (Travassos e Barros 2003). Assim, qualquer experimento científico baseado em simulaçõec computacionais é um experimento in silico. As etapas presentes no processo de experimento científico podem ser descritas por um ciclo de vida (Mattoso et al. 2010), tal que se mantenha controle das informações geradas a partir das etapas do experimento, organizando tarefas a serem executadas por cientistas no decorrer do experimento. Nesse contexto, o experimento científico possui três fases de acordo com Mattoso et al. (2010): composição, que diz respeito à definição das atividades e dos tipos de dados; execução, que consiste em materializar as concepções da fase anterior, e análise, que consite no estudo dos dados obtidos durante as fases anteriores. A fase de composição pode ser entendida como a fase da abstração, uma vez que se trata da fase em que o experimento será transcrito em atividades e parâmetros. Consiste na definição de workflows abstratos, definindo, também, tipos de dados de entrada e saída e os parâmetros a serem utilizados no experimento. A modelagem do experimento em um workflow diz respeito ao processo de concepção da fase de composição, onde pode haver a utilização de workflows previamente modelados a fim de adaptá-los ao novo experimento, o que corresponde ao processo de reuso (Cardoso, de Souza, e Marques 2002; E. Ogasawara et al. 2009; D. de Oliveira, Ogasawara, Seabra, et al. 2010; F. T. de Oliveira et al. 2008). 6 Composição Concepção Reuso Dados de Proveniência Consulta Distribuição Visualização Monitoramento Análise Execução Figura 1 – Ciclo de vida de um experimento científico. Adaptado de Mattoso et al. (2010) Na fase de execução, o modelo de workflow concebido na fase anterior é transformado em executável levando em conta os valores de parâmetros e dados de entrada definidos inicialmente, bem como a infraestrutura computacional a ser utilizada. O processo de distribuição de atividades organiza as atividades a serem executadas de forma a otimizar recursos computacionas, podendo utilizar ambientes distribuídos e paralelos. Além disso, há o processo de monitoramento, responsável por verificar e gerenciar o estado de execução de cada atividade. Por fim, a fase de análise consiste em avaliar toda a informação gerada durante as fases anteriores por meio de proveniência de dados. Nela, o cientista pode consultar e visualizar, por meio de gráficos ou mapas, resultados do experimento e metadados do workflow, que contém informações a respeito da concepção e execução do mesmo. Dessa forma, o cientista pode analisar os resultados do experimento a fim de confirmar ou 7 refutar as hipóteses do experimento, recomeçar o ciclo com outros parâmetros a fim de verificar o funcionamento do experimento em diversos cenários, ou recriar o experimento gerando outros workflows. 2.1.1. Dados de Proveniência Dados de proveniência consistem em dados gerados durante todo o ciclo de vida de um experimento científico (Mattoso et al. 2010). Esse conjunto de dados engloba dados referentes à especificação e execução do experimento, bem como dados de domínio consumidos e/ou gerados por cada atividade executada durante o experimento. Os dados de domínio dizem respeito aos dados específicos da área da ciência em que o experimento está inserido. Os dados de entrada, assim como os resultados do experimento, portanto, configuram dados de domínio de um experimento específico. 2.2. Workflows Científicos Workflows científicos consistem em abstrações do experimento científico de maneira estruturada. Pode ser visto como um teste do experimento a fim de avaliar uma ação controlada (Mattoso et al. 2010). Portanto, um conjunto de execuções distintas de workflows científicos apoia na definição de um experimento científico (Mattoso et al. 2010). Devido à sua característica de modelar etapas a serem executadas de um experimento científico, os workflows científicos se tornaram padrão para a modelagem de experimentos científicos que se utilizam de simulação computacional (Mattoso et al. 2010). Dessa forma, o workflow científico pode ser visto como um conjunto de atividades que representam programas e scripts a serem executados sequencialmente de acordo com 8 dependências, gerando dados de entrada para atividades posteriores dependentes. Os dados gerados pelas atividades podem ser propagados até o final do workflow científico se for interessante para a análise do experimento científico ou se forem necessários para atividades não imediatamente posteriores. O experimento, no entanto, pode ser complexo de forma que os workflows científicos que o compõem possuam atividades que sejam dependentes ou gerem dados heterogêneos, não estruturados ou de grande tamanho cuja execução tenha alto custo computacional. Assim, os workflows científicos podem usufruir de técnicas de computação de alto desempenho, distribuindo e paralelizando atividades. 2.2.1. Sistemas de Gerência de Workflows Científicos Sistemas de Gerenciamento de Workflows Científicos (SGWfC) (Deelman e Chervenak 2008) foram desenvolvidos a fim de gerenciar a especificação, execução e o monitoramento de workflows científicos. Assim, o SGWfC pode ser utilizado em todo o ciclo de vida do experimento científico, desde a concepção dos workflows e gerenciamento de suas execuções até consulta de resultados. Dessa forma, a gerência e monitoramento das execuções das atividades pode ser realizada por completo por parte do SGWfC, permitindo que o cientista se concentre em atividades de domínio do experimento científico, como a composição e análise final dos workflows científicos, atividades apoiadas pelo SGWfC (Deelman et al. 2009). Alguns exemplos de SGWfC mais utilizados são: VisTrails (Callahan et al. 2006), Kepler (Altintas et al. 2004), Pegasus (Deelman et al. 2007) e Swift (Zhao et al. 2007), onde cada um possui características diferentes podendo ser vantajosos para algumas aplicações específicas. 9 2.2.2. SciCumulus O SciCumulus é um SGWfC projetado para o gerenciamento de workflows científicos executados em paralelo e em ambientes em nuvem. Ele é responsável pela distribuição, controle e monitoramento das atividades de workflows científicos que se utilizam de técnicas de computação de alto desempenho (D. de Oliveira, Ogasawara, Baião, et al. 2010). O SciCumulus, possui uma estrutura básica de fluxo de atividades e workflows, contendo relação de dependência entre atividades. Cada atividade está associada a um tipo de operação algébrica (E. S. Ogasawara et al. 2011) que determina, por exemplo, como os dados são consumidos e produzidos pela atividade. Essas operações podem ser do tipo Map, SplitMap, Reduce, Filter, SRQuery e JoinQuery. A operação Map diz respeito a um mapeamento 1:1 entra a relação de entrada e de saída da atividade, em que para cada tupla de dados de entrada da relação de entrada é gerada apenas uma tupla de dados de saída. A operação SplitMap diz respeito a um mapeamento 1:m, em que m tuplas de dados de saída são geradas para cada tupla de dados de entrada. A operação Reduce é a operação inversa à operação de SplitMap, uma vez que consiste em gerar uma única tupla de dados de saída para n tuplas de dados de entrada, sendo, portanto, um mapeamento n:1. A operação Filter está relacionada com atividades de filtro, em que cada tupla de dados de entrada é copiada para a relação de saída da atividade caso a atividade permita, representando uma relação de 1:(0-1). As duas últimas operações (SRQuery e JoinQuery) definem uma relação entre a entrada e a saída de n:m. A operação SRQuery permite a execução de uma expressão algébrica relacional sobre os dados de entrada da atividade, gerando m tuplas de saída a partir de n tuplas de entrada. Já a operação JoinQuery permite a geração de uma única relação de saída a partir de um conjunto de n relações de entrada. 10 No gerenciamento de workflows com execução em paralelo, cabe ressaltar o conceito de ativação. Ativação consiste em uma execução de uma atividade do worklfow que consomte um conjunto de tuplas específico. Em um workflow científico, cada atividade é composta por um conjunto de ativações a serem executadas em máquinas distintas, configurando a execução em paralelo da atividade. Cada ativação carrega consigo informações necessárias para sua execução, como dados de entrada e parâmetros da atividade à qual pertence. A estrutura do SciCumulus pode ser divida em quatro camadas distintas, são elas: cliente, distribuição, execução e dados (D. de Oliveira, Ogasawara, Baião, et al. 2010; D. Oliveira et al. 2012). A primeira, camada cliente, é responsável por enviar as atividades ao ambiente de execução, podendo ser um ambiente em nuvem. A camada de distribuição distribui as atividades a serem executadas entre as máquinas que compõem o ambiente de execução. A camada de execução é responsável pela execução dessas atividades, bem como de qualquer programa requisitado por elas, mantendo registro de dados de proveniência ao longo da execução. Por fim, a camada de dados é responsável pela alocação de dados de entrada e saída, extraindo dados a serem alocados no banco de dados do workflow, além de manter registro de toda informação referente ao ambiente distribuído de execução. 2.3. Bioinformática Bioinformática diz respeito à área da ciência responsável por aplicar conceitos e técnicas de tecnologia da informação a estudos de biologia molecular (Lengauer 2001). De acordo com Luscombe, Greenbaum, e Gerstein (2001), bioinformática é conceitualizar a biologia em termos de moléculas e aplicar técnicas de informática, provenientes das áreas de matemática aplicada, ciência da computação e estatística, a fim 11 de compreender e organizar a informação associada a essas moléculas em larga escala. Provê, portanto, meios para que possam ser feitas inferências a respeito da evolução, função e estrutura de sistemas biológicos. Atualmente, a bioinformática é uma área que manipula grande quantidade de dados, principalmente devido ao avanço dos métodos de sequenciamento de nova geração das estruturas moleculares, como proteínas e genoma. Dessa forma, armazenar e manipular os dados se tornou um grande desafio dentro da área de bioinformática, uma vez que gerenciar experimentos científicos na área exige muito recurso computacional (Stevens, Zhao, e Goble 2007; D. de Oliveira et al. 2013). A quantidade de recursos computacionais aumenta com a complexidade do problema de biologia que se pretende resolver, com a quantidade de dados consumidos e gerados e com os programas executados sobre esses dados. Uma solução para esse cenário é a utilização de técnicas de processamento paralelo e sistemas de gerência de experimentos em larga escala. Assim, esse tipo de experimento científico pode ser fortemente apoiado pelos workflows científicos e os SGWfC descritos na subseção 2.2 desta seção, o que justifica a ampla utilização de workflows científicos na área de bioinformática. O biólogo ou bioinformata pode, então, utilizar o SciCumulus descrito na subseção 2.2 desta seção, tal e como demonstrado nas recentes publicações relacionadas (Ocaña et al. 2011). 2.3.1. Análises Filogenéticas Experimentos de análise filogenética visam a construção de árvores filogenéticas que representem as relações evolutivas entre espécies organismos obtidas a partir do processamento de alinhamentos múltiplos de sequências (AMS). 12 Análises filogenéticas têm como objetivo analisar ocorrência de diferenciação entre organismos ao longo da evolução, bem como compreender as relações entre ancestrais e descendentes. Dessa forma, a análise é feita processando-se uma grande quantidade de sequências genômicas, com uso de algoritmos evolutivos computacionais já bem conceituados na área, como por exemplo, o método de máxima verossimilhança do programa RAxML (Stamatakis 2014) para a construção de árvores utilizado no SciPhy. Cabe mencionar que o processo de obtenção de árvores filogenéticas por esse método de máxima verossimilhança é normalmente custoso computacionalmente. No fim do processo, se espera obter a árvore mais representativa e/ou poder comparar essa árvore com um conjunto de outras árvores possíveis geradas com diferentes configurações de parâmetros, algoritmos ou programas para poder inferir hipóteses sobre as relações evolutivas e filogenéticas dos organismos em estudo. Nesse contexto, o experimento científico de análises filogenéticas pode ser representado por meio de workflows científicos e de SGWfC (i.e. SciPhy) nas suas quatro atividades principais referentes à construção de AMS, formatação de arquivos, escolha do melhor modelo evolutivo e construção das árvores. Uma implementação desse workflow científico, SciPhy, é descrita na seção 3. 2.4. Mineração de Dados e Estruturas Mineração de dados consiste no processo de extração de informação implícita presente em um conjunto de dados (Olafsson, Li, e Wu 2008). É uma área que vem crescendo cada vez mais devido ao aumento de dados armazenados, bem como sua complexidade, na medida em que se torna interessante a extração de informação de um conjunto extenso de dados (Da San Martino e Sperduti 2010). 13 Uma técnica muito utilizada no processo de mineração de dados é a detecção de ocorrências frequentes na base de dados a fim de se extrair um padrão. Para dados mais complexos, como ávores e grafos, a informação a ser minerada está relacionada à estrutura, de forma que subestruturas frequentes (Frequent Structure Mining – FSM) na base de dados sugerem um padrão presente nos dados (Da San Martino e Sperduti 2010). A técnica consiste em contar de maneira eficiente a frequência de todas as ocorrências e registrar apenas as ocorrências com frequência maior que uma tolerância. No contexto deste projeto, a mineração de dados se dará sobre dados de domínio referentes e atribuídos às árvores filogenéticas. Assim, o objetivo é obter subárvores frequentes (Frequent SubTree – FST) a fim de detectar algum padrão de relação evolutiva nos dados filogenéticos. 2.4.1. Subárvores Frequentes Em análises filogenéticas, a análise dos resultados está relacionada principalmente à inferência das relações evolutivas, à análise das estatísticas obtidas e à comparação entre árvores. Em geral, experimentos de análises filogenéticas resultam em uma coleção de árvores que representam as relações evolutivas e filogenéticas de um conjunto de espécies (Swenson et al. 2012). Assim, uma análise importante poderia ser feita sobre os dados de entrada (e.g. sequências biológicas) e saída (e.g. resultados estatísticos e árvores), relacionando, quando possível, informações de domínio específicas comuns contidas nos arquivos de uma ou mais árvores presentes em uma coleção. Muitas vezes, esta comparação é realizada manualmente pelo cientista e exige o conhecimento do especialista da área a respeito da importância do dado de domínio representativo (e.g. subárvores) a ser extraído, armazenado, comparado e/ou analisado. 14 Dessa forma, pode-se computar uma subárvore de máxima concordância (Maximum Agreement Subtree – MAST) que corresponde à maior subárvore comum a todas as árvores dadas como entrada. Quanto mais distintas são as árvores de entrada, menor é a MAST, uma vez que a similaridade entre as árvores é menor. Assim, para casos em que as árvores são muito distintas, a MAST não representa o máximo de informação que pode ser extraída da coleção (Deepak et al. 2014), como exemplificado na Figura 2. Nesse contexto, então, o mais adequado seria computar as FSTs, como no algoritmo construtivo proposto por Deepak et al. (2014) utilizado neste projeto, já que não precisam ser comuns a todas as árvores, mas conseguem representar relações evolutivas frequentemente encontradas na coleção de árvores filogenéticas (Deepak et al. 2014). (a) Árvores de entrada (b) MAST (c) FSTs Figura 2 – Motivação para uso de FST no lugar de MAST. Adaptado de Deepak et al. (2014) O algoritmo EvoMiner de Deepak et al. (2014) visa computar FSTs a partir de árvores filogenéticas enraizadas, ou seja, árvores que contém um nó não-folha raíz. A ideia central do algoritmo está relacionada com o fato de que uma subávore de 𝑘 folhas é frequente se e somente se suas subárvores de 𝑘 − 1 folhas também são frequentes. Portanto, a obtenção de uma subárvore frequente de 𝑘 folhas deve ser a partir da união de duas subárvores de 𝑘 − 1 folhas. 15 Figura 3 – Tipos de União entre Árvores de mesma Classe Equivalente. Retirado de Deepak et al. (2014) Nesse contexto, Deepak et al. (2014) introduz o conceito de árvore prefixa como sendo a árvore obtida com a remoção da folha mais à direita e o conceito de classe equivalente, que consiste em um conjunto de árvores que compartilham a mesma árvore prefixa. Assim, as subárvores frequentes de 𝑘 folhas podem ser geradas pela união de duas subárvores 𝑇𝑥 e 𝑇𝑦 da mesma classe equivalente, tendo 𝑇𝑥 como sua árvore prefixa. Essa união pode ser realizada de quatro formas diferentes, conforme a Figura 3. Cada árvore gerada é, então, processada de forma a garantir que todas as suas subárvores de 𝑘 − 1 folhas são frequentes, uma vez que se alguma subárvore não for frequente, então a árvore gerada também não será. Se todas forem, no entanto, o algoritmo deve checar de a árvore de 𝑘 folhas também é frequente. O processo de computar se todas as subárvores de 𝑘 − 1 folhas são frequentes é chamado de Downward-Closure e diz respeito à etapa mais custosa de um algoritmo construtivo de FSTs. Assim, (Deepak et al. 2014) utiliza uma representação em string 16 canônica das árvores e subárvores visando a aplicação do conceito de fingerprint introduzido por Karp e Rabin (1987). Dessa forma, uma árvore de 𝑘 folhas pode ser representada em string obtida por um percurso Euler (Henzinger e King 1999) na árvore, conforme exemplo na Figura 4, e as strings de suas subárvores de 𝑘 − 1 folhas podem ser obtidas pela remoção de caracteres na string. 1 2 3 4 DD1UD2UUDD3UD4UU Figura 4 – Percurso Euler. D e U para descida e subida na árvore. A fingerprint de cada subárvore de 𝑘 − 1 folhas pode ser, então, obtida a partir de uma fórmula matemática utilizando a fingerprint da árvore de 𝑘 folhas e a fingerprint de substrings prefixas calculadas previamente, como mostra o exemplo na Figura 5. No entanto, é preciso conhecimento prévio de qual substring deve ser removida da string original para que represente a nova árvore. Logo, é preciso buscar, na string, substrings do tipo DiU e analisar sua posição levando em conta que a string possui uma estrutura aninhada de Ds e Us para a remoção de D e U no caso em que a remoção da folha resulta em contração de nós na árvore, como no exemplo da Figura 5. Assim, é possível calcular a fingerprint da nova string em um passo dado que são conhecidas as substrings a serem removidas, bem como suas posições na string original. 17 Uma vez calculadas as fingerprints de cada subárvore, classificá-las como frequentes consiste em verificar se essas fingerprints estão presentes em uma tabela hash de subárvores frequentes previamente construída, ou seja, verificar se são fingerprints já calculadas na iteração anterior, em que foram obtidas subárvores frequentes de 𝑘 − 1 folhas. Esse método evita a comparação direta entre estruturas de árvores que são, normalmente, computacionalmente custosas. 1 2 4 𝐹𝑝 𝐷𝐷1𝑈𝐷2𝑈𝑈𝐷4𝑈 = 𝐹𝑝 𝐷𝐷1𝑈𝐷2𝑈𝑈𝐷𝐷3𝑈𝐷4𝑈 − 𝐹𝑝 𝐷𝐷1𝑈𝐷2𝑈𝑈𝐷𝐷3𝑈 × 2𝑙𝑒𝑛 + 𝐹𝑝 𝐷𝐷1𝑈𝐷2𝑈𝑈 × 2𝑙𝑒𝑛 𝐷4𝑈 𝐷4𝑈 Figura 5 – Aplicação de Cálculo de fingerprint (Karp e Rabin 1987) a Árvores Assim, a comparação direta entre árvores é necessária apenas para cálculo da frequência das subárvores de 𝑘 folhas resultantes do processo de união cujas subárvores de 𝑘 − 1 folhas são frequentes. Esse processo é realizado para todos os tipos de árvores de 𝑘 folhas provenientes do processo de união. Dessa forma, o algoritmo EvoMiner (Deepak et al. 2014) pode ser resumido como um processo construtivo de subárvores frequentes que está dividido em três etapas principais: Geração de subárvores candidatas de 𝑘 folhas por meio de união de subárvores 𝑘 − 1 folhas 18 Verificação da frequência mínima de todas subárvores de 𝑘 − 1 folhas contidas nas subárvores candidatas de 𝑘 folhas Verificação da frequência mínima das subárvores candidatas de 𝑘 folhas Cada classe equivalente de subárvores de 𝑘 folhas é obtida por um conjunto de iterações compostas pelas etapas descritas acima. Dessa forma, ao final da execução do algoritmo EvoMiner, há 𝑁 classes equivalentes, em que a última classe equivalente possui as maiores subárvores frequentes do conjunto de árvores de entrada. As subárvores presentes nas classes equivalentes resultantes são diretamente influenciadas pelo valor de frequência mínima exigida. Assim, para uma entrada de tamanho 𝑁 e frequência mínima de 1⁄𝑁, o último conjunto de classes equivalentes de subárvores de 𝑘 folhas possui como subárvores frequentes todas as árvores de entrada do processo de mineração. O valor de frequência mínima é, portanto, um parâmetro a ser ajustado pelo cientista que possui conhecimento a respeito do estudo a ser realizado. 19 3. SciPhy: Um Workflow Científico para Análises Filogenéticas SciPhy (Ocaña et al. 2011) é um workflow científico desenvolvido para a análise filogenética de sequências genômicas, implementado utilizando o SciCumulus para sua execução paralela em nuvem, embora o workflow possa ser executado localmente. Os dados de domínio de saída do workflow são árvores filogenéticas representativas dos AMSs gerados no início da execução do workflow científico, podendo variar o algoritmo utilizado nas atividades, em especial os algoritmos de construção de árvores filogenéticas. O SciPhy é composto por cinco atividades: seleção de dados, AMS, eleição do melhor modelo evolutivo a partir do AMS, formatação de arquivos e construção de árvores filogenéticas (Figura 6). Algumas atividades podem ser consideradas auxiliares (i.e. seleção de dados e formatação de arquivos), uma vez que são utilizadas para filtragem ou conversão de formato de dados, não realizando qualquer operação de transformação. Assim, as demais atividades (i.e. AMS, eleição do melhor modelo evolutivo e construção de árvores filogenéticas) podem ser consideradas atividades principais. (1) Seleção de Dados de Entrada dataselection (2) Alinhamento Múltiplo de Sequências – MAFFT mafft (4) Seleção de Modelo Ótimo – ModelGenerator modelgenerator (3) Adaptação de Formato de Dado readseq (5) Construção de Árvores Filogenéticas com Máxima Verossimilhança RAxML PhyML Figura 6 – Diagrama de Atividades de um Workflow SciPhy. RAxML e PhyML são programas destinados à mesma atividade. 20 A especificação de cada atividade do workflow, bem como do workflow como um todo, é feita através de um XML, conforme a Figura 7, em que são especificados informações sobre o ambiente de execução, dependência entre atividades, arquivos de execução e extração, além de especificar a maneira como os dados extraídos são registrados no bando de dados. A especificação de cada atividade contém relações e campos a serem interpretados para a implementação do banco de dados do workflow pelo SGWfC. Figura 7 – Especificação de uma Atividade no XML do workflow A atividade de seleção de dados é responsável por receber os dados de entrada do workflow e extrair informações como o nome do arquivo de entrada e o caminho do arquivo. O SGWfC, então, propaga os dados de entrada, bem como as informações extraídas deles para a próxima atividade do workflow: a atividade de AMS. A atividade de AMS recebe os dados da atividade anterior e executa o programa de alinhamento mútiplo MAFFT 7.1 sobre as sequências de entrada provenientes da atividade de seleção de dados. O caminho para o arquivo de saída é registrado no banco de dados do workflow cientítifico junto com os dados propagados da atividade anterior. A atividade de adaptação do formato dos dados executa o programa ReadSeq que converte o formato FASTA (do AMS retornado pelo MAFFT) para o formato PHYLIP, 21 uma vez que o programa utilizado pela atividade de seleção do melhor modelo evolutivo, ModelGenerator, requer um formato PHYLIP. Após a seleção do melhor modelo evolutivo a partir dos alinhamentos múltiplos, os dados de domínio de saída dessa atividade são passados para a atividade seguinte: a atividade de construção de árvores filogenéticas. Essa atividade é responsável por eleger uma árvore filogenética representativa e pode ser executada com diversos programas. Neste projeto, serão utilizados os programas RAxML 7.2.8 e PhyML 3.0, que utilizam o conceito de máxima verossimilhança para seleção da árvore mais representativa. Esses programas normalmente têm como saída arquivos contendo árvores filogenéticas em formato Newick, que consiste em representação da árvore em parênteses aninhados, e precisam de um programa auxiliar para melhor visualização. A atividade de construção de árvores filogenéticas registra os dados propagados pelas atividades anteriores, alguns dados numéricos utilizados na construção da árvore (e.g. valores de replicação de bootstrap e comprimento de ramos) e o caminho para o arquivo de dado de domínio resultante. Dessa forma, o cientista pode consultar diretamente os arquivos contento as árvores filogenéticas resultantes para análise do experimento científico, bem como seus respectivos dados de domínio. Todas as atividades do SciPhy utilizam uma técnica de mapeamento para registrar os dados extraídos das saídas no banco de dados do workflow científico. Assim, cada atividade gera apenas uma entrada nas tabelas do banco de dados para cada entrada do workflow científico. Essa especificação é identificada no arquivo XML como atividades do tipo MAP. 22 4. SciPhyTreeMiner: SciPhy e Representação e Mineração de Árvores Filogenéticas A execução de um ou mais workflows científicos do experimento científico de análise filogenética, em geral, retorna uma grande quantidade de árvores filogenéticas a serem analisadas manualmente pelo cientista. Por se tratar de dados de domínio em árvore, o SciPhy não possui estrutura adequada para a representação desses dados a fim de permitir consultas e comparações através do banco de dados do workflow científico. Os dados de domínio, nesse caso, são registrados no banco de dados como caminhos para os arquivos de saída no sistema. Assim, para análise desses dados, o cientista deve consultar o caminho no banco de dados do workflow e, manualmente, abrir os arquivos de dados de domínio a serem analisados. Nesse sentido, foi desenvolvido um novo workflow científico, SciPhyTreeMiner, como extensão do SciPhy (Figura 8), a fim de auxiliar a análise dos resultados de um experimento científico de análise filogenética, de forma a permitir que o cientista possa consultar e comparar os dados de domínio diretamente pelo banco de dados do workflow. Para isso, foram desenvolvidas duas atividades descritas nas seções 4.1 e 4.2: representação de árvores em formato tabular, a fim de permitir a consulta por meio de SQL à topologia da árvore filogenética, e mineração de árvores, a fim de retornar topologias frequentes evitando a comparação par a par entre árvores filogenéticas. Representação de Árvores SciPhy Mineração de Árvores Figura 8 – SciPhyTreeMiner: Extensão do SciPhy 23 O workflow SciPhyTreeMiner (Figura 9) foi formulado de forma a permitir que o cientista analise dados de domínio gerados tanto de entradas distintas quanto de programas de construção de árvores filogenéticas diferentes (e.g. RAxML e PhyML). Nesse sentido, além das atividades de mineração e representação, foi necessária a adição de duas atividades auxiliares: merge, que é responsável por unir dados das diferentes atividades de construção de árvores filogenéticas, e evoreduce, que é responsável por unir as árvores provenientes de todas as entradas em uma única entrada para o processo de mineração. Assim, as árvores filogenéticas de diferentes programas de construção de árvores são concatenadas para cada entrada pela atividade (7), representadas pela atividade (8) e concatenadas totalmente pela atividade (9). Em seguida, a atividade (10) é responsável pela mineração e a atividade (11) pela representação das subárvores frequentes obtidas na atividade (10). (1) Seleção de Dados de Entrada dataselection (6) PhyML phyml (8) Representação treeparser (7) Merge SQL merge (2) MAFFT mafft (9) Reduce evoreduce (3) Conversão de Formato de Dado readseq (4) ModelGenerator modelgenerator (10) Mineração evominer_multiple (5) RAxML raxml (11) Representação evotreeparser Figura 9 – Diagrama de Atividades do SciPhyTreeMiner: SciPhy com Representação e Mineração de Árvores 24 A atividade (9) evoreduce tem como finalidade concatenar as múltiplas entradas em uma única entrada de forma que possa ser repassada à atividade de mineração. Essa atividade é dispensável na medida em que a operação de reduce pode ser realizada diretamente na atividade de mineração. No entanto, para melhor organização dos dados, foi inserida a atividade auxiliar evoreduce que, além de reduzir as entradas, gera um novo nome de identificação da entrada, conforme a Figura 10. ENTRADA-1 ENTRADA1_ENTRADA-N_N ⋮ ENTRADA-N Figura 10 – Redução do Nome da Entrada As atividades do SciPhyTreeMiner estão listadas na Tabela 1, bem como seus nomes de identificação e suas relações de entrada e saída. Uma atividade adicional em relação à Figura 9 é a atividade addDummyEwkfid que consiste em copiar a coluna de identificação da execução do workflow para que seja utilizada como operando na atividade (9) de forma que todas as tuplas referentes à mesma execução sejam entradas da atividade (10). Tabela 1 – Atividades e Relações do Workflow SciPhyTreeMiner dataselection mafft Relação de Entrada idataselection imafft Relação de Saída odataselection omafft readseq ireadseq oreadseq Atividade Identificação (1) Seleção de Dados (2) MAFFT (3) Adaptação de Formato (4) Seleção de Modelos Ótimos (5) Construção de Árvores com RAxML (6) Construção de Árvores com PhyML modelgenerator imodelgenerator omodelgenerator raxml iraxml oraxml phyml iphyml ophyml 25 (7) Agrupamento de Relações (8) Representação de Árvores Clonagem de ID de Execução (9) União de Entradas Reduce (10) Mineração de Árvores (11) Representação de FSTs merge iphytree_raxml iphytree_phyml omerge treeparser itreeparser otreeparser addDummyEwkfid idummy_ewkfid odummy_ewkfid evoreduce ievoreduce oevoreduce evominer_multiple ievominer oevominer evotreeparser ievotreeparser oevotreeparser 4.1. Representação de Árvores Filogenéticas em Tabelas A primeira extensão realizada no SciPhy consiste na adição de uma atividade que permita a consulta às topologias das árvores através do banco de dados do workflow, atividade (8) da Figura 9. Uma vez que o workflow se utiliza de banco de dados relacionais, a atividade deve, então, converter a árvore filogenética para um formato tabular. Tendo em vista que uma árvore é um tipo particular de grafo (Cormen 2009), podemos utilizar representação de grafos para representar árvores filogenéticas. Assim, uma árvore filogenética pode ser representada por uma tabela de adjacência (Cormen 2009) adaptada, em que cada linha representa um nó da árvore contendo informações como taxonomia, identificação de nó e identificação de nó pai, como exemplificado pela tabela e figura abaixo. Tabela 2 – Tabela de Adjacência de Árvore Taxonomia * Azul * Vermelho Amarelo ID_Nó 0 1 2 3 4 * = sem valor ID_Pai * 0 0 2 2 Figura 11 – Árvore Exemplo para Tabela de Adjacência (Tabela 1) 26 A fim de se aproveitar o SciCumulus, a extensão para representação dos dados de domínio se dará como uma atividade adicional ao workflow SciPhy. A atividade adicional, então, é responsável por reescrever os dados de domínio em forma tabular e por fornecer ao SciCumulus um extrator que permita a leitura e escrita dessas tabelas no banco de dados. Embora essa adaptação pudesse ser realizada como o desenvolvimento de um novo extrator da atividade de construção de árvores, a adição de uma nova atividade permite que a representação seja feita em uma única atividade quando utilizado vários métodos de construção de árvores (Figura 9). Assim, é gerada apenas uma tabela contendo todos os dados de domínio de construção de árvores, facilitando as consultas SQL aos dados de domínio. Essa configuração permite, também, que o registro de outros dados resultantes da atividade de construção de árvores, como valores de parâmetros ou dados numéricos, sejam mantidos como registros da execução da atividade, uma vez que cada atividade ocupa uma tabela relacional no banco de dados. A atividade treeparser, então, é responsável por traduzir o formato Newick das árvores filogenéticas em um formato tabular como o descrito nesta seção. O formato tabular é, então, registrado no banco de dados por meio de um extrator, fazendo com que a tabela referente a essa atividade seja uma tabela de adjacência de árvores, como na Tabela 3. Tabela 3 – Tabela de Registro de Árvores Filogenéticas em Banco de Dados ID 0 1 2 3 4 tree_reference Tree_1 Tree_1 Tree_1 Tree_1 Tree_1 taxon_name None Taxon_1 None Taxon_2 Taxon_3 node_id 0 1 2 3 4 parent_id None 0 0 2 2 27 5 6 7 8 9 10 11 Tree_2 Tree_2 Tree_2 Tree_2 Tree_2 Tree_2 Tree_2 None Taxon_2 None Taxon_3 None Taxon_1 Taxon_4 0 1 2 3 4 5 6 None 0 0 2 2 4 4 A primeira coluna, tree_reference, guarda o nome da árvore filogenética convertida para o formato tabular. É necessário carregar a referência da árvore uma vez que a execução do workflow científico para várias entradas resulta na representação de várias árvores filogenéticas. As demais colunas (i.e. taxon_name, node_id e parente_id) dizem respeito às colunas da Tabela 1, descrita no início desse capítulo. A taxonomia é necessária para manter o acesso à filogenia da árvore, e as identificações de nó e nó pai são necessárias para consulta das relações entre nós. O campo taxon_name de um nó interno recebe o valor None por se tratar de um nó sem taxonomia. Essa atividade, então, permite que o cientista realize consultas SQL a respeito das topologias representadas na tabela. Na Tabela 3, por exemplo, pode-se consultar irmãos de Taxon_2 na árvore Tree_1 selecionando ocorrências que possuam parente_id igual ao parente_id de Taxon_2 e que tenham tree_reference igual a Tree_1. Maiores detalhes a respeito de consultas SQL a serem realizadas sobre esse tipo de tabela são apresentados no capítulo 5, onde é realizada uma análise experimental do SciPhyTreeMiner. Em relação à implementação, foi utilizado Python 2.7 e Dendropy v4.0 (Sukumaran e Holder 2010) para o programa a ser executado na atividade (8). Essa, por sua vez, foi adicionada ao XML do workflow no SciCumulus com suas especificações. Trata-se de uma atividade do tipo SplitMap (E. S. Ogasawara et al. 2011), uma vez que para cada entrada de dado do workflow, são necessárias várias entradas na tabela do banco de dados, 28 onde cada uma representa um nó de cada árvore filogenética de entrada. Assim, o resultado é semelhante à Tabela 3 já descrita. 4.2. Mineração de Árvores Filogenéticas A segunda extensão realizada no SciPhy consiste na adição de um conjunto de atividades que permita ao cientista a consulta a topologias frequentes no conjunto de árvores filogenéticas proveniente das atividades de construção de árvores filogenéticas. Assim, para retornar topologias frequentes, este projeto utiliza o algoritmo EvoMiner proposto por Deepak et al. (2014) que utiliza a ideia construtiva de subárvores frequentes, bem como a ideia de fingerprint proposto por Karp e Rabin (1987), conforme descrito no capítulo 2. Para este projeto, o algoritmo EvoMiner foi implementado utilizando Python 2.7 e Dendropy v4.0 (Sukumaran e Holder 2010). É esperado como entrada, um arquivo contendo os destinos das árvores a serem mineradas, bem como seus nomes de referência. As árvores filogenéticas de entrada, então, são forçadas a serem enraizadas. A forma como a raíz é defnida é diretamente influenciada pela forma como a árvore está escrita no formato Newick. Dessa forma, todas as árvores são inseridas ao processo de mineração como árvores enraizadas a fim de manter as garantias feitas por Deepak et al. (2014). O algoritmo inicia o processo iterativo e construtivo a partir de subárvores frequentes de três folhas computadas por força bruta em um passo inicial. As subárvores frequentes subsequentes são, então, computadas seguindo os passos do algoritmo já descrito. O programa retorna, então, dois arquivos contendo subárvores frequentes: um contendo todas as subárvores frequentes obtidas separadas por número de folhas e outro contendo somente as subárvores frequentes com o número máximo de folhas alcançado pelo algoritmo. 29 Dessa forma, a saída da atividade (10), evominer_multiple, também pode ser utilizada como entrada para o algoritmo de representação de árvores filogenéticas descrito anteriormente, auxiliando a visualização das subárvores frequentes obtidas. A atividade de representação, no entanto, precisa ser adaptada para suportar a coluna da tabela referente à frequência das árvores, resultando em uma nova atividade (11) evotreeparser (Figura 9). 30 5. Análise Experimental do SciPhyTreeMiner O primeiro cenário experimental a ser descrito consiste em duas execuções do workflow SciPhyTreeMiner realizadas em apenas uma máquina local para dois conjuntos distintos de entradas contendo duas entradas distintas cada. Assim, é possível avaliar o comportamento do workflow para múltiplas entradas e múltiplas execuções. A Tabela 4 resume o cenário inicial da análise experimental do workflow proposto SciPhyTreeMiner. Tabela 4 – Cenário Experimental Tag do Workflow Workflow SciPhyTreeMiner Tag de Execução Nº de Entradas sciphytreeminer wftreeminer_1-1 2 sciphytreeminer wftreeminer_1-2 2 Nome das Entradas ORTHOMCL337 ORTHOMCL358 ORTHOMCL256 ORTHOMCL320 A análise do workflow consiste em consultas SQL à base de dados de proveniência do SciCumulus referentes ao workflow SciPhyTreeMiner. Essas consultas podem ser classificadas em: (i) consultas de desempenho (e.g. tempo de execução do workflow e suas atividades), (ii) consultas de monitoramento (e.g. da execução runtime das atividades do workflow), e (iii) consultas analíticas, referentes aos dados de domínio. Cabe mencionar que este projeto tem foco nas consultas relacionadas às atividades (8) e (10), bem como aos dados de domínio. Nesse caso, as consultas aos dados de domínio serão feitas sobre os dados referentes às atividades (8) e (10). 5.1. Consultas de Atividades O workflow SciPhyTreeMiner possui algumas atividades adicionais em relação ao SciPhy, o que torna interessante a análise da execução dessas atividades a fim de verificar o impacto de sua adição na performance do workflow científico. 31 As consultas a seguir utilizam as tabelas de registro de dados de execução eworkflow e eactivity a fim de retornar o tempo de execução de cada atividade. São tabelas que contém informações referentes à execuções de cada atividade e do workflow como um todo. São utilizados, principalmente, os campos ewkfid e wkfid, que corresponde à identificação de cada execução do workflow nas tabelas eworkflow e eactivity respectivamente, e os campos tag e tagexec da tabela eworkflow que correspondem aos nomes do workflow e de cada execução do workflow respectivamente. Consulta SQL 1 e Consulta SQL 2 descrevem o código em SQL correspondente a essa consulta, em que cada consulta retorna o tempo das atividades de cada execução do workflow: wftreeminer_1-1 e wftreeminer_1-2. Figura 12 e Figura 13 contém os resultados das consultas abaixo. SELECT act.tag, ewf.tagexec, EXTRACT ('epoch' FROM(act.endtime-act.starttime)) AS duration FROM eworkflow ewf, eactivity act WHERE ewf.ewkfid = act.wkfid AND ewf.tag = 'sciphytreeminer' AND ewf.tagexec = 'wftreeminer_1-1' ORDER BY duration Consulta SQL 1 – Retorna Tempo de Execução das Atividades da Execução wftreeminer_1-1 do SciPhyTreeMiner SELECT act.tag, ewf.tagexec, EXTRACT ('epoch' FROM(act.endtime-act.starttime)) AS duration FROM eworkflow ewf, eactivity act WHERE ewf.ewkfid = act.wkfid AND ewf.tag = 'sciphytreeminer' AND ewf.tagexec = 'wftreeminer_1-2' ORDER BY duration Consulta SQL 2 – Retorna Tempo de Execução das Atividades da Execução wftreeminer_1-2 do SciPhyTreeMiner 32 Figura 12 - Resultados da Consulta SQL 1: Tempo de Execução de Atividades de wftreeminer_1-1 Figura 13 – Resultados da Consulta SQL 2: Tempo de Execução de Atividades de wftreeminer_1-2 As consultas acima permitem verificar que a atividade que mais demanda tempo é a atividade de seleção de modelos ótimos representada pela atividade modelgenerator. As atividades adicionais evominer_multiple, treeparser, evoreduce, evotreeparser e addDummyEwkfid possuem tempo de execução visivelmente menor que a atividade 33 modelgenerator para esse cenário. A atividade adicional que mais consome tempo é a atividade referente à mineração dos dados de domínio: evominer_multiple. As atividades de representação de árvores filogenéticas treeparser e evotreeparser possuem, para esse caso, pouca influência no tempo total de execução do workflow. 5.2. Consultas de Representação de Árvores Filogenéticas A atividade de representação de árvores filogenéticas foi inserida no workflow a fim de permitir que o cientista possa consultar a estrutura das árvores inferidas utilizando consultas SQL à base de dados que armazena os dados de domínio dos workflows científicos. Assim, foram elaboradas algumas consultas a serem realizadas nos dados gerados a partir da atividade de representação das árvores filogenéticas inferidas pelos programas RAxML e PhyML durante as execuções do workflow SciPhyTreeMiner. A Consulta SQL 3 retorna todos os ancestrais de uma folha específica dentro de uma árvore especificada. No caso, a consulta retorna todos os nós ancestrais da folha de taxonomia 8 na árvore proveniente da construção de árvores com o programa RAxML a partir da entrada ORTHOMCL320. A Figura 14 contém os resultados. WITH RECURSIVE qr AS ( SELECT eTable.tree_reference, eTable.taxon_name, eTable.node_id, eTable.parent_id FROM sciphytreeminer.otreeparser AS eTable WHERE eTable.tree_reference LIKE '%ORTHOMCL320%RAxML' AND eTable.taxon_name = '8' UNION ALL SELECT eTable.tree_reference, eTable.taxon_name, eTable.node_id, eTable.parent_id FROM sciphytreeminer.otreeparser AS eTable JOIN qr ON qr.parent_id = eTable.node_id AND qr.tree_reference = eTable.tree_reference) SELECT * FROM qr Consulta SQL 3 – Retorna Nós Ancestrais da Espécie 8 na Árvore Inferida pelo RAxML 34 Figura 14 – Resultados da Consulta SQL 3: Nós Ancestrais de uma Folha A Consulta SQL 3 pode ser variada de forma a obter os ancestrais da mesma espécie em mais árvores. O percurso utilizado para construir a representação treeparser foi um percurso em nível, de forma que o campo parente_id tem sempre valor menor que o campo node_id. A forma como a árvore é percorrida influencia apenas no valor de identificação dos nós, mas a relação entre eles é mantida. Assim, a árvore pode ser facilmente reconstruída. No contexto de ancestralidade, é comum o cientista ter interesse em consultar nós ancestrais comuns entre duas ou mais espécies na árvore filogenética. A Consulta SQL 4 retorna ancestrais comuns às espécies 2 e 6 na árvore inferida pelo PhyML a partir da entrada ORTHOMCL337. A Figura 16 mostra os resultados que podem ser verificados através da árvore representada na Figura 15, em que os ancestrais comuns estão marcados por um círculo preto. id 1 id 4 Figura 15 - Árvore Filogenética Construída pelo PhyML para a Entrada ORTHOMCL337 35 SELECT X.tree_reference, X.node_id FROM (WITH RECURSIVE qr AS ( SELECT t.tree_reference, t.taxon_name, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t WHERE t.tree_reference LIKE '%ORTHOMCL337%phyml%' AND t.taxon_name = '2' UNION ALL SELECT t.tree_reference, t.taxon_name, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t JOIN qr ON qr.parent_id = t.node_id AND qr.tree_reference = t.tree_reference) SELECT * FROM qr) X WHERE X.node_id IN (SELECT node_id FROM (WITH RECURSIVE q AS ( SELECT t.tree_reference, t.taxon_name, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t WHERE t.tree_reference LIKE '%ORTHOMCL337%phyml%' AND t.taxon_name = '6' UNION ALL SELECT t.tree_reference, t.taxon_name, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t JOIN q ON q.parent_id = t.node_id AND q.tree_reference = t.tree_reference) SELECT * FROM q) AS X) Consulta SQL 4 – Retorna Nós Ancestrais Comuns às Espécies 6 e 2 na Árvore Inferida pelo PhyML a partir da Entrada ORTHOMCL337 Figura 16 – Resultados da Consulta SQL 4: Nós Ancestrais Comuns a duas Espécies Outra consulta de interesse a ser feita sobre uma árvore filogenética é o tamanho do caminho entre duas espécies na árvore. Essa consulta poderia ser realizada utilizando a Consulta SQL 4 como ponto de partida. Nesse caso, basta contar as entradas retornadas 36 pela Consulta SQL 3 a partir do menor ancestral comum obtido pela Consulta SQL 4, que poderia ser obtido restringindo a consulta à primeira entrada encontrada. Identificando esse resultado como 𝐿𝐶𝐴 2,6 , a Consulta SQL 5 mostra o código necessário para a obtenção do tamanho do caminho entre as espécies 2 e 6. O resultado da consulta, no caso, é de 3. WITH RECURSIVE q AS ( SELECT t. tree_reference, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t WHERE t.tree_reference LIKE '%ORTHOMCL337%phyml%' AND t.node_id = LCA(2,6) UNION ALL SELECT t.tree_reference, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t JOIN q ON q.node_id = t.parent_id AND q.tree_reference = t.tree_reference AND q.node_id IN (SELECT s.node_id FROM (WITH RECURSIVE qr AS ( SELECT t.tree_reference, t.node_id, t.parend_id FROM sciphytreeminer.otreeparser AS t WHERE t.tree_reference LIKE '%ORTHOMCL337%phyml%' AND t.taxon_name = '6' UNION ALL SELECT t.tree_reference, t.node_id, t.parent_id FROM sciphytreeminer.otreeparser AS t JOIN qr ON qr.parent_id = t.node_id AND qr.tree_reference = t.tree_reference) SELECT * FROM qr) AS s)) SELECT COUNT(*) FROM q Consulta SQL 5 – Retorna Tamanho do Caminho entre as Espécies 6 e 2 na Árvore Inferida pelo PhyML a partir de ORTHOMCL337 A atividade de representação de árvores filogenéticas, portanto, permite ao cientista consultar toda a estrutura das árvores utilizando consultas à base de dados direcionadas para o tipo de informação desejada. Dessa forma, o cientista não mais precisa acessar 37 diretamente o sistema de arquivos do experimento e obtém as informações de forma mais prática e limpa. 5.3. Consultas de Mineração de Árvores Filogenéticas A atividade de mineração de árvores retorna um conjunto de subárvores frequentes que podem ser armazenas e consultadas através da atividade de representação. Dessa forma, as consultas referentes à topologia das subárvores frequentes se assemelham às consultas realizadas e propostas na seção 5.2. A execução dessa atividade gera dois arquivos, que podem ser adaptados como entrada para a atividade de representação. Por conveniência, apenas a saída contendo as maiores subárvores frequentes foram extraídas para o banco de dados. A tabela resultante é semelhante à retornada pela atividade treeparser e é identificada como evotreeparser para se referir à representação das árvores filogenéticas provenientes da mineração de árvores. Para análise, foi considerado o valor de frequência mínima como sendo 0,5, de forma que as maiores subárvores frequentes não são iguais às árvores filogenéticas de entrada. Assim, além das consultas realizadas na seção 5.2, o cientista pode ter interesse em saber quantas subárvores frequentes maximais foram obtidas. A Consulta SQL 6, portanto, retorna quantas subárvores frequentes maximais há na tabela por execução e a Consulta SQL 7 retorna o tamanho em folhas das subárvores maximais. Figura 17 e Figura 18 contêm os resultados dessas consultas. 38 SELECT ewf.tagexec, evocount.maximum_fsts FROM (SELECT ev.ewkfid, COUNT(*) AS maximum_fsts FROM (SELECT DISTINCT evo.ewkfid, evo.tree_reference FROM schiphytreeminer.oevotreeparser AS evo) AS ev GROUP BY ev.ewkfid) AS evocount INNER JOIN eworkflow AS ewf ON ewf.ewkfid = evocount.ewkfid Consulta SQL 6 – Retorna Número de Subárvores Frequentes Maximais em cada Execução Figura 17 - Resultados da Consulta SQL 6: Número de FSTs Maximais em Cada Execução SELECT ewf.tagexec, evocount.tree_reference, evocount.n_leaves FROM (SELECT ewf.ewkfid, tree.tree_reference, tree.n_leaves FROM (SELECT evo.tree_reference, COUNT(evo.taxon_name) AS n_leaves FROM sciphytreeminer.oevotreeparser AS evo WHERE evo.taxon_name != 'None' GROUP BY evo.tree_reference) AS tree INNER JOIN (SELECT DISTINCT evo.ewkfid, evo.tree_reference FROM sciphytreeminer.oevotreeparser AS evo) AS ewf ON ewf.tree_reference = tree.reference) AS evocount INNER JOIN eworkflow AS ewf ON ewf.ewkfid = evocount.ewkfid Consulta SQL 7 – Retorna o Número de Folhas nas Subárvores Maximais de cada Execução 39 Figura 18 – Resultados da Consulta SQL 7: Número de Folhas das FSTs Maximais de cada Execução Além das consultas relacionadas à quantidade de subárvores frequentes maximais e o tamanho delas, é possível, também, realizar consultas relacionadas à frequência de cada subárvore frequente maximal. A Consulta SQL 8 retorna os nomes de referência das subárvores frequentes maximais de maior frequência. A Figura 19 contém os resultados e mostra que, nesse cenário experimental, as maiores subárvores frequentes com frequência mínima de 0,5 possuem frequência igual à mínima tolerada. SELECT ewf.tagexec, evocount.tree_reference, evocount.n_leaves FROM (SELECT ewf.ewkfid, tree.tree_reference, tree.n_leaves FROM (SELECT DISTINCT evo.tree_reference, evo.frequency FROM sciphytreeminer.oevotreeparser AS evo INNER JOIN (SELECT mevo.tree_reference, MAX(mevo.frequency) FROM sciphytreeminer.oevotreeparser AS mevo GROUP BY mevo.tree_reference) AS maxevo ON evo.frequency = maxevo.frequency) AS tree INNER JOIN (SELECT DISTINCT evo.ewkfid, evo.tree_reference FROM sciphytreeminer.oevotreeparser AS evo) AS ewf ON ewf.tree_reference = tree.reference) AS evocount INNER JOIN eworkflow AS ewf ON ewf.ewkfid = evocount.ewkfid Consulta SQL 8 – Retorna Nome de Referência das FSTs Maximais de Máxima Frequência de cada Execução 40 Figura 19 – Resultados da Consulta SQL 8: FSTs Maximais de Máxima Frequência de cada Execução O quão rígido é o valor de frequência mínima depende das entradas do workflow, bem como do número de entradas. As árvores filogenéticas inferidas nas execuções possuem 10 espécies, de forma que subárvores frequentes maximais de 7 folhas em 50% das árvores inferidas pode resultar em maior confiança sobre a inferência dessas relações. É provável que essa ocorrência de subárvores frequentes em 50% esteja relacionada às árvores inferidas a partir da mesma entrada e por programas de construção de árvores diferentes, uma vez que se espera que os programas de construção de árvores retornem, para uma mesma entrada, árvores filogenéticas similares. Entretanto, são conclusões a respeito dos dados de domíno que devem ser realizadas por parte dos cientistas. É possível realizar as consultas 6, 7, 8 a partir das subárvores frequentes e detectar ancestrais comuns ou caminhos mais frequentes na coleção de árvores de entrada. A combinação das duas atividades de mineração e representação, portanto, permite uma análise direta das relações evolutivas mais recorrentes entre as árvores filogenéticas estudadas, sem que seja feita a análise comparativa manual entre as árvores inferidas. Dessa forma, para um caso de múltiplas entradas, ter acesso a relações recorrentes simplifica a análise dos dados de domínio, bem como permite a detecção de informações inalcançáveis manualmente. 41 6. Avaliação de Desempenho do Workflow SciPhyTreeMiner Workflows científicos, muitas vezes, são utilizados no processamento de um grande volume de dados. É essencial, portanto, verificar o comportamento do workflow proposto neste projeto à medida em que se aumenta o número de entradas. Para essa análise, foram realizadas 4 execuções do workflow SciPhyTreeMiner utilizando 2 núcleos em uma máquina virtual com processador Intel Core i7-3537U 2GHz, 4GB de memória RAM, 60GB de disco e sistema operacional Ubuntu 64-bit, em que as quantidades de dados de entrada foram 10, 20, 50 e 100. O Gráfico 1 apresenta os tempos de execução do workflow para cada conjunto de entrada. Na janela proposta para o tamanho do conjunto de entrada, o workflow possui uma tendência linear no tempo de execução em relação ao número de entradas. É visível, portanto, que o SciPhyTreeMiner é um workflow sensível ao tamanho da entrada. Tempo Total de Execução do Workflow (2 núcleos) 80 73,245 70 Tempo (h) 60 50 40 37,42586222 30 20 17,3489425 10 7,436668611 0 0 20 40 60 80 100 120 Número de Entradas do Workflow Gráfico 1 – Tempo Total de Execução do SciPhyTreeMiner 42 No entanto, para avaliar o nível de contribuição deste projeto, é necessário avaliar o desempenho das atividades propostas em relação às atividades já presentes no SciPhy. As atividades auxiliares que dizem respeito a operações SQL consomem relativamente pouco tempo, de forma que a análise é interessante apenas sobre as atividades principais treeparser, evominer_multiple e evotreeparser. O Gráfico 2 apresenta o tempo escalado total de execução de cada atividade para cada conjunto de entrada, em que a tendência linear é mantida. O tempo de execução das atividades mafft, modelgenerator, raxml, phyml e treeparser é inversamente proporcional ao número de cores utilizado, uma vez que cada entrada pode ser processada paralelamente. Entretanto, as atividades evominer_multiple e evotreeparser mantêm o tempo de execução aproximadamente constante independente do número de núcleos. Dessa forma, embora a atividade evominer_multiple tenha consumido menor tempo de execução à medida em que se aumentou o conjunto de entradas, esse tempo não pode ser melhorado com o aumento do número de núcleos utilizados. Tempo Total de Execução das Atividades Principais 2 Tempo (log10 h) 1 0 0 20 40 60 80 100 120 -1 -2 -3 -4 Número de Entradas do Workflow mafft modelgenerator raxml treeparser evominer_multiple evotreeparser phyml Gráfico 2 – Tempo Total de Execução das Atividades do SciPhyTreeMiner 43 O Gráfico 3 expõe que a atividade evominer_multiple ultrapassa as atividades phyml e raxml a partir de 50 entradas no workflow quando avaliado o tempo médio de execução. Vale lembrar que, pela configuração do SciPhyTreeMiner, a atividade evominer_multiple recebe como entrada sempre o dobro do número de entradas do workflow, uma vez que recebe N da atividade raxml e N da atividade phyml. Segundo o Gráfico 3, portanto, a atividade phyml consome, em média, para uma entrada o mesmo tempo que a atividade evominer_multiple consome para processar 100 entradas. Tempo Médio de Execução das Atividades Principais Por Número de Entradas do Workflow 35 Tempo médio (min) 30 25 20 15 10 5 0 0 20 40 60 80 100 120 Número de Entradas do Workflow mafft modelgenerator raxml treeparser evominer_multiple evotreeparser phyml Gráfico 3 – Tempo Médio de Execução das Atividades do SciPhyTreeMiner Dessa forma, o desempenho do workflow proposto é tal que o tempo de execução é diretamente proporcional ao volume de informação agregada pela sua execução. Isto é, mesmo que o tempo de execução da atividade evominer_multiple no Gráfico 3 ultrapasse, em algum momento, o tempo de execução da atividade mais demorada, modelgenerator, 44 haverá sempre ganho de informação a respeito dos dados de domínio. Assim, a vantagem da utilização da atividade de mineração está na agregação de informação que a atividade proporciona, não no tempo de execução. 45 7. Conclusão É comum o uso de workflows científicos em experimentos de análises filogenéticas, uma vez que se trata de um estudo que requer simulações computacionais custosas por fazer inferências a partir de um grande número de sequências proteicas. A execução desses workflows, no entanto, retornam dados crus que sem a análise por parte do cientista não possuem significado. Dessa forma, os dados de domínio provenientes das execuções de workflows científicos devem ser estudados manualmente, tornando inviável a análise no caso em que a quantidade de entradas é grande, pois gera uma grande quantidade de dados de domínio na saída. Sob essa motivação, foi implementado um workflow científico que auxiliasse na análise desses dados de domínio, permitindo que o cientista tenha acesso direto às relações evolutivas presentes nas árvores filogenéticas como um todo e às relações mais recorrentes presentes no conjunto de dados de domínio de saída da execução do workflow. Para isso, foi implementado um conversor de árvores filogenéticas em formato Newick para um formato tabular, que representa as relações entre cada nó da árvore. Dessa forma, é possível armazenar as árvores filogenéticas no banco de dados do worklfow e permitir ao cientista consultas direcionadas a partes específicas da topologia das árvores filogenéticas. No entanto, é possível perceber que as consultas a essas tabelas exigem amplo conhecimento de SQL, o que pode ser inviável para cientistas não familiarizados. Nesse sentido, este projeto pode ser estendido de forma a acoplar à base de dados do workflow ferramentas que permitam consultas mais simples aos caminhos presentes nas árvores filogenéticas. Além disso, foi implementado um algoritmo capaz de listar todas as subárvores frequentes no conjunto de árvores filogenéticas de saída, de forma a permitir acesso a 46 relações recorrentes entre algumas espécies. Uma análise profunda das subárvores frequentes por parte do cientista, portanto, pode resultar em informações que a análise separada das árvores filogenéticas inferidas não é capaz de detectar. Associada à atividade de representação de árvores filogenéticas em tabelas, a atividade de mineração de árvores permite ao cientista pontos de vista diferentes a respeito dos dados de domínio. Cabe lembrar que as atividades de representação e mineração de árvores filogenéticas são atividades que podem ser desacopladas do workflow científico proposto e acopladas a outros workflows existentes, uma vez que aceitam como entrada qualquer conjunto de árvores, desde que passadas da forma descrita neste projeto. Consultas à base de dados do workflow e análises a respeito de seu desempenho permitiram verificar que o workflow possui tempo de execução linear em relação ao número de entradas. Esse tempo pode ser melhorado com o aprimoramento da infraestrutura computacional, mas possui um limite inferior dependente da atividade de mineração, uma vez que essa possui apenas uma ativação. Esse limite, no entanto, pode ser melhorado com a aplicação de técnicas de paralelismo ao algoritmo de mineração. A atividade de mineração, por sua vez, possui tempo de execução crescente em relação ao número de entradas, mas ganha valor à medida em que gera informação a respeito dos dados de filogenia em cenários em que a análise manual é inviável. Entretanto, a atividade força as árvores de entrada a serem enraizadas, de forma que, se enraizadas em nós errados, pode retornar falsos resultados. Assim, este projeto também pode ser estendido permitindo que o cientista escolha o nó raíz ou substituindo o algoritmo de mineração utilizado por um outro algoritmo que minere árvores tanto enraizadas quanto não-enraizadas. Ainda assim, o workflow SciPhyTreeMiner cumpre o objetivo de agregar informação à fase de análise dos dados de domínio de workflows de filogenia, uma vez que permite 47 realizar consultas a relações evolutivas e verificar relações evolutivas mais recorrentes dentro de uma coleção de árvores filogenéticas por meio da base de dados do workflow científico. 48 Referências Bibliográficas Altintas, I., C. Berkley, E. Jaeger, M. Jones, B. Ludascher, e S. Mock. 2004. “Kepler: an extensible system for design and execution of scientific workflows.” In , 423– 24. IEEE. doi:10.1109/SSDM.2004.1311241. Callahan, Steven P., Juliana Freire, Emanuele Santos, Carlos E. Scheidegger, Cláudio T. Silva, e Huy T. Vo. 2006. “VisTrails: Visualization Meets Data Management.” In , 745. ACM Press. doi:10.1145/1142473.1142574. Cardoso, L.F., J.M. de Souza, e C. Marques. 2002. “A collaborative approach to the reuse of scientific experiments in the Bill of Experiments tool.” In , 296–301. COPPE/UFRJ. doi:10.1109/CSCWD.2002.1047704. Cormen, Thomas H., org. 2009. Introduction to algorithms. 3rd ed. Cambridge, Mass: MIT Press. Da San Martino, Giovanni, e Alessandro Sperduti. 2010. “Mining Structured Data.” IEEE Computational Intelligence Magazine 5 (1): 42–49. doi:10.1109/MCI.2009.935308. Deelman, Ewa, e Ann Chervenak. 2008. “Data Management Challenges of DataIntensive Scientific Workflows.” In , 687–92. IEEE. doi:10.1109/CCGRID.2008.24. Deelman, Ewa, Dennis Gannon, Matthew Shields, e Ian Taylor. 2009. “Workflows and E-Science: An Overview of Workflow System Features and Capabilities.” Future Generation Computer Systems 25 (5): 528–40. doi:10.1016/j.future.2008.06.012. Deelman, Ewa, Gaurang Mehta, Gurmeet Singh, Mei-Hui Su, e Karan Vahi. 2007. “Pegasus: Mapping Large-Scale Workflows to Distributed Resources.” In Workflows for E-Science, organizado por Ian J. Taylor, Ewa Deelman, Dennis B. Gannon, e Matthew Shields, 376–94. London: Springer London. http://link.springer.com/10.1007/978-1-84628-757-2_23. Deepak, Akshay, David Fernández-Baca, Srikanta Tirthapura, Michael J. Sanderson, e Michelle M. McMahon. 2014. “EvoMiner: Frequent Subtree Mining in Phylogenetic Databases.” Knowledge and Information Systems 41 (3): 559–90. doi:10.1007/s10115-013-0676-0. de Oliveira, Daniel, Kary A.C.S. Ocaña, Eduardo Ogasawara, Jonas Dias, João Gonçalves, Fernanda Baião, e Marta Mattoso. 2013. “Performance Evaluation of Parallel Strategies in Public Clouds: A Study with Phylogenomic Workflows.” Future Generation Computer Systems 29 (7): 1816–25. doi:10.1016/j.future.2012.12.019. de Oliveira, Daniel, Eduardo Ogasawara, Fernanda Baião, e Marta Mattoso. 2010. “SciCumulus: A Lightweight Cloud Middleware to Explore Many Task Computing Paradigm in Scientific Workflows.” In , 378–85. IEEE. doi:10.1109/CLOUD.2010.64. de Oliveira, Daniel, Eduardo Ogasawara, Fernando Seabra, Vítor Silva, Leonardo Murta, e Marta Mattoso. 2010. “GExpLine: A Tool for Supporting Experiment Composition.” In Provenance and Annotation of Data and Processes, organizado por Deborah L. McGuinness, James R. Michaelis, e Luc Moreau, 6378:251–59. Berlin, Heidelberg: Springer Berlin Heidelberg. http://link.springer.com/10.1007/978-3-642-17819-1_28. 49 de Oliveira, Frederico T., Leonardo Murta, Claudia Werner, e Marta Mattoso. 2008. “Using Provenance to Improve Workflow Design.” In Provenance and Annotation of Data and Processes, organizado por Juliana Freire, David Koop, e Luc Moreau, 5272:136–43. Berlin, Heidelberg: Springer Berlin Heidelberg. http://link.springer.com/10.1007/978-3-540-89965-5_15. Felsenstein, Joseph. 2004. Inferring phylogenies. Sunderland, Mass: Sinauer Associates. Henzinger, Monika R., e Valerie King. 1999. “Randomized fully dynamic graph algorithms with polylogarithmic time per operation.” Journal of the ACM 46 (4): 502–16. doi:10.1145/320211.320215. Karp, Richard M., e Michael O. Rabin. 1987. “Efficient randomized pattern-matching algorithms.” IBM Journal of Research and Development 31 (2): 249–60. doi:10.1147/rd.312.0249. Lengauer, Thomas, org. 2001. Bioinformatics– From Genomes to Drugs. Methods and Principles in Medicinal Chemistry. Weinheim, FRG: Wiley-VCH Verlag GmbH & Co. KGaA. http://doi.wiley.com/10.1002/3527601481. Luscombe, N. M., D. Greenbaum, e M. Gerstein. 2001. “What Is Bioinformatics? A Proposed Definition and Overview of the Field.” Methods of Information in Medicine 40 (4): 346–58. Mattoso, Marta, Claudia Werner, Guilherme Horta Travassos, Vanessa Braganholo, Eduardo Ogasawara, Daniel De Oliveira, Sergio Manuel Serra Da Cruz, Wallace Martinho, e Leonardo Murta. 2010. “Towards Supporting the Life Cycle of Large Scale Scientific Experiments.” International Journal of Business Process Integration and Management 5 (1): 79. doi:10.1504/IJBPIM.2010.033176. Ocaña, Kary A. C. S., Daniel de Oliveira, Eduardo Ogasawara, Alberto M. R. Dávila, Alexandre A. B. Lima, e Marta Mattoso. 2011. “SciPhy: A Cloud-Based Workflow for Phylogenetic Analysis of Drug Targets in Protozoan Genomes.” In Advances in Bioinformatics and Computational Biology, organizado por Osmar Norberto de Souza, Guilherme P. Telles, e Mathew Palakal, 6832:66–70. Berlin, Heidelberg: Springer Berlin Heidelberg. http://link.springer.com/10.1007/978-3-642-22825-4_9. Ogasawara, Eduardo, Carlos Paulino, Leonardo Murta, Cláudia Werner, e Marta Mattoso. 2009. “Experiment Line: Software Reuse in Scientific Workflows.” In Scientific and Statistical Database Management, organizado por Marianne Winslett, 5566:264–72. Berlin, Heidelberg: Springer Berlin Heidelberg. http://link.springer.com/10.1007/978-3-642-02279-1_20. Ogasawara, Eduardo S., Daniel de Oliveira, Patrick Valduriez, Jonas Dias, Fabio Porto, e Marta Mattoso. 2011. “An Algebraic Approach for Data-Centric Scientific Workflows.” PVLDB 4 (12): 1328–39. Olafsson, Sigurdur, Xiaonan Li, e Shuning Wu. 2008. “Operations Research and Data Mining.” European Journal of Operational Research 187 (3): 1429–48. doi:10.1016/j.ejor.2006.09.023. Oliveira, Daniel, Eduardo Ogasawara, Kary Ocaña, Fernanda Baião, e Marta Mattoso. 2012. “An Adaptive Parallel Execution Strategy for Cloud-Based Scientific Workflows: ADAPTIVE PARALLEL EXECUTION STRATEGY.” Concurrency and Computation: Practice and Experience 24 (13): 1531–50. doi:10.1002/cpe.1880. Pevsner, Jonathan. 2009. Bioinformatics and functional genomics. 2nd ed. Hoboken, N.J: Wiley-Blackwell. 50 Stamatakis, A. 2014. “RAxML Version 8: A Tool for Phylogenetic Analysis and PostAnalysis of Large Phylogenies.” Bioinformatics 30 (9): 1312–13. doi:10.1093/bioinformatics/btu033. Stevens, Robert, Jun Zhao, e Carole Goble. 2007. “Using Provenance to Manage Knowledge of in Silico Experiments.” Briefings in Bioinformatics 8 (3): 183–94. doi:10.1093/bib/bbm015. Sukumaran, Jeet, e Mark T. Holder. 2010. “DendroPy: A Python Library for Phylogenetic Computing.” Bioinformatics (Oxford, England) 26 (12): 1569–71. doi:10.1093/bioinformatics/btq228. Swenson, Krister M., Eric Chen, Nicholas D. Pattengale, e David Sankoff. 2012. “The Kernel of Maximum Agreement Subtrees.” IEEE/ACM Transactions on Computational Biology and Bioinformatics / IEEE, ACM 9 (4): 1023–31. doi:10.1109/TCBB.2012.11. Travassos, G. H., e M. O. Barros. 2003. “Contributions of In Virtuo and In Silico Experiments for the Future of Empirical Studies in Software Engineering.” 2nd Workshop on Empirical Software Engineering the Future of Empirical Studies in Software Engineering 117-130. Zhao, Yong, Mihael Hategan, Ben Clifford, Ian Foster, Gregor von Laszewski, Veronika Nefedova, Ioan Raicu, Tiberiu Stef-Praun, e Michael Wilde. 2007. “Swift: Fast, Reliable, Loosely Coupled Parallel Computation.” In , 199–206. IEEE. doi:10.1109/SERVICES.2007.63. 51