Trabalho final
Aluno Caian Souza Gerolamo
Área de Estudo: Anatomia funcional vegetal
CÓDIGO DA FUNÇÃO
##Codigo da Função##
###Trabalho Final###
##objetivo da funcao: A função fornece a porcentagem de afunilamento e as variaveis biomecânicas: segundo momento de area, rigidez a flexão e o modulo de young para cada amostra de caule coletado e mensurado. Bem como um grafico que sintetize as informações mais relevantes sobre como esta variando a flexibilidade das amostras com relação ao diametro da amostra, como visto na literatura.###
###Resumo: Com a entrada de dados organizado na forma de uma tabela1 de força (Newtons) e deflecção (em milimetros) e outra tabela2 com a identificação das amostras e as medidas de diametro horizontal e vertical (em milimetros) em três porções da amostra. Região apical, região mediana e região basal. Sendo Dh. prox, Dh.med,Dh.base, Dv.prox, Dv.med e Dv.base os valores respectivos de diametros horizontais do apice, meio e base e de diametros verticais do apice, meio e base de cada amostra; e Span o comprimento em milimetros da amostra. O argumeto N é referente ao numero de amostras das tabelas. A função primeiramente separa da tabela1 as linhas de cada amostra, e cria para cada nova tabela (separada por amostra) tres novas colunas: D. acumulativa referente a deflexão acumulativa; M. acumulativa referente a massa acumulativa; colna de força referente as massas acumulativas multiplicadas pela força da gravidade (0.00981). Posteriormente calcula-se o coeficiente de deflecção da reta de regressão, referente as colunas de força por deflexão. Se o R² for maior que 0.98 utiliza-se o valor do coeficiente de inclinação, este coeficiente vai ser utilizado para o calculo da Rigidez a Flexão, junto com comprimento da amostra (Span). A tabela 2, com os diametros horizontais e verticais, calculamos a porcentagem do afunilamento da amostra para podermos dar continuidade aos calculos de flexibilidade. Se a porcentagem for superior a 10% a amostra não fornece valores confiaveis para os calculos de flexibilidade. Posteriormente calcula-se o segundo momento de area com base nas formulas geometricas da circunferencia, calcula-se a rigidez a flexão com base na formula da literatura (Rowe et al 2006) e por ultimo o Modulo de young.A função finaliza com um gráfico do Modulo de flexibilidade (Modulo de Young) pelo Segundo momento de area, que mostra a relação da flexibilidade com o diametro da amostra para cada amostra###
biomecanic.test= function(tabela1, tabela2, N)
###Entrada da função com duas tabelas e um argumento referente ao numero de amostras.A primeira tabela é referente aos dados organizado na forma de uma tabela com duas colunas: força (Newtons) e deflecção (em milimetros).A outra tabela (tabela 2) com a identificação das amostras e as medidas de diametro horizontal e vertical (em milimetros) em três porções da amostra.Sendo Dh. prox, Dh.med,Dh.base, Dv.prox, Dv.med e Dv.base os valores respectivos de diametros horizontais do apice, meio e base e de diametros verticais do apice, meio e base de cada amostra; e Span o comprimento em milimetros da amostra.O argumeto N é referente ao numero de amostras das tabelas##
{
for(i in 1:N) ## Primeiro ciclo que vai de 1 até o numero de amostras
{
T.segmento= tabela1[tabela1$segmento==i,] ## Seleção de todas as linhas de cada amostra com base na tabela 1
n=length(T.segmento[,1]) ##Numero de linhas de cada amostra
T.segmento$D.acumulativa= rep(0,n) ## Criação da coluna Deflexão acumulativa
for(z in 2:n) ## Segundo ciclo para o calculo dos valores da coluna Deflexão acumulativa
{
tab=T.segmento[z,2]+T.segmento$D.acumulativa[z-1] ##calculo dos valores da coluna Deflexão acumulativa
T.segmento$D.acumulativa[z]=tab ## Confecção da coluna de deflexão acumulativa
}
T.segmento$M.acumulativa= rep(0,n) ## Criação da coluna Massa acumulativa
for(j in 2:n) ## Terceiro ciclo para o calculo da Massa acumulativa
{
tab.=T.segmento[j,3]+T.segmento$M.acumulativa[j-1]## Calcula da Massa acumulativa
T.segmento$M.acumulativa[j]=tab. ## Confecção da coluna de Massa acumulativa
T.segmento$force=rep(0,n) ## Criação da coluna Força
T.segmento$force= T.segmento$M.acumulativa*0.00981 ## Confecção da coluna Força com base na coluna Massa acumulativa
}
cf=lm(T.segmento[,6]~T.segmento[,4]) ## Calculo do coeficiente de regressão linear com base nas colunas de força por deflexão acumlativa
r=summary(cf)$r.squared ## Seleção do valor de R²
if (r>0.98) ##Seleção dos valores de R² maiores que 0.98
{coef(cf) ## Calculo do coeficiente
a=tabela2[i,2] ## Criando vetor Diametro horizontal apical para os valores da tabela 2
b=tabela2[i,3] ## Criando vetor Diametro horizontal mediano para os valores da tabela 2
d=tabela2[i,4] ## Criando vetor Diametro horizontal basal para os valores da tabela 2
e=tabela2[i,5] ## Criando vetor Diametro vertical apical para os valores da tabela 2
f=tabela2[i,6] ## Criando vetor Diametro vertical mediano para os valores da tabela 2
g=tabela2[i,7] ## Criando vetor Diametro vertical basal para os valores da tabela 2
second.moment= mean(c(((pi/4)*((a/2)^3/2)*e),((pi/4)*((b/2)^3/2)*f),((pi/4)*((d/2)^3/2)*g)))## Calculo do sugundo momento de area com base na literatura
Rig.Flex= ((tabela2[i,8]^3*coef(cf)[2])/48) ## Calculo da Rigidez a flexão com base na literatura e utilizando os valores do coeficiente de inclinação da reta e o comprimento da amostra (Span)
M.Young= (Rig.Flex/second.moment) ## Calculo do Modulo de Young referente ao modulo de flexibilidade com base na literatura
}
else {cat("\n", "Inclinação da reta fora do limite R² < 0.98","\n")} ## Se o R² for inferior a 0.98 retorna essa frase que não é possivel calcular as variaveis biomecanicas
media.h=mean(c(a,b,d)) ## Calculo da media dos valores de diametro horizontal
media.v=mean(c(e,f,g))##Calculo das medias dos valores de diametro verticias
h.prox=(abs(((media.h-a)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro horizontal apical com relação a media
h.med=(abs(((media.h-b)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro horizontal mediano com relação a media
h.base=(abs(((media.h-d)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro horizontal basal com relação a media
v.prox=(abs(((media.v-e)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro vertical apical com relação a media
v.med=(abs(((media.v-f)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro vertical mediano com relação a media
v.base=(abs(((media.v-g)/media.v)*100))## Calculo da porcentagem de afunilamento do diametro vertical basal com relação a media
segmento=i ##separação de cada amostra
cat("\n","\n","Porcentagem de afunilamento:","\t", "\t", "amostra >>>>>>>", segmento,"<<<<<<<", "\n","\n","\t", "-Diametro horizontal proximal",h.prox,"%","\n","\t", "-Diametro horizontal mediano",h.med,"%","\n","\t", "-Diametro horizontal distal",h.base,"%","\n", "\t","-Diametro vertical proximal",v.prox,"%","\n","\t", "-Diametro vertical mediano",v.med,"%","\n", "\t","-Diametro vertical distal",v.base,"%","\n")
##Retorna a tela os valores de porcentagem de afunilamento de cada amostra
if (h.prox >10 | h.med>10 | h.base>10 |v.prox >10 | v.med>10 |v.base>10)
## Se a porcentagem de afunilamento de cada amostra for superior ao maximo permitido de 10% retorna um aviso dizendo que o afunilamento é superior ao limite
{
cat("\n","\t","\t","\t",">>>>>>>>>>>>>>> O AFUNILAMENTO É SUPERIOR QUE O PERMITIDO DE 10% <<<<<<<<<<<<<<<<") ## Aviso de retorno sobre o afunilamento
}
else
{cat ("\n", "\n", "\t","SECOND MOMENT OF AREA ->", second.moment, "mm^4","\n", "\n", "\t", "FLEXURAL STIFFNESS ->",Rig.Flex,"Nmm^2", "\n", "\n", "\t", "MODULO DE YOUNG ->", M.Young,"MNm-2","\n")
##Se o afunilamento esta dentro do limite (menor que 10%), retorna na tela as variaveis de biomecânica calculadas
plot(second.moment,M.Young, ylim=c(0,10000), xlim=c(0,100),ylab= "Young's Modulus (NMm-²)", xlab="Second Moment of Area (mm^4)", bty="l", tcl=0.3, cex=1.2, pch= (14+i) ) ## Construção do grafico referente aos valores encontrados de Modulo de Young com os valores de Segundo momento de area de cada amostra
par(new=TRUE) ## Permite a plotagem de mais pontos no mesmo grafico
}
}
}
HELP DA FUNÇÃO
biomecanic.test package:nenhum R Documentation
~~Calculo das variaveis biomecânicas: Modulo de Young, Rigidez a Flexão e Segundo momento de area~~
Description:A função fornece a porcentagem de afunilamento de cada amostra e as variáveis biomecânicas: Segundo momento de área, Rigidez a flexão e o Modulo de young para cada amostra de caules coletados e mensurados. Bem como um gráfico que sintetize as informações mais relevantes sobre como esta variando a flexibilidade de cada amostras com relação ao diametro da amostra.
Usage:
biomecanic.test(table1, table2, N)
Arguments:
table1 Data.frame contendo o numero de observações em cada amostra e três variáveis: Amostra, Deflexão (milimetros), Massa (gramas) respectivamente, referente aos valores das colunas.
table2 Data.frame contendo o numero de amostras e oito variaveis referente, respectivamente, a: amostra, diametros horizontais do apice, meio e base e de diametros verticais do apice, meio e base de cada amostra e a oitava conula referente ao comprimento em milimetros da amostra.
N Valor numerico referente ao numero de amostras.
Details:
As variaveis biomecânicas:Segundo momento de area, Rigidez a flexão e o Modulo de young, são calculadas com base na literatura (Rowe et al 2006) e são utilizadas para determinar os valores de flexibilidade e Rigidez da amostra. Porem para utlizarmos essas variaveis biomecênicas é necessario que nossa amostra não esteja afunilando a ponto de interferir no resultado final de Flexibilidade e induzir a interpretações erroneas sob a flexibilidade da amostra. Por isso calculamos tambem a porcentagem de afunilamento de cada porção da amostra com base nos diametros horizontais apicais, medianos e basais e diametros verticais apicais, medianos e basais. O limite proposto de 10% de afunilamento permitido foi feito sob orientação do especialista em biomecânica Nick Rowe. Assim como a seleção de valores do coeficiente de regressão em que o r² seja maior que 0.98.
Esta função depende da entrada dessa duas tabelas organizadas conforme especificado nos argumentos.
Value:
A função Retorna na tela, para cada amostra, os valores de Porcentagem de afunilamento de cada porção (apical, mediano e basal). Bem como o Segundo momento de area, Rigidez a flexão e o Modulo de young para cada amostra.
Porcentagem de afunilamento Refere-se a medida de afunilamento de cada porção. Calculada pela divisão do diametrode cada porção pela media, dividido pelo diametro e multiplicado por cem. -> ((D - media horizontal ou vertical/D)*100) onde o D é cada valor de diametro de cada porção.
Segundo momento de area Refere-se a medida geometrica transversal da amostra. Para uma elipse temos: (pi/4)* (a^3)*(c), onde a e c são respectivamente os raios horizontias e verticais da amostra.
Rigidez a Flexão Refere-se a rigidez a flexão da amostra com base na formula: ((l^3)*b)/48, onde l e b são respectivamente os valores de comprimento da amostra e coeficiente de inclinação da reta de regressão.
Modulo de Young Referente a Flexibilidade da amostra. Calculada dividindo a Rigidez a flexão pelo segundo momento de area.
Author(s):
Caian Souza Gerolamo
caiansg@gmail.com
References:
Rowe NP, Isnard S, Gallenmüller F, Speck T. Diversity of mechanical architectures in climbing plants: an ecological perspective. In: Herrel A, Speck T, Rowe NP, editors. Ecology and biomechanics: a mechanical approach to the ecology of animals and plants. Boca Raton, FL: Taylor & Francis; 2006.
Examples:
table1= read.csv("tabela 1 para R.csv", header=T, sep =";")## Chamando a tabela de deflexão e massa
## Exemplo de tabela 1 ##
segmento Deflection.microscope.units..mm. Masses.added..g.
1 1 0.0 0.00
2 1 0.5 15.70
3 1 0.5 15.70
4 1 0.5 16.00
5 1 0.5 16.00
6 1 1.0 26.98
7 1 2.0 50.30
8 1 1.0 50.50
9 1 2.0 52.40
10 1 3.0 52.20
11 1 1.0 15.09
12 1 0.5 14.56
13 1 1.5 50.74
14 2 0.0 0.00
15 2 0.5 15.70
16 2 0.0 16.00
17 2 0.5 16.00
18 2 0.5 15.70
19 2 1.5 52.40
20 2 1.0 52.20
21 2 1.5 50.50
22 2 0.5 26.98
23 2 2.0 50.30
24 2 1.0 29.65
25 3 0.0 0.00
26 3 1.0 14.56
27 3 1.0 15.09
28 3 1.0 12.20
29 3 3.0 15.70
30 3 1.0 15.70
31 3 1.0 16.00
32 3 2.0 16.00
33 3 3.0 26.98
table2= read.csv("tabela 2 para R.csv", header=T, sep =";")##chamando a tabela de diametros horizontais e verticais de cada porção da amostra e o comprimento da amostra
##Exemplo de tabela 2##
segmento DH..prox DH..Med DH..Base DV..Prox DV..Med DV..Prox.1 Span
1 1 5 4.9 4.9 5.0 4.9 4.8 160
2 2 9 8.0 7.5 8.5 8.0 7.5 220
3 3 3 3.0 2.9 3.0 3.0 2.8 200
biomecanic.test(table1, table2, 3)
{{:bie5782:01_curso_atual:alunos:trabalho_final:caian.gerolamo:funcao_biomec._test_final._comentado_.r|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:caian.gerolamo:help_da_funcao_biomecanic.test_.r|}}