IN SILICO IN VIVO
Cultura, ciência, computação, evolução e relatos de um iniciante em DIYBIO.
domingo, 30 de dezembro de 2012
Why You Want To Become a Biohacker: Rodrigo Martinez.
Palestra interessante sobre biohackers, impressoras 3D e o futuro das inovações tecnológicas. E também mais uma ferramenta para conhecer: http://www.clothocad.org/.
sexta-feira, 14 de dezembro de 2012
Avida e a ascensão e queda dos parentes traíras.
O
Avida é um software utilizado para se criar seres vivos artificiais
digitais replicantes, com ele se pode criar várias simulações de
modelos evolutivos. Ele funciona da seguinte forma, os organismos são
programas que rodam utilizando uma linguagem de programação
simplificada que é o seu genoma. A simulação começa com um número
de organismos que já possuem os genes necessários para a
replicação e ocasionalmente ocorrem mutações, com isso já temos a
receita para a evolução ocorrer: replicação, mutação e
competição por recursos. Para que a replicação aconteça há
um custo energético, e a energia é conseguida através de
operações lógicas definidas pelo usuário, geralmente são
operações booleanas ou cálculos matemáticos, pode se fazer uma
analogia com o metabolismo de seres vivos do mundo físico. Um
exemplo interessante de simulação é uma que demonstra a existência
de altruísmo via seleção parental em organismos digitais. Ela foi
baseada no comportamento de um tipo de bactéria que produz uma
toxina até explodir e a espalhar na área ao redor dela, essa
toxina é danosa para organismos que não possuem imunidade a essa substância,
como essa bactéria é imune, a toxina acaba eliminando a
concorrência por recursos causada por indivíduos estranhos à ela.
Dar a vida pelo próximo pode parecer um comportamento um tanto
extremo para um ser vivo, cujo objetivo é se replicar e passar os
seus genes adiante, mas como é discutido no livro "O gene
egoísta" de Richard Dawkins, a seleção é baseada no gene e
não no indivíduo, portanto fazendo esse sacrifício o gene estará
ajudando várias cópias de si mesmo. Na simulação citada, é
mostrado que o sacrifício pelos parentes pode ser vantajoso, só que
essa estratégia abre espaços para organismos aproveitadores, que
recebem ajuda mas não fazem nada para ajudar os outros. Após rodar
uma série de experimentos e simulações diferentes foi constatado
que em um ambiente sem “traíras”, os organismos acabam sendo
menos discriminatórios na hora de ajudar outros indivíduos, ou seja
os que não tenham um grau de parentesco tão próximo (genes não
muito parecidos), já com os “traíras”, a estratégia é ajudar
aqueles com um grau de parentesco maior (genes parecidos). Nos
próximos posts pretendo utilizar o software para rodar minha própria
simulação e alguns tutoriais.
Tela do programa. Fonte: Wikipedia. |
Paper
sobre a simulação mencionada: Jeff Clune, Charles Ofria, Robert T. Pennock. "Kin-Selection: The Rise and Fall of Kin-Cheaters" In Pollack, Jordan, M. Bedau, P. Husbands, T. Ikegami and R. Watson (eds.)
Site :http://avida-ed.msu.edu/
segunda-feira, 26 de novembro de 2012
O problema da parada.
Computadores em sua
essência são máquinas feitas para resolver problemas através de
algoritmos, por incrível que pareça eles possuem certas limitações
com algumas tarefas aparentemente simples. Vou demonstrar um deles,
que consiste no seguinte:
“É possível
construir um programa que recebendo um programa e os dados de entrada
para o próprio, diga se ele para ou continua indefinidamente, ou
seja entra em loop infinito?”
Alan Turing provou que
não, apresentarei uma adaptação para esta prova em pseudocódigo.
Vamos começar com uma função que recebe um programa, que nada mais
é do que um conjunto de dados, nesse caso um vetor de chars, e a
entrada para esse programa, outro vetor de chars.
boolean
verificaParada(char[]
programa,char[]
entrada){
if(ALGUMA
FORMA
DE VERIFICAR
SE O
PROGRAMA
PARA){
return
true;
}else{
return
false;
}
}
Vamos
deixar de lado a maneira como o if funciona, vamos supor por enquanto
que ele consegue definir se o programa para. Agora podemos construir
a seguinte função:
boolean
verificaEleMesmo(char[]
programa){
return
verificaParada(programa, programa);
}
É
simples, apenas verifica se o programa para quando a entrada for ele
próprio. Mais uma função, é dela que vamos tirar a prova.
boolean
ferraTudo(char[]
programa){
if(verificaEleMesmo(programa)){
while(true){
}
return true;
return true;
}else{
return
false;
}
}
Basicamente
essa função entra em loop infinito se o programa que ela recebe
para, verificando quando a entrada é ele mesmo. Mas e se jogássemos o
“ferraTudo” como entrada? Ocorreria um paradoxo! Vejamos, se a função "verificaEleMesmo" constatar que o programa "ferraTudo" para, ele ia entrar na condição e ficar em loop infinito, mas se ele entra em loop ele não para, então há uma contradição.
Fonte:
Michael Sipser - Uma introdução à teoria da computação.
http://www.cgl.uwaterloo.ca/~csk/halt/
Fonte:
Michael Sipser - Uma introdução à teoria da computação.
http://www.cgl.uwaterloo.ca/~csk/halt/
domingo, 18 de novembro de 2012
Mais um autômato.
quinta-feira, 15 de novembro de 2012
O pato mecânico de Vaucanson.
Um pato mecânico que bate as asas, come e defeca, essa é a criação mais famosa do inventor Jacques de Vaucanson, que também foi o criador de vários autômatos tais como o flautista e tocador de tambor. O "digesting duck" consistia em um autômato em formato de pato que aparentemente comia grãos de milho, os metabolizava e defecava, mas na verdade como o próprio Vaucanson assumiu, o pato armazenava a comida em um reservatório, enquanto os excrementos eram previamente armazenados em outro, ou seja, não havia nenhum metabolismo. Apesar da fraude central, o autômato possuia alguns elementos de uma genuína simulação, suas asas eram compostas de mais de 400 partes articuladas, e os movimentos incluiam beber, fazer um ruído "gorgolejante", esticar o pé, dobrar e esticar o pescoço, todos baseados em estudos exaustivos sobre patos reais.
Na foto acima o pato original e em seguida uma réplica moderna.
A criação de Vaucanson trouxe à tona várias reflexões com relação entre a linha entre o vivo e o não vivo, afinal as máquinas seriam a antítese de um ser vivo? Ou seres vivos seriam máquinas só que extremamente complexas? Quase três séculos depois da invenção do pato em 1739, ainda não conseguimos reproduzir e entender muitos sistemas biológicos, desafios que envolvem as áreas da inteligencia artificial, robótica e biologia.
Fonte:
http://www.guardian.co.uk/books/2002/feb/16/extract.gabywood
Riskin, Jessica. "The defecating duck, or, the ambiguous origins of artificial life." Critical Inquiry 29, no. 4 (2003): 599-633.
Na foto acima o pato original e em seguida uma réplica moderna.
A criação de Vaucanson trouxe à tona várias reflexões com relação entre a linha entre o vivo e o não vivo, afinal as máquinas seriam a antítese de um ser vivo? Ou seres vivos seriam máquinas só que extremamente complexas? Quase três séculos depois da invenção do pato em 1739, ainda não conseguimos reproduzir e entender muitos sistemas biológicos, desafios que envolvem as áreas da inteligencia artificial, robótica e biologia.
Fonte:
http://www.guardian.co.uk/books/2002/feb/16/extract.gabywood
Riskin, Jessica. "The defecating duck, or, the ambiguous origins of artificial life." Critical Inquiry 29, no. 4 (2003): 599-633.
domingo, 4 de novembro de 2012
Slime Mold.
Para
iniciar as atividades deste blog começarei falando sobre o
protozoário Physarum polycephalum,
também conhecido como slime mold, o que ele é capaz de fazer é um
bom exemplo do tipo de conteúdo que pretendo mostrar aqui que
envolve a interdisciplinaridade entre computação, evolução e
também biologia.
O
Physarum é um organismo unicelular macroscópico que para procurar
alimento se expande de uma maneira em que se forma uma rede de
conexão entre as fontes de alimentos encontradas. Essas conexões
são otimizadas de forma que haja um gasto mínimo de recursos
tais como energia e estruturas, e também tolerância à falhas tais
como uma desconexão acidental.
Essa
habilidade permite que ele por exemplo encontre o caminho mínimo em
um labirinto, isso pode ser visto no vídeo abaixo:
Um
grupo de pesquisadores analisou as redes formadas por esses
organismos e notou que elas poderiam ser mais otimizadas que as
feitas pelo homem, devido ao fato que essa espécie passou por anos de
seleção natural sofrendo as mais diversas pressões relativas à
economia de recursos e tolerância à falhas. Com isso foi feito um
experimento simulando o metrô de Tóquio utilizando um mapa e as
estações representadas por flocos de aveia que o Physarum iria
procurar, restrições geográficas do mapa tais como lagos e o
oceano foram feitas utilizando pontos de luz (que o protozoário
evita).
O desenvolvimento pode ser visto na figura abaixo:
O
resultado interessante é que a rede criada foi muito semelhante à
criada pelo homem, mostrando como se pode se inspirar na natureza pra
resolver problemas do dia a dia, outro fato notável é que o
protozoário realizou essa tarefa sem possuir um cérebro ou alguma
estrutura central de processamento.
Se alguém se interessar (o que eu duvido muito), nesse site existem algumas informações a mais, e também dicas de como criar um própria cultura, coisa que estou tentado a começar.
http://www.educationalassistance.org/Physarum/PhysarumPlus.html
Se alguém se interessar (o que eu duvido muito), nesse site existem algumas informações a mais, e também dicas de como criar um própria cultura, coisa que estou tentado a começar.
http://www.educationalassistance.org/Physarum/PhysarumPlus.html
Fonte:
Tero, A., Takagi, S., Saigusa, T., Ito, K., Bebber, D., Fricker, M., Yumiki, K., Kobayashi, R., & Nakagaki, T. (2010). Rules for Biologically Inspired Adaptive Network DesignScience, 327 (5964), 439-442 DOI: 10.1126/science.1177894
Assinar:
Postagens (Atom)