Mostrando entradas con la etiqueta shapes. Mostrar todas las entradas
Mostrando entradas con la etiqueta shapes. Mostrar todas las entradas

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.
######################################################################################################################

miércoles, 30 de diciembre de 2015

Función ProcPca2tnt: construyendo matrices de caracteres continuos (formato TNT) en R, a partir de PCA de landmarks (2D o 3D)


Nota editorial:
Empezaré primero que todo disculpándome por el abandono al que sometí el blog este año. 
La verdad fue un año muy agitado para mi, aunque muy fructífero, puesto que:


  1. Empece a trabajar en docencia.
  2. Logré terminar mi carrera, (si, ya soy Biólogo de la UIS :D ).
  3. Publiqué mi primer artículo científico (en co-autoría con mi director de pregrado, Daniel R. Miranda-EsquivelTODOS los análisis se hicieron utilizando R :D , y pueden encontrar los scripts y datos en mi cuenta de Github).
  4. Presenté mi primer trabajo en un Meeting de la Willi Hennig Society (en co-autoría con mi director de doctorado, Santiago A. CatalanoALGUNOS de los análisis se hicieron utilizando R :D ). (QUIEN DIO LA PRESENTACIÓN EN NUEVA YORK FUE SANTIAGO).
  5. Sometimos con Santiago el trabajo anterior a Zoologica Scripta, y estamos esperando, y cruzando los dedos, para que sea aceptado.
  6. Y finalmente terminé el año con la muy grata noticia de haberme ganado una beca interna del CONICET para irme a San Miguel de Tucumán, a hacer un doctorado en Ciencias Biológicas bajo la estupenda dirección de Santiago Catalano y Pablo Goloboff. De manera que tal parece, 'R para Chibchombianos' seguirá, pero ya no será actualizado en Chibchombia, sino en Argentina :P .
  7. No está de más recordar que como soy papá desde hace 1 año y casi 5 meses, mi tiempo también se ha visto reducido, aunque mis días se han alegrado mucho con la presencia de la Salo.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - -

AHORA SI, A LO QUE VINIMOS! ProcPca2tnt


Introducción

En 2010, tal como lo dije en el post de CARONTE, Catalano y colaboradores implementaron el uso de landmarks en un contexto filogenético utilizando el principio de parsimonia. La nueva versión de TNT es completamente funcional para tratar landmarks directamente:

"La ventaja principal es que las búsquedas pueden hacerse sin necesidad de utilizar scripts en TNT. Además, la nueva implementación a reducido dramáticamente el tiempo de análisis de datos de landmarks (cerca de 20 veces menos para TBR), siendo posible también analizar landmarks bajo algoritmos de "nuevas tecnologías"  (búsquedas sectoriales, ratchet, etc). Otras funciones ahora disponibles para datos de landmarks (solos o en combinación con caracteres tradicionales) son: remuestreo, soporte de Bremer, busquedas bajo 'constrains', colapso de ramas. 
Otros cambios adiconales en TNT son:
-Posibilidad para exportar gráficos svg de la optimización de landmarks para cada nodo  (interno o externo).
-Nuevo menu para superimponer configuraciones (versión de windows). Ruta: Data/Edit Data/landmark aligment. 
-Posibilidad para calcular de manera mas precisa el 'score' mínimo para cada landmark, muy útil en pesos implicados.
-Posibilidad para calcular la longitud de las ramas como la sumatoria de los cambios en los landmarks sobre cada rama. El árbol con la correspondientes longitudes de ramas puede ser exportado en formato nexus.
-La función "permute" ahora permite la permutación de configuraciones de landmarks entre terminales. Con esta función se facilita el calculo de 'señal filogenética' en sets de datos de landmarks (Klingenberg & Gidaszewsky 2010), en este caso, bajo 'squared change parsimony'. "
Traducido de: Santiago Catalano, Comunicación personal 

Sin embargo, antes de dicha implementación, el uso de caracteres de morfometría geométrica (landmarks) para realizar análisis filogenéticos se hacia de manera indirecta.
Uno de los acercamientos que se han utilizado para ésto, comprende en utilizar los 'scores' producto de un análisis de componentes principales de variación de forma ('PCA of shape variation'), previo alineamiento de las configuraciones de landmarks mediante un Análisis Generalizado de Procrustes (GPA). De manera que cada componente principal es considerado como un caracter continuo diferente, y los 'scores' (valores) para cada especie son considerados como los estados del caracter. (ej. González-José et al. 2008)
En 2006, Pablo Goloboff, Camilo Mattoni y Andrés Quinteros, presentaron y discutieron en un paper publicado en Cladistics, la incorporación de algoritmos en TNT para analizar caracteres continuos en un contexto filogenético bajo el criterio de parsimonia, sin discretizar dichos caracteres. De tal modo que los 'scores' de los PCA de forma pueden ser tomados como caracteres continuos y analizados en TNT.
No obstante, estos datos deben ser primero generados por fuera de TNT para poderlos analizar; ya que se deben digitalizar los landmarks, alinear las configuraciones de landmarks, realizar el análisis de PCA de forma, tomar los 'scores' correspondientes al numero de componentes principales que se deseen utilizar, y escribir el archivo en formato .tnt para poderlo utilizar como archivo de entrada ('imput') en TNT. Todo este proceso puede ser tedioso y puede ser necesario utilizar varios programas (desde la digitalización al PCA) para poder generar el archivo de entrada.



ProcPca2tnt
ProcPca2tnt es una función escrita en lenguaje R por Ambrosio Torres (quien les escribe) y Santiago Catalano, que permite tomar un archivo de landmarks en formato .tps, alinear sus configuraciones, realizar un análisis de componentes principales de forma, tomar los 'scores' del PCA, y escribir un archivo (formato .tnt) de caracteres continuos para ser analizado en TNT. Cabe recordar que los landmarks también pueden ser digitalizados en R, utilizando el paquete 'geomorph', de tal manera que es posible realizar todo el proceso de generación de datos en R, para luego ser analizados en TNT.
La función necesita que esté instalado el paquete de R 'geomorph', escrito por Dean Adams,  Erik Otarola-Castillo y Emma Sherra; además necesita que esté instalada la función 'implode.R', y que la versión de R instalada sea  3.2.0.
ProcPca2tnt fue escrita utilizando R 3.2.0, en una distribución Ubuntu 14.04 de 64 bits (x86_64-pc-linux-gnu), bajo licencia GPL 2.
SE ENCUENTRA DISPONIBLE EN: https://github.com/atorresgalvis/ProcPca2tnt


Uso de la función ProcPca2tnt
Una vez hayas descargado la función del repositorio de github (recuerda que la función se llama 'ProcPca2tnt.R'), solo tienes que cargar el archivo a R o RStudio con el siguiente comando:

>source('~Desktop/my_folder/ProcPca2tnt.R')
>source("ProcPca2tnt.R") 

El cuerpo de la función es el siguiente:
>ProcPca2tnt("data.tps", cummvar = 0.90)

La función toma dos argumentos que el usuario puede manipular libremente, dependiendo de sus necesidades:
  1. "data.tps" es el nombre del archivo .tps que contiene las configuraciones de landmarks. (de manera que si tu tienes un archivo que se llame "Aves.tps", cambias en el comando la parte de "data.tps" por "Aves.tps", así: >ProcPca2tnt("Aves.tps", cummvar = 0.90)
  2. El segundo argumento es llamado 'cummvar' y se utiliza para que el usuario defina el número de componentes principales (EN ESTE CASO EL NÚMERO DE CARACTERES CONTINUOS QUE VA A UTILIZAR), con base en la cantidad de varianza explicada acumulada que desee utilizar. Por defecto, la función utiliza el 90% (0.90) de la varianza explicada acumulada del PCA, pero éste valor puede ser modificado por el usuario, de tal modo que si desea utilizar el 75% de la varianza explicada acumulada, solo tiene que cambiar en el comando el '0.90' por '0.75', así: >ProcPca2tnt("data.tps", cummvar = 0.75)
Si no se va a modificar el parámetro de la varianza explicada acumulada simplemente bastaría ejecutar el comando, indicándole el archivo .tps que debe utilizar:

>ProcPca2tnt("Aves.tps")

Finalmente, la función escribirá en nuestro directorio de trabajo un archivo en formato TNT que contenga nuestra matriz de caracteres continuos, llamado "Aves.tnt", que al abrirlo tendría un aspecto parecido al siguiente:

nstates cont
xread 2 4

Thypld 19.993 43.419
Thyvst 0 65
Ledhal 65 63.127
Graagi 30.925 0
;
proc/ ;

Ejemplos
En el respositorio de github hay dos archivos de ejemplo que pueden ser utilizados para probar la función: el primero que se llama "data.tps" es pequeño (4 especies), el segundo se llama "grande.tps" y contiene 413 especies.  
Adicional se encuentran también los ejemplos de archivos de salida en formato .tnt, de los set de datos anteriormente mencionados: "data.tnt" y "grande.tnt". De tal manera que podrían contrastar los archivos de resultados que obtengan ustedes con los que están en el repositorio.
Por último se encuentra un script con los pasos para utilizar la función ProcPca2tnt que puede resultar muy útil a la hora de realizar un análisis con datos empíricos: "ProcPca2tnt_script.R".

El tiempo de ejecución de la función para el archivo "grande.tps" (413 especies, 15 landmarks) es de aproximadamente 1 segundo (s), lo cual indica que la función trabaja bastante bien para sets de datos grandes en un tiempo relativamente corto. 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Espero que la función les sea de mucha utilidad, que se haya entendido muy bien su funcionalidad y su uso, y que les haya gustado el post. Ojalá pueda escribir muy pronto algunas cosas que quiero compartir y que tengo atrasadas. En épocas de Star Wars: MAY THE CODE BE WITH YOU!
Bye, mano!

sábado, 3 de mayo de 2014

CARONTE: Una función en R para crear archivos de landmarks en 2D en formato TNT, a partir de archivos en formato TPS

En 2010, Santiago Catalano, Pablo Goloboff y Norberto Giannini, implementarón el uso de landmarks (datos morfogeométricos) en un contexto filogenético. El enfoque esta basado en encontrar para cada uno de los landmarks, la posición ancestral que minimiza la distancia entre los puntos del ancestro/descendiente (entre las terminales y los nodos) a través del árbol. Maximizando el grado en el cual posiciones similares de cada uno de los landmarks en diferentes taxa puedan estar representando o sean explicados por ancestría común(es decir, via Parsimonia). (Catalano et al., 2010).

Los algoritmos para la optimización de landmarks bajo el principio de parsimonia son descritos en (Goloboff & Catalano, 2011) y el método esta basado en una primera aproximación usando rejillas y subsecuente-mente haciendo un refinamiento iterativo de los puntos inicialmente estimados. Estos algoritmos son implementados en el programa TNT (Tree Analysis using New Technologies; Goloboff et al. 2003, 2008).
Recientemente, Catalano & Goloboff (2012) presentaron un método que utiliza los dos pasos (mapeo y alineamiento de configuraciones) dentro de un solo proceso al mismo tiempo, en el que para un árbol dado, se producen múltiples alineamientos y asignaciones de estados ancestrales, tales que la sumatoria de las distancias euclidianas entre los landmarks correspondientes a través de los nodos del árbol son minimizadas.


Finalmente, ellos implementaron búsquedas de árboles  usando datos continuos de información morfogeométrica/landmarks, pero por ahora este artículo no ha sido publicado. (comunicación personal) 


Como ya lo dije, TNT implementa el uso de landmarks en un contexto filogenético. Entonces, este programa toma los datos de landmarks en formato TNT (.tnt) para hacer sus análisis.
El problema es que la mayoría de programas que se usan para digitalizar landmarks en 2D y 3D (TPSdig, Morpheus, Morphologika, etc) e incluso los paquetes de R que entre sus funciones tiene la digitalización de landmarks (shapes, geomorph, etc) dan como output o escriben los datos de coordenadas en formato TPS, el cual casi que podría decirse que es el formato universal de datos de landmarks. 
Santiago Catalano resolvió este problema de incompatibilidad de formatos, y escribió un pequeño programa en MS-DOS, llamado TPS2TNT, el cual permite escribir archivos TNT desde un archivo TPS. 
Este programa, a pesar de ser muy útil y hasta el momento el único de su tipo posee algunas limitaciones prácticas para su utilización (entre otras):

-Al ser escrito para MS-DOS, restringe su utilización a usuarios del sistema operativo de Microsoft Windows. (aunque podría intentarse usar bajo wine en Linux y/u otro tipo de programas en Mac OS )
-Aunque se han publicado en la red tutoriales o algunas instrucciones para su utilización, 
e incluso video-tutoriales, la verdad es que la interfaz y las instrucciones del programa son muy poco amigables con el usuario, y ademas esta poco documentado tanto su código como su utilización.


-El programa, en algunas ocasiones, no recibe archivos en formato TPS que hayan sido generados por otro software sin antes ser limpiados de algunas lineas que hacen imposible su utilización. (Por ejemplo, el programa tpsRelw, adiciona a los archivos .tps comentarios como el siguiente para cada especie que esta en el archivo:


COMMENT=GLS aligned (from tpsRelw, ver. 1.49)

de manera que para poder utilizar TPS2TNT, el usuario debe previamente eliminar estas lineas una por una manualmente dentro de su archivo en formato .tps, lo cual hace un poco tediosa la manipulación y aumenta por supuesto el tiempo requerido a medida que aumenta el número de taxa del análisis.


CARONTE:

Caronte, es una función que permite pasar archivos de datos de landmarks de 2 dimensiones en formato TPS (.tps) a formato TNT (tnt), que trata de evitar los problemas prácticos que sufre TPS2TNT. 
Caronte fue escrita en lenguaje R, por Ambrosio Torres (quien les escribe) del Laboratorio de Sistemática & Biogeografía, Universidad Industrial de Santander (Bucaramanga, Colombia), esta función necesita que este instalado el paquete 'geomorph' de R, escrito por Dean Adams, Erik Otarola-Castillo, Emma Sherra y que la versión de R instalada en el computador sea ≥ 2.10.
Caronte fue escrita utilizando R 3.1.0. en una distribución Ubuntu 12.04 de 64 bits (x86_64-pc-linux-gnu), bajo licencia GPL (>= 2).

El nombre de la función esta basado en la mitología griega, específicamente en Caronte, quien era el barquero de Hades, el encargado de guiar las sombras errantes de los difuntos recientes de un lado a otro del rio Aqueronte si tenían un Óbolo para pagar el viaje, razón por la cual en la Antigua Grecia los cadáveres se enterraban con una moneda bajo la lengua. Aquellos que no podían pagar tenían que vagar cien años por las riberas del Aqueronte, tiempo después del cual Caronte accedía a portearlos sin cobrar.

Como se usa la función:


Una vez hayas descargado la función del repositorio de GibHub, (recuerda que la función se llama 'caronte.R' ), solo tienes que cargar el archivo en R o RStudio con el siguiente comando:

>source('~/Desktop/my_folder/caronte.R')

El cuerpo de la función es el siguiente: 
>caronte(x, algn = TRUE, w_algn_tps = FALSE)



La función puede tomar tres argumentos que el usuario puede manipular libremente:

-x es el nombre del archivo tps sin el .tps (por ejemplo, si tu archivo tps es llamado "datos.tps" tu solo pondras "datos"

-algn es un argumento para alinear tus configuraciones/datos. Si tu escoges TRUE o T, caronte llamara a la función 'gpagen' del paquete "geomorph", esta función hará un análisis generalizado de Procrustes (que puede ser para 2 o 3 dimensiones, 2 en nuestro caso). Mientras si tu escoges FALSE o F, significa que tu no quieres alinear tus datos o que quizá tus datos fuerón previamente alineados usando otro programa o el mismo R. Por defecto el argumento algn es TRUE.


-w_algn_tps es un argumento que permite escribir los datos que acaban de ser alineados (obviamente en el caso de que tu hubieras escogido alinear tus datos, algn = T), de manera que si tu escoges w_algn_tps = TRUE o R, caronte llamara la función 'writeland.tps' del paquete "geomorph", esta función escribe los nuevos datos que han sido alineados, en un archivo llamado "aligned_data.tps" dentro de tu directorio de trabajo, usando los datos originales sin alinear. En caso de que tu escojas FALSE o F, significa que tu no quieres escribir tus datos alineados en un archivo diferente del original. Por defecto, w_algn_tps is FALSE.

FINALMENTE LA FUNCIÓN ESCRIBIRA EN NUESTRO DIRECTORIO DE TRABAJO, UN ARCHIVO EN FORMATO TNT QUE CONTENGA NUESTROS DATOS, LLAMADO "data_to_tnt.tnt".


Aquí tienen algunos ejemplos acerca de como usar la función caronte en la consola de R o en RStudio:
>caronte("datos") ## si no especificas algn y w_algn_tps, los valores serán tomados por ##defecto
>caronte("datos", algn=FALSE, w_algn_tps =TRUE)
>caronte("datos", algn=T)
>caronte("datos", w_algn=T)
En el repositorio de GitHub hay 3 archivos de ejemplo para que puedan usar y probar la función en R, el primero es un archivo llamado "aves_birds.tps", que son los datos originales, después hay una archivo llamado "aves_birds.tnt" que muestra como quedan los resultados en formato tnt después de haber utilizado la función caronte.
El úlitmo archivo es llamado "aves_birds_algn.tps" que muestra como quedan escritos los datos alineados en formato tps después de haber utilizado la función caronte.


Espero pronto poderles escribir nuevamente ya que tenía re-abandonado el blog, pero es que ahora tengo muchísimas cosas por hacer y ando ocupado hasta el cansancio.

Espero también que les haya gustado la función y tan pronto como pueda les enseñare la extensión de la función caronte para datos en 3 dimensiones. Y así mismo como ya lo prometí utilizaré como guia el código de caronte para explicar principios básicos de programación en R.
HASTA PRONTO!!