viernes, 4 de marzo de 2011

Como manejo mis coordenadas? : Array's en R.

Retomando la Morfometrìa......

En el post de toma de landmarkas en R,  pudimos ver como obtener a partir de imágenes y/o fotografías la configuración espacial de un objeto o región X determinada...Pero, después de tener todos nuestros archivos en formato .txt en el que se encuentran almacenadas las configuraciones de los landmarks individuales de cada imagen.. como analizarlos en conjunto para poder hacer comparaciones??

El primer paso es "concatenar" mis archivos en un formato u objeto en R que sea manejable para realizar comparaciones y/o análisis, un tipo de objeto de este tipo es el objeto "array" que es la generalización de una matriz de dos dimensiones al caso multidimensional. (mas información).

Una vez tenemos nuestros datos almacenados en un "array" o varios "array's"; (dependiendo de sí es un "array" por cada especie o por cada sitio o etc... para ser comparados) podemos empezar con los distintos análisis morfometricos.

Entonces, supongamos que hemos tomado 12 landmarks en el ala de 4 individuos de Diachlorus ferrugatus  (Díptera: Tabanidae) y la configuracion geometrica del ala de esta especie sera comparada con la configuración de otras especies del mismo Genero, para ello necesitamos construir un "array" para cada especie. (Como ejemplo, utilizaremos el de la especie mencionada)

Partiríamos de 4 archivos .txt que contienen las coordenadas de los landmarks de los 4 individuos que utilizamos de la misma especie, estos tendrían una apariencia como esta:

Archivo 1 (df1.txt):


"x" "y"
"lan1" 0.987216506531992 4.65296820402765
"lan2" 3.44297896059167 4.30214499630484
"lan3" 3.72363752676992 4.81083864750291
"lan4" 9.33680885033491 4.40739195862168
"lan5" 9.58238509574088 3.98640410935431
"lan6" 8.02122182137436 2.75852288232447
"lan7" 7.56515165133471 2.53048779730464
"lan8" 5.72332981078995 3.44262813738395
"lan9" 6.0916941788989 2.14458226880955
"lan10" 3.98675493256203 2.00425298572042
"lan11" 3.75871984754220 2.33753503305709
"lan12" 3.21494387557185 3.56541626008693

Archivo 2 (df2.txt):


"x" "y"
"lan1" 0.451428571428571 5.23678571428571
"lan2" 3.09428571428571 4.80821428571429
"lan3" 3.29071428571429 5.3975
"lan4" 9.41571428571429 4.93321428571429
"lan5" 9.68357142857143 4.48678571428571
"lan6" 7.84428571428572 3.09392857142857
"lan7" 7.32642857142857 2.84392857142857
"lan8" 5.36214285714286 3.91535714285714
"lan9" 5.88 2.50464285714286
"lan10" 3.79071428571429 2.21892857142857
"lan11" 3.54071428571429 2.55821428571429
"lan12" 2.79071428571429 4.04035714285714

Archivo 3 (df3.txt):

"x" "y"
"lan1" 0.149340776528574 5.28933286531034
"lan2" 2.99908023202552 4.91057002628859
"lan3" 3.17944348870254 5.50576877332276
"lan4" 9.6003754264045 5.07289695729791
"lan5" 9.90699296275545 4.54984351293455
"lan6" 8.04925141898212 3.17908276218918
"lan7" 7.58030695162187 2.98068317984446
"lan8" 5.56023847683922 3.95464476590038
"lan9" 6.02918294419948 2.54781136381961
"lan10" 3.77464223573671 2.27726647880408
"lan11" 3.48606102505347 2.65602931782582
"lan12" 2.72853534700998 4.11697169690970

Archivo 4 (df4.txt):

"x" "y"
"lan1" 0.74741186771418 4.70685628896825
"lan2" 3.18693026280777 4.35330289837498
"lan3" 3.38138462763407 4.90131065379455
"lan4" 9.21501557242309 4.56543493273094
"lan5" 9.46250294583838 4.19420387260801
"lan6" 7.87151268816865 2.95676700553155
"lan7" 7.41189328039739 2.72695730164592
"lan8" 5.50270497119371 3.55780776954011
"lan9" 5.96232437896497 2.33804857199332
"lan10" 3.92939238305364 2.07288352904836
"lan11" 3.68190500963835 2.33804857199332
"lan12" 3.01015356751113 3.62851844765877

