tag:blogger.com,1999:blog-190777312024-03-07T01:44:17.662-05:00Computer cladistics / ¡Cladística a la lata!This is mi blog about cladistics--and systematics in general ;)--based on my thoughts experience in the field!<br>
Aquí van cosas de mi pensamiento y experiencias con el análisis cladísticoSalvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.comBlogger60125tag:blogger.com,1999:blog-19077731.post-51992433049738240792012-07-05T23:07:00.001-05:002012-07-05T23:09:09.777-05:00Hennig XXXI (23-27 Jun 2012) Riverside, California, USAThis year, the <b>Hennig meeting</b> was held at <b><a href="http://en.wikipedia.org/wiki/Riverside,_California">Riverside</a></b>, California, and I'm fortunate enough to be able to be there (in great part thanks to the <b>Kurt Pickett award</b>, given by the <b>Willi Hennig Society</b>). As in previous <a href="http://cladistica.blogspot.com.ar/search/label/hennig%20meeting">occasions</a>, I will try to give a short review of many of talks!<br />
<br />
<b>23 jun</b><br />
<br />
I want to remark the excellent reception given by the organizers, and the opportunity to meet some wonderful heteropteran researchers [which is huge for an <a href="http://en.wikipedia.org/wiki/Heteroptera">heteroptera</a> aficionado! :)]<br />
<br />
<b>24 Jun</b><br />
<br />
The meeting start up with a plenary talk given by <b>Quentin Wheeler</b>, with the title of <i>Cladistic cosmology</i>. Basically it is about of building a “<a href="http://en.wikipedia.org/wiki/Hubble_Space_Telescope">Hubble</a> like” project for taxonomy, specifically the description of new species, and facilities to make access to museum specimens across the web, both as metadata, but using some form of virtual specimens (e.g. scans of herbaria types, 3d scans of specimens, etc.). I like his point, but I think he miss the point of sampling: we not only need better understanding of current museum data, but also, we need to go to the field and look for never seen before specimens!<br />
<br />
The first symposium was organized by <b>Ward Wheeler</b> about linguistics. The first talk, was a video-conf given by <b>Peter Whitely</b> about the phonetic character definition used for an analysis of <a href="http://en.wikipedia.org/wiki/Uto-Aztecan_languages">Uto-Aztec</a> languages. The actual analysis was presented by Ward, that shows some of the particularities of using phonetic characters in comparison with DNA data, such as having 121 letters (against 4) and short strings (against long sequence fragments). <b>Peter Forster</b> talks about the using of phylogenetic networks for language data, and how it can be associated with what we know about the history inferred from mitochondrial molecular markers. You can found his program <a href="http://www.fluxus-engineering.com/sharenet.htm">here</a>. <b>Joanna Nichols</b> also uses phylogenetics networks with emphasis of using different sources of cognate data. To finish the season, <b>John Wenzel</b> shows a reanalysis of some previous<a href="http://en.wikipedia.org/wiki/Indo-European_languages"> indo-european</a> analysis, showing some problems with the character coding, and how much of the current resolution was a by product of the errors in the codings, and the method used. I do not know much about the state of the field of phylogenetic linguistics (although I like the use of these techniques in linguistics!), I found a nice blog that usually talk about phylogenetics in linguistics <a href="http://replicatedtypo.com/">here</a>.<br />
<br />
The next session was on phylogenomics, and was organized by <b>Gonzalo Giribet</b>, so are heavily biased towards invertebrates, but for a frustrated entomologist like me, it was wonderful :D! First Gonzalo talks about how new advances in sequencing technology has increased the amount of available data for phylogenetics, and how the problem was shifted from phylogenetic analysis to orthology recognition among this huge amount of new sequences. Then <b>Torsten Struck</b> shows how the selection of outgroups affects the position of one most mysterious group of annelids, the <a href="http://en.wikipedia.org/wiki/Myzostomida">Myzostomida</a>. <b>Sebastian Kvist</b>, explores the genomics of the blood feeding proteins used by <a href="http://en.wikipedia.org/wiki/Hirudinea">Hirudinid leeches</a>, and the realtionships of their host bacteria, a group related with <a href="http://en.wikipedia.org/wiki/Rhizobiaceae">nitrogen-fixing bacteria</a> found in plants! <b>Kevin Kocot</b> was interested on orthology detection using phylogenetic trees, so he implement a program to detect the best possible set of ortholog sequences. <b>Björn von Reumont</b> talks about the <a href="http://en.wikipedia.org/wiki/Pancrustacea">pancrustacean</a> phylogenomics, and how the acquisition of newer data from <a href="http://en.wikipedia.org/wiki/Remipedia">Remipedia</a> is key in the problem and that results shows than remipedians are more closely related to hexapodans than to more traditional crustaceas, he also hints the existence of some apomorphies for such group based on nervous system. <b>Vanessa González</b> talks about the relationships among <a href="http://en.wikipedia.org/wiki/Bivalvia">Bivalbia</a>, that as many molluscan taxa, seems to be well known, but their phylogenetic relationships are just barely explored.<br />
<br />
Then the poster season starts, most of the posters present a lot of entomological work on heteropterans (specially <a href="http://en.wikipedia.org/wiki/Reduviidae">reduviids</a>), so that makes me so happy, I like most the poster from <b>Michael Forthman</b> as he works with<a href="http://en.wikipedia.org/wiki/Ectrichodiinae"> Ectrichodiins</a> the group that I see for an small [very small!] amount of time xD, so hopefully he will construct a nice phylogeny of the group! :) The winning poster was given by <b>Guayang Zhang</b> and it is about the elongation of the front legs in <a href="http://en.wikipedia.org/wiki/Harpactorinae">harpactorines</a>.<br />
<br />
<b>25 Jun</b><br />
<br />
Students day! Most of students talks where given this day, so it will allow the judges to give the student awards with a complete overview of all the material presented by students.<br />
<br />
<b>Ansel Payne</b> gives a wonderful talk about the general relationships of <a href="http://en.wikipedia.org/wiki/Hymenoptera">Hymenopteran</a> superfamilies. <b>Rebecca Dikow</b> explores a huge data set (in term of characters) using bacterial genomes, so her trees have brutal lengths over 37 millions of steps! <b>Ross Mounce</b> talks about measuring support using supertrees, he also remind us about the importance of using machine readable data for phylogenetics, and that he thinks that using svg files will be great for publishing data, as you can include a lot of non-published metadata inside the files. <b>Julieta Gallego</b> presents a talk about the stability of molecular clocks (as I am a co-author of the talk, maybe I will talk about this in other time!). <b>John Denton</b> gives a talk about the usage of iterative alignments to improve the searches under likelihood approaches. <b>Greame Oatley</b> speaks about a <a href="http://en.wikipedia.org/wiki/Zosterops">cool group of birds</a> [give me a <a href="http://en.wikipedia.org/wiki/Passeriformes">passeriform</a>, and I will love it ;)], and their species limits, in a work in part phylogeographic, in part taxonomic.<b> Juanita Rodriguez</b> (from Colombia! But she is working in Utah), talks about the phylogeny and biogeography of a group of <a href="http://en.wikipedia.org/wiki/Pompilidae">Pompilid wasps</a>. <b>Fernando Gelin</b> talks about <i><a href="http://en.wikipedia.org/wiki/Polybia">Polybia</a></i>, a wasp genus. <b>Federico López</b> (another colombian! And old friend of my from undergrad days! He is now at Vermont) gives a talk about the phylogenetics of a group of <a href="http://en.wikipedia.org/wiki/Yellowjacket">Vespids</a>. To finish the first student season, I give my own talk about biogeography of amphibians.<br />
<br />
In between student talks, there is an interesting symposium about the species problem. I'm personally no see so much in that problem, but is nice to see a lot of talk about that. Fortunatelly, I guess, although the problem is recognized, most taxonomists and systematist can continue to work, and work well, even if there is no consensus in what an species is. <b>Brent Mischler</b> spokes about the phylogenetic (topologic-monophyletic) species concept. <b>Rudolf Meier</b> talks whats about the problem of discussing the topic, and how most people skip the problem at all, and why he thinks it is important to discuss the subject. For me, this is the best talk of the symposium. Finally <b>Kipling Will</b> talks about the influence of the species definition in alpha-taxonomy, specifically how it is affected by some recent approaches, like bar-coding. Then a nice discussion (which includes Quentin Wheeler) was given by the four panelists of the symposium.<br />
<br />
The second student seasson begin with a talk given by <b>Christine Hayes</b> about the the phylogenetic relationships of a group of <a href="http://en.wikipedia.org/wiki/Metopininae">phorid flies</a>. <b>Anna Dal Molin</b> explore several techniques to visualize large groups of trees. <b>Pei-Luen Li</b> talks about a worldwide distributed (but concentrated in Hawai'i) group of <a href="http://en.wikipedia.org/wiki/Nolinoideae">asparagales</a>, and <b>Cecilia Waichert</b> explore some adaptation hypothesis about nesting behavior using a phylogeny of <a href="http://en.wikipedia.org/wiki/Pompilidae">Pomipilid wasps</a>.<br />
<br />
<b>26 Jun</b><br />
<br />
<b>Pablo Goloboff</b>, gives his talk about the implementation of <i>Iter-PCR</i>, focusing on the effects of changing the ingenuous algorithms, with the use of algorithms that take previous information into account, and makes feasible the use of iter-PCR in <a href="http://www.zmuc.dk/public/phylogeny/TNT/">TNT</a>. <b>Jean DeLaet</b>, gives an insight on his future program for phylogenetic analysis,<i> Anagallis</i>, that will include his algorithms for dealing with non-applicable data! I'm very curious about it [hopefully it will be open source!]. <b>Nico Franz</b> speaks about using taxonomy ontologies, although I think that kind of work is nice to discover some particular things, I guess that the missing thing is that they at the moment are no using character data, and I think that the key for this kind of databases will be both explicit references, and explicit data supporting each taxonomic affirmation. <b>Lenka Drabkova</b> talks about the plant <a href="http://en.wikipedia.org/wiki/Cytokinins">cytokinins</a>. <b>Claudia Szumik</b> shows the results of a the search of areas of endemism, using also phylogenetic information, with a huge data set of <a href="http://en.wikipedia.org/wiki/Mammals">mammals</a>. Then Santiago Catalano presents <a href="http://dx.doi.org/10.1111/j.1096-0031.2012.00400.x">GB-to-TNT</a> a user friendly program to build huge matrices, and also some nice taxonomy mapping tools found in the newer version of TNT. <b>Daniel Janies</b>, shows that super-trees are not a real solution to the uses of super-matrices, as they fails to produce approximate results of a super-matrix. In one of the most controversial talks <b>Donald Buth</b> argues that mitochondrial data, as non intrinsic source of data, and susceptible of the host-parasite interactions, must not be used for phylogenetic analysis. Personally I do not agree with him, but a friend of me, tells me that the same concerns have been raised in population genetics (a.k.a. Phylogeography) literature. So maybe, mitochondrial data is not good for small taxonomic levels, by the same reason of gene vs species trees, but at large levels, it will provide a nice source of evidence (as the difference between gene and species trees at this levels are no so important). This is an intriguing line of though, as it is precisely the opposite to the most received view, from at least five years ago. <b>John Wiens</b> gives a review of all of his papers about the use of phylogenies for study ancestral ecology. I was too tired after Jon talk, so I miss the next ones. Later Santiago gives a nice talk about the usage of morphometric data on several and different kinds of studies. <b>Tim Crowe</b> talks about the results of a whole life dedicated to study <a href="http://en.wikipedia.org/wiki/Guinea_fowl">guinea fowls</a> at different taxonomic levels. <b>Dalton Amorim</b>, shows a new analysis of <a href="http://en.wikipedia.org/wiki/Phoridae">phorid flies</a> based on morphology, one of the few talks using explicit morphological data! Continuing with morphological data, and dipterans, <b>Torsten Dikow</b> shows its phylogenetic analysis <a href="http://en.wikipedia.org/wiki/Mydidae">Mydidae</a>, he also shows interest on detecting unstable terminals. <b>Efraín de Luna</b>, talks about the use of morphometric data in phylogenetics. To finish the day, <b>Nico Franz</b> gives a talk about how his analysis of some particular group of <a href="http://en.wikipedia.org/wiki/Curculionidae">curculionids</a> evolve in time from the initial data matrix to the definitive one. I think this is a nice exercise, but ultimately, it is difficult to extract some information about it, except from the anecdotal experience.<br />
<br />
Later this day was the banquet, that as is a tradition in the hennig meetings was free for students! The banquet speech was given by <b>Dennis Stevenson</b>, the current editor of the journal of the society (<i><a href="http://www.cladistics.org/journal.html">Cladistics</a></i>), and it was funny, although it was somewhat small!<br />
<br />
The winners of the awards? Ok, there is a lot of <b>Marie Stoppes</b> and <b>Kurt Pickett</b> awards for traveling students. The <b>Don Rosen</b> award for the best poster was given to <b>Guayang Zhang</b>, as I tell you before. <b>Cecilia Waichert</b> receives the <b>Lars Brundin</b> award, for the second best talk, and <b>John Denton</b> receives the <b>Willi Hennig</b> award for the best student talk! Congratulation to the winners, all are well deserved, and I think the judge have a difficult time selecting these three, because there are a lot of great talks given by students :)!<br />
<br />
<b>27 Jun</b><br />
<br />
I think this is the most difficult day to give a talk: everyone is tired of the amount of talks in previous days, as it is the day after the banquet, a lot of people are dehydrated and overtighted, and as it is the last day, you have to check-out from the hotel...<br />
<br />
Here this is the last symposium, this one, about molecular clocks organized by <b>Sean Brady</b>, who discuss several sources of error. <b>Tracy Heath</b> talks about how to model dating in bayesian analysis, and <b>Elizabeth Murray</b> has a more concrete talk on the dating of some group of <a href="http://en.wikipedia.org/wiki/Eucharitidae">Hymenoptera</a>.<br />
<br />
<b>Robert Sansom</b> presents some differences between results using hard and soft anatomy in vertebrates, and the implications for the fossil record, that is only based on hard parts. <b>Mark Simmons</b> shows some problems from using multiple matrices, with small overlap. He present a lot of interesting results for some particular examples, so it is important to known how general they are. <b>Mari Källersjö</b> gives one of the most beautiful talks of the meeting, about a working project of a particular <a href="http://en.wikipedia.org/wiki/Amorphophallus">group of plants</a>. Everyone loves his talk :D. <b>Veronica Pereyra</b> talks about <a href="http://en.wikipedia.org/wiki/Thysanoptera">thysanopterans</a>, but unfortunately I have to make the check out, so I lost it :-(. <b>Ronald Clouse</b> talks about the phylogeography of an <a href="http://en.wikipedia.org/wiki/Opiliones">opilion</a> that lives in southeastern US, that is a remaining of a gondwanian clade (as Florida was long time ago, part of African plate!). <b>Ulf Jondelius</b>, talks about the <a href="http://en.wikipedia.org/wiki/Acoela">acoelan worms</a>, a poorly known taxon, that he was sampled across the world. To finish the meeting <b>Steve Farris</b> talks about the recent surge of the three taxon statements authors (Ebach, Williams, etc.).<br />
<br />
<b>General overview</b><br />
<br />
The meeting was very well organized by <b>John Hartley</b> and <b>Christiane Weirauch</b>, that move around all the time to make sure everything is right. They have a full group of students that are helping with everything, so it was huge :).<br />
<br />
On the meeting itself, it has a lot of students, with several very nice talks, and a lot of discussion, that is always welcomed :D. One of the things that I note, is in the same line of previous meetings in which few morphology is used, here I see that although most studies only use molecules for phylogenetic analysis, people is more interested in link several of their findings with well detailed morphological data, hopefully, in the next few years, fully integrative, genomic and morphological data will be used in conjunction in almost every work!<br />
<br />
The next year, the meeting will be held in <a href="http://en.wikipedia.org/wiki/Rostock">Rostock</a>, Germany, a city on the coast of the baltic sea. Hopefully I will be able to make it, and several of my cladistists ends will be there :D Also, if any one reading this blog interested in phylogenetics, and living somewhere in Europe, I encourage you to go, even if you don't work with parsimony! [In fact, a lot of people that does not use parsimony analysis shows their results at the meeting! And nobody complains about it, at much, someone as why do you not use parsimony, but just that] So! See you there :)!<br />
<br />
<br />
<b><span style="font-size: x-small;">Acknowledgments</span></b><br />
<span style="font-size: x-small;"><i>I receive a lot of funding support from several institutions that make this trip possible: </i>CONICET<i>, </i>FONCyT<i>, </i>GBIF<i> (well, this one in the future) provides monetary funding, whereas </i>INSUE<i> allows me to work at their facilities. I receive a <b>Kurt Pickett travel award</b> from the </i>Willi Hennig Society<i>. At personal level, my advisors (<b>Pablo</b> and <b>Claudia</b>) provides me a lot of support, <b>Julí</b> convince me to go, <b>Santí</b> helps me with the trip logistics, and they, with <b>Ross</b>, they are excellent room-mates :)!</i></span><br />
<br />Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-65821044887333563832012-06-02T17:47:00.001-05:002012-06-02T17:47:52.166-05:00X Reunión Argentina de Cladística y Biogeografía, Mendoza (29-31 may 2012)<br />
Se cumplió entre el 29 y 31 de mayo la <b>X Reunión Argentina de Cladística y Biogeografía</b>, en <b><a href="http://en.wikipedia.org/wiki/Mendoza,_Argentina">Mendoza</a></b>. Y aquí van mis impresiones de la reunión.<br />
<br />
Primero, quiero mencionar un poco la ciudad de Mendoza, el sitió donde estuve, en el centro, es muy lindo, con muchísimos arboles, acequias donde corre agua todo el tiempo [la ciudad es como un oasis en medio de un área desértica], y pues como por este lado del mundo es otoño, había muchos árboles así amarillos y perdiendo hojas [mucho más que por Tucumán]. La vista de las montañas es genial, y pues me dan ganas de venir por aquí con un poco más de tiempo en el futuro!<br />
<br />
Ahora pues, a hablar de la reunión.<br />
<br />
<b>Martes 29</b><br />
<br />
La charla inaugural corrió a cargo de <b>Juan Morrone</b>, que venía de México [aunque el es Argentino], y hablo sobre sus análisis en cuanto a la relación entre los <a href="http://en.wikipedia.org/wiki/Curculionidae">curculionidos</a> de las <a href="http://en.wikipedia.org/wiki/Islas_Malvinas">islas Malvinas</a> y los continentales. Luego <b>Guillermo D'Elia</b>, que venía de Chile [aunque es de Uruguay] hablo sobre lo que se conoce en la actualidad de la filogenia y biogeografía los <a href="http://en.wikipedia.org/wiki/Sigmodontinae">sigmodontinos</a>.<br />
<br />
El primer simposio, fue el de biogeografía, organizado por Juan. <b>Lone Aagesen</b> hizo una presentación bien interesante de la evolución de las <a href="http://en.wikipedia.org/wiki/Poales">poales</a> <a href="http://en.wikipedia.org/wiki/C4_photosynthesis">C4</a> y las relaciones ambientales de estas plantas con sus familiares C3. Federico Ocampo, hablo de Eucraniini un grupo de <a href="http://en.wikipedia.org/wiki/Scarabaeinae">escarabajos estiercoleros</a>. <b>Claudia Szumik</b>, hablo de nuevos métodos, implementado en <a href="http://www.zmuc.dk/public/phylogeny/endemism/">NDM</a> para realizar un análisis de endemismos, que además de usar especies como terminales, es posible usar también taxones supraespecíficos, y pues como ese método se aplico en un conjunto de datos de <a href="http://en.wikipedia.org/wiki/Mammalia">mamíferos</a> <a href="http://en.wikipedia.org/wiki/Nearctic">neárticos</a>. <b>Dalton Amorim</b>, que llego desde Brasil, apunto algunos problemas biogeográficos para el neotrópico, aunque muchos de ellos, para mi, no lo son tanto, es más una consecuencia de usar áreas predefinidas, que problemas distribucionales. Para cerrar el día, <b>Juan</b> presento un nuevo esquema de regionalización del neotrópico que difiere de sus aproximaciones anteriores, pero al igual que lo que apunto Dalton, el problema para mi, es más en el hecho de usar áreas predefinidas.<br />
<br />
<b>Miércoles 30</b><br />
<br />
La sesión de charlas generales comenzo con <b>Yamila Cardoso</b>, que hablo sobre las especies de <i><a href="http://en.wikipedia.org/wiki/Hypostomus">Hypostomus</a></i>, un genero de “viejas de agua.” <b>Gustavo Flores</b> reviso varias disyunciones dentro de Pimeliinae, unos escarabajos del grupo de los <a href="http://en.wikipedia.org/wiki/Darkling_beetle">Tenebrionidos</a>, aunque fue principalmente descriptivo, para mi, es la clase de trabajos que muestra que el verdadero poder en la biogeográfia esta en estudiar la disyunción. <b>Carolina Correa</b> que comparo los resultados de áreas de endemismo usando los datos georeferenciados típicos y las distribuciones generadas por los modelos de nicho, con un conjunto de datos muy bien muestreado para <a href="http://en.wikipedia.org/wiki/Asteraceae">Asteraceas</a> del noroeste argentino. <b>Christian Ibáñez</b> mostró los patrones, más que todo ecológicos y ambientales, de la distribución de <a href="http://en.wikipedia.org/wiki/Cephalopod">cefalópodos</a> en el Pacífico oriental. <b>Dolores Casagranda</b>, Loló, hablo sobre un análisis de endemismos usando los peces de agua dulce de <a href="http://en.wikipedia.org/wiki/Esp%C3%ADrito_Santo">Espíritu Santo</a>, en Brasil, un trabajo muy interesante, en el sentido que el uso de estos métodos cuantitativos en peces es poco común, y pues que mostró que aunque a primera vista son diferentes, estos estudios son igualmente posibles y razonables. <b>Berni Britto</b>, de Perú, hablo sobre los corotipos de su país. Yo creo que es posible analizar sus datos de otra forma, pero me gusto mucho toda la labor de muestreo que realizo! <b>Alejandro Guiraudo</b>, el tape, mostró diferentes áreas de endemismo para las <a href="http://en.wikipedia.org/wiki/Serpentes">serpientes</a> del<a href="http://en.wikipedia.org/wiki/Mesopotamia,_Argentina"> nordeste argentino</a>, con un conjunto de datos de una revisión de una gran cantidad de colecciones, así como de muchos años de muestreo en el área. <b>Duniesky Rios</b>, presento un análisis combinado de moléculas y morfología de arañas <a href="http://en.wikipedia.org/wiki/Mygalomorphae">mygalomorfas</a>.<br />
<br />
A la tarde, <b>Andrea Cosacov</b> dio una conferencia sobre los resultados de un gran proyecto de la filogeografía de la <a href="http://en.wikipedia.org/wiki/Patagonia">Patagonia</a>, que se realiza entre otros en colaboración con el Instituto Darwinion, y la Univ. de Córdoba, entre otros. Lo que más me impresiono del trabajo, fue la excelente calidad del muestreo: con muchísimos puntos de colecta en toda la patagonia!<br />
<br />
Luego vino el simposio de problemas empíricos, donde <b>Camilo Mattoni</b> nos contó de la taxonomía y filogenia de <i>Orobothriurus</i>, un <a href="http://en.wikipedia.org/wiki/Bothriuridae">escorpión</a> que tiene el “record” de altura, usando tanto evidencia morfológica y molecular. <b>Norberto Giannini</b>, nos contó de lo difícil que ha sido resolver las relaciones filogenéticas en los zorros voladores (<a href="http://en.wikipedia.org/wiki/Pteropodidae">Pteropodidae</a>), un enorme grupo de murciélagos del viejo mundo. Luego vino mi charla sobre análisis biogeográficos a gran escala. Para terminar, <b>Julián Faivovich</b> presentó como a venido progresando la filogenia de <i><a href="http://en.wikipedia.org/wiki/Hypsiboas">Hypsiboas</a></i>, un hylido neotropical, que fue una de las presentaciones que más me gusto.<br />
<br />
<b>Jueves 31</b><br />
<br />
Para el tercer día, comenzó con <b>Federico Agrain</b> que discutió la filogenia de <a href="http://en.wikipedia.org/wiki/Clytrini">Clytrini</a>, unos coleopteros, y su biogeografía, aunque me hubiera gustado una forma más cuantitativa para hacer esa inferencia. <b>Danilo Ament</b>, de Brasil, hablo sobre la codificación de caracteres no aplicables. <b>Mariana Chani</b>, nos contó de la filogenia de los Philothina, una subtribú de <a href="http://en.wikipedia.org/wiki/Staphylininae">estafilinidos</a> neotropicales, un grupo con una diversidad absurda. Luego yo presente otra charla, porque <b>Julieta Gallego</b>, mi co-autora no estaba, sobre estabilidad con relojes moleculares. <b>Marcos Mirande</b>, hablo de las relaciones filogenéticas de <i><a href="http://en.wikipedia.org/wiki/Deuterodon">Deuterodon</a></i>, un genero de mojarritas, como siempre, la cantidad de evidencia que esta acumulando Marcos, tanto a nivel morfológico, como de terminales, es asombrosa! <b>Agustina Ojeda</b> presento una filogenía molecular y un análisis biogeográfico y ambiental de los <a href="http://en.wikipedia.org/wiki/Octodontidae">octodóntidos</a> suramericanos. <b>Maritza Mihoc</b>, dio una charla sobre <i><a href="http://en.wikipedia.org/wiki/Adesmia">Adesmia</a></i>, su distribución y filogenia, me impresiono, la gran cantidad de trabajo para conseguir no solo la información morfológica, sino también distribucional. <b>Cecilia Pardo</b> hablo sobre la filogenia de <a href="http://en.wikipedia.org/wiki/Octopodidae">Octopodidae</a>, un grupo de pulpos, lo que más me intereso de esa charla, fue que mostró que aún para grupos oceánicos es posible ver patrones biogeográficos relacionados con la deriva continental, creo que sería interesante un análisis de un grupo de estos usando distribuciones explícitas, en vez de áreas predefinidas. Para terminar la sesión, <b>Anyelo Vanegas</b> hablo sobre el genero <i><a href="http://en.wikipedia.org/wiki/Gephyrocharax">Gephyrocharax</a></i>, otro grupo de mojarritas.<br />
<br />
Dado que no se pudo realizar la charla “de camaradería” en la cena de la reunión (que fue el miércoles a la noche), Marcos y Camilo la presentaron a la tarde. Fue una charla muy graciosa, basada más que todo en las charlas de los primeros dos días de la reunión.<br />
<br />
La última de las conferencias, fue dada por <b>Adriana Marvaldi</b>, con una actualización de su trabajo en la filogenia de <a href="http://en.wikipedia.org/wiki/Curculionoidea">Curculionoidea</a>, usando alineamientos estructurales ribosomales.<br />
<br />
Para terminar, fue el simposio de problemas metodológicos, organizado por Camilo. <b>Pablo Goloboff</b>, dio una charla muy bonita, sobre la implementación de un método basado en el conteo de tripletes en árboles, y como se puede resumir el tiempo de computo de esos conteos. <b>Ignacio Escapa</b>, hablo de otra parte del mismo método que presento Pablo (y que el había presentado con <b>Diego Pol</b> en la reunión de <b><a href="http://cladistica.blogspot.com.ar/2010/11/ix-reunion-argentina-de-cladistica-y.html">La Plata</a></b>) específicamente para detectar cuales son los caracteres que pueden mejorar un estudio, y por ello, sirven para seleccionar, por ejemplo, secuencias y genes para una matriz de gran escala. Luego <b>Santiago Catalano</b>, hablo sobre el programa GB-to-TNT, un programa para procesar de forma automática, datos moleculares para después analizarlos en <a href="http://www.zmuc.dk/public/phylogeny/TNT/">TNT</a>. <b>Norberto</b> hablo sobre nuevas maneras de usar los <a href="http://en.wikipedia.org/wiki/Phylogenetic_comparative_methods">análisis comparativos</a> basados en cambios en el árbol de la manera en que realmente se tenga en cuenta la filogenia. Para terminar, y tristemente con el tiempo muy encima, <b>Claudia</b> dio una charla muy interesante sobre el uso de herramientas computacionales de sistemática (TNT) y biogeografía (NDM) en un campo como la arqueología, aunque por ahora, hay como más dudas que cualquier otra cosa, lo que me gusto, es que es claro que hay una gran potencialidad en usar esta clase de información de manera cuantitativa en arqueología.<br />
<br />
<b>Impresión general</b><br />
<br />
Bueno, para mi fue una reunión interesante, me parece que hubo algunos problemas con el manejo del tiempo en las charlas, lo que hizo que una buena parte de ellas se excediera y genero un poco la prisa al final de la reunión. Por otra parte, pues fue relativamente poca gente, pero creo que eso es más por que el programa de biología de la univ de Cuyo (la univ pública de Mendoza) esta comenzando hasta ahora, según me contaron, después de todo, había una gran cantidad de gente del Iadiza, también mendozino. Eso más que todo se reflejo en la pequeña cantidad de posters expuestos.<br />
<br />
Pero también me gusto como la representatividad de la reunión, vino gente de Chile, Perú, Brasil y México, y pues como siempre, se mantuvo la informalidad de la reunión, y más que todo, el ambito de discusión que se generaba en la sesión de preguntas!<br />
<br />
Y por supuesto, la posibilidad de ir a comer y charlar un rato con viejos y nuevos conocidos al final de cada día :D!<br />
<br />
Nos vemos pues en <b><a href="http://en.wikipedia.org/wiki/Santa_Fe,_Argentina">Santa Fe</a></b> para la undécima reunión!<br />
<br />Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-61914555285867055442011-08-07T18:05:00.002-05:002011-08-07T18:46:39.379-05:00Hennig 30, July 29-August 2, 2011, Sao José do Rio Preto, Sao Paulo, Brazil<div>Just a week ago I was at the <b><a href="http://www.xxxwhs.com.br/en/">30th meeting of the Willi Hennig Society</a></b> (my <a href="http://cladistica.blogspot.com/search/label/hennig%20meeting">third in four years</a>! :D). It was in <a href="http://en.wikipedia.org/wiki/S%C3%A3o_Jos%C3%A9_do_Rio_Preto">Sao José do Rio Preto</a>, an small city in the state of Sao Paulo, Brazil. There is a lot of people! (More than 200! most of them are students!). Here I will try to give an small review of the whole meeting :) [In the same way as I do <a href="http://cladistica.blogspot.com/search/label/hennig%20meeting">in previous ones</a> ;)]</div><div><br /></div><div><b>July 29</b></div><div><br /></div><div>This was the day of the welcome party, I meet with some good old friends and new people. Also, I'm very tired after a long trip from Campinas to Sao Jose xD.</div><div><br /></div><div><b>July 30</b></div><div><br /></div><div>The real meeting starts here, with an small presentation of the presidency of the Willi Hennig (by <b>Rudolf Meier</b>) and the organization committee (<b>Dalton Amorim</b> and <b>Fernando Noll</b>). Then a talk by <b>Mario Viaro</b> about the evolution of the prepositión “ate.” It is nice to see some strong similarities between cladistics and linguistics! But I think that most of the talk is based on more or less informed speculation, I hope that new quantitative approaches (like the one show by <b>Ward Wheeler</b>) will invigorate the field!</div><div><br /></div><div>The first symposium was about bioinformatic tools for the analysis of diseases. <b>Dan Janies</b>, comment of a new way to dealt with they web services of <a href="http://supramap.osu.edu/">SupraMap</a>, and how it evolves from a monolithic application, to a more piecemeal approach (as unix/linux users know it), it will be more flexible and then more useful (And as a developer, a lot easier to maintain!). If you are curious, its new web site is <a href="http://gisbank.bmi.ohio-state.edu/">GisBank</a>.</div><div><br /></div><div>Then <b>Julián Villabona</b>, a long time friend, give a review of the different tools to understand the geographic spreading of <a href="http://en.wikipedia.org/wiki/Dengue">dengue</a>, based on his own previous and current work. I think that the nice lesson is the importance of using new quantitative approaches from historical biogeography, in this clearly phylogeographic framework.</div><div><br /></div><div>There are two more talks on this symposium, but they are more orientated in bioinformatic questions (data mining, and so), a subject that I do not really feel, so I can take anything about it :P.</div><div><br /></div><div>The second symposium is on Phylogenetics and conservation. The first talk, of course, was by <b>Dan Faith</b>, that review his PD measure, that I think is the best way to take phylogeny into account in a diversity framework. He shows some way to expand the measure to complementarity, I personally do not like that approach, as it miss one of the most robust things of the PD measure: that is independent of the sampling.</div><div><br /></div><div>I skip <b>Roseli Pellens</b> talk, but I see the talk of <b>Ronald Clouse</b> about <a href="http://en.wikipedia.org/wiki/Schizomida">Schizomida</a> of Micronesia, both in terms of phylogeny of the group and at population levels. He found some particular things about its distribution, as it seems that the explanation of its distribution is based on long dispersal, but they are very well separated even inside the small islands. I will be looking forward for his publication on this particular data set :D!</div><div><br /></div><div>There is a poster season here, but there were a lot of posters, and most of them on very technical issues of particular groups, which is wonderful :D (I love to see biodiversity research) but I'm very ignorant on most of that groups :P</div><div><br /></div><div><b>July 31</b></div><div><br /></div><div>The third symposium was on biogeography, specially, neotropics. <b>Dalton Amorim</b> shows how the “relationships” among areas shows that there are different historical components on the neotropics, each with different times. Although I don't like the methodology of his work (I'm anti “cladistic biogeography”), I guess that their own study shows that looking for hierarchical patterns in biogeography is not the right route!</div><div><br /></div><div><b>Eduardo Almeida</b> talks about the breakup of Gondwana, and the alternatives. I feel he gives much weight to the “expanding earth” hypothesis. It is important to note that this is a fringe hypothesis in geology, in fact, it is almost never mentioned in books on tectonics :P. Actual plate tectonics is one of the our most powerful theories, so the expanding earth require a more compressive mechanism set. Sadly all the discussion on the expanding earth eclipsed the most interesting part of his talk, that is about the biogeographic patterns of <a href="http://en.wikipedia.org/wiki/Colletidae">Colletidae</a> bees.</div><div><br /></div><div>To end the symposium, <b>Juan Morrone</b> gives a review of some of the american transition zones, in Mexico and in Patagonia. This prompt an interesting discussion, and I feel, like in the talk of Amorim, that their own research shows that the hierarchic classification in biogeography is not feasible.</div><div><br /></div><div>Then contributing papers season start. I was very afraid (there is a lot of people xD), but fortunatelly all the discussion on Juan's talk gives me a nice time to keep my mind and provide a nice starting point for my talk ;).</div><div><br /></div><div>Then <b>Cyrille D'Haese</b> talk about the relationships of a beauty group of colorful and “giant” <a href="http://en.wikipedia.org/wiki/Collembola">collembolans</a> of New Caledonia and South west Asia. <b>Fernando Dagosta</b> discuss the relationships of a <a href="http://en.wikipedia.org/wiki/Characidae">characid group</a> of fishes (I guess that you can ask Marcos about this talk :P jejeje). <b>Jerome Murienne</b> talk was about niche modelling, and how to integrate them into a phylogenetic framework. I think that this is a very difficult topic, and I was gland that Jerome was very cautions on its presentation ;) as more approaches to integrete phylogeny and distribution modelling are brutally <i>ad-hoc</i>. <b>Denis Machado</b> talk was about the phylogeny of freshwater stingray's <a href="http://en.wikipedia.org/wiki/Tetraphyllidea">tapeworms</a>.</div><div><br /></div><div><b>Wei Song Hwang</b> gives a talk about the phylogeny of <a href="http://en.wikipedia.org/wiki/Reduviidae">Reduviidae</a> (specifically <a href="http://en.wikipedia.org/wiki/Reduviinae">Reduviinae</a> subfamily, a non-monophyletic assemblage). It was a terrific talk, on a group that requires an extensive revision although I will prefer more morphological data to be coupled with the molecular data. Anyway, I love this talk. [Side note, I guess it helps that bugs are theo only group that I was on the verge to work with it xD]</div><div><br /></div><div><b>Marcos Mirande</b> shows its update of its phylogeny of <a href="http://en.wikipedia.org/wiki/Characidae">Characidae</a>--there is a lot of characid papers in this meeting! :)--with new characters, new taxa, and molecular sequences. <b>Owen Davies</b>, who I meet in South Africa, study a group of small african birds of the genus <i><a href="http://en.wikipedia.org/wiki/Cisticola">Cisticola</a></i>, and how old taxonomic revision was good and also wrong, I like this appreciations for old works :D. To close the season, <b>Guanyang Zhang</b> talk about the phylogeny of <a href="http://en.wikipedia.org/wiki/Harpactorini">Harpactorini</a>, a tribe of neotropical <a href="http://en.wikipedia.org/wiki/Harpactorinae">Harpactorinae</a>, another grouop of assassin bugs, that, if you live in south America, you can see waiting on leaves with their front legs raised into the air: they have some stiky glands to capture prey, and that was Guanyong main subject.</div><div><br /></div><div>Another poster season, I just have few time to check it out the other posters :-/, as I have my own, and I was very busy there: I have a pair of very good discussions ;).</div><div><br /></div><div><b>August 1</b></div><div><br /></div><div>There is another symposium, this one about techniques for molecular phylogenetics. <b>Lone Aagesen</b> explore some different weighting schemes to dealt with full genomic data and explore some groupings detected under different gene duplications among <a href="http://en.wikipedia.org/wiki/Angiosperms">angiosperms</a>. <b>Torsten Dikow</b> about the effects on combining morphology and molecules in <a href="http://en.wikipedia.org/wiki/Asilidae">Asilidae</a>, as in many cases morphological data set produce an excellent retrieval of actual classification, whereas combined data does not.</div><div><br /></div><div>Then <b><a href="http://www.science3point0.com/palphy/">Ross Mounce</a></b> give a great talk about how ILD was abused in the literature, and why the way in it was presented in publications made most of the results difficult to repeat--If you read <a href="http://www.science3point0.com/palphy/">Ross's blog</a>, you will know that he is, rightfully ;), obsessed with result reproduction!--He also shows how there are several ways to extract information on the results of this test, beyond the probability of the test.</div><div><br /></div><div>As I mentioned before, <b>Ward</b> uses the dynamic homology framework to explore the phylogenetic relationships among <a href="http://en.wikipedia.org/wiki/Uto-Aztecan_languages">uto-aztec languages</a>, I think that this approach provides a real improvement on the analysis of linguistic data, and I am waiting for its publication :D!</div><div><br /></div><div>Then <b>Mario DePinna</b> gives a talk about ontogeny and rooting. I guess that this talk is most on the same line of the works <b>Nelson</b> and <b>Platnick</b>, that I despise, and I thing are hot topic about 20 years ago, but not now.</div><div><br /></div><div><b>Pedro Romano</b> was interested on the use of ordered and unordered multistate characters, and how that decision is not usually well explored in most phylogenetic works. Then <b>Apurva Narechania</b> shows a methodology called “<a href="http://desalle.amnh.org/software.html">Radical</a>” to explore the data concatenation. I think that his approach can be expanded in several ways, for example, looking for stability after adding taxa (instead of characters), that I feel, is a unexplored field.</div><div><br /></div><div><b>Tim Crowe</b> compare the evidence value of nuclear vs. mitochondrial molecular data, and show how their behavior is just not as usually supposed (mitochondria work well on tips, nuclear data work well on deep nodes) in his extensive data set of <a href="http://en.wikipedia.org/wiki/Galliformes">Galliformes</a>.</div><div><br /></div><div><b>Herbert Ferrarezzi</b> explore a way to code polymorphic taxa, instead of using single specimen molecular sequences. <b>Jaime Rodriguez</b> present gives a talk about the use of spectral firms to identify insects, he tries to link it with phylogenies, but I really do not understand how this was done.</div><div><br /></div><div>The talk of <b>Claudia Szumik</b> was about new character systems used in the classification of <a href="http://en.wikipedia.org/wiki/Embioptera">Embioptera</a>. I like her work as it is a clear example that in many groups, the “lack” of informative morphological characters, rest on traditional grounds (i.e. taxonomic research centered on some particular character systems), rather than in a really uninformative morphology.</div><div><br /></div><div>To end the day, <b>Gustavo Hermes</b> speak about a difficult wasp group, the <a href="http://en.wikipedia.org/wiki/Eumeninae">Eumeninae</a>.</div><div><br /></div><div><b>The banquet!</b></div><div><br /></div><div>This day was the banquet, in a place with a lot of food of several sources: fish, shrimps, sushi, meat (a lot!). It was great ;). And of course there are the Banquet speech (about “addiction on cladistics,” an excellent talk given by <b>John Wenzel</b>), and the Society awards for students, both the travel grants (<b>Marie Stoppes</b>) and the <b>Don Rosen</b> award for the best poster (to <b>Rafaela Lopes</b>), the <b>Lars Brundin</b> award for the second student talk (to <b>Gustavo Hermes</b>), and the <b>Willi Hennig</b> award for the best student talk (to me! I was pretty surprised :D, and really happy! :D). Congrats to the winners :), I'm proud of be in such nice company :D!</div><div><br /></div><div><b>August 2</b></div><div><br /></div><div>I must admit that I was pretty tired after two days of brazilian joy ;) so, I just barely play attention to several of this talks :P, and loss the talks from <b>Phillippe Grandcolas</b> and <b>Nobuhiro Minaka</b>.</div><div><br /></div><div><b>Hilton Japyssu</b> talk about how to codify different behavior patterns, in particular grooming on <a href="http://en.wikipedia.org/wiki/Rodent">rodents</a>. They produce a very well supported phylogeny with a lot of this rutines, congruent with several other data sources. Then <b>Carlos Alberts</b>, on the same line work with behavior patterns of <a href="http://en.wikipedia.org/wiki/Neotropical_parrot">Arini</a> parrots.</div><div><br /></div><div>Later, <b>Santiago Catalano</b> present his method about landmark alignment, and how it produces better results than alignments that not take into account the phylogeny. Another hit for the dynamic homology approach.</div><div><br /></div><div>One of the talks I want to hear, is the one by <b>Jan DeLaet</b> on character weighting. He was very interested on implied weighting approaches, but it seems that he prefers linear functions instead of concave ones, so he present some properties for a particular function schema that he call, “self calibrated.”</div><div><br /></div><div>To finish the meeting there is a symposium on theoretical and phylosophical aspects on cladistics. The first talk was by <b>Pablo Goloboff</b> about some improvements to implied weights, that is, to use different weighting functions among different characters, and the possibility to weight blocks of characters instead individual characters (that is mostly for molecular data).</div><div><br /></div><div><b>James Carpenter</b> gives a talk about the meaning of homology vs. synapomorphy. Of course, synapomorphy is not homology, as you can also have homology in symplesiomorphy! In the same line <b>Kevin Nixon</b> (who was not there, but send a video of his talk) was on the same line. This might be an old fashion discussion, but given that there is a lot of recent publications by people like <b>Malte Ebach</b>, <b>David Williams</b> and company (they publish a book, and have several papers in journals like <a href="http://www.mapress.com/zootaxa/list/2011/2946.html">zootaxa</a>) it is important to recall this arguments again.</div><div><br /></div><div><b>Andy Brower</b>, tries to show how really most of objections on parsimony are not so strong, and that actually, parsimony is not as bad as their criticizers argue: the results are nearly identical with alternative methods. There are several topics I agree with Andy, but there are others that not, mostly he uses some sociological explanations in some cases, but ignore them in others (and of course, I'm very realist :P ejeje, but that is my own problem xD).</div><div><br /></div><div>The second talk of <b>Jan</b> was about the topics touched on its 2005 paper, that is, about the use of gaps weighting and how they are related to dynamic homology, and of course, why really using everything in 1, is not really a straight forward consequence of using parsimony.</div><div><br /></div><div>To finish, <b>Steve Farris</b> criticize the most recent attempts of users of 2 taxon analysis approach (already mentioned: Ebach, Williams, Nelson, Platnick), and how they change their own words when new criticisms where made.</div><div><br /></div><div><b>Overview</b></div><div><br /></div><div>A very long piece here :P! It was a very nice meeting. With a lot of students, that as great, and I think the most important objective of the WHS: to bring students into phylogenetics. But there is disappointment, apart from brazilian students there are few from other countries. I guess that it is a consequence of recent economic downside, as there are just few US students (3 or 4), and just one European students (just Ross). It is shocking when you see such small representation from first world countries. Representation from latinamerica is also scarce: just one from Argentina (were was everybody?), and nobody from other latin American countries. Of course, there are some colombians working on Brazil, but they count as Brazilian students (as its fundings are given by brazilian institutions). I don't know what happens, it is not lack of publicity: there is the same amount as in any other Hennig meeting. It is not the price, after all, this is one of the cheapest international meetings out there!</div><div><br /></div><div>Nevertheless, that is not a problem of the organization, so I just can tell that the meeting was great, a lot of students, a nice people, and several interesting talks and posters :) Now, it is time to think on the next one, which will be somewhere in the U.S., hopefully I can made it :D!</div><div><br /></div><div><b><i>Acknowledgments</i></b></div><div><i>Of course, a lot of fundings is required to do this trip, and I want to acknowledge the support given by the <b>FONCyT</b>, <b>CONICET</b> and the <b>INSUE</b>, and the <b>Willi Hennig Society</b> that gives me a <b>Marie Stoppes award</b>, and the Organization committee that give us a discount rate at the hotel, and everyday lunch ;)! </i>Obrigado<i>! :D</i></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-31210786454657899462011-02-13T12:01:00.003-05:002011-02-13T12:06:57.883-05:00¿Quien es un cladista?<div style="text-align: right;"><a href="http://cladistica.blogspot.com/2011/02/who-is-cladists.html"><i><span class="Apple-style-span" >English version</span></i></a></div><div><br /></div><div>Hace algún tiempo, alguien me preguntó en que se diferenciaba la cladística de los otros métodos filogenéticos. Para mucha gente, la respuesta es simple: un cladista es el que usa parsimonia (e.g. [1][2]).</div><div><br /></div><div>Yo creo que la parsimonia es muy importante para los cladistas, pero no creo que uno sea cladista solo cuando usa parsimonia. Hay muchos artículos de autores que usan parsimonia, pero que no creo que sean artículos cladísticos. También hay trabajos de autores que no usan parsimonia, pero que están claramente dentro del marco cladístico (Pienso en los autores lejendarios: Hennig, Brundin, Wygodzinsky etc., todos ellos cladistas, pero ninguno uso parsimonia, al menos de una manera explícita [=numérica]).</div><div><br /></div><div>Entonces, si no es un algoritmo ¿donde esta la diferencia? ¿cuando uno es un cladista?</div><div><br /></div><div>Una parte escencial del pensamiento cladístico es la monofilia, pero actualmente la monofilia se entiende como un termino topologico (esto es, solo la relación representada en el árbol), pero creo que este pasaje de Hennig [3] es claro:</div><div><blockquote>“La suposición de que dos o más especies están más cercanamente relacionadas entre si que con cualquier otra especie, y por ello forman un grupo monofilética, solo puede ser confirmada demostrando la presencia en común de un carácter derivado (“sinapomorfía”). Cuando ese carácter se a demostrado, entonces la suposición ha confirmado que lo han heredado del ancestro común únicamente para esas especies que muestran el carácter.”</blockquote></div><div>Entonces, para un cladista, la monofilia no es solo la relación, sino los caracteres que apoyan esa relación. Cuando un cladista responde a la pregunta “¿es este grupo monofilético?” el /ella no muestra únicamente un árbol, sino además los caracteres que apoyan ese agrupamiento.</div><div><br /></div><div>Entonces, la cladística no es sobre el algoritmo en particular usado para inferir las relaciones, sino sobre los caracteres que apoyan esos grupos. No es extraño entonces que la mayor parte de los cladistas usen morfología en sus análisis. Aún así, usando solo datos moleculares, se puede ser un cladista, cuando al referirse a calda clado, se discute también las sinapomorfías de dicho clado (sean moleculares y/o morfologicas). Después de eso, uno puede preferir cierto algoritmo sobre otro.</div><div><br /></div><div>Aquí va un ejemplo, estos dos artículos, uno es de Wiens et al. [4] sobre la filogenia de los <a href="http://en.wikipedia.org/wiki/Squamata">Escamados</a>, y el otro es de Beutel et al. [5] sobre la filogenía de <a href="http://en.wikipedia.org/wiki/Holometabola">Holometabol</a>a. Ambos artículos usan parsimonia y análisis bayesiano de sus datos, y ambos parecen preferir los resultados del árbol del análisis bayesiano. Ambos artículos tienen más o menos el mismo tamaño (en cuanto a páginas), discuten las relaciones de grupos de gran diversidad y usan conjuntos de datos morfológicos y moleculares. Uno es claramente un trabajo cladístico, y el otro no.</div><div><br /></div><div>Si uno mira el artículo de Beutel et al., uno se encuentra con un montón de discusión sobre los caracteres que apoyan cada clado. Para ellos, el apoyo no es solo el valor del apoyo de Bremer, la frequencia de Jackknife o la probabilidad Bayesiana, todo eso es importante por su puesto, pero no tiene sentido sin una referencia explicita a los caracteres que en el nodo. Entonces, así ellos prefieran el análisis bayesiano, ellos continúan siendo cladístas.</div><div><br /></div><div>Del otro lado, esta el artículo de Wiens et al. Para estos autores, lo único importante son las relaciones, ellos discuten grupos y probabilidades bayesianas, pero nunca discuten ningún carácter de manera explicita para ningún grupo. Entonces, incluso si Wiens et al. solo hubieran usado parsimonia, ellos no son cladistas: los caracteres no son importantes para ellos.</div><div><br /></div><div>Un cladista no es que escribe un artículo con las ultimas estrategías de búsqueda, o las medidas de apoyo, o la mayor cantidad de nuevos datos moleculares, o usa parsimonia. Todo eso es de gran importancia. Pero en un artículo cladístico, lo importante son los caracteres que apoyan la filogenía. Un buen artículo cladístico es un artículo sobre los caracteres.</div><div><br /></div><div><b><span class="Apple-style-span">Referencias</span></b></div><div><span class="Apple-style-span">[1] Felsenstein, J. 2001. The troubled growth of statistical phylogenetics. <i>Syst. Biol</i>. 50: 465-467. Doi: <a href="http://dx.doi.org/10.1080/10635150119297">10.1080/10635150119297</a> [disponible gratis en el sitio de Syst. Biol.]</span></div><div><span class="Apple-style-span">[2] Williams, D.M., Ebach, M.C. 2007. <i>Foundations of systematics and biogeography</i>. Springer, New York (USA).</span></div><div><span class="Apple-style-span">[3] Hennig, W. 1965. Phylogenetic systematics. Ann. Rev. Entomol. 10: 97-116. Doi: <a href="http://dx.doi.org/10.1146/annurev.en.10.010165.000525">10.1146/annurev.en.10.010165.000525</a> [disponible gratis <a href="http://rapinidep1.webs.com/origin/Hennig_1965.pdf">aquí</a>]</span></div><div><span class="Apple-style-span">[4] Wiens, J.J. et al. 2010. Combining phylogenomics and fossils in higher-level squamate reptile phylogeny: molecular data change the placement of fossil taxa. <i>Syst. Biol</i>. 59: 674-658. doi: <a href="http://dx.doi.org/10.1093/sysbio/syq048">10.1093/sysbio/syq048</a> </span>[disponible gratis en el sitio de Syst. Biol.]</div><div><span class="Apple-style-span">[5] Beutel, R.G. et al. <i>In press</i>. Morphological and molecular evidence converge upon a robust phylogeny of the megadiverse Holometabola. <i>Cladistics</i>. Doi:<a href="http://dx.doi.org/10.1111/j.1096-0031.2010.00338.x">10.1111/j.1096-0031.2010.00338.x</a> [disponible gratis en el sitio de Cladistics]</span></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-42173778521683703152011-02-12T12:26:00.009-05:002011-02-13T12:07:59.972-05:00Who is a cladist?<div style="text-align: right;"><i><span class="Apple-style-span" ><a href="http://cladistica.blogspot.com/2011/02/quien-es-un-cladista.html">Versión en español</a></span></i></div><div><br /></div><div>Some time ago, someone ask me about which makes cladistics different from other phylogenetic approaches. For most people the answer is straightforward: a cladist is the one that uses parsimony (e.g. [1][2]).</div><div><br /></div><div>I think parsimony is very important for cladists, but I do not think that you are only a cladists when use parsimony. There is a lot of papers from author that use parsimony, but which I'm not think that are cladistic papers. Also there are a lot of works form author that do not use parsimony, but they are clearly under the cladistic framework (I think on the old one authors: Hennig, Brundin, Wydodzinsky, etc., all of them are cladists, but no one uses parsimony, at least in an explicit [=numerical] way).</div><div><br /></div><div>So, if it is not an algorithm, where is the difference? When are you a cladists?</div><div><br /></div><div>A key part of cladistic thinking is monophyly, but monophyly actually is usually understood as a topological term (i.e. just the relationships depicted on a tree), but I think this passage from Hennig [3] is clear:</div><div><blockquote>“The supposition that two or more species are more closely related to one another than to any other species, and that, together they form a monophyletic group, can only be confirmed by demonstrating their common possession of derivative characters (“synapomorphy”). When such character have been demonstrated, then the supposition has been confirmed that they have been inherited from an ancestral species common only to the species showing these characters.”</blockquote></div><div>Then, for a cladist, monophyly is not just about the relationship, but the characters that support such relationship. When a cladist answer the question “Is this group monophyletic?” he/she not only shows a tree, he/she also shows the characters that support such grouping.</div><div><br /></div><div>Then cladistics is not about the particular algorithm used to infer the relationships, but about the characters that support such groups. It is not estrange then that most cladists used morphology in their analyzes. But even, using just molecular data, you can be a cladist, when referring to each clade you are also discussing the synapomorphies of that clade (either molecular and/or morphological). Then also, you might prefer some particular algorithm over another.</div><div><br /></div><div>Here is an example, there are two papers, one by Wiens et al. [4] about the phylogeny of <a href="http://en.wikipedia.org/wiki/Squamata">Squamates</a>, and other from Beutel et al. [5] on the phylogeny of <a href="http://en.wikipedia.org/wiki/Holometabola">Holometabola</a>. Both papers use parsimony and bayesian analysis on their data, and both seems to prefer the tree resulting from the bayesian analysis. Both are about the same size (in pages), and discuss highl level relationships of a largely diverse group using both molecular and morphological data sets. One of this works is clearly a cladistic work, and the other not.</div><div><br /></div><div>If you look to Beutel et al. paper, you will find a lot of discussion about the characters that support each clade. For them, support is not just the Bremer' support value, jackknife frequency or Bayesian probability, they are important of course, but they are meaningless without an explicit reference to the characters on the node. So, even if they prefer Bayesian analysis, they continue to be cladistis.</div><div><br /></div><div>On the other hand, you have de Wiens et al. paper. For that authors, just the relationships are important, they discuss groupings and bayesian probabilies, but no discussion on any explicit character for any group is made. Then, even in the case of Wiens et al. only use the results of parsimony, they are not cladists: characters are not important for them.</div><div><br /></div><div>A cladist is not the one which write a paper with the more up-to-date search strategies, or support measures, or larges amounts of new molecular data, or parsimony analysis. All of that things are important. But in a cladistic paper, the important think are the characters that support the phylogeny. A good cladistic paper is a paper about the characters.</div><div><br /></div><div><b><span class="Apple-style-span">References</span></b></div><div><span class="Apple-style-span">[1] Felsenstein, J. 2001. The troubled growth of statistical phylogenetics. <i>Syst. Biol</i>. 50: 465-467. Doi: <a href="http://dx.doi.org/10.1080/10635150119297">10.1080/10635150119297</a> [available free at Syst. Biol. site]</span></div><div><span class="Apple-style-span">[2] Williams, D.M., Ebach, M.C. 2007. <i>Foundations of systematics and biogeography</i>. Springer, New York (USA).</span></div><div><span class="Apple-style-span">[3] Hennig, W. 1965. Phylogenetic systematics. Ann. Rev. Entomol. 10: 97-116. Doi: <a href="http://dx.doi.org/10.1146/annurev.en.10.010165.000525">10.1146/annurev.en.10.010165.000525</a> [available free <a href="http://rapinidep1.webs.com/origin/Hennig_1965.pdf">here</a>]</span></div><div><span class="Apple-style-span">[4] Wiens, J.J. et al. 2010. Combining phylogenomics and fossils in higher-level squamate reptile phylogeny: molecular data change the placement of fossil taxa. <i>Syst. Biol</i>. 59: 674-658. doi: <a href="http://dx.doi.org/10.1093/sysbio/syq048">10.1093/sysbio/syq048</a> [available free at Syst. Biol. site]</span></div><div><span class="Apple-style-span">[5] Beutel, R.G. et al. <i>In press</i>. Morphological and molecular evidence converge upon a robust phylogeny of the megadiverse Holometabola. <i>Cladistics</i>. Doi:<a href="http://dx.doi.org/10.1111/j.1096-0031.2010.00338.x">10.1111/j.1096-0031.2010.00338.x</a> [available free at Cladistics site]</span></div><div><span class="Apple-style-span"><br /></span></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com4tag:blogger.com,1999:blog-19077731.post-77219348652439977672010-11-27T12:53:00.004-05:002010-11-27T13:24:14.861-05:00IX Reunión Argentina de Cladística y Biogeografía, La Plata (15-17 nov 2010)<div>Hace unos días termino la <a href="http://www.racb2010.com.ar/">IX Reunión Argentina de Cladística y Biogeografía</a>, hubiera querido hacer un poco de <i>live-blogging</i>, pero pues estuve mucho con la gente (lo cual, aunque "malo" para el blog, es bueno para mi xD), "hablando" hasta tarde, y comentando de todo :). De todas, maneras, así sea con unos días de más, esta es mi impresión de la reunión (al menos, en su parte académica! xD).</div><div><br /></div><div>En general mucha gente, se que fueron alrededor de 150 personas, aparte de muchas conferencias, hubo un montón de posters ;). En general, pues apenitas si medio ojeé los posters (eran muuchos!), y uno prefiere usar el <i>coffee break</i> para hablar por ahí :P. Las charlas, en cambió, las vi casi todas ;), y es de lo que voy a hablar. Me refiero en singular a los oradores, aunque muchos de sus trabajos fueron trabajos colaborativos!</div><div><br /></div><div><b>Lunes, 15 nov</b></div><div><br /></div><div>La inauguración corrió por cuenta de las autoridades universitarias y del museo, y pues del comité organizador, con la conferencia de apertura de <b>Jorge Crisci</b>, una de las figuras más importantes del <b>museo de La Plata</b>. Era sobre algunas de las ideas de <b>Darwin</b> sobre evolución, y como el componente biogeográfico jugo un factor importante en la elaboración de sus ideas.</div><div><br /></div><div>Más tarde <b>Gonzalo Giribet</b> hablo sobre las nuevas formas de adquirir datos moleculares, y como esa fuente masiva de datos a impactado nuestro conocimiento de la filogenia de <a href="http://en.wikipedia.org/wiki/Metazoa">Metazoa</a>. Más tarde <b>Martín Ramírez</b> presento como va progresando el <a href="http://www.sndb.mincyt.gob.ar/">portal de datos de biodiversidad de Argentina</a>. Una de las cosas que me gusta de la posición de Martín es como el ve las colecciones como un patrimonio del estado, y como el hacer publico los datos puede ser benéfico!</div><div><br /></div><div>En la tarde fue el simposio de <b>Biogeografía</b>, que organizo <b>Sergio Roig</b>. La primera parte fue sobre filogeografía, donde <b>Agustina Ojeda</b> hablo de unos <a href="http://en.wikipedia.org/wiki/Tympanoctomys_barrerae">pequeños roedores cavernicolas</a> de Mendoza. <b>S. Poljack</b> estudió unos armadillos argentinos conocidos como <a href="http://en.wikipedia.org/wiki/Chaetophractus_villosus">peludos</a>, mientras <b>M. Ferrer</b> estudio la relación entre <a href="http://en.wikipedia.org/wiki/Oxycorynini">un gorgojo</a> y una <a href="http://en.wikipedia.org/wiki/Hydnoraceae">planta</a> que parasita al algarrobo.</div><div><br /></div><div>Después vinieron un par de charlas que por algún misterioso motivo, Sergio etiqueto como "clásicas", la mía no estaba ahí pero pues yo creo que lo que hago es herencia directa de <b>Hennig</b> y <b>Brundin</b> ;), supongo que eso es lo "clásico"? <b>Juan Morrone</b> habló de las "zonas de transición"que el ha trabajado: los andes y las sierras madre de México. Luego <b>Paula Posadas</b> mostró un trabajo bibliográfico sobre <i>Journal of Biogeography</i> y como en los últimos años, el número de papers de filogeografía a incrementado notablemente.</div><div><br /></div><div><b>Martes, 16 nov</b></div><div><br /></div><div>Llegue un poco tarde... así que me perdí la charla de Amelia :P. Luego <b>Ignacio Escapa</b> presento un laburo del que yo sabía un poco por <b>Santiago Catalano</b>, el co-autor, era sobre la <a href="http://en.wikipedia.org/wiki/Araucariaceae">araucarias</a> y pues realizaron varios experimentos muy interesantes :D. Justo después, <b>Marcos Mirande</b>, que también labura en el lillo, y por ello más o menos sabía de que era también, presento una continuación de su trabajo con <a href="http://en.wikipedia.org/wiki/Characidae">characidae</a>, esta vez enfocado en un grupo particularmente modificado. <b>Anyelo Vanegas</b>, otro colombiano que labura también con Marcos, mostró los avances en otra parte de la rama de esta familia particularmente diversa de peces. Al final de la sesión, <b>M. Alberdi</b> (creo) habló sobre la biogeografía de los “<a href="http://en.wikipedia.org/wiki/Gomphotheriidae">elefantes</a>” que vivieron en suramerica durante el Pleistoceno.</div><div><br /></div><div>En la segunda sesión de la mañana <b>Lone Aagesen</b> estuvo hablando sobre los endemismos del área de las <a href="http://en.wikipedia.org/wiki/Yungas">yungas</a> y al zona nor-este de Argentina, así como la relación de esos endemismos para vegetales y las condiciones climatológicas. Luego <b>Luis Acosta</b> mostró como diferentes modelos climaticos pueden dar ideas muy diferentes en organismos con muestreo intensivo (unas especies de <a href="http://en.wikipedia.org/wiki/Opiliones">opiliones</a>) y como es posible relacionar esos resultados con el laburo de campo. <b>Tania Escalante</b> hablo sobre las áreas de endemismo de algunos roedores norteamericanos y como se relacionan las áreas de endemismo y las distribuciones modeladas. <b>Facundo Labarque</b> contó su experiencia y resultados con un inventario de arañas de Panamá, yo había visto a Facu dar una charla más detallada hace poco, fue un tremendo esfuerzo eso, y <b>Martín Ramírez</b> en una conferencia bien particular nos contó acerca de como se desarrollo el laburo, específicamente, sobre el costo humano de ese proyecto.</div><div><br /></div><div>Por la tarde, <b>Miquel Arnedo</b> redondeo una reunión con un enorme componente filogeográfico, con una revisión y muchos ejemplos de su laburo con arañas. Yo nunca he sido muy fan de la "filogeografía", pero siempre me ha gustado el trabajo de Miquel, me parece a la vez bien abarcativo, y a la vez como bien enfocado en una cuestión. Despues vino como la primera sesión del simposio de trabajos empíricos (organizado por <b>Adriana Marvaldi</b>) pero yo me sentía muy cansado, así que preste poca atención :P.</div><div><br /></div><div>Al final de la tarde, Gonzalo hablo esta vez de los Opiliones y de su filogenia y biogeografía y como el a usado a estos arachnidos para contrastar o corroborar varias hipótesis biogeográficas. Luego <b>Diego Pol</b> hablo sobre <a href="http://en.wikipedia.org/wiki/Saurischia">nuevos dinos</a> que se han encontrado en patagonia, y sobre la importancia particular de esos fosiles en la filogenia y biogegrafia de los dinosaurios (en especial, su implicación en nuestra comprensión en la ruptura de <a href="http://en.wikipedia.org/wiki/Pangea">Pangea</a>). Al final <b>Adriana Marvaldi</b>, hablo, como no xD, de la filogenía de los <a href="http://en.wikipedia.org/wiki/Curculionoidea">Curculionidos</a>, de las coincidencias y diferencias entre la evidencia molecular y mofológica y los prospectos futuros en estos insectos.</div><div><br /></div><div>Para finalizar el día, fue la "primera reunión" de la <b>sociedad Argentina de taxonomía y sistemática</b>, donde se discutió sobre las cosas que vienen, y lo que se ha hecho.</div><div><br /></div><div>Esa noche fue la cena del congreso, y pues la charla corrió a cargo de Santí y Nacho, con una aparición especial de Marcos xD... Fue una charla muy graciosa ;).. bien hecho! :D!</div><div><br /></div><div><b>Miercoles 17 nov</b></div><div><br /></div><div>El día después de la fiesta llegue tarde (de nuevo xD) a las charlas de la mañana. No solo fue la trasnochada de la noche anterior :P, jejeje, también tenía que hacer el <i>check-out</i> y eso siempre me pone todo azarado :P... Lastima me perdí una charla sobre chinches que quería ver :(</div><div><br /></div><div><b>V. Pereyra</b> (creo) hablo sobre las relaciones filogenéticas en los <a href="http://en.wikipedia.org/wiki/Entiminae">Entiminae</a>, un grupo muy diverso de gorgojos. <b>Pablo Goloboff</b>, dio una de las charlas más importantes (a nivel metodológico) sobre nuevas estrategias en el uso de pesos implicados que fueron implementadas en <a href="http://www.zmuc.dk/public/phylogeny/tnt/">TNT</a> hace poco menos de un mes. <b>Claudia Szumik</b> presento una de las charlas empíricas que más me gusto, sobre varios caracteres nuevos para las relaciones de los <a href="http://en.wikipedia.org/wiki/Embioptera">Embiopteros</a> (su laburo de toda la vida :D), y sobre potenciales fuentes de aún más información. <b>Mariano Donato</b> hablo sobre los efectos de utilizar caracteres continuos es un grupo de <a href="http://en.wikipedia.org/wiki/Chironomidae">Chironomidos</a>. <b>Amelia Chemisquy</b> mostró potenciales efectos en las medidas de apoyo que se deben más que todo al tamaño de los grupos (más que al apoyo en sí).</div><div><br /></div><div>En la tarde, la charla plenaria era de <b>Maria Cigliano</b>, quien mostró la increíble experiencia del <i><a href="http://orthoptera.speciesfile.org/HomePage.aspx">Orthoptera file online</a></i>, un enorme esfuerzo de los taxónomos de ortópteros, y se me hace un trabajo ejemplar en lo que tiene que ver con “<i>cyber-taxonomía</i>”. (En realidad, yo no vi la charla, pero vi una presentación preliminar hace unos meses ;) ejejeje).</div><div><br /></div><div>El simposio de metodología (organizado por Pablo) cerro la reunión, <b>D. Gutson</b> hablo sobre un método estadístico para evaluar la potencial posición geográfica de los virus en una filogenia. A decir verdad, no estoy muy seguro de la justificación de su método. <b>Juliana Sterli</b>, hizo una excelente presentación sobre los diferentes efectos de los relojes moleculares, en particular, ella uso las <a href="http://en.wikipedia.org/wiki/Testudines">tortugas</a> y pues creo, hizo el test que yo siempre había deseado ver: que tanto se parece lo que se estima, con lo que se sabe en cuanto a relojes moleculares? En este simposio también hable yo, de lo de siempre, así que no hay mucho que agregar ;). Luego <b>Santiago Catalano</b>, mostró nuevas ideas sobre como la optimización de <i>landmarks</i>, y de como atacar específicamente el problema del alineamiento de los <i>landmarks</i> (gran charla!). <b>Pablo</b>, en su segunda charla del día, hablo esta vez sobre el efecto de los análisis con super-matrices y de como ciertos nuevas metodologías de "búsqueda" (basadas en búscar menos :P) pueden ser terriblemente afectadas! Para terminar <b>Ignacio</b>, dió su segunda charla de la reunión, esta vez sobre la identificación y efecto de los terminales inestables en el apoyo. Una cosa super-interesante, pues que a pesar de sonar super-evidente, creo nunca ha hecho un examen explicito de la relación directa entre taxones estables y apoyo, y por lo tanto, como se afecta la estabilidad a nivel de árboles suboptimos.</div><div><br /></div><div>Una muy buena reunión, con muchas ideas interesantes, y pues me alegra ver como la comunidad de la gente que hace filogenia, y taxonomía, tiene un gran grupo dentro de Argentina, y que hay interés y continuidad en todos los niveles académicos :)!</div><div><br /></div><div>Ahora a esperar otoño del 2012 en <b>Mendoza</b> ;)!</div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-86753480751502400232010-05-27T13:34:00.002-05:002010-05-27T13:48:15.398-05:00Hennig XXIX – Día 4 (26 mayo 2010)<div>El último día de las charlas de la <b>Willi Hennig</b> tiene el problema que esta <a href="http://cladistica.blogspot.com/2010/05/hennig-xxix-dia-3-25-mayo-2010.html">el día después del banquete</a>... pero tiene también el aliciente que suele reunir las charlas de muchas de las figuras establecidas del campo :)</div><div><br /></div><div>La primera charla le correspondió a <b>James Carpenter</b> quien menciono los resultados del proyecto del “árbol de la vida” de <a href="http://en.wikipedia.org/wiki/Hymenoptera">Hymenoptera</a>, en especial de <a href="http://en.wikipedia.org/wiki/Aculeata">Aculeata</a> que es la parte que le corresponde a el. La charla me pareció muy buena, pero me gusto más la discusión que siguió, en especial cuando Jim llamo la atención que usar caracteres aditivos es más conservativo que dejarlos como no aditivos!</div><div><br /></div><div><b>Fuki Saito</b> estudió la filogenia de la avispa <a href="http://en.wikipedia.org/wiki/Ropalidia"><i>Ropalidia</i></a>, en especial el origen de sus colonias por enjambre. Por la misma onda <b>Jun'ichi Kojima</b> se enfoco en un <a href="http://en.wikipedia.org/wiki/Stenogastrinae">grupo de avispas</a> y de la aparción y desparición de los “ayundates” (por lo que entendí, es una especie de proto-obreras).</div><div><br /></div><div><b>Albert Prieto-Márquez</b> presento una charla sobre <a href="http://en.wikipedia.org/wiki/Hadrosaurid">Hadrosauridae</a>, esta fue la primera charla que veo sobre un grupo de dinosaurios no avianos, lo cual me pareció muy bueno desde el punto de vista de mi alegría infantil xD. Entre los puntos que más generó discusión fue el desarrollo de su análisis biogeográfico.</div><div><br /></div><div>Después <b>Ulf Jondelius</b> discutió los últimos adelantos sobre la filogenia de <a href="http://en.wikipedia.org/wiki/Acoela">Acoela</a>, el grupo hermano de todos los demás bilaterales. Aunque es un grupo primordialmente estudiando mediante moléculas, consiguieron algo más de 35 caracteres morfológicos, lo cual en este grupo es realmente muy complicado.</div><div><br /></div><div>Seguía una charla de <b>Lauri Kaila</b>, pero como no pudo venir, su charla la dio <b>Maria Heikkilä</b>. Sus resultados mostraron lo difícil que ha sido encontrar evidencia molecular para el enorme clado de mariposas <a href="http://en.wikipedia.org/wiki/Ditrysia">Ditrysia</a>.</div><div><br /></div><div><b>Nobuhiro Minaka</b> hablo sobre el uso de la transformación de Gromov para medir indices de diversidad.</div><div><br /></div><div><b>Pablo Goloboff</b> dio una charla que me gusto mucho (no es porque sea mi jefe xD, es más bien que he visto como desarrolla muchas de las cosas que mostró) sobre algunos de los problemas que tienen los programas que usan máxima verosimilitud a la hora de medir el apoyo.</div><div><br /></div><div>La charla de <b>Daniel Janies</b> me gusto también, era sobre la dispersión geográfica de enfermedades y de como se asocian ciertos fenotipos con la expansión (<i>outbreak</i>) del virus y ciertas mutaciones. Eso usando su porgrama <a href="http://routemap.osu.edu">Routemap</a> y Google earth.</div><div><br /></div><div><b>Torsten Dikow</b> menciono muchas de las cosas que ha realizado para <a href="http://www.eol.org/">EOL</a>, de cierta manera, era como la continuación de lo <a href="http://cladistica.blogspot.com/2008/10/hennig-xvii-live-blogging-day-3.html">que dio en Tucumán</a>, ahora más sofisticado. Me gusto la discusión que siguió bien orientada a la desorganización existente en el manejo de información biológica/taxonómica.</div><div><br /></div><div><b>Jyrki Mouna</b> dio una bonita presentación sobre varios <a href="http://en.wikipedia.org/wiki/Coleoptera">coleopteros</a> que de alguna manera se diversificaron recientemente en los <a href="http://en.wikipedia.org/wiki/Boreal_forest">bosques finlandeses/escandinavos</a>. Su conocimiento de la fauna y flora de esa región me impresiono bastante!</div><div><br /></div><div>Para terminar, <b>Steve Farris</b> hablo sobre algunos lejendarios ataques a la parsimonia, y de su relación con algunas propuestas y discusiones recientes, fue muy entretenida.</div><div><br /></div><div>Jyrki termino el meeting con algunas palabras como presidente.</div><div><br /></div><div>En general me gusto mucho. Es cierto que en comparación con el meeting de Tucumán fue mucho más pequeño, pero pues me parece que el comité organizador hizo una gran labor, no solo consiguiendo precios competitivos para la estancia en Honolulu, además dio un gran apoyo a los estudiantes y en todas las recepciones hubo comida más que suficiente ;).</div><div><br /></div><div>Además, pues la playa, el mar, y el sol no tienen precio :)</div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-21067418401969419282010-05-26T12:52:00.002-05:002010-05-26T12:58:13.066-05:00Hennig XXIX – Día 3 (25 mayo 2010)<div>Fue el día libre del meeting. Yo me uní a un grupo que fue de <i>hicking</i> a un sitio desde donde se veía <i><a href="http://en.wikipedia.org/wiki/Diamond_Head,_Hawaii">Diamond head</a></i>, uno de los últimos volcanes de <a href="http://en.wikipedia.org/wiki/Oahu">O'ahu</a>. Nuestros guías, <b>Jason</b> y <b>Tim</b> nos mostraron infortunadamente un montón de plantas introducidas :-(... Pero el lugar es muy bonito, y la vista de la playa, y la caldera del volcán era genial!</div><div><br /></div><div>En la noche, fue el banquete, donde como ha sido un patrón ya establecido en este meeting, la comida fue muy buena, exótica y abundante. <b>Gonzalo</b> dio la charla del banquete, que estuvo muy divertida ;)!</div><div><br /></div><div>Y también se entregaron los premios para estudiantes, el 3er lugar (<b><i>Don Rosen Award</i></b>) fue para <a href="http://cladistica.blogspot.com/2010/05/hennig-xxix-dia-1-23-mayo-2010.html">Jairo</a>, el 2do lugar (<i><b>Lars Brundin award</b></i>) fue para mi :D! Y el 1er lugar (<b><i>Willi Hennig Award</i></b>) fue para <a href="http://cladistica.blogspot.com/2010/05/hennig-xxix-dia-1-23-mayo-2010.html">Pras</a><a href="http://cladistica.blogspot.com/2010/05/hennig-xxix-dia-2-24-mayo-2010.html">hant</a>. Estoy muy contento de estar ahí (y además hubo dos colombianos premiados!! :D)</div><div><br /></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-83007661646393054332010-05-25T12:29:00.002-05:002010-05-25T13:00:09.116-05:00Hennig XXIX - Día 2 (24 mayo 2010)<div>Hoy fue un día un poco más “distendido” para mi :P pues tenía que dar mi <i>paper</i>, así que pues las minireseñas serán más pequeñas :P</div><div><br /></div><div>Mi amiga <b>Ivonne Garzón</b> hablo sobre la filogenia de <a href="http://en.wikipedia.org/wiki/Cracker_butterflies"><i>Hamadryas</i></a>, unas mariposas que entre otras cosas, tienen la capacidad de hacer un ruidito, así que usando tanto datos morfológicos, como moleculares se preocupo, entre otras cosas, por detectar la historia de esa capacidad sonora.</div><div><br /></div><div><b>Alejandro Oceguera</b>, que había venido al <i>meeting</i> de Tucumán realizó un análisis molecular extensivo de <a href="http://en.wikipedia.org/wiki/Glossiphoniidae">Glossiphoniidae</a>, un grupo de <a href="http://en.wikipedia.org/wiki/Hirudinea">sanguijuelas</a>. Infortunadamente era justo antes de mi charla, así que vi solo la mitad :-(.</div><div><br /></div><div>Luego vino mi charla. Si alguno vio la pelí “<a href="http://en.wikipedia.org/wiki/The_Scout"><i>El busca talentos</i></a>” (es un clásico del cine beisbolero), o al menos, el principio, sabrá como me sentía :P. Es una comparación exagerada claro xD. Como sea, yo hable de lo que he estado laburando todo este tiempo, es decir, de metodología en biogeografía.</div><div><br /></div><div><b>Tim Crowe</b>, continua con su acumulación de evidencia sobre la filogenia de <a href="http://en.wikipedia.org/wiki/Galliformes">Galliformes</a>, mostrando algunos de los problemas de usar algunos tipos de datos.</div><div><br /></div><div>Vinieron los <i>posters</i>. Yo tenía un poster para mostrar (en colaboración con <b>Dolores Casagranda</b>), pero en mis olvidos se quedo en algún lugar de BsAs xP. Afortunadamente, gracias a <b>Pablo Goloboff</b>, <b>Mark Siddall</b>, <b>Tim Gallaher</b> y <b>Stephanie Stephen</b> pude conseguir ubicar el poster a tiempo! <b>Vanessa Gonzalez</b> que había estado en Tucumán, mostró un poster sobre la filogenia de un grupo muy diverso de <a href="http://en.wikipedia.org/wiki/Heterodonta">bivalvos</a>, me hubiera gustado que hubiera presentado esos resultados en una charla. <b>Thomas Stach</b> mostro una enorme acumulación de evidencia molecular para tratar de resolver las relaciones de los <a href="http://en.wikipedia.org/wiki/Deuterostome">deuterostomos</a>.</div><div><b>Marianna Teräväinen</b> mostró los resultados de un análisis cladístico para reconocer las tradiciones medicinales de Vietnam, esa clase de trabajos donde se muestra el uso de análisis filogenéticos en otros contextos, donde claramente es aplicable me gusto mucho!</div><div><br /></div><div>Volvieron las presentaciones, y <b>Ward Wheeler</b> dio una conferencia excelente, mostrando la relación entre modelos de <i>likelihood</i> y parsimonia de Sankoff. Estoy ansioso por ver sus resultados publicados y su reacción en la comunidad filogenética!</div><div><br /></div><div><b>Ross Mounce</b> comparo las relaciones entre particiones morfológicas (no siempre reconocidas) enfocándose en caracteres craneales versus caracteres no craneales y uso varias medidas para detectar que tan congruentes son, en un buen número de matrices de vertebrados.</div><div><br /></div><div>Para terminar la mañana, <b>Niels van Steenkiste</b> dio su charla sobre las relaciones de Rhabdocoela, un grupo de <a href="http://en.wikipedia.org/wiki/Flatworm">platyhelmintos</a>, en especial la relación entre los linajes marinos y los de agua dulce.</div><div><br /></div><div>En horas de la tarde <b>Lenka Drábková</b> uso su trabajo en <a href="http://en.wikipedia.org/wiki/Juncaceae">Juncaceae</a> para determinar el uso de los <i>barcodes</i> en plantas. Sus resultados parecen apuntar a que los marcadores propuestos no son muy universales.</div><div><br /></div><div><b>Prashant</b> dio una segunda <a href="http://cladistica.blogspot.com/2010/05/hennig-xxix-dia-1-23-mayo-2010.html">charla</a>, esta vez ofreciendo una mirada a la filogenia de <a href="http://en.wikipedia.org/wiki/Grassatores">Grassatores</a> un enorme clado de opiliones, cuya filogenia ha mostrado ser un hueso duro de roer.</div><div><br /></div><div>La charla de <b>Anna Phillips</b> era sobre Hirudinidae, un grupo de <a href="http://en.wikipedia.org/wiki/Leech">sanguijuelas</a> que por su gran importancia medica uno esperaría que fuera bien conocido. Pero como ayer mostró Lauren, ese no es el caso.--Por otros grupos que conozco de entomología medica y económica, al parecer la filog de esos grupos siempre es muy oscura :-/--.</div><div><br /></div><div>El paper de <b>Elizabeth Borda</b> fue sobre <i>Archinome</i>, un genero de <a href="http://en.wikipedia.org/wiki/Polychaete">poliquetos</a> marinos que viven en esas fumarolas de grandes profundidades, pero que también están asociados a la fauna que vive de las ballenas muertas.</div><div><br /></div><div>Luego vino un batch de presentaciones más bien de evolución y desarrollo, especialmente en grupos marinos. <b>Kevin Pang</b> sobre <a href="http://en.wikipedia.org/wiki/Ctenophora">Ctenophoros</a>, <b>Röttinger DuBuc</b> sobre <a href="http://en.wikipedia.org/wiki/Hemichordata">hemicordados</a>, <b>Yale Passamaneck</b> en <a href="http://en.wikipedia.org/wiki/Brachiopod">Brachiopodos</a> y <b>Mark Martindale</b> sobre <a href="http://en.wikipedia.org/wiki/Cnidaria">cnidarios</a>, el origen del mesodermo y el blastoporo.</div><div><br /></div><div>Así terminaron las presentaciones generales del 24. Hoy (25) es día libre, yo voy de hicking al cráter de diamond head, y en la noche es el banquete junto a la entrega de los premios de estudiantes. Los trabajos que más me gustaron a mi fueron los que dieron <b>Varpu</b> y <b>Lauren</b> <a href="http://cladistica.blogspot.com/2010/05/hennig-xxix-dia-1-23-mayo-2010.html">el 23</a>, y <b>Alejandro</b> y <b>Anna</b> (el 24) entre los trabajos empíricos. En lo metodológico, el que más me gusto fue el de <b>Ross</b>.</div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-39423125050956015122010-05-24T13:07:00.003-05:002010-05-25T13:00:42.658-05:00Hennig XXIX – Día 1 (23 mayo 2010)<div>Ayer fue el primer día de presentaciones del <i>Hennig Meeting</i>. He aquí una pequeña reseña de las diferentes presentaciones.</div><div><br /></div><div>Primero <b>Clifford Morden</b>, <b>Mark Siddall</b> y <b>Jyrki Mouna</b> dieron la bienvenida, Clifford menciono un poco sobre la planta que aparece en el logo del meeting, que es una planta famosa del ecosistema hawaiano. No recuerdo si es <i><a href="http://en.wikipedia.org/wiki/Cyrtandra">Cyrtandra</a></i>, pero bueno. Luego se dio paso a las presentaciones ya de los papers.</div><div><br /></div><div><b>Pei-Luen Lu</b> hablo sobre <i><a href="http://en.wikipedia.org/wiki/Dracaena_(plant)">Dracaena</a></i> y <i><a href="http://en.wikipedia.org/wiki/Pleomele_(genus)">Pleomele</a></i>, una grupo de plantas tropicales con una taxonomía bien confusa, su análisis fue bien molecular. <b>Shaena Montanari</b> hablo sobre la filog de los <a href="http://en.wikipedia.org/wiki/Anguimorpha">Anguimorfos</a>, un grupo de lagartos que incluye a los <a href="http://en.wikipedia.org/wiki/Varanidae">Monitores</a>, el <a href="http://en.wikipedia.org/wiki/Helodermatidae">mounstro del gila</a>, los extintos <a href="http://en.wikipedia.org/wiki/Mosasauridae">Mosasaurios</a> y <a href="http://en.wikipedia.org/wiki/Anguidae">un montón de lagartillos</a>. Me pareció bien interesante que con su análisis de evidencia completa, si solo se usan los actuales, la topología preferida es la tradicional, pero al incluír los fosiles (que no tienen ADN) el resultado se parece más a los sugeridos inicialmente con moleculas!</div><div><br /></div><div><b>Varpu Vahtera</b> hizo una de las presentaciones que más me ha gustado, ella estudia <a href="http://en.wikipedia.org/wiki/Scolopendromorpha#Scolopendromorpha">escolopendras</a>, y pues esta haciendo un análisis combinado, y bueno mostro muchas de las cosas y caracteres que ha trabajado en ese grupo :).</div><div><br /></div><div>Luego hubo una charla corporativa xD. Más tarde <b>Jairo Arroyabe</b> (un colombiano!) hablo sobre una filogenía molecular de un grupo de <a href="http://en.wikipedia.org/wiki/Alestidae">peces africanos</a>. No estoy muy seguro de su conclusión, en donde afirmaba que la divergencia del grupo era posterior a la fractura de Gondwana, yo soy muy esceptico de esas dataciones moleculares :P.</div><div><br /></div><div><b>Lauren Esposito</b>, hablo sobre <i><a href="http://en.wikipedia.org/wiki/Centruroides">Centruroides</a></i>, un genero de escorpiones con una taxonomia muy complicada, me gusto mucho su trabajo, porque a pesar de tratarse de un grupo con una gran importancia medica, prácticamente es un laburo from the scratch, en lo que se refiere a la filogenia y la definición de las especies.</div><div><br /></div><div><b>Maria Heikkilä</b> dio su charla sobre las filogenias recientes de los <a href="http://en.wikipedia.org/wiki/Lepidoptera">Lepidopteros</a>, particularmente <a href="http://en.wikipedia.org/wiki/Ditrysia">Ditrysia</a>.</div><div><br /></div><div>Para la tarde, infortunadamente llegue tarde y solo ví parte de la presentación de <b>Jerome Murienne</b>, cuando llegue ya estaba dando los resultados y su impacto biogeográfico en los <a href="http://en.wikipedia.org/wiki/Onychophora">onicóforos</a>. Este grupo tiene un fuerte elemento Gondwanico, y Jemore cree que algunos de sus clados anteceden el rompimiento de Gondwana!</div><div><br /></div><div><b>Prasantha Sharma</b> mostró la filogenía de un grupo de <a href="http://en.wikipedia.org/wiki/Harvestmen">opiliones</a>, <a href="http://en.wikipedia.org/wiki/Zalmoxidae">Zalmoxidae</a>, y según su análisis de áreas ancestrales (no me quedo claro como optimizó el carácter, al parecer hizo un mapeado con <i>likelihood</i>) hubo una dispersión desde el neotrópico a melanesia.</div><div><br /></div><div>La presentación de <b>Philippe Grancolas</b> fue sobre la conservación en <a href="http://en.wikipedia.org/wiki/New_Caledonia">Nueva Caledonia</a>. El y sus colaboradores usaron una gran cantidad de filogenias, y datos distribucionales para detectar cuales y como conservar esta isla tan particular! Luego, <b>Romain Nattier</b> hablo sobre filogeográfia de un grupo de ortópteros pero yo no asistí a su charla.</div><div><br /></div><div>Más tarde, fue una sesión de “genómica”. <b>Gonzalo Giribet</b> hablo sobre lo difícil que ha sido secuenciar los <a href="http://en.wikipedia.org/wiki/Monoplacophora">monoplacoforos</a>, un grupo muy importante de moluscos, y las perspectivas para conseguir una filogenia de alta resolución de los <a href="http://en.wikipedia.org/wiki/Mollusca">moluscos</a>.</div><div><br /></div><div><b>Rebecca Dikow</b>, <b>Kurt Lienau</b> y <b>Sebastian Kvist</b> dieron diferentes charlas sobre bacterias y virus, con énfasis en como manejar esas enormes cantidades de secuencia, hacerles curatoría, y finalmente sacarle algo de jugo a los resultados filogenéticos (más allá de la sola filogenia).</div><div><br /></div><div>En general, estoy contento, aunque espero un poquito más de morfología en los días que vienen ;).</div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-49267225742045426222010-05-23T12:40:00.002-05:002010-05-23T12:47:13.471-05:00Aloha!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1NT5Dno2DFFZ7UzrwTP84s0h-4qPUDhbjRdnK99Ny-UW_R1xKlua8Stbr3lznDva02WTNjJEEA8Lnb_xDhwULFJNjQycL5fhLJHpraX_HyzrEeDqczS30WaMPdJ7xTg_RTu7/s1600/HennigCover.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 298px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1NT5Dno2DFFZ7UzrwTP84s0h-4qPUDhbjRdnK99Ny-UW_R1xKlua8Stbr3lznDva02WTNjJEEA8Lnb_xDhwULFJNjQycL5fhLJHpraX_HyzrEeDqczS30WaMPdJ7xTg_RTu7/s320/HennigCover.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5474523258402695874" /></a><br /><div>En un par de horas comienza oficialmente el <b>Hennig <i>Meeting</i> XXIX</b> en <b>Honolulu</b>. Ayer fue la recepción. Estoy muy contento de haber podido venir, y poder mostrar lo que he estado trabajando :).</div><div><br /></div><div>Voy a intentar hacer una especie de <i>live-blogging</i> a lo largo del <i>meeting</i> ;)... aunque dependo mucho de la batería y de que tan buena sea la señal en el lugar de la reunión (no esta garantizada xD).</div><div><br /></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-4705646385694557672009-10-23T19:46:00.002-05:002009-10-23T20:22:52.349-05:00TNT macros: Variables (2)<div style="text-align: right;"><span class="Apple-style-span" style=" ;font-size:small;"><i><a href="http://cladistica.blogspot.com/2009/10/macros-de-tnt-variables-2.html">Versión en español</a></i></span></div><div><div><br /></div><div>In a <a href="http://cladistica.blogspot.com/2009/08/tnt-macros-variables-1.html">previous entry</a> I wrote about variable declaration under TNT macro language, in this post I show the most important aspect of variables: their access.</div><div><br /></div><div>Variables can be accessed in two ways, for reading, in which the value stored on the variable is retrieved. The second access way is for writing, in which a value is assigned to a variable.</div><div><br /></div><div><b>General variables</b></div><div><br /></div><div>In TNT general variables (variables declared with <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/VAR">var</a></b> keyword) are accessed by its name inside single quotations (').</div><pre>quote The number stored on variable is 'value' ;<br />hold 'number' ;</pre><div>In this example, the number stored on value is printed and the number stored in number is used as the maximum tree hold. This is an important feature of the language: you can replace any command parameter by the value of variables. This gives an extraordinary flexibility to TNT's macros.</div><div><br /></div><div>Sometimes, specially at linux version, it is necessary to use parenthesis to read successfully the variable:</div><pre>hold ('numero') ;</pre><div>To access arrays, the same format is used, with an index inside squared brackets ([]).</div><pre>quote the value of the fourth element is 'vector [4]' ;</pre><div>It can be a more complex (and useful) way for this example</div><pre>quote the value of the 'i' element is 'vector ['i']' ;</pre><div>Note that the variable i is also inside quotations. If you are somewhat familiar with some computer programming language, you note that quotations are a way to "dereference" of a variable.</div><div><br /></div><div>This is an example for a multidimensional array</div><pre>quote the value of the element 'i' , 'j' is 'mat ['i' , 'j']' ;</pre><div>Using parenthesis (()) you can use math operations as index values. Here is an example with a two dimensional array, but that is exactly equal with any kind of array:</div><pre>quote the value of the element 4, 'j' is 'mat [ (2 + 2 ) , 'j' ]' ;</pre><div>Another option is the use of series</div><pre>quote the value of the elements 3 to 8 is 'list [ 3 - 8 ]' ;</pre><div>In this case, note that <i>there are no parenthesis</i> limiting the scope! If you put parenthesis, TNT interpret it as a mathematical operation.</div><div><br /></div><div>To write values on general variables, the keword set is used with the name of the variable to assing, without quotations, and followed with the assigned value</div><pre>set val 4 ; /* Assigns 4 to val */<br />set res (3 + 4) ; /* Assigns a math operation */<br />set num 'val' ; /* Assigns the content of val to num */</pre><div>Note that as is the value of the variable that is assigned to num, then val must be inside quotations. To assign arrays, it is possible to use the same format, just using one element at time.</div><pre>set vec [4] 5 ; /* Assigns 5 to the 4th element of the array*/<br />set arreglo [ (2 + 3) ] 8 ; /* Assigns 8 to the 5th element of the array */<br />set arreglo ['i'] 10 ; /* Assigns 10 to the i-element of the array */<br />set arreglo [ ('j' + 'k') ] 7 ; /* Assigns 7 to the element j + k of the array */</pre><div>Note that indexes must be dereferenced!</div><div><br /></div><div>Many times, an operation to a variable is just a modification of its value, for example increase its value by one</div><pre>set val 'val' + 1 ;</pre><div>It is more clear and intuitive, modifying directly the variable without dereference it, this can be done using a C-like sintaxys</div><pre>set val ++ ; /* increase by 1 */<br />set arr [3] -- ; /* decrease the content of element 3 in 1 */<br />set mat [2, 4] += 'val' ; /* adds the value of val to the element 2, 4 of mat */<br />set num *= (3 + 'j') ; /* multiplies the content of num by (3 plus j)-times */<br />set arr [2] /= 3 ; /* divides the content of element 2 of arr by 3 */<br />set val -= 4 ; /* decreases the content of val in 4 */</pre><div>In some cases, you want to store all array elements at the same time. This can be done with the keyword <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/SETARRAY">setarray</a></b>. It is important that array dimensions coincide with the dimensions used in the declaration. The format of setarray is the name of the array followed by the name of the array an the elements.</div><pre>var:<br />lista [5, 4]<br />;<br />setarray 5, 4 lista 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 2 2 2 2 ;</pre><div>In this example, the following matrix is assigned to a 5x4 array</div><pre>0 1 1 1<br />1 0 1 1<br />1 1 1 0<br />2 2 2 2</pre><div>The order of the elements follows the dimensions from left to right, then the first four elements assigned to the array are the array elements [0, 0], [0, 1], [0, 2] and [0, 3].</div><div><br /></div><div><span style="font-weight:bold;">Variables in loops</span></div><div><br /></div><div>Usually, loop variables are control variables, so the best option is not modifying them. So in principle, write the code as if loop variables are read-only. If a loop variable needs to be modified TNT can do it, but that usually shows a design problem, and it is not a good practice to make that modifications.</div><div><br /></div><div>Loop variables can be accessed using using names or number. Is a good practice to use names to identify loop variables.</div><div><br /></div><div>To read a loop variable the number or name of the cicle must be preceded by number character (#). For example to save a simple search of several k values using implied weights [1]</div><pre>loop =kval 1 10<br />keep 0 ;<br />piwe = #kval ;<br />mult ;<br />tsave* resu#kval.tre ; save; tsave /;<br />stop</pre><div>As #kval is the name of the first cicle, then is possible to use #1, then to save the tree it would be</div><pre>tsave* resu#1..tre ;</pre><div>Note the double point after #1, that is because a point is interpreted by TNT as a decimal fraction, and assumes that the point is part of the name. In any case, it is better to use names ;). The numbering of loops is assigned in relation with its nestedness, starting with #1.</div><div><br /></div><div>To modify a loop variable the keyword <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/SETLOOP"><b>setloop</b></a> is used, that change the most nested loop (i.e. the loop in which the instruction is used). As changing the value of loops distorts their sequence, you must be aware of infinite-loops. This is the reason that makes the change of loop variables unsafe and unrecommended. But, some times it is necessary a non-stop loop that finish only when a specified condition is meet. In that case, using <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/ENDLOOP"><b>endloop</b></a> coupled with setloop can be very useful</div><pre>var:<br />i<br />;<br /><br />set i 0 ;<br />loop =non 0 1<br />/* several instructions */<br />if ('i' == 1)<br /> endloop ;<br />else<br /> setloop 0 ;<br />end ;<br />stop</pre><div>It is assumed that somewhere inside the loop, the value of i is changed to 1.</div><div><br /></div><div><span style="font-weight:bold;">Command line variables</span></div><div><br /></div><div>Variables from command line are read-only. Then, we only can access their value. To access a command line variable it is used the percent sign (%).</div><pre>set j %1 ;</pre><div>Assigns j to the first parameter from the command line (by the way, %0 is the name of the macro). Trying to read more parameters than parameters actually provided, is an error and stops the execution. When you write a macro, keep in mind that command line parameters is the only way to communicate with the user, so it is necessary to do a good choice of reading order and default values.</div><div><br /></div><div>As always, do not forgive to keep your <a href="http://www.zmuc.dk/public/phylogeny/TNT/">TNT copy updated</a>. And check the <a href="http://tnt.insectmuseum.org/index.php/Main_Page">TNT wiki</a> or join the <a href="http://groups.google.com.ar/group/tnt-tree-analysis-using-new-technology">TNT google group</a> to deal with any question!</div><div><br /></div><div><b>References</b></div><div><span class="Apple-style-span" style="font-size: small;">[1] Goloboff, P.A. 1993. Estimating character weights during tree search. Cladistics 9: 83-91. DOI: <a href="http://dx.doi.org/10.1111/j.1096-0031.1993.tb00209.x">10.1111/j.1096-0031.1993.tb00209.x</a></span></div><div><br /></div><div><b>Previous post on TNT's macros</b></div><div><a href="http://cladistica.blogspot.com/2009/05/tnt-macros-intro.html">Intro</a></div><div><a href="http://cladistica.blogspot.com/2009/08/tnt-macros-variables-1.html">Variables (1)</a></div><div><br /></div></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-30566091716074109722009-10-23T12:02:00.005-05:002009-10-23T20:25:35.344-05:00Macros de TNT: Variables (2)<div style="text-align: right;"><i><span class="Apple-style-span" style="font-size: small;"><a href="http://cladistica.blogspot.com/2009/10/tnt-macros-variables-2.html">English version</a></span></i></div><div><br /></div><div>En la <a href="http://cladistica.blogspot.com/2009/07/macros-de-tnt-variables-1.html">pasada entrega</a> (hace como mil años :P) escribí sobre como declarar las variables en los macros de TNT, en el post de hoy, voy a mostrar lo verdaderamente importante de las variables: su acceso.</div><div><br /></div><div>Las variables se pueden acceder de dos maneras, una es la lectura, en donde el valor guardado en la variable es leído de alguna manera. La segunda forma de acceso es la escritura, en donde se asigna un valor a una variable.</div><div><br /></div><div><b>Variables generales</b></div><div><br /></div><div>En TNT para leer a las variables generales (las declaradas con la palabra clave <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/VAR">var</a></b>) se utiliza el nombre de la variable entre comillas simples (').</div><pre>quote El valor de la variable es 'valor' ;<br />hold 'numero' ;<br /></pre><div>En este ejemplo, se imprime el número contenido en la variable valor. Y se retienen solo la cantidad de árboles que indica numero. Esta cualidad es muy importante, porque podemos reemplazar los parámetros de cualquier comando de TNT por variables, lo que le da una flexibilidad enorme a los macros.</div><div><br /></div><div>A veces, en especial en la versión de linux, es necesario usar un paréntesis para que se lea correctamente la variable:</div><pre>hold ('numero') ;</pre><div>Para acceder a los arreglos, se utiliza el mismo formato, con el indice entre paréntesis cuadrados ([])</div><pre>quote valor del elemento 4 del arreglo es 'arreglo [4]' ;</pre><div>Es posible ser un poco más complejo es este caso</div><pre>quote valor del elemento 'i' del arreglo es 'arreglo ['i']' ;</pre><div>En este caso, se muestra el valor del elemento i dentro del arreglo. Véase que i va dentro de comillas. Para los que estén familiarizados con los lenguajes de programación pueden ver que al acceder a el valor de una variables este se "dereferencia" con las comillas.</div><div><br /></div><div>Este es el ejemplo con arreglos multidimencionales</div><pre>quote valor del elemento 'i', 'j' es 'dosd ['i', 'j' ]' ;</pre><div>El indice del arreglo puede ser una operación entre paréntesis típicos (()), el ejemplo va con un array de dos dimensiones, pero es igualmente valido para arreglos de cualquier dimensión.</div><pre>quote valor del elemento 4, 'j' es 'dosd [ (2 + 2), 'j' ] ;</pre><div>Otra posibilidad muy útil en arreglos es el uso se series</div><pre>quote el valor de los elementos 3 al 8 son 'lista [ 3 - 8 ];</pre><div>En este caso es importante ¡<i>no colocar los valores entre paréntesis</i>! De lo contrario TNT interpreta una operación matemática. </div><div><br /></div><div>Para escribir variables en TNT se utiliza la palabra clave <b>set</b>, usando el nombre de la variable a asignar, sin comillas, y seguida del valor asignado.</div><pre>set valor 4 ; /* Asigna 4 a valor */<br />set resultado (3 + 4) ; /* Asigna una operación */<br />set numero 'valor' ; /* Asigna el contenido de valor a numero */</pre><div>Véase que cuando lo que se asigna es el valor dentro de una variable, esta debe ir entre comillas. Para asignar arreglos se puede utilizar el mismo formato, asignando un elemento a la vez</div><pre>set arreglo [4] 5 ; /* Asigna 5 al elemento 4 del arreglo */<br />set arreglo [ (2 + 3) ] 8 ; /* Asigna 8 al elemento 5 del arreglo */<br />set arreglo ['i'] 10 ; /* Asigna 10 al i-elemento de arreglo */<br />set arreglo [ ('j' + 'k') ] 7 ; /* Asigna 7 al elemento j + k del arreglo */</pre><div>Es importante anotar que los indices del arreglo deben dereferenciarse!</div><div><br /></div><div>Muchas veces, las operaciones sobre las variables consisten en modificar su valor, por ejemplo, incrementar su valor en 1.</div><pre>set valor 'valor' + 1 ;</pre><div>Es mucho más claro e intuitivo, modificar directamente la variable sin dereferenciarla, esto se logra mediante operadores que usan una sintaxis como la de C en esos casos.</div><pre>set valor ++ ; /* incrementa valor en 1 */<br />set arreglo [3] -- ; /* disminuye el contenido del elemento 3 de arreglo en 1 */<br />set matriz [2, 4] += 'valor' ; /* adiciona el contenido de valor al elemento 2, 4 de matriz */<br />set numero *= (3 + 'j') ; /* multiplica el contenido de numero por 3 más j */<br />set arreglo [2] /= 3 ; /* divide el contenido de arreglo en 3 */<br />set valor -= 4 ; /* disminuye el contenido de valor en 4 */</pre><div>Para los arreglos puede ser más útil asignar a la vez todos los elementos, para ello se utiliza <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/SETARRAY">setarray</a></b>. Es muy importante que las dimensiones del arreglo coincidan con las de su declaración. El formato de set array es las dimensiones del arreglo, seguido por el nombre del arreglo, seguido por los elementos. </div><pre>var:<br />lista [5, 4]<br />;<br /><br />setarray 5, 4 lista 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 2 2 2 2 ;</pre><div>En este ejemplo se creo un array de 5 x 4 que tiene la siguiente matriz</div><pre>0 1 1 1<br />1 0 1 1<br />1 1 0 1<br />1 1 1 0<br />2 2 2 2</pre><div>El orden de los elementos es siguiendo el orden de las dimensiones de izquierda a derecha, así en el ejemplo los primeros 4 elementos son los elementos [0, 0], [0, 1], [0, 2], y [0, 3] del arreglo.</div><div><br /></div><div><b>Variables en ciclos</b></div><div><br /></div><div>En general, las variables de los ciclos son de control, y por ello, lo mejor es no modificarlas. Así en principio, las variables de los ciclos son de solo lectura. Si se necesita modificar el valor de la variable de un ciclo, TNT también puede hacerlo, aunque es importante recalcar que las modificaciones de las variables en un ciclo, suelen reflejar algún problema de diseño, y no es una buena practica recurrir a esas modificaciones.</div><div><br /></div><div>Las variables de ciclos se pueden leer usando nombres o números. Es una buena practica el utilizar nombres para identificar las variables de los ciclos.</div><div><br /></div><div>Para leer una variable de un ciclo se utiliza el número del ciclo antecedido por el carácter numeral (#). Por ejemplo, para recorrer varios valores de <span style="font-style:italic;">k</span> usando pesos implicados [1]</div><pre>loop =kval 1 10<br />keep 0 ;<br />piwe = #kval ;<br />mult ;<br />tsave* resu#kval.tre ; save; tsave /;<br />stop</pre><div>El #kval se refiere al primer ciclo, también podría utlizarse #1, en ese caso, para guardar el arbol debería usarse</div><pre>tsave* resu#1..tre</pre><div>Véase que al guardar el nombre del árbol se usa un doble punto despues del número. Eso es porque con un solo punto, TNT interpreta que forma parte del número (es decir, que se trata de un real con decimales). De todas formas, mejor utilizar el nombre ;). Los números de los ciclos se asignan de acuerdo a su anidamiento (empezando desde #1).</div><div><br /></div><div>Para modificar el valor de una variable de un ciclo se utiliza la palabra clave <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/SETLOOP"><span style="font-weight:bold;">setloop</span></a>, que modifica el ciclo más anidado en el que se encuentra la instrucción. Dado que el cambiar el valor de los ciclos distorsiona la secuencia del ciclo, hay que tener cuidado con los ciclos infinitos. Es por eso que su uso no es recomendable. Sin embargo, a veces necesitamos de un ciclo que corra indefinidamente hasta que se cumpla alguna condición. En ese caso, utilizar setloop junto a <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/ENDLOOP">endloop</a></b> puede ser muy útil. Por ejemplo</div><pre>var:<br />i<br />;<br /><br />set i 0 ;<br />loop =non 0 1<br />/* varias instrucciones */<br />if ('i' == 1)<br />endloop ;<br />else<br />setloop 0 ;<br />end ;<br />stop</pre><div>Aquí se asume que en alguna condición dentro del ciclo el valor de i se cambia a 1, lo que permite que el ciclo finalice.</div><div><br /></div><div><span style="font-weight:bold;">Variables de linea de comando</span></div><div><br /></div><div>Las variables que vienen desde la linea de comando son de solo lectura. Así solo podemos accesar su valor. Para acceder al valor de una variable de linea de comando se usa el signo (%)</div><pre>set i %1 ;</pre><div>asigna a i el valor del primer parámetro pasado por la linea de comando (por interés %0 es el nombre del macro). Tratar de leer más parámetros de los que se pasaron por linea de comando, es un error, y detiene la ejecución. A la hora de escribir un macro, hay que tener en cuenta que son estos parámetros de la línea de comando la única manera de comunicarse con el usuario, así que hay que hacer una buena elección de su orden, y de los valores por omisión.</div><div><br /></div><div>Como siempre, no se olviden de chequear que su <a href="http://www.zmuc.dk/public/phylogeny/TNT/">versión de TNT esta actualizada</a>, así mismo no duden en consultar la <a href="http://tnt.insectmuseum.org/index.php/Main_Page">wiki de TNT</a> o suscribirse al <a href="http://groups.google.com.ar/group/tnt-tree-analysis-using-new-technology">grupo google de TNT</a>!</div><div><br /></div><div><b>Referencias</b></div><div><span class="Apple-style-span" style="font-size:small;">[1] Goloboff, P.A. 1993. Estimating character weights during tree search. </span><i><span class="Apple-style-span" style="font-size:small;">Cladistics</span></i><span class="Apple-style-span" style="font-size:small;"> 9: 83-91. DOI: </span><a href="http://dx.doi.org/10.1111/j.1096-0031.1993.tb00209.x"><span class="Apple-style-span" style="font-size:small;">10.1111/j.1096-0031.1993.tb00209.x</span></a></div><div><br /></div><div><div><b>Post anteriores en macros de TNT</b></div><div><a href="http://cladistica.blogspot.com/2009/05/macros-de-tnt-intro.html">Intro</a></div><div><a href="http://cladistica.blogspot.com/2009/07/macros-de-tnt-variables-1.html">Variables (1)</a></div></div><div><br /></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-51039366078370001852009-10-19T22:38:00.003-05:002009-10-19T22:52:04.329-05:00The behemot! for free! / El behemot gratuito!<div>Santí noted that the <a href="http://cladistica.blogspot.com/2009/04/phylogeny-of-73060-eukaryotes.html">"behemot"'s paper</a> [1] is now available for free from Wiley/Blackwell web-page, this is the link:</div><div><br /></div><div><a href="http://www.wiley.com/bw/ecology/news/news.asp?id=286">http://www.wiley.com/bw/ecology/news/news.asp?id=286</a></div><div><br /></div><div>Or you can jump directly to the paper abstract and download the pdf:</div><div><br /></div><div><a href="http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x">http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x</a></div><div><br /></div><div>If you want to look the results, Pablo <a href="http://www.zmuc.dk/public/phylogeny/TNT/More/large_trees_in_windows.htm">post a quick guide</a> to manage the trees and extract info from them. If you want to check you favorite group, or just play for a moment, there are no excuses ;)!</div><div><br /></div><div>And the best of it, as they are macros, you can use for your own trees! and don't forget to check out the <a href="http://tnt.insectmuseum.org/">TNT wiki</a>!</div><div><br /></div><div><br /></div><div>Santí me hizo notar que el paper donde el "<a href="http://cladistica.blogspot.com/2009/04/filogenia-de-73060-eucariotas.html">behemot</a>" vio la luz [1] se encuentra disponible de manera gratuita en el sitio de blackwell. El enlace es este:</div><br /><div><a href="http://www.wiley.com/bw/ecology/news/news.asp?id=286">http://www.wiley.com/bw/ecology/news/news.asp?id=286</a></div><div><br /></div><div>O pueden ir directamente a la pagina del artículo y descargar el pdf:</div><div><br /><a href="http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x">http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x</a></div><div><br /></div><div>Para quienes quieran jugar con los resultados, Pablo publicó <a href="http://www.zmuc.dk/public/phylogeny/TNT/More/large_trees_in_windows.htm">una guía rápida</a> para manejar los árboles y poder extraer info de ellos. Así que si tienen curiosidad por ver como quedo el grupo que ustedes trabajan, o simplemente quieren pasar un rato, ya no hay excusas ;)</div><div><br /></div><div>Y lo mejor de todo, como son macros, se pueden usar en sus propios resultados :D! No se olviden de consultar la <a href="http://tnt.insectmuseum.org/">wiki de TNT</a> ;)</div><div><br /></div><div><span class="Apple-style-span" style="font-size:small;">[1] Goloboff, P.A. </span><i><span class="Apple-style-span" style="font-size:small;">et al</span></i><span class="Apple-style-span" style="font-size:small;">. 2009. Phylogenetic analysis of 73 060 taxa corroborates major eukaryotic groups. </span><i><span class="Apple-style-span" style="font-size:small;">Cladistics</span></i><span class="Apple-style-span" style="font-size:small;"> 25: 211-230. DOI: </span><a href="http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x"><span class="Apple-style-span" style="font-size:small;">10.1111/j.1096-0031.2009.00255.x</span></a></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-81721232560088173142009-08-29T15:36:00.003-05:002009-08-29T15:46:00.350-05:00TNT macros: variables (1)<div style="text-align: right;"><i><a href="http://cladistica.blogspot.com/2009/07/macros-de-tnt-variables-1.html"><span class="Apple-style-span" style="font-size:small;">Versión en español</span></a></i></div><div><br /></div><div>I forget an important feature. The commentaries.</div><div><br /></div><div>TNT's macro language support the same multiline comment style of C (but not the single line comment style), enclosing comments within /* and */. Comments has no effect on the script, but are very useful to document the code!</div><div><br /></div><div><pre>/* This is a comment */</pre></div><div><br /></div><div>Comments are really important, no only to made code legible to other people, but also to our own understanding (specially, if it is code written long time away!).</div><div><br /></div><div>Comments are valid after the macro mode is open (using <a href="http://tnt.insectmuseum.org/index.php/Commands/macro"><b>macro</b></a> =).</div><div><br /></div><div>Following a well knew tradition I put this simple macro ;)</div><div><pre><br />macro =;<br />/* My first TNT macro */<br /><br />quote Hello world! ;<br />p/ ;</pre><br /></div><div>Now, we can enter on the subject of variables...</div><div><br /></div><div>Variables are objects that the program manipulates by an specific objective given by the user. Variables store values, that can be modified or read. Usually we are interested in that value. In other circumstances the variable value is useful for controlling the program flow. Also they are used to store values given by the user.</div><div><br /></div><div>When macro mode is open, TNT sets a default number of variables (1000). They can be accessed by a number, starting with 0. It is possible to change the amount of variables using macro* N K ; where N is the number of loops, and K the number of variables.</div><div><br /></div><div><b>General variables</b></div><div><br /></div><div>Using numbers to access variables can be useful for small scripts, but with more complex macros, the management of code can be very difficult. Then, is a good practice to use names for variables. Variables can be named in any part of the code. It is a good practice naming it just after starting the macro's file (just after macro = ). Variables names are declared using the keyword <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/VAR">var</a></b>.</div><div><br /></div><div>There are two ways to name variables, the first is explicit, that is useful to backward compatibility with scripts written in old versions of TNT.</div><div><span class="Apple-style-span" style="font-family:-webkit-monospace;font-size:100%;"><span class="Apple-style-span" style="font-size: 13px; white-space: pre;"><span class="Apple-style-span" style="font-family:Georgia;font-size:130%;"><span class="Apple-style-span" style="font-size: 16px; white-space: normal;"><br /></span></span></span></span></div><div><pre>Var =<br />0 variable1<br />1 variable2<br />5 variable 3<br />;</pre><br /></div><div>In this format, using var =, each variable is declared using the internal number of TNT. The declaration finish with a semi colon. The principal problem with this style, is that it is an invitation to use the numbers instead of the names. This can be dangerous when parts of the code change (for example, adding more variables).</div><div><br /></div><div>A more elegant way, and more secure (protects against usage of unnamed variables), is declaring directly the names, using var : instead of var =</div><div><span class="Apple-style-span" style="font-family:-webkit-monospace;font-size:100%;"><span class="Apple-style-span" style="font-size: 13px; white-space: pre;"><span class="Apple-style-span" style="font-family:Georgia;font-size:130%;"><span class="Apple-style-span" style="font-size: 16px; white-space: normal;"><br /></span></span></span></span></div><div><pre>var :<br />variable1<br />variable2<br />variable3<br />;</pre><br /></div><div>Here, I always use this style, that produce a more legible code.</div><div><br /></div><div>TNT variables can be simple, that is, just with one value, or can be arrays, a vector of several consecutive values. TNT arrays are static, that is, they cannot be resized in running time. Then declare them only after you know the size of the array. For example, just after reading the data, and we known the number of nodes in a tree.</div><div><br /></div><div>An array declaration is simple, just as a normal variable, but dimensions inside brackets ([]), if it is a multidimensional matrix, use a comma (,) to separate the values, in a similar way that arrays are declared in pascal.</div><div><span class="Apple-style-span" style="font-family:-webkit-monospace;font-size:100%;"><span class="Apple-style-span" style="font-size: 13px; white-space: pre;"><span class="Apple-style-span" style="font-family:Georgia;font-size:130%;"><span class="Apple-style-span" style="font-size: 16px; white-space: normal;"><br /></span></span></span></span></div><div><pre>Var:<br />anArray [25]<br />aMatrix [3, 4]<br />;</pre><br /></div><div><b>Variables in loops</b></div><div><br /></div><div>In TNT loop variables are independent from general variables. This variables are managed by TNT and not directly by the programmer. As general variables they can be named, o accessed using a number that start from 1, and increase in each nesting level. I generally use numbers. Maybe a better practice is to use names, as that freed the loop from its nesting level, an that's the only way to access some variables (for example, if you access it from another file).</div><div><br /></div><div>Loop variables are declared using an equal before the name:</div><div><br /></div><div><pre>loop =cicle 1 10</pre></div><div><br /></div><div><b>Variables in the command line</b></div><div><br /></div><div>When a macro is called, it is possible to assign some initial values from the command line associated with the script. This variables are sometimes known as arguments or parameters. For example, a macro called dojac can receive as parameters the number of replicates and the number of iterations per replicate</div><div><br /></div><div><pre>dojac 1000 20 ;</pre></div><div><br /></div><div>Then, dojac receives 1000 replicates and each replicate with 20 iterations.</div><div><br /></div><div>As TNT's scripts are not interactive, this is the only way to the final user to modify the behavior of the scripts. Then, if the idea is to distribute the macro, calling the macro without parameters shows a help screen explaining the objective, the parameters, and the conditions necessary for using the macro in a correct way.</div><div><br /></div><div>The function <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/argnumber">argnumber</a> returns the number of arguments used when calling the macro.</div><div><br /></div><div>Not forget to check out for <a href="http://www.zmuc.dk/public/phylogeny/TNT/">TNT updates</a>, and of course, several scripts and useful documentation at the <a href="http://tnt.insectmuseum.org/index.php/Main_Page">TNT wiki</a> :D</div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-3210401079231255702009-07-13T20:16:00.008-05:002009-08-29T15:48:44.551-05:00Macros de TNT: Variables (1)<div style="text-align: right;"><span class="Apple-style-span" style="font-size: small;"><i><a href="http://cladistica.blogspot.com/2009/08/tnt-macros-variables-1.html">English version</a></i></span> </div><div><br /></div>En el post anterior olvide algo muy importante. Se trata de los comentarios.<br /><br />El lenguaje de macros de TNT permite el uso de comentarios en la misma forma que el tradicional C, es decir entre un /* y un */. Los comentarios no tienen ningún efecto sobre el script, pero son muy útiles para documentar el código.<br /><pre><br />/* Este es un comentario */<br /></pre><br />Es muy importante colocar comentarios, no solo para que otras personas puedan entender el código, sino para que uno mismo pueda entenderlo más rápidamente cuando vuelve a el (en especial, si fue escrito hace tiempo!).<br /><br />Los comentarios son validos, una vez se a iniciado el modo de macros (usando <a href="http://tnt.insectmuseum.org/index.php/Commands/macro"><b>macro</b></a>=)<br /><br />Por tradición, coloco este macro simple<br /><pre><br />macro =;<br />/* Mi primer macro de TNT */<br /><br />quote Hola mundo!;<br />p/;<br /></pre><div><br /></div><div>Ahora entrando en materia con el tema de este post...</div><br /><br />Las variables son los objetos que el programa manipula con un propósito especificado por el usuario. Las variables guardan valores, y estos valores pueden ser modificados o leídos. Muchas veces, es el valor contenido en una variable lo que nos interesa. En otras ocasiones, el contenido de una variable sirve para controlar el flujo del programa. También pueden usarse variables para guardar valores dados por el usuario.<br /><br />Al arrancar un macro, TNT define por omisión un número de variables (1000). Estas se pueden acceder usando un número, que inicia desde 0. Es posible cambiar el numero de variables usando <b>macro</b>* N K; donde N es el número de loops, y K el número de variables.<br /><br /><b>Variables generales</b><br /><br />Usar los números de las variables puede ser cómodo en ,macros pequeños, pero al incrementar la complejidad de los macros, se hace más difícil el mantenimiento del código, por lo que es una buena práctica usar nombres para las variables. Las variables se pueden nombrar en cualquier parte del programa. Pero es una buena práctica nombrarlas justo después de iniciar el archivo con el macro (después del macro=). Para su declaración se utiliza la palabra clave <b><a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/VAR">var</a></b>.<br /><br />Hay dos formas de nombrar las variables, una es una forma explicita, que sirve, más que todo, para mantener la compatibilidad con macros anteriores.<br /><pre><br />var =<br />0 variable1<br />1 variable2<br />5 variable3<br />;<br /></pre><br />En este formato, usando var= se tiene que nombrar cada variable con el número interno (de TNT) que la identifica. La declaración termina con un punto y coma. El principal problema con esta forma, es que invita al uso intercambiable de números y nombres en las variables. Eso puede tener un efecto nosivo a la hora de hacer mantenimiento al código (por ejemplo, querer agregar más variables).<br /><br />Una forma mucho más cómoda, y más recomendable (evita el uso de variables sin nombre), es declarar directamente los nombres, usando dos punto (:) en vez de igual<br /><pre><br />var:<br />variable 1<br />variable 2<br />variable 3<br />;<br /></pre><br />De aquí en adelante, utilizo esta forma, que me parece, mejora la legibilidad del código escrito.<br /><br />Las variables en TNT pueden ser simples, es decir, que contienen un solo valor, o pueden ser arreglos, series de valores consecutivos. Los arreglos de TNT son estáticos, es decir que no pueden redimensionarse en tiempo de ejecución. Por eso es bueno declararlos solo cuando ya sabemos el tamaño que puede tener. Por ejemplo, luego de leer los datos, ya sabemos cuantos nodos puede tener un árbol.<br /><br />Declarar un arreglo es muy simple, es como una variable normal, pero con las dimensiones entre corchetes ([]), si es una matriz multidimensional, los valores se separan con comas (,) de forma similar a como se declaran los arreglos en pascal.<br /><pre><br />var:<br />arreglo [25]<br />matriz [3, 4]<br />;<br /></pre><br /><br /><span style="font-weight:bold;">Variables en ciclos</span><br /><br />En TNT las variables de los ciclos son independientes de las variables generales. Estas variables son manejadas por TNT y no directamente por el usuario. Al igual que las variables tradicionales, pueden nombrarse, o usar los números que vienen por omisión que comienzan desde 1, y se incrementan al irse anidando los ciclos.<div><br />Yo en general utilizo los números. Quizá sea una mejor práctica utilizar nombres puesto que de esa manera se independiza de el anidamiento del ciclo, y además, es la única forma de acceder variables de ciclos desde otro archivo.<br /><br />La forma de declarar una variable en un ciclo es anteponiendo un igual (=) antes del nombre:<br /><pre><br />loop =ciclo 1 10<br /></pre><br /><br /><span style="font-weight:bold;">Variables de linea de comando</span><br /><br />Al llamar a un macro, es posible asignarle valores iniciales usando la línea de comandos asociada al llamado del macro. Estas variables se conocen como "argumentos" o "parámetros". Por ejemplo, uno podría tener un macro que se llame dojac, y que reciba como parámetros el número de replicas, y un número de iteraciones en cada replica, así<br /><pre><br />dojac 1000 20 ;<br /></pre><br />En este caso, se reciben 1000 replicas y cada replica tiene 20 iteraciones.<br /><br />En general, cuando uno distribuye un macro, si no se da ningún parámetro, se ofrece una especie de salida de ayuda, donde explica el objetivo y las condiciones necesarias para utilizar el macro de forma correcta.<br /><br />La función <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/argnumber"><span style="font-weight:bold;">argnumber</span></a> retorna el número de argumentos usados al invocar el macro.</div><div><br /></div><div>No se olviden de revisar las <a href="http://www.zmuc.dk/public/phylogeny/TNT/">novedades de TNT</a>, y por supuesto, consultar la <a href="http://tnt.insectmuseum.org/index.php/Main_Page">wiki de TNT</a> ;), hay varios scripts y otra documentación muy útil :D</div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com2tag:blogger.com,1999:blog-19077731.post-73902523927029744652009-05-16T13:29:00.003-05:002009-05-16T14:38:30.634-05:00Algorithms for phylogenetics 0b: Trees<div style="text-align: right;"><a href="http://cladistica.blogspot.com/2009/05/algoritmos-en-filogenia-0b-arboles.html"><span style="font-size:85%;"><span style="font-style: italic;">Versión en español</span></span></a><br /></div><br />Another basic component of phylogenetic analysis' programs are the trees. Trees can be the result of an analysis (as in cladistic analysis' programs) or part of the data used (as in biogeography analysis' programs).<br /><br />Trees are one of the most well known <a href="http://en.wikipedia.org/wiki/Tree_data_structure">data structures</a> of computer science. In computers science a tree is a collection of elements (nodes), nodes are related by a "kindship" relation that imposes a hierarchy on the nodes. Kinship is a pairwise relationship: one node is the ancestor and the other the descendant. A node can have an indefinite number of descendants, but, at maximum, only one ancestor.<br /><br />In general, in phylogenetics, the term node is used only for elements with descendants, and terminal of leafs to elements without descendants (in computer science the used terms are internal node and terminal node, or leaf node. Here I will use the terminology from computer science, and when using node I refer to any element of the tree).<br /><br />A trees has at maximum a single root node. A root node is an internal node without ancestor. Different from most abstract trees of computer science, the only elements with have the user data are the terminals (from the data matrix). Data stored by internal nodes is inferred through algoritmic means.<br /><br />There are many ways to represent a tree. For me, the most natural one is using structures and pointers. Here is the basic node<br /><pre>typedef struct tagPHYLONODE PHYLONODE;<br /><br />struct tagPHYLONODE {<br />PHYLONODE* anc;<br />PHYLONODE* left;<br />PHYLONODE* right;<br />STATES* recons;<br />};<br /></pre>This structure is a node from a binary tree, that is, each internal node have two descendants, the pointers left and right, note that they are pointers to PHYLONODE elements. The pointer to ancestor is anc. In this structure, the root node has anc as NULL (i.e. points to no elements), and terminal nodes has left and right as NULL. The array recons store the data (as <a href="http://cladistica.blogspot.com/2009/04/algorithms-for-phylogenetics-0a.html">bitfields</a>).<br /><br />I usually store the information from a terminal (extracted from data matrix) into an independent structure, for example<br /><pre>typedef struct tagTERMINAL TERMINAL;<br />struct tagTERMINAL {<br />char name [32];<br />STATES* chars;<br />};<br /></pre>And include a pointer to TERMINAL as part of PHYLONODE<br /><pre>struct tagPHYLONODE {<br />... //Otros campos aquí<br />TERMINAL* term;<br />};<br /></pre>Internal nodes has term as NULL.<br /><br />A nice property of trees, is that subtrees have the same properties of a tree, then recursive algorithms a very natural way to work with trees. Nevertheless, I always prefer to have an independent structure to store the whole tree<br /><pre>typedef struct tagPHYLOTREE PHYLOTREE;<br />struct tagPHYLOTREE {<br />unsigned numNodes;<br />PHYLONODE* root;<br />PHYLONODE* nodeArray;<br />DATAMATRIX* matrix;<br />};<br /></pre>This structure store a pointer to the root node (root), an array to the nodes of the tree (nodeArray), a pointer to a data matrix (matix) and the number of nodes.<br /><br />This approach has the advantage of having several independent sets of trees, each tree with his on characterisitcs (id, name, data matrix), that are no properties of any node, but of the whole set of nodes (A typical case: in biogeography, several cladograms form different organism are used).<br /><br />Different from structures it is possible to store trees as coordinate arrays. This option is used in [1] for the example code, and it is also the way in which <a href="http://cladistica.blogspot.com/2009/05/tnt-macros-intro.html">TNT macro language</a> uses trees (the language does not support structures). The declarations of arrays is simple<br /><pre>int* anc;<br />int* left;<br />int* right;<br />STATES** chars;<br /></pre>In this case, all arrays are dynamic (they are declared as pointers, but as soon as they are assigned, they can be treated as arrays), and instead of have a pointer, they store the number that is the index of the array. As it is a coordinate array, every element with the same index is the same node. For example anc [17] = 20, assigns the node 20 as the ancestor of node 17. In this case, left [20] or right [20] must be equal to 17. chars [20] has the sates assigned to node 20. If you look at the tree entry in wikipedia (specially the entry on heaps) you will find that is the way used to keep trees.<br /><br />For me, the bad side of that approximation is that requires an strict bookkeeping (take note that in TNT macro language, TNT automatically updates the information, so that is not a problem!). This is my own experience, I worked with tree reconciliation, and work with someone that does not know working with pointers. So I try a coordinate array approach. But we not know how many nodes would be on the tree after reconciliation, then the code turns messy and extremely difficult to update.<br /><br />That experience does not show if some alternative is best than the other, just that sometimes the nature of the problem might constraint the way to resolve it, and that some styles of programming are better than others for some programmers ;). In this series I always will use structures.<br /><br />Just to have some code, and to mark the recursivity of trees, here are a function to store a tree in a parenthetical notation (as in Hennig86, NONA and TNT)<br /><pre>#include < stdio.h ><br /><br />void PrintTree (FILE* out, PHYLOTREE* tree) {<br />fprintf (out, "tread \'Simple tree output\'\n");<br />PrintNode (out, tree - > root)<br />fprintf (out, ";\np/;");<br />}<br /><br />void PrintNode (FILE* out, PHYLONODE* node) {<br /><br />if (node - > term != NULL) {<br />fprinf ("%s ", node - > term - > name);<br />return;<br />}<br />fprintf (out, "(");<br />PrintNode (out, node - > left);<br />PrintNode (out, node- > right);<br />fprintf (out, ") ");<br />}<br /></pre>This functions used standard IO operations. The function PrintTree puts the tree header for Hennig86/NONA/TNT trees. And call PrintNode on the root node. PrintNode checks if the node is a terminal, if this is true, it writes the terminal name, if not, the node is an internal one, so it prints the parenthesis and call recursively PrintNode on each one of its descendants.<br /><br />I think that some time ago <a href="http://3lbmonkeybrain.blogspot.com/">Mike Keesey</a> write a post about trees under a object oriented paradigm. I'm unable to find the post, <a href="http://3lbmonkeybrain.blogspot.com/2008/01/nouns-of-names-on-nexus.html">this one is the most closely alternative</a> :P.<br /><br /><span style="font-size:85%;">References<br />[1] Goloboff, P. A. 1997. Self weighted optimization: tree searches and character state reconstruction under implied transformation costs. <span style="font-style: italic;">Cladistics</span> <span style="font-weight: bold;">13</span>: 225-245. doi: <a href="http://dx.doi.org/10.1111/j.1096-0031.1997.tb00317.x">10.1111/j.1096-0031.1997.tb00317.x</a><br /></span><br /><span style="font-weight: bold;">Previous post on Algorithms for phylogenetics</span><br />0a. <a href="http://cladistica.blogspot.com/2009/04/algorithms-for-phylogenetics-0a.html">Bitfields</a>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com2tag:blogger.com,1999:blog-19077731.post-51605918155750886122009-05-15T21:47:00.005-05:002009-05-16T13:50:07.770-05:00Algoritmos en filogenia 0b: Árboles<div style="text-align: right;"><a href="http://cladistica.blogspot.com/2009/05/algorithms-for-phylogenetics-0b-trees.html"><span style="font-size:85%;"><span style="font-style: italic;">English version</span></span></a><br /></div><br />Otro de los componentes básicos de un programa de análisis filogenético son los árboles. Los árboles pueden ser el resultado del análisis (como en los programas de análisis cladístico), o pueden ser parte de los datos usados (como en los programas de análisis biogeográfico).<br /><br />Los árboles, son además, <a href="http://en.wikipedia.org/wiki/Tree_data_structure">una de las estructuras de datos</a> más conocidas y usadas en programación. En programación un árbol es una colección de elementos (nodos), los nodos están relacionados entre sí por un "parentesco" que les impone una jerarquía. El parentesco es una relación de pares: un nodo es el ancestro y el otro es el descendiente. Un nodo puede tener un número indefinido de descendientes, más como máximo solo puede tener un ancestro.<br /><br />En general, en filogenía se llama nodo, únicamente a los elementos que poseen descendientes, y hojas o terminales, a los elementos sin descendientes (en ciencias de computadores se utiliza más nodo interno y nodo terminal o nodo hoja, aquí yo sigo la notación de ciencias de computadores, y utilizo nodos cuando me refiero a todos los elementos del árbol).<br /><br />Un árbol tiene como máximo un nodo raíz, que es un nodo interno sin ancestro. A diferencia de los árboles más abstractos de ciencias de computadores, los únicos elementos con datos incluidos por el usuario son los terminales (que entran vía la matriz de datos). Los datos guardados por los nodos internos son inferidos mediante algún algoritmo.<br /><br />Existen varias formas de representar un árbol. Para mi, la más natural es usando estructuras y apuntadores. He aquí un nodo básico<br /><pre>typedef struct tagPHYLONODE PHYLONODE;<br /><br />struct tagPHYLONODE {<br />PHYLONODE* anc;<br />PHYLONODE* left;<br />PHYLONODE* right;<br />STATES* recons;<br />};<br /></pre>Esta estructura es el nodo de un árbol binario, es decir, que cada nodo interno tiene dos descendientes, los apuntadores left, y right, que como pueden notar apuntan a elementos del tipo PHYLONODE. anc es el puntero a el ancestro. En esta estructura el nodo raíz tiene a anc como NULL (es decir que no apunta a ningún elemento), y los nodos terminales tienen left y right como NULL. recons es un arreglo con los caracteres (en forma de <a href="http://cladistica.blogspot.com/2009/04/algoritmos-en-filogenia-0a-campos-de.html">campo de bits</a>).<br /><br />Yo suelo guardar la información del terminal (extraída de la matriz de datos) en una estructura aparte, por ejemplo<br /><pre>typedef struct tagTERMINAL TERMINAL;<br />struct tagTERMINAL {<br />char name [32];<br />STATES* chars;<br />};<br /></pre>E incluyo un apuntador a TERMINAL como parte de PHYLONODE<br /><pre>struct tagPHYLONODE {<br />... //Otros campos aquí<br />TERMINAL* term;<br />};<br /></pre>Si es un nodo interno, term es NULL.<br /><br />Una de las ventajas de los árboles es que un subárbol tiene las mismas propiedades de un árbol, por lo que los algoritmos recursivos son muy naturales al trabajarlos con árboles. Aún así, yo prefiero tener siempre una estructura que guarda el árbol<br /><pre>typedef struct tagPHYLOTREE PHYLOTREE;<br />struct tagPHYLOTREE {<br />unsigned numNodes;<br />PHYLONODE* root;<br />PHYLONODE* nodeArray;<br />DATAMATRIX* matrix;<br />};<br /></pre>En esta estructura se guarda un puntero al nodo raíz (root), un array con los nodos del árbol (nodeArray), un apuntador a la matriz de datos (matrix) y el número de nodos.<br /><br />Esta aproximación tiene la ventaja de que uno bien puede tener varios conjuntos de árboles de forma independiente, por ejemplo, cada árbol con su propio id, o nombre, que no es una característica del nodo raíz, sino del conjunto completo de los nodos.<br /><br />Aparte de las estructuras es posible guardar los árboles como arrays coordinados. Esta opción, por ejemplo, es usada en [1] para el código que aparece en los ejemplos, y también es la manera de manejar los árboles en el <a href="http://cladistica.blogspot.com/2009/05/macros-de-tnt-intro.html">lenguaje de macros de TNT</a> (que no maneja estructuras). La declaración de los arreglos coordinados es más sencilla<br /><pre>int* anc;<br />int* left;<br />int* right;<br />STATES** chars;<br /></pre>En este caso anc, left y right son arreglos dinámicos (por eso están declarados como apuntadores, pero se pueden tratar como arrays), y en vez de contener un apuntador, contienen un numero que es el índice del array. Como es un arreglo coordinado, todos los elementos con el mismo índice son parte del mismo nodo. Así, por ejemplo anc [17] = 20; dice que el ancestro del nodo 17, es el nodo 20. En este caso left [20] o right [20] debe ser igual a 17. chars [20] contiene los estados asignados al nodo 20. Si revisan las entradas sobre <a href="http://en.wikipedia.org/wiki/Tree_data_structure">árboles</a> en wikipedia (en especial las entradas sobre <a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Binary_heap">heaps</a>) notaran que esa es la manera con la que tratan los árboles.<br /><br />Para mi, lo malo de esa aproximación, es que requiere un control más fuerte sobre el mantenimiento de la información (cabe anotar que en el lenguaje de macros TNT, TNT mantiene todo por nosotros, así que eso no es ningún problema!). En mi propia experiencia, yo trabaje en reconciliación de árboles, y trabajaba con alguien que no sabia manejar apuntadores. Así que trate de hacer la implementación con arreglos coordinados. pero en árboles reconciliados no siempre sabemos cuantos nodos nuevos va a tener el árbol, por lo que mantener el código con los arreglos coordinados se hizo bien problemático.<br /><br />Lo que muestra esa experiencia, no es que una alternativa es mejor que la otra, solo que a veces, la naturaleza del problema puede complicar la forma de resolverlo, y que además algunos estilos de programación se dan mejor que otros, según quien este haciendo el código ;). De aquí en adelante en otros posts, yo voy a usar estructuras.<br /><br />Para tener algo de código y resaltar la recursividad de los árboles he aquí una función que guarda un árbol en formato parentética (como Hennig86, NONA y TNT)<br /><pre>#include < stdio.h ><br /><br />void PrintTree (FILE* out, PHYLOTREE* tree) {<br />fprintf (out, "tread \'Simple tree output\'\n");<br />PrintNode (out, tree - > root)<br />fprintf (out, ";\np/;");<br />}<br /><br />void PrintNode (FILE* out, PHYLONODE* node) {<br /><br />if (node - > term != NULL) {<br />fprinf ("%s ", node - > term - > name);<br />return;<br />}<br />fprintf (out, "(");<br />PrintNode (out, node - > left);<br />PrintNode (out, node- > right);<br />fprintf (out, ") ");<br />}<br /></pre>Estas funciones usas las operaciones IO estándar. La función PrintTree coloca la cabecera de un archivo de árboles para Hennig86/NONA/TNT. Y llama a PrintNode. PrintNode chequea si el nodo actual es un terminal, si es así escribe el nombre del terminal, de lo contrario, como en un nodo interno, imprime los paréntesis y llama recirsivamente a PrintNode en cada uno de sus descendientes.<br /><br />Me parece que <a href="http://3lbmonkeybrain.blogspot.com/">Mike Keesey</a> escribió un post sobre árboles bajo programación orientada a objetos, pero no pude encontrarlo, esta es la <a href="http://3lbmonkeybrain.blogspot.com/2008/01/nouns-of-names-on-nexus.html">alternativa más parecida</a> :P<br /><br /><span style="font-size:85%;"><span style="font-weight: bold;">Referencias</span><br />[1] Goloboff, P. A. 1997. Self weighted optimization: tree searches and character state reconstruction under implied transformation costs. <span style="font-style: italic;">Cladistics</span> <span style="font-weight: bold;">13</span>: 225-245. doi: <a href="http://dx.doi.org/10.1111/j.1096-0031.1997.tb00317.x">10.1111/j.1096-0031.1997.tb00317.x</a></span><br /><br /><div style="text-align: left;"><span style="font-weight: bold;">Post anteriores en Algoritmos en filogenia</span><br />0a. <a href="http://cladistica.blogspot.com/2009/04/algoritmos-en-filogenia-0a-campos-de.html">Campos de bits</a><br /></div>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-78320730541934496162009-05-06T21:19:00.003-05:002009-05-08T22:05:49.769-05:00TNT macros: Intro<div style="text-align: right;"><a href="http://cladistica.blogspot.com/2009/05/macros-de-tnt-intro.html"><span style="font-size:85%;"><span style="font-style: italic;">Versión es español</span></span><br /></a></div><br />One of the most powerful utilities of <a href="http://www.zmuc.dk/public/phylogeny/tnt/">TNT</a> is its macro's language. This language allows access to TNT internal variables, and tree and data manipulation. This coupled with the <span style="font-weight: bold;">computer power of TNT</span> makes <a href="http://cladistica.blogspot.com/2009/04/phylogeny-of-73060-eukaryotes.html">a terrific combination</a>.<br /><br />Unfortunatelly, maybe because of a lack of an extensive manual, or because there are few papers that explicitly use TNT macros (but they are growing!), then this capability is ignored for several users. In this series of posts, I want to give an introduction of the many possibilities allowed by the usage of macros.<br /><br />Part of this idea born after I see the book "<span style="font-style: italic; font-weight: bold;">phylogenetics with R</span>" [1], and the constant exchange with <span style="font-weight: bold;">Santi Catalano</span> about the <a href="http://tnt.insectmuseum.org/index.php/Main_Page">TNT's wiki</a>. I hope to post part of this series on the TNT's wiki, but for the moment, just to get the writing feeling, I post it first on my blog ;).<br /><br />The style is somewhat orientated to programming--I'm powerfully influenced by <a href="http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29">Kenighan and Ritchie</a> :)--because I think it is the best way to learn the language.<br /><br /><span style="font-weight: bold;">Notation</span><br /><br />The TNT macro language is an interpreted language, this is, each instruction is executed as it is readed, then it is possible to “write” the programs in real time (just like the old BASIC, lisp, or the fashionable python).<br /><br />This can be very nice, for example, to make some simple mathematical operations directly on TNT.<br /><br />An example:<br /><pre>> macro = ;<br />Macro language is ON<br />> var: dest ;<br />> set dest 4 + 5 ;<br />> quote 'dest' ;<br />9</pre>This simple calculator can introduce us in some particularities of the language.<br /><br />To activate macros, the command <span style="font-weight: bold;"><a href="http://tnt.insectmuseum.org/index.php/Commands/macro">macro</a> = ;</span> must be invoked, <span style="font-weight: bold;">macro - ;</span> deactivates the macros.<br /><br />Each instruction finish with a semi colon (;). Although not necessary, for clarity, an space before the semicolon is a good practice.<br /><br />The keyword <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/VAR"><span style="font-weight: bold;">var</span></a> is used to declare variables.<br /><br />The keyword <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/SET"><span style="font-weight: bold;">set</span></a> assigns a value to a variable. In the example it is a sum. Set accepts the four basic operations, as well as more complex combinations using parenthesis.<br /><br />The command <a href="http://tnt.insectmuseum.org/index.php/Commands/quote"><span style="font-weight: bold;">quote</span></a> prints on the screen. In TNT to access the value stored into a variable, the name of the variable must be between simple quotes ('). Note that set assigns a value, so the name is written without quotations, but if the value assigned is stored into a variable, then that values must be in quotations:<br /><pre>set dest 'first' * 'second' ;</pre>This operation assigns to dest the value of first times second.<br /><br />But more important, is that TNT macros can be written on separate file, and executing like any commando of the program.<br /><br />If the macro is saved with the ".run" extention, and is on the same working directory of the program (for example c:\bin\tnt) it is possible to call the macro just typing the name of the file. For example, TNT is distributed with the macro stats.run, that calculates consistency and retention index of the trees in memory. To execute it, only is necessary to type:<br /><pre>> stats ;</pre>in the program command line, and the macro runs automatically.<br /><br />As any file of TNT it can be accessed using <a href="http://tnt.insectmuseum.org/index.php/Commands/procedure"><span style="font-weight: bold;">proc</span></a> command (but you lost the parameter list) of the macro. It is better to use the command <a href="http://tnt.insectmuseum.org/index.php/Commands/run"><span style="font-weight: bold;">run</span></a> (or just write the macro's name). As any command macros can be accessed trough the OS command line.<br /><br /><span style="font-weight: bold;">Exercises</span><br /><br />As exercises try to use the different ways to call a macro, as well as accessing values with the commands, think on scripts like this:<br /><pre>macro = ;<br />var:<br />numIts<br />numTrees<br />itTrees;<br /><br />set numIts 100 ;<br />set itTrees 10 ;<br />set numTrees 'numIts' * 'itTrees' ;<br /><br />rseed 0;<br />hold 'numTrees' ;<br />mult = replic 'numIts' hold 'itTrees' ;<br />nel * ;<br />p/ ;<br /></pre>That does noting that you can do more easily by hand, but allows you to get familiarity with the notation.<br /><br /><span style="font-size:85%;"><span style="font-weight: bold;">References</span><br />[1] Paradis, E. 2006. <span style="font-weight: bold; font-style: italic;">Analysis of phylogenetics and evolution with R</span>. Springer</span>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-58127002917212389812009-05-06T21:07:00.005-05:002009-05-08T22:02:49.826-05:00Macros de TNT: Intro<div style="text-align: right;"><a href="http://cladistica.blogspot.com/2009/05/tnt-macros-intro.html"><span style="font-size:85%;"><span style="font-style: italic;">English version</span></span></a><br /></div><br />Una de las utilidades más poderosas de <a href="http://www.zmuc.dk/public/phylogeny/tnt/">TNT</a> es su lenguaje de macros. Este lenguaje permite acceder variables internas de TNT, manipular árboles y datos. Esto en conjunto con el <span style="font-weight: bold;">poder de computo de TNT</span> es una <a href="http://cladistica.blogspot.com/2009/04/phylogeny-of-73060-eukaryotes.html">excelente combinación</a>.<br /><br />Infortunadamente, bien sea porque no hay un manual extenso, o porque aún son pocos los que han usado explicitamente macros en sus artículos, esta utilidad suele pasar más o menos desapercibida para los usuarios. En esta serie de posts quiero dar un poco de remedio a esta situación, y dar una especie de introducción a las muchas posibilidades que permite el uso de macros.<br /><br />Parte de la idea nació a que una vez vi el libro de "<span style="font-style: italic; font-weight: bold;">R para filogenia</span>" [1], y pues a que he estado en contacto con <span style="font-weight: bold;">Santi Catalano</span>, que ha estado trabajando en la <a href="http://tnt.insectmuseum.org/index.php/Main_Page">wiki de TNT</a>. Espero poder postear después parte de esto a la wiki de TNT, pero por ahora, como para ver como me siento escribiendolo, lo coloco primero en mi blog ;).<br /><br />El estilo, es bien orientado a la programación--mi influencia más poderosa es<a href="http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29"> Kernighan y Ritchie</a> :)--pues la idea es que se le saque el máximo provecho al lenguaje!<br /><br /><span style="font-weight: bold;">Notación</span><br /><br />El lenguaje de macros de TNT es un lenguaje interpretado, esto quiere decir que cada instrucción se ejecuta a medida que se va leyendo, por lo que es posible ir "escribiendo" el programa en tiempo real desde la linea de comando.<br /><br />Esto puede ser muy útil, por ejemplo, para realizar cálculos matemáticos directamente en TNT.<br /><br />Por ejemplo:<br /><pre>> macro = ;<br />Macro language is ON<br />> var: dest ;<br />> set dest 4 + 5 ;<br />> quote 'dest' ;<br />9</pre>Al escribir esa secuencia uno puede tener una calculadora simple. Esto sirve para introducirnos a las cosas particulares del lenguaje.<br /><br />Para activar los macros, se usa el comando <span style="font-weight: bold;"><a href="http://tnt.insectmuseum.org/index.php/Commands/macro">macro</a> = ;</span> con <span style="font-weight: bold;">macro - ;</span> se desactivan los macros.<br /><br />Al terminar cada instrucción se coloca un punto y coma (;). Aunque no es necesario, por claridad es aconsejable dejar un espacio antes del punto y coma.<br /><br />La palabra clave <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/VAR"><span style="font-weight: bold;">var</span></a> se utiliza para declarar las variables.<br /><br />Con la palabra clave <a href="http://tnt.insectmuseum.org/index.php/Scripting_Commands/SET"><span style="font-weight: bold;">set</span></a> se asigna un valor a una variable. En este ejemplo el valor de una suma. Set acepta las cuatro operaciones básicas, así como operaciones más complejas usando paréntesis.<br /><br />El comando <a href="http://tnt.insectmuseum.org/index.php/Commands/quote"><span style="font-weight: bold;">quote</span></a> imprime en pantalla. En TNT, para acceder al valor guardado en las variables, se coloca el nombre de la variable entre comillas simples. Así en este ejemplo, se imprime lo que esta dentro de dest.<br /><br />Es importante diferenciar entre el valor guardado en la variable y su nombre. Set asigna a una variable, por ello la variable no va dentro de comillas, pero si lo que es asignado es otra variable, entonces como es un valor, debe estar entre comillas:<br /><pre>set dest 'primero' * 'segundo' ;</pre>Esta instrucción asigna a dest la multiplicación de los valores de primero y segundo.<br /><br />Sin embargo, la aplicación más importante de los macros de TNT es que pueden guardarse en un archivo y ejecutarse como si se tratara de un comando del programa.<br /><br />Si los macros se guardan con la extensión ".run", y son colocados en el mismo directorio de trabajo del programa (por ejemplo c:\bin\tnt) es posible llamarlo simplemente usando el nombre del archivo. Por ejemplo, en la instalación de TNT esta incluido stats.run, que calcula el indice de consistencia y retención de los árboles en memoria. Para ejecutarlo, simplemente se escribe<br /><pre>> stats ;</pre>en la linea de comando, y el macro es ejecutado automáticamente.<br /><br />Como todos los archivos de TNT se pueden acceder usando el comando <a href="http://tnt.insectmuseum.org/index.php/Commands/procedure"><span style="font-weight: bold;">proc</span></a>, pero se pierde la lista de parámetros (si los hay) del macro. Por eso es mejor usar el commando <a href="http://tnt.insectmuseum.org/index.php/Commands/run"><span style="font-weight: bold;">run</span></a> (o simplemente escribir el nombre). Como cualquier comando se puede acceder directamente en la lista de parámetros del programa.<br /><br />Como ejercicios de esta introducción se puede probar las diferentes maneras de invocar los macros, así como acceder valores desde comandos. Por ejemplo scripts como este:<br /><pre>macro = ;<br />var:<br />numIts<br />numTrees<br />itTrees;<br /><br />set numIts 100 ;<br />set itTrees 10 ;<br />set numTrees 'numIts' * 'itTrees' ;<br /><br />rseed 0;<br />hold 'numTrees' ;<br />mult = replic 'numIts' hold 'itTrees' ;<br />nel * ;<br />p/ ;<br /></pre>Que no hacen nada que no se puede hacer directamente (y segura más fácil!), pero sirven para familiarizarse con el lenguaje ;).<br /><br /><span style="font-size:85%;"><span style="font-weight: bold;">Referencias</span><br />[1] Paradis, E. 2006. <span style="font-weight: bold; font-style: italic;">Analysis of phylogenetics and evolution with R</span>. Springer</span>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-60557320036805494972009-05-01T15:23:00.003-05:002009-05-06T21:32:36.879-05:00The TNT wikiJust few days ago, the <a href="http://tnt.insectmuseum.org/">TNT wiki</a> was released. The project is led by my friend <span style="font-weight: bold;">Santi Catalano</span>, <span style="font-weight: bold;">Matt Yoder</span> and <span style="font-weight: bold;">Ximo Mengual</span>. They meet at the <a href="http://cladistica.blogspot.com/search/label/hennig%20meeting">Hennig Meeting, in Tucumán</a>, with the idea of provide a friendly environment for TNT users.<br /><br />This is the link: <a href="http://tnt.insectmuseum.org/">http://tnt.insectmuseum.org/</a><br /><br />For the most part, the wiki is an on-line version of the program help. But as it is a <a href="http://en.wikipedia.org/wiki/Wiki">wiki</a>, it is possible to provide several examples and tricks.<br /><br />I happy to help with the pages relevant to implied weights: <a href="http://tnt.insectmuseum.org/index.php/Implied_weighting">IW</a> and <a href="http://tnt.insectmuseum.org/index.php/I_want_to_make_an_analysis_under_implied_weights">IW quick tutorial</a> pages. And I hope to write somethings for the scripting pages :).<br /><br />Pablo is not directly involved with the project. Nonetheless, from time to time he reviewed some content, and of course, he always encourage its development. :).<br /><br />Also, there is a TNT google group: <a href="http://groups.google.com/group/tnt-tree-analysis-using-new-technology">http://groups.google.com/group/tnt-tree-analysis-using-new-technology</a>, open to questions from any user!<br /><br />A <a href="http://cladistica.blogspot.com/2009/04/phylogeny-of-73060-eukaryotes.html">behemoth analysis</a>, and a <a href="http://cladistica.blogspot.com/2009/05/la-wiki-de-tnt.html">wiki</a>, this is a great week for TNT :).<br /><br />Just in case, this is the TNT is a free software for phylogenetic analysis at any scale. It is sponsored by the Willi Hennig society, and can be downloaded here: <a href="http://www.zmuc.dk/public/phylogeny/TNT/">http://www.zmuc.dk/public/phylogeny/TNT/</a>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-53546391285633157312009-05-01T15:14:00.003-05:002009-05-06T21:32:36.880-05:00La wiki de TNTHace unos días, la <a href="http://tnt.insectmuseum.org/">wiki de TNT</a> fue lanzada al publico. El proyecto es liderado por mi amigo <span style="font-weight: bold;">Santi Catalano</span>, <span style="font-weight: bold;">Matt Yoder</span> y <span style="font-weight: bold;">Ximo Mengual</span>. Ellos se encontraron en el <a href="http://cladistica.blogspot.com/search/label/hennig%20meeting">Hennig meeting, en Tucumán</a>, con la idea de proporcionar una ayuda amigable a los usuarios de TNT.<br /><br />Este es el enlace: <a href="http://tnt.insectmuseum.org/">http://tnt.insectmuseum.org/</a><br /><br />En su mayor parte, la wiki es una versión en linea de la ayuda del programa. Pero como es una <a href="http://en.wikipedia.org/wiki/Wiki">wiki</a> es posible agrandarla con muchos ejemplos y trucos.<br /><br />Yo colabore con las páginas de pesado implicado: la <a href="http://tnt.insectmuseum.org/index.php/Implied_weighting">pagina básica</a> y un <a href="http://tnt.insectmuseum.org/index.php/I_want_to_make_an_analysis_under_implied_weights">tutorial rápido</a>. Y espero escribir algunas cosas para la sección de scripts :).<br /><br />Pablo no esta directamente asociado con el proyecto. Pero, cada cierto tiempo, el revisa algo del contenido, y por supuesto, siempre a apoyado el desarrollo del sitio :).<br /><br />Hay además un grupo de google de TNT: <a href="http://groups.google.com/group/tnt-tree-analysis-using-new-technology">http://groups.google.com/group/tnt-tree-analysis-using-new-technology</a> abierto a las preguntas de cualquier usuario!<br /><br />El análisis de un <a href="http://cladistica.blogspot.com/2009/04/filogenia-de-73060-eucariotas.html">behemot</a>, y una <a href="http://tnt.insectmuseum.org/">wiki</a>, esta es una gran semana para TNT :).<br /><br />Por si acaso, TNT es un software gratuito para análisis filogenético a cualquier escala. Esta patrocinado por la Willi Hennig society, y puede descargarse aquí: <a href="http://www.zmuc.dk/public/phylogeny/TNT/">http://www.zmuc.dk/public/phylogeny/TNT/</a>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com0tag:blogger.com,1999:blog-19077731.post-83047803758397091072009-04-28T06:42:00.007-05:002009-05-08T21:54:46.362-05:00Filogenia de 73060 eucariotas<div style="text-align: right;"><a href="http://cladistica.blogspot.com/2009/04/phylogeny-of-73060-eukaryotes.html"><span style="font-size:85%;"><span style="font-style: italic;">English version</span></span></a><br /></div><br />Finalmente, el <a href="http://es.wikipedia.org/wiki/Behemot">Behemot</a> vio la luz. Nuestro paper de un análisis de parsimonia de 73060 especies de eucariotas (y 7800 caracteres mol+morf) acaba de ser puesto en linea en <span style="font-weight: bold; font-style: italic;">Cladistics</span> [doi: <a href="http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x">10.1111/j.1096-0031.2009.00255.x</a>].<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVWQidB4zqJ6V-sUKOW_j_6MYlxoY-wUK9QZ_KSxU8uBKhkeuv_QxxQmmV7w4NrlJ1YvIx47Ts-Nyb_Z-fzp-PPiZ8N898JP7yEnCHOsYawXWe5ZjwNqbx99tVNJwCM3KUF-8-/s1600-h/behemoth.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 195px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVWQidB4zqJ6V-sUKOW_j_6MYlxoY-wUK9QZ_KSxU8uBKhkeuv_QxxQmmV7w4NrlJ1YvIx47Ts-Nyb_Z-fzp-PPiZ8N898JP7yEnCHOsYawXWe5ZjwNqbx99tVNJwCM3KUF-8-/s320/behemoth.jpg" alt="" id="BLOGGER_PHOTO_ID_5329557620455979682" border="0" /></a><br /><br />Pablo hizo un trabajo brutal optimizando cada cosa en las búsquedas de arboles con <a href="http://www.zmuc.dk/public/phylogeny/tnt">TNT</a>. Y todos aquí trabajaron intensamente para poder manejar toda esa cantidad de datos!<br /><br />Al principio me sorprendió la enorme exactitud de los árboles encontrados, porque el set de datos esta lleno de entradas faltantes. Además, me puse muy contento porque al incluir los datos morfológicos, aún a esta escala tan grande, los resultados fueron mejores que usando únicamente datos moleculares!<br /><br />Hace uno meses, esto fue <a href="http://treethinkers.blogspot.com/2008/11/latest-word-on-metazoan-phylogenetics.html">posteado en dechronization</a>:<br /><blockquote>[Cassy Dunn] hizo un llamado convincente acerca de la necesidad de técnicas análiticas revolucionarias ahora que entramos en una era en que los alcances de la computación serán más limitantes que la disponibilidad de datos.<br /></blockquote>Yo creo que nuestro trabajo muestra exactamente lo contrario: nuestras herramientas de búsqueda son lo suficientemente buenas, pero no hay datos suficientes (el conjunto de datos más grande es SSU con 20000 especies, y solo un puñado de genes tiene más de 10000 especies).<br /><br />Otra lección?.... <span style="font-weight: bold; font-style: italic;">No necesitamos los super-árboles</span><span style="font-style: italic; font-weight: bold;">!</span>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-67603607440058320522009-04-27T20:54:00.006-05:002009-05-06T21:32:36.881-05:00A phylogeny of 73060 eukaryotes<div style="text-align: right;"><span style="font-size:85%;"><a style="font-style: italic;" href="http://cladistica.blogspot.com/2009/04/filogenia-de-73060-eucariotas.html">Versión en español</a></span><br /></div><br />Finally, the <a href="http://en.wikipedia.org/wiki/Behemoth">behemoth</a> has seen the light :). Our paper with a parsimony analysis of 73060 eukariotic species (and 7800 mol+morf characters) was just published (as “online early”) in <span style="font-weight: bold; font-style: italic;">Cladistics</span> [<a href="http://dx.doi.org/10.1111/j.1096-0031.2009.00255.x">doi:10.1111/j.1096-0031.2009.00255.x</a>].<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVWQidB4zqJ6V-sUKOW_j_6MYlxoY-wUK9QZ_KSxU8uBKhkeuv_QxxQmmV7w4NrlJ1YvIx47Ts-Nyb_Z-fzp-PPiZ8N898JP7yEnCHOsYawXWe5ZjwNqbx99tVNJwCM3KUF-8-/s1600-h/behemoth.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 195px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVWQidB4zqJ6V-sUKOW_j_6MYlxoY-wUK9QZ_KSxU8uBKhkeuv_QxxQmmV7w4NrlJ1YvIx47Ts-Nyb_Z-fzp-PPiZ8N898JP7yEnCHOsYawXWe5ZjwNqbx99tVNJwCM3KUF-8-/s320/behemoth.jpg" alt="" id="BLOGGER_PHOTO_ID_5329557620455979682" border="0" /></a><br />Pablo does a wonderful work optimizing every aspect of the tree-searches in <a href="http://www.zmuc.dk/public/phylogeny/tnt">TNT</a>. And all of the guys worked really hard to manage that amount of data!<br /><br />At first I was surprised with the high accuracy of the trees founded, because the data set is full of missing entries. Also, I fill happy because the inclusion of morphological data, even at this huge scale, produce better results than molecules alone!<br /><br />Just few months ago, this was <a href="http://treethinkers.blogspot.com/2008/11/latest-word-on-metazoan-phylogenetics.html">posted in dechronization</a>:<br /><blockquote>He [Cassey Dunn] makes a convincing case for the idea that a revolution in analytical techniques will be needed as we enter an era during which computational capabilities will be more limiting than data availability.<br /></blockquote>I think our study shows exactly the inverse: that our actual search capabilities are good enough, but we do not have sufficient data (the largest gene set is SSU with 20000 species, and a handful of genes has more than 10000 species).<br /><br />The second lesson?... <span style="font-weight: bold; font-style: italic;">We do not need super-trees!</span>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com1tag:blogger.com,1999:blog-19077731.post-5591115480434645332009-04-24T19:20:00.003-05:002009-05-06T21:34:12.301-05:00Algorithms for phylogenetics 0a: Bitfields<div style="text-align: right; font-style: italic;"><span style="font-size:85%;"><a href="http://cladistica.blogspot.com/2009/04/algoritmos-en-filogenia-0a-campos-de.html">Versión en español</a><br /></span></div><br /><span style="font-weight: bold;">Intro</span><br /><br />I want to start a series of post about the algorithms used in phylogenetic analyses. I feel a bit disappointed with the entry on <a href="http://en.wikipedia.org/wiki/Computational_phylogenetics">computational phylogenetics</a> (and related subjects) in wikipedia, that are somewhat biased towards model-based methods and "bioinformatics", with a poor representation of algorithms for phylogenetics.<br /><br />There are two outstanding examples of algorithms for phylogenetics on the web. The book of <span style="font-weight: bold;">Wheeler</span> <span style="font-style: italic;">et al</span>. [1], and, in a similar vein, a manuscript by <span style="font-weight: bold;">DeLaet</span> [2]. But their presentation of the algorithms is somewhat general, that is be nice for educational purpouse, but in some cases, far away from the actual implementation in computer software.<br /><br />As the presentation of the algorithms in [1] and [2] is excellent, I want to focus on the implementation. The idea is to go from simpler to more complex algorithms (as far as I can comprehend them xD).<br /><br />I want to acknowledge <span style="font-weight: bold;">Pablo Goloboff</span>. He always have the time to discuss with me about algorithms (and any topic on methodological phylogenetics) :D. Of course, any error in my implementations are my own errors!<br /><br />As this series progress, I will post the source code on google source or sourceforge, if someone wants to check it, requires an knowledge of C programming language. Thanks to Rubén who showme some tips with the HTML :).<br /><br /><span style="font-weight: bold;">Bitfields</span><br /><br />Characters are a basic component of phylogenetic analysis. For simplicity assume that we only have a single character in each terminal. Each character can be stored into a variable, assigning to them 0, 1, 2... as indicated by the character state. This idea is implicit in the original description of <span style="font-weight: bold;">Wagner</span>'s "groundpland divergence" [3], and in <span style="font-weight: bold;">Farris</span>' formalization [4, see 5]. Then operations between characters would be operations of ranges. But it is more simpler to think about characters as a set of states [4, 6]. Then operations between characters would be set operations. This set has a peculiar property: they are perfectly boolean, that is, a taxon has or has not a particular state. This can be translated in two positive consequences: (i) character states can be stored as a bitfield: (ii) character operations are bifield operations.<br /><br />Computers store numbers as binary numbers. A bitfields use this characteristic to represent a set of positioned bits. This example shows it better:<br /><pre>State binary representation "Number" (human)<br />0 0001 1<br />1 0010 2<br />2 0100 4<br />3 1000 8<br />0, 1 0011 3<br />1, 3 0101 5<br /></pre>As can be seen, each state has his on bit position, and the states combination is just the union of its states. Many programming languages include operations to work directly on bits (not, and, or and xor), then the translation from set operations to bit operations is direct.<br /><br />In this series I will use char to store character states. In C, char has 8 bits, then only 8 states can be stored. I define the bitfield with a typedef, so changing the number of bits on the bitfield (and then the number of states) is easy.<br /><pre>#define BITS_ON_STATE 8<br />#define ALL_BITS_ON 255<br />typedef char STATES;<br /></pre>This small example reads the caracters of a taxon, from a file (in), and store it into an array of characters (chars). The number of characters is nc, and the functions getc (in stdio.h) reads a single character from the file, SkipSpaces ignores the blank characters, and isdigit (ctype.h) detects if the character is a number.<br /><pre>for (j = 0; j < nc; ++ j) {<br />error = SkipSpaces (in);<br />if (error != NO_ERROR) return error;<br />c = getc (in);<br />if (isdigit (c))<br /> chars [j] = 1 < < (c - '0');<br />else if ((c == '?') || (c == '-'))<br /> chars [j] = ALL_BITS_ON;<br />else return BAD_FORMAT;<br />}<br /></pre>The operation chars [j] 1 < < (c – '0') substract the ASCII value of '0' (30) from the ASCII value stored in c (a number, so it is form 30 to 39). The resulting value is used to shift the bits of 1. For example if a '0' is readed the operations are:<br /><pre>chars [j] = 1 < < (30 – 30)<br />chars [j] = 1 < < 0<br /> [0000 0001 < < 0 = 0000 0001]<br />chars [j] = 1<br /></pre>If a 5 is readed<br /><pre>chars [j] = 1 < < (35 – 30)<br />chars [j] = 1 < < 5<br /> [0000 0001 < < 5 = 0010 0000]<br />chars [j] = 32<br /></pre>The 1 is shifted five bits to the left.<br /><br />Note that inapplicables and unknowns are coded with all bits on.<br /><br />This work nicely with non additive characters. For additive characters, it is possible to “recode it” as several binary characters [7][8], then it is possible to use the character as independent binary characters.<br /><br />There are more sophisticated usages of bitfields, packing several characters in a single variable (for example, eight 4-bit characters can be stored into a singel 32-bits variable) [8][9]. This packing allows an speed up during searches, because several characters can be examined simultaneously.<br /><br /><span style="font-weight: bold;">References</span><br /><span style="font-size:85%;">[1] Wheeler, W. et al. 2006. Dynamic homology and phylogenetic systematics: a unified approach using POY. American Mus. of Natural History, published in cooperation with NASA. online: <a href="http://research.amnh.org/scicomp/pdfs/wheeler/Wheeler_etal2006b.pdf">http://research.amnh.org/scicomp/pdfs/wheeler/Wheeler_etal2006b.pdf</a><br />[2] DeLaet, J. 2005. Pseudocode for some tree search algorithms in phylogenetics. Manuscript online: <a href="http://www.plantsystematics.org/publications/jdelaet./algora.pdf">http://www.plantsystematics.org/publications/jdelaet./algora.pdf</a><br />[3] Wagner, W.H. 1961. Problems in the classification of ferns. <span style="font-style: italic;">In</span>: Recent advances in botany. Toronto Univ. Press. pp. 841-844.<br />[4] Farris, J.S. 1970. Methods for computing Wagner trees. <span style="font-style: italic;">Syst. Zool</span>. <span style="font-weight: bold;">19</span>: 83-92.<br />[5] Goloboff, P.A. et al. 2006. Continuos characters analyzed as such. <span style="font-style: italic;">Cladistics</span> <span style="font-weight: bold;">22</span>: 589-601. doi: <a href="http://dx.doi.org/10.1111/j.1096-0031.2006.00122.x">10.1111/j.1096-0031.2006.00122.x</a><br />[6] Fitch, W.M. 1971. Toward defining the course of evolution: minimum change for a specific tree topology. <span style="font-style: italic;">Syst. Zool.</span> <span style="font-weight: bold;">20</span>: 406-416.<br />[7] Farris, J.S. et al. 1970. A numerical approach to phylogenetic systematics. <span style="font-style: italic;">Syst. Zool</span>. <span style="font-weight: bold;">19</span>: 172-189.<br />[8] Moilanen, A. 1999. Searching for most parsimonious trees with simulated evolutionary optimization. <span style="font-style: italic;">Cladistics</span> <span style="font-weight: bold;">15</span>: 39-50. doi: <a href="http://dx.doi.org/10.1111/j.1096-0031.1999.tb00393.x">10.1111/j.1096-0031.1999.tb00393.x</a><br />[9] Goloboff, P.A. 2002. Optimization of polytomies: state and parallel set operations. <span style="font-style: italic;">Mol Phyl. Evol</span>. <span style="font-weight: bold;">22</span>: 269-275. doi: <a href="http://dx.doi.org/10.1006/mpev.2001.1049">10.1006/mpev.2001.1049</a><br /></span>Salvahttp://www.blogger.com/profile/01062764779798191688noreply@blogger.com2