This year, the Hennig meeting was held at Riverside, California, and I'm fortunate enough to be able to be there (in great part thanks to the Kurt Pickett award, given by the Willi Hennig Society). As in previous occasions, I will try to give a short review of many of talks!
23 jun
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 heteroptera aficionado! :)]
24 Jun
The meeting start up with a plenary talk given by Quentin Wheeler, with the title of Cladistic cosmology. Basically it is about of building a “Hubble 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!
The first symposium was organized by Ward Wheeler about linguistics. The first talk, was a video-conf given by Peter Whitely about the phonetic character definition used for an analysis of Uto-Aztec 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). Peter Forster 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 here. Joanna Nichols also uses phylogenetics networks with emphasis of using different sources of cognate data. To finish the season, John Wenzel shows a reanalysis of some previous indo-european 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 here.
The next session was on phylogenomics, and was organized by Gonzalo Giribet, 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 Torsten Struck shows how the selection of outgroups affects the position of one most mysterious group of annelids, the Myzostomida. Sebastian Kvist, explores the genomics of the blood feeding proteins used by Hirudinid leeches, and the realtionships of their host bacteria, a group related with nitrogen-fixing bacteria found in plants! Kevin Kocot was interested on orthology detection using phylogenetic trees, so he implement a program to detect the best possible set of ortholog sequences. Björn von Reumont talks about the pancrustacean phylogenomics, and how the acquisition of newer data from Remipedia 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. Vanessa González talks about the relationships among Bivalbia, that as many molluscan taxa, seems to be well known, but their phylogenetic relationships are just barely explored.
Then the poster season starts, most of the posters present a lot of entomological work on heteropterans (specially reduviids), so that makes me so happy, I like most the poster from Michael Forthman as he works with Ectrichodiins 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 Guayang Zhang and it is about the elongation of the front legs in harpactorines.
25 Jun
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.
Ansel Payne gives a wonderful talk about the general relationships of Hymenopteran superfamilies. Rebecca Dikow explores a huge data set (in term of characters) using bacterial genomes, so her trees have brutal lengths over 37 millions of steps! Ross Mounce 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. Julieta Gallego 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!). John Denton gives a talk about the usage of iterative alignments to improve the searches under likelihood approaches. Greame Oatley speaks about a cool group of birds [give me a passeriform, and I will love it ;)], and their species limits, in a work in part phylogeographic, in part taxonomic. Juanita Rodriguez (from Colombia! But she is working in Utah), talks about the phylogeny and biogeography of a group of Pompilid wasps. Fernando Gelin talks about Polybia, a wasp genus. Federico López (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 Vespids. To finish the first student season, I give my own talk about biogeography of amphibians.
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. Brent Mischler spokes about the phylogenetic (topologic-monophyletic) species concept. Rudolf Meier 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 Kipling Will 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.
The second student seasson begin with a talk given by Christine Hayes about the the phylogenetic relationships of a group of phorid flies. Anna Dal Molin explore several techniques to visualize large groups of trees. Pei-Luen Li talks about a worldwide distributed (but concentrated in Hawai'i) group of asparagales, and Cecilia Waichert explore some adaptation hypothesis about nesting behavior using a phylogeny of Pomipilid wasps.
26 Jun
Pablo Goloboff, gives his talk about the implementation of Iter-PCR, 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 TNT. Jean DeLaet, gives an insight on his future program for phylogenetic analysis, Anagallis, that will include his algorithms for dealing with non-applicable data! I'm very curious about it [hopefully it will be open source!]. Nico Franz 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. Lenka Drabkova talks about the plant cytokinins. Claudia Szumik shows the results of a the search of areas of endemism, using also phylogenetic information, with a huge data set of mammals. Then Santiago Catalano presents GB-to-TNT a user friendly program to build huge matrices, and also some nice taxonomy mapping tools found in the newer version of TNT. Daniel Janies, 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 Donald Buth 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. John Wiens 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. Tim Crowe talks about the results of a whole life dedicated to study guinea fowls at different taxonomic levels. Dalton Amorim, shows a new analysis of phorid flies based on morphology, one of the few talks using explicit morphological data! Continuing with morphological data, and dipterans, Torsten Dikow shows its phylogenetic analysis Mydidae, he also shows interest on detecting unstable terminals. Efraín de Luna, talks about the use of morphometric data in phylogenetics. To finish the day, Nico Franz gives a talk about how his analysis of some particular group of curculionids 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.
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 Dennis Stevenson, the current editor of the journal of the society (Cladistics), and it was funny, although it was somewhat small!
The winners of the awards? Ok, there is a lot of Marie Stoppes and Kurt Pickett awards for traveling students. The Don Rosen award for the best poster was given to Guayang Zhang, as I tell you before. Cecilia Waichert receives the Lars Brundin award, for the second best talk, and John Denton receives the Willi Hennig 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 :)!
27 Jun
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...
Here this is the last symposium, this one, about molecular clocks organized by Sean Brady, who discuss several sources of error. Tracy Heath talks about how to model dating in bayesian analysis, and Elizabeth Murray has a more concrete talk on the dating of some group of Hymenoptera.
Robert Sansom 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. Mark Simmons 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. Mari Källersjö gives one of the most beautiful talks of the meeting, about a working project of a particular group of plants. Everyone loves his talk :D. Veronica Pereyra talks about thysanopterans, but unfortunately I have to make the check out, so I lost it :-(. Ronald Clouse talks about the phylogeography of an opilion that lives in southeastern US, that is a remaining of a gondwanian clade (as Florida was long time ago, part of African plate!). Ulf Jondelius, talks about the acoelan worms, a poorly known taxon, that he was sampled across the world. To finish the meeting Steve Farris talks about the recent surge of the three taxon statements authors (Ebach, Williams, etc.).
General overview
The meeting was very well organized by John Hartley and Christiane Weirauch, 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 :).
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!
The next year, the meeting will be held in Rostock, 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 :)!
Acknowledgments
I receive a lot of funding support from several institutions that make this trip possible: CONICET, FONCyT, GBIF (well, this one in the future) provides monetary funding, whereas INSUE allows me to work at their facilities. I receive a Kurt Pickett travel award from the Willi Hennig Society. At personal level, my advisors (Pablo and Claudia) provides me a lot of support, Julí convince me to go, Santí helps me with the trip logistics, and they, with Ross, they are excellent room-mates :)!
Mostrando las entradas con la etiqueta software. Mostrar todas las entradas
Mostrando las entradas con la etiqueta software. Mostrar todas las entradas
jueves, julio 05, 2012
sábado, mayo 16, 2009
Algorithms for phylogenetics 0b: Trees
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).
Trees are one of the most well known data structures 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.
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).
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.
There are many ways to represent a tree. For me, the most natural one is using structures and pointers. Here is the basic node
typedef struct tagPHYLONODE PHYLONODE;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 bitfields).
struct tagPHYLONODE {
PHYLONODE* anc;
PHYLONODE* left;
PHYLONODE* right;
STATES* recons;
};
I usually store the information from a terminal (extracted from data matrix) into an independent structure, for example
typedef struct tagTERMINAL TERMINAL;And include a pointer to TERMINAL as part of PHYLONODE
struct tagTERMINAL {
char name [32];
STATES* chars;
};
struct tagPHYLONODE {
... //Otros campos aquí
TERMINAL* term;
};
Internal nodes has term as NULL.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
typedef struct tagPHYLOTREE PHYLOTREE;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.
struct tagPHYLOTREE {
unsigned numNodes;
PHYLONODE* root;
PHYLONODE* nodeArray;
DATAMATRIX* matrix;
};
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).
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 TNT macro language uses trees (the language does not support structures). The declarations of arrays is simple
int* anc;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.
int* left;
int* right;
STATES** chars;
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.
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.
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)
#include < stdio.h >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.
void PrintTree (FILE* out, PHYLOTREE* tree) {
fprintf (out, "tread \'Simple tree output\'\n");
PrintNode (out, tree - > root)
fprintf (out, ";\np/;");
}
void PrintNode (FILE* out, PHYLONODE* node) {
if (node - > term != NULL) {
fprinf ("%s ", node - > term - > name);
return;
}
fprintf (out, "(");
PrintNode (out, node - > left);
PrintNode (out, node- > right);
fprintf (out, ") ");
}
I think that some time ago Mike Keesey write a post about trees under a object oriented paradigm. I'm unable to find the post, this one is the most closely alternative :P.
References
[1] Goloboff, P. A. 1997. Self weighted optimization: tree searches and character state reconstruction under implied transformation costs. Cladistics 13: 225-245. doi: 10.1111/j.1096-0031.1997.tb00317.x
Previous post on Algorithms for phylogenetics
0a. Bitfields
Etiquetas:
algorithms,
program design,
programming,
software,
trees
viernes, mayo 01, 2009
The TNT wiki
Just few days ago, the TNT wiki was released. The project is led by my friend Santi Catalano, Matt Yoder and Ximo Mengual. They meet at the Hennig Meeting, in Tucumán, with the idea of provide a friendly environment for TNT users.
This is the link: http://tnt.insectmuseum.org/
For the most part, the wiki is an on-line version of the program help. But as it is a wiki, it is possible to provide several examples and tricks.
I happy to help with the pages relevant to implied weights: IW and IW quick tutorial pages. And I hope to write somethings for the scripting pages :).
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. :).
Also, there is a TNT google group: http://groups.google.com/group/tnt-tree-analysis-using-new-technology, open to questions from any user!
A behemoth analysis, and a wiki, this is a great week for TNT :).
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: http://www.zmuc.dk/public/phylogeny/TNT/
This is the link: http://tnt.insectmuseum.org/
For the most part, the wiki is an on-line version of the program help. But as it is a wiki, it is possible to provide several examples and tricks.
I happy to help with the pages relevant to implied weights: IW and IW quick tutorial pages. And I hope to write somethings for the scripting pages :).
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. :).
Also, there is a TNT google group: http://groups.google.com/group/tnt-tree-analysis-using-new-technology, open to questions from any user!
A behemoth analysis, and a wiki, this is a great week for TNT :).
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: http://www.zmuc.dk/public/phylogeny/TNT/
lunes, abril 27, 2009
A phylogeny of 73060 eukaryotes
Finally, the behemoth 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 Cladistics [doi:10.1111/j.1096-0031.2009.00255.x].