En estos archivos se presentan las coordenadas de 12 landmarks tomados en cada uno de los 4 individuos de Diachlorus ferrugatus que utilizamos, es por eso que los archivos se llaman "df1.txt", "df2.txt", "df3.txt" y "df4.txt" (por las iniciales de la especie y el numero del individuo (pero se puede utilizar el nombre que se desee)) respectivamente.
Los diminutivos "lan1" a "lan12" indican el numero del landmark y se presentan las coordenadas en los ejes "x" y "y".
Estos archivos deben estar contenidos en el directorio sobre el cual estamos trabajando en R!!!

Para hacer el array necesitamos un script que puede estar en formato ".txt" o en formato ".R" así (para este caso) o escribir todos los comandos uno por uno!!:

 a<-read.table("df1.txt")
 b<-read.table("df2.txt")
 c<-read.table("df3.txt")
 d<-read.table("df4.txt")
 a<-as.matrix(a)
 b<-as.matrix(b)
 c<-as.matrix(c)
 d<-as.matrix(d)
 Dferrugatus<-array(cbind(a, b, c, d), dim=c(12, 2, 4 ))

#En este Script leemos primero cada uno de de nuestros archivos y les damos nombres: a, b, c y d. :

> a <- read.table ("df1.txt")
> b <- read.table ("df2.txt")
> c <- read.table ("df3.txt")
> d <- read.table ("df4.txt")

#Después los tomamos como matrices:
 
>a<-as.matrix(a)
>b<-as.matrix(b)
>c<-as.matrix(c)
>d<-as.matrix(d)

#Y finalmente construimos el array utilizando la función "cbind" y diciéndole cuales objetos utilizar (a,b,c,d) y dándole las dimensiones del array (12= que es el numero de filas sin contar los encabezados y en este caso es el numero de landmarks), (2= que es el numero de columnas que en este caso es el numero de variables "x" y "y"), y (4= que es el numero de archivos que estamos utilizando que este caso es 4):

>Dferrugatus<-array(cbind(a, b, c, d), dim=c(12, 2, 4 ))

#Podemos revisar nuestro array dandole el nombre de este que en este caso es 
"Dferrugatus":

>Dferrugatus

Y lo que obtendríamos (array) seria algo así: 

, , 1

           [,1]     [,2]
 [1,] 0.9872165 4.652968
 [2,] 3.4429790 4.302145
 [3,] 3.7236375 4.810839
 [4,] 9.3368089 4.407392
 [5,] 9.5823851 3.986404
 [6,] 8.0212218 2.758523
 [7,] 7.5651517 2.530488
 [8,] 5.7233298 3.442628
 [9,] 6.0916942 2.144582
[10,] 3.9867549 2.004253
[11,] 3.7587198 2.337535
[12,] 3.2149439 3.565416

, , 2

           [,1]     [,2]
 [1,] 0.4514286 5.236786
 [2,] 3.0942857 4.808214
 [3,] 3.2907143 5.397500
 [4,] 9.4157143 4.933214
 [5,] 9.6835714 4.486786
 [6,] 7.8442857 3.093929
 [7,] 7.3264286 2.843929
 [8,] 5.3621429 3.915357
 [9,] 5.8800000 2.504643
[10,] 3.7907143 2.218929
[11,] 3.5407143 2.558214
[12,] 2.7907143 4.040357

, , 3

           [,1]     [,2]
 [1,] 0.1493408 5.289333
 [2,] 2.9990802 4.910570
 [3,] 3.1794435 5.505769
 [4,] 9.6003754 5.072897
 [5,] 9.9069930 4.549844
 [6,] 8.0492514 3.179083
 [7,] 7.5803070 2.980683
 [8,] 5.5602385 3.954645
 [9,] 6.0291829 2.547811
[10,] 3.7746422 2.277266
[11,] 3.4860610 2.656029
[12,] 2.7285353 4.116972

, , 4

           [,1]     [,2]
 [1,] 0.7474119 4.706856
 [2,] 3.1869303 4.353303
 [3,] 3.3813846 4.901311
 [4,] 9.2150156 4.565435
 [5,] 9.4625029 4.194204
 [6,] 7.8715127 2.956767
 [7,] 7.4118933 2.726957
 [8,] 5.5027050 3.557808
 [9,] 5.9623244 2.338049
[10,] 3.9293924 2.072884
[11,] 3.6819050 2.338049
[12,] 3.0101536 3.628518


Cabe recordar que estos array no son utilizados solamente para morfometrìa sino para múltiples análisis en R y que su construcción es importante para todo usuario de R!!!!
(mas adelante utilizaremos estos array)

Sean felices y hasta la próxima !!!!







1 comentario: