====== Lye Otani ======
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:lye.jpg?200|}}
Doutorado em Fisiologia na USP. Trabalho com fisiologia da conservação de anuros, direcionada a fisiologia do exercício e fragmentação ambiental.
===== Exercicios =====
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_1_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_2_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_3_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_4_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_5_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_6.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_7_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:otani_8_f.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:exercicio_9.r|}}
===== Proposta de Trabalho Final =====
== Plano A ==
Utilizo um programa para fazer as análises de vídeos tomadas do desempenho locomotor de diversas espécies de anuros. Durante este processo eu calculo as distâncias de cada salto, até o animal atingir a exaustão. Como resultado, obtenho tema tabela contento 4 pontos, representando as coordenadas x e y do início e fim de cada salto. A calibração das distâncias está contida em outro arquivo, e também apresenta coordenadas x e y de dois segmentos (horizontal e vertical) de tamanhos conhecidos.
A partir dessa tabela de coordenadas, o objetivo da função é calcular a distância de cada salto em mm, e produzir um dataframe contendo em cada coluna “número de saltos”, “distância total percorrida”, “salto máximo”, “salto mínimo”, “média dos saltos”, “mediana dos saltos”. Nas linhas estará os nomes de cada arquivo analisado, o que corresponde a cada indivíduo. A função também realizará um gráfico scatterplot das distâncias de cada salto em relação ao tempo do teste, evidenciando, assim, um possível efeito da fadiga muscular com a distância do salto.
===== Comentários =====
Acho factível. Pode implementá-la, boa sorte!
--- //[[adalardo@usp.br|Alexandre Adalardo de Oliveira]] 2010/03/31 12:25//
== Plano B ==
Não tenho muita certeza... mas poderia ser apenas uma função que calcule as distâncias dos saltos e retorne como um vetor... Não sei!!!! Mas estou pensando...
===== Página de Ajuda =====
C.locomotora package:nenhum R Documentation
Tabela dos principais parametros de capacidade locomotora e graficos de distancias de saltos.
Description:
A partir de uma lista contendo os nomes dos arquivos dos dados de calibração e shapes, resultado das analise de vídeos através do Quintic, esta função produz uma lista de dataframes contendo: maior distancia saltada (max); menor distancia salada (min);mediana (mediana), média (media) e desvio padrão (des.pad) das distâncias saltadas; número de saltos (N. de saltos);e distancia total percorrida (distancia total). A função também gera graficos do tipo plot das distancias dos saltos, para cada espécie.
Usage:
C.locomotora (x)
Arguments:
x um arquivo //.txt// donde em cada linha estão presentes os nomes dos arquivos de cada indivíduo.
Details:
Os arquivos de calibração e shapes devem ter o mesmo nome para cada indivíduo, no entanto, os arquivos de calibração devem ser //.cal// e o de shapes //.shp//. Deve-se ser sabido que esses arquivos são provenientes de analises de vídeos através do programa Quintic Biomechanics. Neste programa, demarca-se as distancias de cada salto (no caso de anfíbios). Como resultado, o programa salva uma tabela contendo os valores de x e y do início e fim de cada salto.
Value:
A função retorna a uma LISTA, onde desloc[ [e] ][i,V] é o V-ésimo atributo do i-ésimo indindivíduo da espécie e. E esta lista será criada no seu workspace com o nome de "tab.desloc"
comp e : é um data.frame contendo os valores de maior distancia saltada (max), menor distancia salada (min);mediana (mediana), média (media) e desvio padrão (des.pad) das distâncias saltadas, número de saltos (N. de saltos);e distancia total percorrida (distancia total) para cada indivíduo de cada espécie.
A função também cria uma lista "dados" no seu workspace onde dados[ [e] ][ [i] ] é o shape do indivíduo i da espécie e
comp [ [e] ][ [i] ] : é um data.frame de cada indivíduo (i) de cada espécie (e) contendo as coordenadas (x,y) do início (V2,V4) e fim de cada salto (V3,V5), juntamente com a distancia do salto (saltos)
A função também criam gráficos de distribuição das distâncias dos saltos na ordem em que eles ocorreram. Cada gráfico apresenta todos os indivíduso de cada espécie. Cada indivíduo é apresentado com um símbolo distinto.
Warning:
Todos os arquivos (x, //.cal// e //.shp//) devem estar no mesmo diretório.
Note:
A função retornará uma mensagem de erro caso o(s) arquivo(s) //.cal// os dados não estejam formatados de forma correta.
Author(s):
Lye Otani
lyeotani@gmail.com
References:
http://www.quintic.com
Examples:
# criando arquivos de calibração
write.table(as.data.frame(matrix(c(302, 218, 337, 219, 0.1, 25, 295, 144, 293, 178, 0.1, 25), ncol=6)), file = "MOV1.cal")
write.table(as.data.frame(matrix(c(308, 228, 344, 228, 0.1, 25, 299, 154, 299, 189, 0.1, 25), ncol=6)), file = "MOV2.cal")
# criando arquivos de shapes
write.table(as.data.frame(matrix(c(rep(1, 50), rep(c(runif(50, min=200, max=400), runif(50, min=300, max=500)), each=2), rep(c(255,1,16777215,2), each=50)), ncol=9)), file = "MOV1.shp")
write.table(as.data.frame(matrix(c(rep(1, 50), rep(c(runif(50, min=220, max=450), runif(50, min=340, max=510)), each=2), rep(c(255,1,16777215,2), each=50)), ncol=9)), file = "MOV2.shp")
# criando arquivo de entrada, onde temos 3 espécies com 3 indivíduos em cada
cat("MOV1 MOV2 MOV1 \nMOV2 MOV1 MOV1 \nMOV2 MOV1 MOV2\n", file="ex1.txt")
c.locomotora("ex1.txt")
===== Código da Função =====
c.locomotora=function(x)
{
e=0 # numero da especie sendo avaliada
n=0 # numero de individuos da especie
i=0 # numero do individuo sendo avaliado
# interpreta arq. de entrada por linhas
especies=readLines(x)
# arqs[e] é um vetor onde elementos sao nomes dos arquivos para cada individuo
arqs = strsplit(especies," ")
## objeto de saida
# desloc[[e]][i,V] é o V-ésimo atributo do i-ésimo ind. da esp. e
desloc = list();
# objeto para registrar a lista desloc no workspace
tab.desloc <<- list()
# objeto para registrar os shapes para cada indivíduo de cada espécie
# desloc[[e]][[i]] é o shape do indivíduo i da espécie e
dados <<- list();
for(e in 1:length(especies))
{ #cicla pelas especies na var. n
n =length(arqs[[e]]) #numero de individuos da especie "e"
calib=list()
shp =list()
desloc[[e]]=matrix(nrow= n, ncol=7, dimnames=list(1:n, c("max", "min", "mediana", "media", "des.pad", "N. de saltos", "distancia total")))
for(i in 1:n) #cicla pelos individuos na var. i
{
#interpreta os dados de cada individuo i da especie n
calib[[i]]=read.table(paste(arqs[[e]][i],".cal",sep=""))
calib[[i]]$x=calib[[i]]$V3-calib[[i]]$V1
calib[[i]]$y=calib[[i]]$V4-calib[[i]]$V2
calib[[i]]$h=((calib[[i]]$x)^2+(calib[[i]]$y)^2)^(1/2)
shp[[i]]<-read.table(paste(arqs[[e]][i],".shp",sep=""))
shp[[i]]$x=shp[[i]]$V4-shp[[i]]$V2
shp[[i]]$y=shp[[i]]$V5-shp[[i]]$V3
shp[[i]]$h=((shp[[i]]$x)^2+(shp[[i]]$y)^2)^(1/2)
shp[[i]]$saltos=(((shp[[i]]$x*0.1)/(calib[[i]][1,9]))^2 + ((shp[[i]]$y*0.1)/(calib[[i]][2,9]))^2)^(1/2)
desloc[[e]][i,"max"]=max(shp[[i]]$saltos)
desloc[[e]][i,"min"]=min(shp[[i]]$saltos)
desloc[[e]][i,"mediana"]=median(shp[[i]]$saltos)
desloc[[e]][i,"media"]=mean(shp[[i]]$saltos)
desloc[[e]][i,"des.pad"]=sd(shp[[i]]$saltos)
desloc[[e]][i,"N. de saltos"]=length(shp[[i]]$saltos)
desloc[[e]][i,"distancia total"]=sum(shp[[i]]$saltos)
}
dados[[e]]<<-shp # salva no workspace os shapes de cada indivíduo de cada espécie
# dados[[e]][[i]]$dado
}#fecha for das especies
tab.desloc <<- desloc
#criando graficos para cada espécie
x11()
par(mfrow=c(2,ceiling(length(especies)/2)))
for(a in 1:length(especies))
{
n = length(arqs[[a]]) #numero de individuos da especie "e"
plot(dados[[a]][[1]]$saltos, main=paste("espécie",a),xlab="Ordem dos saltos",ylab="Distância do salto",xlim=c(0,max(tab.desloc[[a]][,"N. de saltos"])), ylim=c((min(tab.desloc[[a]][,"min"])), max(tab.desloc[[a]][,"max"])))
if(n>1){for(b in 2:n) # adiciona cada indivíduo ao grafico da espécie "e"
{
par(new=TRUE)
plot(dados[[a]][[b]]$saltos, xlab=" ", ylab=" ", xlim=c(0,max(tab.desloc[[a]][,"N. de saltos"])), ylim=c((min(tab.desloc[[a]][,"min"])), max(tab.desloc[[a]][,"max"])), pch=1+b)
}} # fecha ciclagem de indivíduos dentro da espécie
} # fecha ciclagem das espécies
return(desloc)
}#fecha funcao
===== Arquivos da Função =====
{{:bie5782:01_curso_atual:alunos:trabalho_final:lye:c_locomotora.txt|}} : Código da função