I have never invested in trying to set up the software to try this, but I suspect the best tree inference algorithm must be something like this. Given a bunch of N final haplotypes H[k] k = 1.......N some method is created to make a first estimate or guess for the times G[i] of all tree nodes and the haplotypes H[i} at all those nodes, i = 1.......NODES Then the Probability function can be written for each branch segment "b" in the tree converting a haplotype from the node at beginning of branch segment H[i(b)] to the haplotype at end of the branch segment H[f(b)] in the space of G[f(b)]-G[i(b)] generations. This is a rather straightforward function. Then the product over all branch segments of the tree is taken: Prob(tree) = Product over all b of P{ H[i(b)], H[f(b)], G[f(b)]-G[i(b)] } b runs over all branch segments of the tree. Then calculus like partial derivatives of this grand probability function can be made to varying time of each separate node age and all set equal to zero. And similarly for tweeking each node haplotype individually. Those simultaneous equations will have solution for tree with locally maximized liklihood. Or instead of taking calculus like derivatives, a PC can just move around to each node of the tree and tweek time of node and haplotype at node so as to INCREASE the grand probability, and keep doing this until things converge. Again one arrives at a locally most likely tree. Finding the globally most probable tree is more tricky and I'll go into that tomorrow. Note: tweeking time of a single node or haplotype at that node only affects three of the probability functions in the above grand Prob(tree) product. Ken - - - - Kenneth Nordtvedt See: "Tree for I1" "Tree and Map for haplogroup I" "The I1modalities" at http://knordtvedt.home.bresnan.net showing my working tree for YDNA haplogroup I. These files are periodically updated as new information is obtained. -----Original Message----- From: Terry Ken, In regards to an inferred haplotype... The method I use cannot infer any haplotype for people in the past, unfortunately. Effectively, I just use lots of points in a 67-dimensional space to hold all the STR marker results that people have today. Then my code finds mathematical hierarchical clusters of points in that 67-dimensional space. (Actually, I ignore most of the multi-copy STR markers, so the space is slightly smaller than 67 dimensions.) >From that I can plot a tree, but that doesn't give me any inferred haplotype for the start of any branch. For the full Branch Code Method, the split between two branches is usually complicated - the code just gives me sets of haplotypes that belong to each branch and that is all.