Pablo does a wonderful work optimizing every aspect of the tree-searches in TNT. And all of the guys worked really hard to manage that amount of data!
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!
Just few months ago, this was posted in dechronization:
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.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).
The second lesson?... We do not need super-trees!
Etiquetas:
molecular phylogenetics,
morphological phylogenetics,
parsimony,
software,
tnt
viernes, abril 24, 2009
Algorithms for phylogenetics 0a: Bitfields
Intro
I want to start a series of post about the algorithms used in phylogenetic analyses. I feel a bit disappointed with the entry on computational phylogenetics (and related subjects) in wikipedia, that are somewhat biased towards model-based methods and "bioinformatics", with a poor representation of algorithms for phylogenetics.
There are two outstanding examples of algorithms for phylogenetics on the web. The book of Wheeler et al. [1], and, in a similar vein, a manuscript by DeLaet [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.
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).
I want to acknowledge Pablo Goloboff. 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!
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 :).
Bitfields
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 Wagner's "groundpland divergence" [3], and in Farris' 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.
Computers store numbers as binary numbers. A bitfields use this characteristic to represent a set of positioned bits. This example shows it better:
State binary representation "Number" (human)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.
0 0001 1
1 0010 2
2 0100 4
3 1000 8
0, 1 0011 3
1, 3 0101 5
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.
#define BITS_ON_STATE 8This 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.
#define ALL_BITS_ON 255
typedef char STATES;
for (j = 0; j < nc; ++ j) {
error = SkipSpaces (in);
if (error != NO_ERROR) return error;
c = getc (in);
if (isdigit (c))
chars [j] = 1 < < (c - '0');
else if ((c == '?') || (c == '-'))
chars [j] = ALL_BITS_ON;
else return BAD_FORMAT;
}
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:chars [j] = 1 < < (30 – 30)If a 5 is readed
chars [j] = 1 < < 0
[0000 0001 < < 0 = 0000 0001]
chars [j] = 1
chars [j] = 1 < < (35 – 30)The 1 is shifted five bits to the left.
chars [j] = 1 < < 5
[0000 0001 < < 5 = 0010 0000]
chars [j] = 32
Note that inapplicables and unknowns are coded with all bits on.
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.
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.
References
[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: http://research.amnh.org/scicomp/pdfs/wheeler/Wheeler_etal2006b.pdf
[2] DeLaet, J. 2005. Pseudocode for some tree search algorithms in phylogenetics. Manuscript online: http://www.plantsystematics.org/publications/jdelaet./algora.pdf
[3] Wagner, W.H. 1961. Problems in the classification of ferns. In: Recent advances in botany. Toronto Univ. Press. pp. 841-844.
[4] Farris, J.S. 1970. Methods for computing Wagner trees. Syst. Zool. 19: 83-92.
[5] Goloboff, P.A. et al. 2006. Continuos characters analyzed as such. Cladistics 22: 589-601. doi: 10.1111/j.1096-0031.2006.00122.x
[6] Fitch, W.M. 1971. Toward defining the course of evolution: minimum change for a specific tree topology. Syst. Zool. 20: 406-416.
[7] Farris, J.S. et al. 1970. A numerical approach to phylogenetic systematics. Syst. Zool. 19: 172-189.
[8] Moilanen, A. 1999. Searching for most parsimonious trees with simulated evolutionary optimization. Cladistics 15: 39-50. doi: 10.1111/j.1096-0031.1999.tb00393.x
[9] Goloboff, P.A. 2002. Optimization of polytomies: state and parallel set operations. Mol Phyl. Evol. 22: 269-275. doi: 10.1006/mpev.2001.1049
Etiquetas:
algorithms,
parsimony,
program design,
programming,
software
miércoles, noviembre 12, 2008
Core coding
En estos días, algunas de las ideas que tengo de mi proyecto, no están saliendo como yo quería, así que me he dedicado a la programación de algunos detalles computacionales... como el asunto, aunque muy relacionado con computadoras, pero poco con cladística (aparte claro, de ser parte de mi proy xD).. lo deje en mi blog personal :P.
English version:
How can Java (and several other languages) programmers live without pointers?
English version:
How can Java (and several other languages) programmers live without pointers?
Etiquetas:
program design,
programación,
programas,
programming,
software
viernes, diciembre 14, 2007
Really huge news about TNT
I'm out of the city, so no computer for long posts :'(... but I'm happy to give a flash news about TNT: The Willy Hennig Society takes the sponsorship of TNT (a software by Pablo Goloboff, Steve Farris and Kevin Nixon), so from now, the program is free! The are some simple conditions: personal use, and a citation of the program--and the sponsor, that is the WHS ;)--in published results!
In case that you don't know, TNT is the most faster program for phylogenetic analysis under parsimony, implements several new and efficient heuristic algoritms [1,2], and a powerful script/macro language. If you are doing cladistics/phylogenetics, you should surely dream with this program!
I love the matrix editor! Is easy to use, and more straightforward than WinClada, NDE or Mesquite (yep!... far better than mesquite!).
You could download it at: http://www.zmuc.dk/public/phylogeny/TNT/
read the license agreement and enjoy :)
I give the proper citations when I return to Bogotá :P
[1] Nixon, K.C. 1999. The parsimony ratchet a new method for rapid parsimony analysis. Cladistics 15: 407-414.
[2] Goloboff, P. A. 1999. Analyzing large data sets in reasonable times: solutions for composite optima. Cladistics 15: 415-428.
In case that you don't know, TNT is the most faster program for phylogenetic analysis under parsimony, implements several new and efficient heuristic algoritms [1,2], and a powerful script/macro language. If you are doing cladistics/phylogenetics, you should surely dream with this program!
I love the matrix editor! Is easy to use, and more straightforward than WinClada, NDE or Mesquite (yep!... far better than mesquite!).
You could download it at: http://www.zmuc.dk/public/phylogeny/TNT/
read the license agreement and enjoy :)
[1] Nixon, K.C. 1999. The parsimony ratchet a new method for rapid parsimony analysis. Cladistics 15: 407-414.
[2] Goloboff, P. A. 1999. Analyzing large data sets in reasonable times: solutions for composite optima. Cladistics 15: 415-428.
Suscribirse a:
Entradas (Atom)
