Carol Mendonça
Sou bióloga, graduada como bacharela pelo Instituto de Biociências (USP) e licenciada pela Faculdade de Educação (USP). Possuo grande interesse na área de Genética, especialmente em Biologia Molecular. Trabalho desde 2013 no Laboratório Nacional de Células-Tronco Embrionárias, a cargo da Profa. Dra. Lygia da Veiga Pereira, no grupo que pesquisa Síndrome de Marfan. Atualmente, tenho intenção de fazer pós-graduação no Laboratório de Drosofilídeos sob orientação da Profa. Maria Vibranovski, cuja principal linha de pesquisa é a evolução genômica. Além disso, tenho grande apreço pela educação em Ciências, tendo participado de diversos projetos de extensão universitária e atuado como professora em cursinhos populares.
I. Meus exercícios
II. Trabalho final
II.I Plano A: Uma simulação da deriva genética
Contextualização
A deriva genética é uma das quatro forças evolutivas e pode ser definida como: mudanças aleatórias nas frequências alélicas de uma população (RIDLEY, 2006). Considerando apenas a ação da deriva genética, para um gene bialélico, as probabilidades das frequências alélicas na geração seguinte podem ser calculadas pelo uso da distribuição binomial. Este é o Modelo Wright-Fischer que tem as seguintes premissas: (1) uma população de N indivíduos tem 2N alelos; (2) a próxima geração terá 2N alelos, sorteados ao acaso dentre os milhões de gametas produzidos na geração anterior; (3) todos os gametas têm chance idêntica de serem sorteados (não há seleção); (4) não há mutação ou migração e os cruzamentos se dão ao acaso (MEYER, 2016).
Alternativamente à solução analítica, a probabilidade de um alelo se manter na população com determinada frequência pode ser estimada por meio de simulações. Para esta estimativa, é necessário levar em consideração: o número de indivíduos na população, o número de gerações, a frequência inicial do alelo e o número de populações a serem simuladas. Com estes parâmetros, a função proposta realizaria as simulações, apresentando no final: um gráfico com as trajetórias individuais de cada população, um histograma com as frequências finais nas populações e o p-valor. Em outras palavras, ela responderia a pergunta: “Qual é a probabilidade que após n gerações em X populações de tamanho N, a frequência do alelo A (gene bialélico) seja Y?”.
Planejamento da função
Entrada: deriva (N
, gen
, f
, pop
, teste
)
N
= tamanho de cada população (classe: integer,N
> 0).gen
= número de gerações a ser simulado (classe: integer,gen
> 0).f
= frequência do alelo A (classe: numeric com 2 casas decimais, 0 ≤f
≤ 1).pop
= número de populações (classe: integer,pop
> 0).teste
= frequência final de alelos a ser testada (classe: numeric com 2 casas decimais, 0 ≤teste
≤ 1).
Verificando os parâmetros:
N
é um número inteiro e maior que 0? Se não, escreve: “N precisa ser um numero inteiro e > 0.”gen
é um número inteiro e maior que 0? Se não, escreve: “gen precisa ser um numero inteiro e > 0.”f
é ≥ 0 e ≤ 1? Se não, escreve: “f deve estar no intervalo 0 ≤ f ≤ 1.”pop
é um número inteiro e maior que 0? Se não, escreve: “pop precisa ser um numero inteiro e > 0.”teste
é ≥ 0 e ≤ 1? Se não, escreve: “teste deve estar no intervalo 0 ≤ f ≤ 1.”
Pseudo-código:
- Cria objeto
simulacao
comN
NAs. - Cria objeto
f.final
compop
NAs. - Cria objeto
populacao
comf
×N
caracteres “A” e 1 - (f
×N
) caracteres “a”. - Plota área para gráfico com eixo-X entre 0 -
gen
e eixo-Y entre 0 - 1. - Entra em um ciclo
for
com contadorj
de 1 atépop
.- Entra em um ciclo
for
com contadori
de 1 atégen
.- Amostra com reposição
N
alelos depopulacao
e guarda emsimulacao
. - Conta numero de “A”, divide por
N
e guarda emfA
. - Plota coordenada
i
,fA
no grafico. - Copia
simulacao
empopulacao
. - Zera
simulacao
preenchendo-no comN
NAs.
- Une os pontos no grafico.
- Preenche posição
j
def.final
comf.A
. - Redefini
populacao
comf
×N
caracteres “A” e 1 -f
×N
caracteres “a”. - Zera
simulacao
preenchendo-no comN
NAs.
- Cria histograma de
f.final
com linha vertical emteste
. - Calcula o p-valor dividindo o número de vezes em que
f.final
==teste
e dividindo porpop
.
Saída:
- Histograma com a distribuição das frequências alélicas finais das populações.
- Gráfico de dispersão com as trajetórias individuais de cada uma das populações.
- O p-valor: probabilidade de uma determinada frequência (
teste
) ao final das simulações.
A função parece bem clara. Na verdade o próprio pseudo-código dela já é quase que a função terminada. Se quiser, pode seguir essa proposta. OBS: cuidado com códigos desnecessários ou redundantes: será que é memso necessário unir os pontos do gráfico? É necessário “zerar” os vetores antes do próximo ciclo?
II.II Plano B: Jogo dos Micos
Contextualização
A Estação Biologia (http://www.ib.usp.br/estacaobiologia/) é um projeto de extensão universitária do Instituto de Biociências da USP que tem como principal objetivo a recepção de visitas escolares. Uma das atividades que é oferecida para os visitantes é o Jogo dos Micos, que foi desenvolvido com base em uma atividade de dramatização de presa e predador. Os alunos são divididos em três grupos (plantas, micos e jaguatiricas) e o jogo consiste em várias rodadas de pega-pega. Em cada uma delas, os micos tentam comer as plantas e as jaguatiricas os micos. Ao término da rodada, os papéis são redistribuídos como é ilustrado na figura abaixo.
O principal objetivo da atividade é mostrar a robustez da comunidade, isto é: mesmo que as crianças tenham trocado de papel ao longo do jogo, as três classes de espécie ainda permanecem. Para enfatizar a importância de cada uma das espécies, pode ser feita uma rodada extra em que uma das classes não está presente. Por exemplo: se as plantas não participarem, os micos serão todos predados e virarão jaguatiricas. Na próxima rodada, faltará alimento para as jaguatiricas e todas acabarão virando planta. A dúvida em relação à atividade é a proporção das classes que maximize a permanência de todas elas no jogo. Em outras palavras: “Dado um número X de crianças, quantas devem estar em cada classe de forma que todas as classes permaneçam no jogo por mais tempo?”.
Para responder essa pergunta, é necessário levar em consideração a probabilidade de transição ou de permanência em cada uma das classes. Para estimá-las, seriam feitas medidas empíricas durante o jogo, levando em consideração as possíveis diferenças entre meninas e meninos. Assim, na matriz de transição mostrada abaixo, cada uma das probabilidade é na verdade uma somatória de 4 probabilidades: p(menina pegar menina), p(menina pegar menino), p(menino pegar menino) e p(menino pegar menina). A função proposta receberia o número de crianças presentes e faria simulações para determinar quantas devem ser alocadas em cada classe para que o jogo dure mais tempo. Para isso, seriam feitas multiplicações sucessivas de matrizes até que uma das classes não esteja mais presente.
Planejamento da função
Entrada: micos (N
, meninas
)
N
= número de crianças (classe: integer,N
> 0).meninas
= número de meninas (classe: integer,meninas
≥ 0).
Verificando os parâmetros:
N
é um número inteiro e maior que 0? Se não, escreve: “N precisa ser um numero inteiro e > 0.”meninas
é um número inteiro e ≥ 0? Se não, escreve: “meninas precisa ser um numero inteiro e ≥ 0.”
Pseudo-código:
- Distribui
meninas
no data frameprop.meninas
com todas as permutações possíveis. - Faz uma cópia de
prop.meninas
emgirls
. - Cria data.frame
girls.copia
com as mesmas dimensões degirls
preenchido com NAs. - Distribui
N
-meninas
no data frameprop.meninos
com todas as permutações possíveis. - Faz uma cópia de
prop.meninos
emboys
- Cria data.frame
boys.copia
com as mesmas dimensões deboys
preenchido com NAs. - Entra em um ciclo
while
até que, em todas os casos, pelo menos uma das três classes não esteja mais presente.- Multiplica cada uma das linhas de
girls
pormt.girls
(matriz de transição das meninas). - Guarda o resultado da multiplicação de matrizes em
girls.copia
. - Copia
girls.copia
emgirls
e zeragirls.copia
preenchendo-no com NAs. - Multiplica cada uma das linhas de
boys
pormt.boys
(matriz de transição dos meninos). - Guarda o resultado da multiplicação de matrizes em
boys.copia
. - Copia
boys.copia
emboys
e zeraboys.copia
preenchendo-no com NAs.
- Seleciona o caso dentre
girls.copia
eboys.copia
que manteve as 3 classes por mais tempo no jogo. - Recupera em
prop.meninas
ouprop.meninos
a permutação inicial associada ao caso selecionado. - Calcula as proporções do segundo gênero com base no caso selecionado.
Saída:
- Data frame com o número de meninas e meninos em cada uma das classes (plantas, micos e jaguatiricas).
Essa função parece desafiadora, mas você tbm parece preparada. Se você esta confortável com o método acho que é ok você seguir em frente nesta proposta tbm, caso queira.
Se quiser conversar mais sobre as funções (ou pedir conselhos, dicas etc) é só escrever aqui que pretendo revisar esta página dia 09/06 antes das 12hrs. Ou me mandar uma mensagem por whatsapp (11) 9-9199-3842.
Twister (ou Matheus Januario)
II.III Referências
MEYER, D. Deriva genética, 2017.
RIDLEY, M. Evolution. Oxford: Blackwell Science Ltd, 2006. 752 p.
II.IV Links para o trabalho final
Para o trabalho final, resolvi seguir com o plano A. Como já explicado, a função tem como finalidade simular a deriva genética. Adicionalmente, fiz também uma função que simula as mudanças nas frequências alélicas por ação da seleção natural. Assim, como produto final, criei a função evol
com a qual o usuário pode simular um modelo de deriva genética ou determinístico.