domingo, 6 de agosto de 2017

Jonathan Garcia: Bienvenido el nuevo administrador de R para Chibchombianos

Hola a todos!

Hoy les traigo una super-noticia: un parcero se suma a colaborar con posts en R para Chibchombianos. Se trata de Jonathan Garcia, Ingeniero Industrial de la UPTC de la provincia de Sugamuxi (que viva Boyacá!). Le viene súper al blog la presencia de Jonathan, ya que nos va a aportar cosas totalmente nuevas para el blog: series de tiempo, modelos de vectores de corrección de errores, y pronósticos, entre otras. De manera que el desbalance de los post hacía temas biológicos del blog será un poco menos evidente. Además de que aportará posts sobre análisis de datos en general, lo cuál sirve en todas las áreas.

En todo caso, el primer post de Jonathan será una pequeña introducción a RMarkdown y esperamos desde ya que sea todo una bomba y sea impresionantemente útil para las personas que están interesadas en temas como LaTeX, y generación de documentación y reportes via scripting, y obviamente que sea útil para los seguidores del blog en general.

No siendo más me despido, recordando que AÚN ESTAMOS INTERESADOS EN SUMAR COLABORADORES AL BLOG!

Y como diría Rigo: "nos vemos pues, mijos" :P

jueves, 15 de junio de 2017

En busca de colaboradores [no necesariamente Chibchombianos]

Hola a todos,

he estado pensando desde hace rato que el blog se me está muriendo porque estoy muy corto de tiempo. De manera que me parece que una solución más razonable que simplemente abandonarlo para siempre, sería encontrar personas que tenga interés con colaborar con el blog. La dinámica sería muy sencilla y simplemente yo les daría acceso para realizar posts en el blog.

Los que estén interesados en hacer parte de R para Chibchombianos simplemente deben comunicarse conmigo via e-mail (atorresgalvis@gmail.com) manifestando su interés y describiendo muy brevemente como les gustaría y/o podrían aportar al blog y sus principales intereses relacionados con R. Además del título (y descripción en dos líneas) del primer post que les gustaría hacer en el blog.

Nota: No serán consideradas solicitudes de personas anónimas.

Saludos y ojalá lleguen muchas solicitudes!  

miércoles, 25 de enero de 2017

ConSha: calculo de configuraciones (de landmarks) consenso para múltiples especies

Hola a todos,

después de meses de abandono, empiezo a actualizar los posts que tenía pendientes en mente.
Así que en está ocasión traigo un función que sirve para calcular las configuraciones consenso de múltiples especies. El nombre de la función es ConSha por sus siglas en inglés: Consensus Shapes.

Pero como siempre en R para Chibchombianos, voy a tratar de desglosar bien lo que hace la función y como utilizarla: Supongamos que tenemos un (1) solo archivo de datos de landmarks en formato .tps que contiene la info. de múltiples especímenes para cada una de múltiples especies (e.g. 100 individuos de la especie A, 30 individuos de la especie B, 47 individuos de la especie C, etc.). Estos datos pueden (o no) estar en desorden, es decir, no necesariamente tienen que estar primero los especímenes de la especie A, y después los de la B y así sucesivamente, de hecho, pueden estar intercalados.
De manera que lo que realiza la función es tomar las configuraciones de cada uno de los 100 especímenes de la especie A y calcular la forma consenso de la especie A, después tomar las configuraciones de cada uno de los 30 especímenes de la especie B y calcular la forma consenso de la especie B, y así sucesivamente calcular las formas consenso de las especies que tengamos en nuestro archivo .tps. De tal forma que al final obtendremos un archivo .tps con las configuraciones consenso de cada especie en el archivo (A,B,C...).

La función se encuentra en mi repositorio de Github en el cual pueden encontrar el archivo de la función ConSha,R, y adicionalmente un archivo dataset.tps para probar la función.
Si abriéramos el archivo de prueba podemos ver que luce de la siguiente forma:

LM=14
3.13045250691872E-001 7.29322525506001E-003 
3.42809792245237E-001 -3.57034721605956E-002 
2.63173123011433E-001 -1.22199144089513E-001 
5.35197442861358E-002 -5.39596439130598E-002 
2.53453105780066E-001 2.62027443048166E-002 
2.04168063279065E-001 1.47620260684790E-002 
-4.60169110946384E-002 1.74600183292736E-001 
-9.59726458304496E-002 1.84357462596101E-001 
-2.83924112942859E-001 1.18457766601670E-001 
-3.55532177430208E-001 3.94077229175337E-002 
-3.68743702133253E-001 -2.08780400403263E-002 
-3.09724469855327E-001 -1.25133003051213E-001 
-9.49111785388863E-002 -1.15361108466499E-001 
1.24656118531812E-001 -9.18467193151895E-002 
ID=Prospis_alba_34545

