bayesiancook / phylobayes

PhyloBayes: phylogenetic reconstruction using infinite mixtures (CAT and CAT-GTR) -- serial version (for MPI, see pbmpi.git)
12 stars 5 forks source link

Alternative to `-nchain`? #1

Closed plannapus closed 4 years ago

plannapus commented 4 years ago

I tried a run with 2 chains and a few calibrations using the following code:

pb -d ali.phy -T tree.tre -cal cal.txt -r outgroups -bd -cat -gtr -ln -nchain 2 dm1

I realized however that all the calibrated nodes were off by one node (i.e. the node was younger but its direct ancestor had the age of its calibration) and thus looked at what had been outputted by the software on start-up and saw this:

... draw empirical mode calibrations Neoceratodus_forsteri Homo_sapiens 104 Geotrypetes_seraphini Homo_sapiens 105 Homo_sapiens Python_regius 106 Gallus_gallus Python_regius 107 Gallus_gallus Alligator_sinensis 109 Caiman_crocodilus Alligator_sinensis 111 Taeniopygia_guttata Gallus_gallus 113 Phrynops_hilarii Trachemys_scripta 117 Phrynops_hilarii Pelusios_castaneus 124 Sphenodon_punctatus Python_regius 125 Elgaria_multicarinata Micrurus_fulvius 129 Pogona_vitticeps Iguana_iguana 131 Anolis_carolinensis Iguana_iguana 132 Ornithorhynchus_anatinus Homo_sapiens 150 Macropus_eugenii Homo_sapiens 151 Loxodonta_africana Homo_sapiens 152 Felis_catus Homo_sapiens 153 Felis_catus Canis_familiaris 154 Mus_musculus_musculus Homo_sapiens 155 Monodelphis_domestica Macropus_eugenii 157 Siren_lacertina Pelophylax_lessonae 160 Hynobius_chinensis Andrias_davidianus 169 Pipa_pipa Pelophylax_lessonae 171 Pipa_pipa Hymenochirus_curticeps 178 Callorhinchus_milii Ginglymostoma_cirratum 187 Neotrygon_kuhlii Ginglymostoma_cirratum 188 Neotrygon_kuhlii Raja_clavata 192 Danio_rerio Lepisosteus_oculatus 195 100 199 calibrations Neoceratodus_forsteri Homo_sapiens 103 Geotrypetes_seraphini Homo_sapiens 104 Homo_sapiens Python_regius 105 Gallus_gallus Python_regius 106 Gallus_gallus Alligator_sinensis 108 Caiman_crocodilus Alligator_sinensis 110 Taeniopygia_guttata Gallus_gallus 112 Phrynops_hilarii Trachemys_scripta 116 Phrynops_hilarii Pelusios_castaneus 123 Sphenodon_punctatus Python_regius 124 Elgaria_multicarinata Micrurus_fulvius 128 Pogona_vitticeps Iguana_iguana 130 Anolis_carolinensis Iguana_iguana 131 Ornithorhynchus_anatinus Homo_sapiens 149 Macropus_eugenii Homo_sapiens 150 Loxodonta_africana Homo_sapiens 151 Felis_catus Homo_sapiens 152 Felis_catus Canis_familiaris 153 Mus_musculus_musculus Homo_sapiens 154 Monodelphis_domestica Macropus_eugenii 156 Siren_lacertina Pelophylax_lessonae 159 Hynobius_chinensis Andrias_davidianus 168 Pipa_pipa Pelophylax_lessonae 170 Pipa_pipa Hymenochirus_curticeps 177 Callorhinchus_milii Ginglymostoma_cirratum 192 Neotrygon_kuhlii Ginglymostoma_cirratum 193 Neotrygon_kuhlii Raja_clavata 197 Danio_rerio Lepisosteus_oculatus 188 100 199

phylobayes version 4.1

...

On the upper part the node numbers are correct but not on the lower part, and apparently the result correspond to the lower part.

So, I looked at the manual for version 4.1 and saw that the -nchain argument was no longer documented; so instead I run the two chains separately:

pb -d ali.phy -T tree.tre -cal cal.txt -r outgroups -bd -cat -gtr -ln dm1_1 &
pb -d ali.phy -T tree.tre -cal cal.txt -r outgroups -bd -cat -gtr -ln dm1_2 &

The calibrations are now respected but my problem now is that readdiv only expect a single chainname; hence my question: how to pass both chains to readdiv when they have been run separately and not through argument -nchain? Alternatively, is there a way to combine the results of both chains a posteriori, or is the assumption that both chains converged to the point that they give exactly the same result and thus this step is useless?

bayesiancook commented 4 years ago

The -nchain option is obsolete, I have deactivated it.

unfortunately, there is no built-in method for pooling samples from multiple runs with phylobayes. as you suggest, perhaps the simplest is to run read div on the two chains and then just check that your two dated trees are essentially indistinguishable (as they should normally be if you have run for long enough) -- and then show only one of them chosen at random.

sorry for not being more helpful.

plannapus commented 4 years ago

Thanks for confirming though!