E. Araştırmanın Sınırlıkları, Önkabulleri ve Yürütülmesi
1.4. Dindarlık ve Umutla İlgili Yapılmış Çalışmalar
O número de TPBs consistentes com a entrada pode ser muito alto, mas estamos interessados apenas em redes que fazem sentido biológico. A questão é: como identificar essas redes analisando sua dinâmica? Segundo Kauffman(1993) e Li et al.(2004), redes estáveis são aquelas que possuem um pequeno número de atratores e um deles com uma bacia de atração grande. Apesar da bacia ser grande, apenas um pequeno número de estados fazem parte de um atrator. Tais estados que não fazem parte do atrator (chamados de estados transientes) não são biologicamente significativos. Por outro lado, os estados que fazem parte do atrator podem representar um tipo de célula ou um estágio (diferenciação, proliferação ou apoptose).
Para cada critério de construção de redes gênicas a partir das linhas consistentes com a entrada do solver, o algoritmo de simulação gera um número parametrizável de redes a serem simuladas, a fim de fazer uma filtragem estatística. Para cada simulação, coletamos o número atratores e o tamanho de cada bacia de atrator. Vamos descrever em seguida como selecionar as redes de acordo com sua dinâmica.
Entropia
Entropia é uma grandeza da termodinâmica que determina a quantidade de energia não dis- ponível para conversão em trabalho, determinando assim o “grau de desordem” de um sistema. O conceito foi introduzido por Clausius(1850). Boltzmann(1877) mostrou como expressar a entropia em termos de probabilidades associadas à configurações microscópicas de um sistema, vindo depois a ser conhecido como Entropia de Boltzmann-Gibbs (Boltzmann (1974)). Para mais informações, veja Clausius (1867); Lopes (2011); Tsallis(2009).
A forma discreta dessa entropia é dada como segue:
HBG= −k W
X
i=1
pilog pi,
Onde k é a constante de Boltzmann, e pi corresponde as probabilidades das W configurações
microscópicas possíveis, satisfazendo:
W
X
i=1
pi = 1.
A entropia foi aplicada por Shannon(2001) na Teoria da Informação, e utilizada para determinar a quantidade de informação contida em uma determinada fonte, assim como para graduar a incerteza de um conjunto de dados. Nesse caso, usamos k = 1.
Considere uma variável indicadora I que pode assumir um valor booleano R = {0, 1}. Neste trabalho, essa variável indica se um estado pertence ou não a determinada bacia de atração. Assim como na entropia de Boltzmann-Gibbs, a entropia de Shannon é definida em termos das probabili- dades possíveis da ocorrência desta variável aleatória P (I):
H(I) = −X
i∈I
3 SIMULAÇÃO DA DINÂMICA 29
tal que
X
i∈I
P (i) = 1.
Considere agora uma TBN qualquer do espaço de redes geradas para simulação para um dos critérios de escolha, digamos A.
Sejam A1, A2, . . . , Awos atratores desta rede, com as respectivas bacias de atração B1, B2, . . . , Bw.
Denotamos |Ai| o número de estados de Ai, e |Bi| o número de estados da bacia Bi correspondente.
Assim, a probabilidade de um estado desta rede estar em uma bacia Bi, i = 1, 2, . . . , w é dada por:
P (Yi = 1) = Pw |Bi|
j=1|Bi| = 2n
,
onde Yi é a variável booleana aleatória que denota o fato de um estado arbitrário estar em
Bi(Yi= 1). Neste trabalho, Pwj=1|Bi| = 2n. Com estas probabilidades podemos calcular a entropia
seguindo a Equação 3.10: HA = − w X i=1 P (Yi = 1) log[P (Yi= 1)]. (3.10)
Neste caso, a entropia atinge o valor máximo quando todas as bacias têm o mesmo tamanho, mas neste trabalho procuramos o caso oposto, ou seja, uma única bacia grande, e possivelmente uma ou mais bacias pequenas, logo, procuramos minimizar a entropia.
Capítulo 4
Resultados
Nesta seção descreveremos o procedimento experimental para validação do algoritmo. Começare- mos descrevendo as implementações, e em seguida as experiências feitas. Discutiremos os resultados na próxima seção.
4.1
Implementação
Implementamos as restrições do modelo descrito emSeção 3.1utilizando a biblioteca Gecode, e com isto criamos um solver, utilizado nas experimentações.
Escolhemos tal ferramenta, entre outras razões, por ser:
• Aberta, é altamente extensível, suporta a criação de novas estratégias de propagação, ra- mificação e mecanismos de busca, além da criação de novos tipos de domínio de variáveis. Além disso, essa biblioteca permite a integração com outros sistemas e linguagens, como Lisp, Haskell, Ruby e Java
• Livre, distribuída sob licença MIT com implementação, exemplos e documentação de código fonte aberto e disponível para download.
• Portável, o Gecode é implementado em C++ seguindo cuidadosamente os padrões da lingua- gem, rodando em diversos sistemas e configurações de máquina.
• Acessível, vem com diversos exemplos e uma extensa documentação de referência sobre o funcionamento, modelagem e extensão da base disponível.
• Eficiente, Gecode oferece uma excelente performance em relação ao uso de memória e ao tempo de execução.
• Paralelizável, permite o uso de vários processadores de múltiplos núcleos, obtendo vantagem na busca em paralelo.
O Gecode é uma biblioteca para criação de solvers através da Programação de Restrições, e utiliza variáveis de domínio finito, como visto emSeção 2.4.1, baseado em propagação de restrições como visto naSeção 2.4.1 e busca exaustiva. Tem uma abordagem que usa técnicas e ferramentas avançadas a partir de técnicas clássicas de Inteligência Artificial, Linguagens de Programação e algoritmos eficientes de Pesquisa Operacional. Além disso, foram desenvolvidos algoritmos especiais para diversos tipos de restrições globais, que são conjuntos de restrições comuns que aparecem com frequência em CSP (Tack(2009)). Dentre estes, possui algoritmos específicos para tratamento de restrições lineares, como citado na Seção 2.4.1, e que nos permitem implementar facilmente as restrições vistas nas seções anteriores. Além desses algoritmos para restrições de equações lineares, a variável a qual será atribuído um valor é escolhida de forma aleatória, assim como o valor que será atribuído para tal variável a partir de seu domínio.
A criação das redes artificiais foi feita em Python1 usando a distribuição Enthought Python
Distribution2 (ou EPD), versão 7.2, acadêmica de 64bits, utilizando o pacote NetworkX3, versão
1.6. Python também foi utilizado para gerar os gráficos com os dados, utilizando os pacotes SciPy4
e NumPy5 incluídos na EPD. A construção das redes inferidas a partir das soluções consistentes
geradas pelo solver construído com Gecode também foi feita em Python.
As imagens foram geradas usando as ferramentas OmniGraffle6 versão 5.3.6, OmniGraffle for
iPad7 e Graphviz8 versão 2.28 de arquivos exportados em formato dot9 das redes geradas usando o
NetworkX.