LM=14
3.21825958820403E-001 1.56972900845896E-002 
3.45021450179769E-001 -5.75459757349876E-002 
2.57049084820015E-001 -1.36520923015687E-001 
7.06583826558961E-002 -6.62131496577447E-002 
2.63084351059020E-001 4.81660509530724E-002 
1.96354558884907E-001 2.97989489308554E-002 
-4.86493263229514E-002 1.67552383318800E-001 
-1.11100055024889E-001 1.77468005498401E-001 
-2.94615965495992E-001 1.19375750027112E-001 
-3.53475503697631E-001 4.16059394982118E-002 
-3.62549588821628E-001 -1.53067880652038E-002 
-3.03266498401659E-001 -1.17607091108639E-001 
-8.83323799402096E-002 -1.16747797663857E-001 
1.07995531284950E-001 -8.97226430649234E-002 
ID=Prospis_alba_34546

LM=14
3.23772512546634E-001 1.53172222532955E-002 
3.38530408452876E-001 -4.69951604929775E-002 
2.64413836969547E-001 -1.23486210486488E-001 
4.37269588640421E-002 -2.89231129970610E-002 
2.52567518005097E-001 1.79572597400994E-002 
1.98047556246809E-001 1.31281405634119E-002 
-3.66453381677634E-002 1.87983560055656E-001 
-7.06493590968309E-002 1.92642854752606E-001 
-2.74332251307463E-001 1.01571391615247E-001 
-3.40139314765272E-001 2.92066724716173E-002 
-3.65512527249101E-001 -5.28351408671462E-002 
-3.18412309285033E-001 -1.23600138718901E-001 
-1.55703386602863E-001 -9.99305637561373E-002 
1.40335695389321E-001 -8.20367741332214E-002 
ID=Prospis_noche_34545

LM=14
3.12177531888443E-001 7.82340734462899E-003 
3.35646892955546E-001 -4.60069867096062E-002 
2.56290952036992E-001 -1.18215560269086E-001 
4.83716227051366E-002 -2.75810545610100E-002 
2.47248182154144E-001 1.90619923042759E-002 
1.90500922194981E-001 1.13233099249798E-002 
-4.53985352495453E-002 1.74591463356953E-001 
-1.06044958223772E-001 1.89223475344767E-001 
-2.82477833452805E-001 1.21836583582178E-001 
-3.52324104292068E-001 4.74368451834241E-002 
-3.70146773792764E-001 -1.73018159239321E-002 
-3.02242089304793E-001 -1.39629643475794E-001 
-9.97265425420069E-002 -1.20196880796853E-001 
1.68124732922512E-001 -1.02365135304926E-001 
ID=Prospis_noche_34546

Y podemos observar que tenemos la configuración (compuesta por 14 landmarks) de 4 especímenes (2 de la especie Prospis noche y 2 de la especie Propspis alba).
De tal manera que al utilizar ConSha, obtendremos un archivo .tps con la configuración consenso de Prospis noche y de Propspis alba.


Usando ConSha
Lo primero que debemos hacer para utilizar ConSha es asegurarnos de que tengamos instalados los paquetes geomorph y abind. Si no los tenemos, podemos instalarlos simplemente con los comandos:
install.packages("geomorph"); install.packages("abind")

A continuación, descargamos el archivo ConSha.R de github y el set de datos de prueba (dataset.tps).
y cargamos en R la función con el comando:
source("ConSha.R")

Y finalmente para correr el set de datos de prueba con ConSha utilizamos el comando:
ConSha("dataset")

Obteniendo un archivo final llamado dataset_AlgnBySpecies.tps que contiene las configuraciones consenso calculadas y que luce por dentro de la siguiente manera:

LM=14
0.314352946252026 0.0372828643538679
0.345391625687852 -0.018266371202351
0.268903501736312 -0.107275433652158
0.0665484984845718 -0.054602373599311
0.25348873237188 0.0579603304359095
0.197099287000799 0.0384379938327593
-0.0609533535837602 0.166073878705452
-0.117567566456806 0.171264076145226
-0.296999890586971 0.0945368247615419
-0.355413088624318 0.0113392674557502
-0.361710883486415 -0.047781149525081
-0.294542245374531 -0.145540513432892
-0.0815632427295364 -0.122737431641517
0.122965679308895 -0.0806919626371959
ID=Prospis_alba_

LM=14
0.315549460170045 0.0375216206687371
0.339328648431645 -0.0187116628050462
0.269025353909479 -0.0989960002074543
0.0481546301899097 -0.0243637113375953
0.247233864993922 0.0388722637648096
0.192371740969995 0.0280620763425688
-0.0556631083991069 0.177079835702801
-0.103572456055501 0.182807603485376
-0.286260948480472 0.0884200435442389
-0.347770083834775 0.00982705083149019
-0.36326190421352 -0.064975746574993
-0.298110334511657 -0.156387108083493
-0.118081420665176 -0.119996896643895
0.161056557495211 -0.0791593686875449
ID=Prospis_noche_

Ojalá la función les sea de mucha utilidad, y espero muy pronto poder añadir otros posts que tengo en mente. Saludos y que la pasen sabroso!

######################################################################################################################
Nota1: la función fue probada con un archivo que contenía 571 especímenes pertenecientes a 18 especies y tardó 0.81 segundos en obtener las formas consenso de todas las especies.

Nota2: se debe tener mucho cuidado con los nombres de los especímenes, asegurándose de que todos los especímenes de una especie estén llamados de la misma manera. Ej.: dos especímenes nombrados como "Genero_Especie" y "genero_espeCie" serán reconocidos como pertenecientes a dos especies diferentes.
######################################################################################################################