[med-svn] [python-dendropy] 01/03: New upstream version 4.2.0+dfsg

Andreas Tille tille at debian.org
Mon Jan 9 17:29:19 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository python-dendropy.

commit aa688cf8e6ccd5046a060983c6deaf5ee97bbac4
Author: Andreas Tille <tille at debian.org>
Date:   Mon Jan 9 18:23:49 2017 +0100

    New upstream version 4.2.0+dfsg
---
 CHANGES.rst                                        |   18 +-
 DendroPy.egg-info/PKG-INFO                         |    4 +-
 DendroPy.egg-info/SOURCES.txt                      |    4 +
 DendroPy.egg-info/requires.txt                     |    2 +-
 PKG-INFO                                           |    4 +-
 applications/sumtrees/sumtrees.py                  |   82 +-
 dendropy/__init__.py                               |    4 +-
 dendropy/calculate/phylogeneticdistance.py         |   49 +-
 dendropy/calculate/popgenstat.py                   |   37 +-
 dendropy/calculate/profiledistance.py              |  327 ++
 dendropy/calculate/treecompare.py                  |  135 +-
 dendropy/dataio/newickreader.py                    |   46 +-
 dendropy/dataio/newickyielder.py                   |    2 +-
 dendropy/dataio/nexusreader.py                     |    4 +-
 dendropy/dataio/nexuswriter.py                     |   15 +-
 dendropy/dataio/nexusyielder.py                    |    5 +-
 dendropy/datamodel/basemodel.py                    |    5 +-
 dendropy/datamodel/taxonmodel.py                   |   14 +-
 dendropy/datamodel/treemodel.py                    |   43 +-
 dendropy/interop/paup.py                           |   37 +-
 dendropy/model/coalescent.py                       |    6 +-
 dendropy/model/multispeciescoalescent.py           |  275 ++
 .../other/multispecies_coalescent_test_data.json   | 4680 ++++++++++++++++++++
 dendropy/test/test_dataio_newick_reader_tree.py    |   65 +
 dendropy/test/test_multispeciescoalescent.py       |  307 ++
 dendropy/test/test_phylogenetic_distance_matrix.py |    2 +-
 dendropy/test/test_popgenstat.py                   |   27 +-
 dendropy/utility/error.py                          |   10 +
 dendropy/utility/processio.py                      |   13 +-
 dendropy/utility/timeprocessing.py                 |   10 +-
 setup.py                                           |    6 +
 31 files changed, 6088 insertions(+), 150 deletions(-)

diff --git a/CHANGES.rst b/CHANGES.rst
index f886225..d86ceb8 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,5 +1,19 @@
-Release 4.1.0 (Pending)
------------------------
+Release 4.2.0
+-------------
+
+-   0 branch lengths assigned to randomly resolved polytomies.
+-   Explicitly set rooting for NJ and UPGMA trees.
+-   Faster pruning (kyungtaekLIM)
+-   Fix nesting bug in raised KeyError in basemodel.AnnotationSet.__deepcopy__ (Steve Bond)
+-   Catch edge case during deepcopy when Edge object has no _annotations (Steve Bond)
+-   Optimizations and fixes for various population genetic calculations (Andrew Guy)
+-   newickreader: Parse jplace style edge numbering. (Ben J Woodcroft)
+-   Calculate probability of gene tree(s) in species trees under the Multispecies Coalescent model.
+-   New approaches to calculate distances between unlabeled trees of different sizes: ``dendropy.profiledistance`` and ``dendropy.calculate.treecompare.TreeShapeKernel``.
+-   When parsing Newick/NEXUS, allow for internal node labels to be associated with either nodes or edges.
+
+Release 4.1.0
+-------------
 
 New or Updated Features
 ^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/DendroPy.egg-info/PKG-INFO b/DendroPy.egg-info/PKG-INFO
index 4c951b6..1209eda 100644
--- a/DendroPy.egg-info/PKG-INFO
+++ b/DendroPy.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: DendroPy
-Version: 4.1.0
+Version: 4.2.0
 Summary: A Python library for phylogenetics and phylogenetic computing: reading, writing, simulation, processing and manipulation of phylogenetic trees (phylogenies) and characters.
 Home-page: http://packages.python.org/DendroPy/
 Author: Jeet Sukumaran and Mark T. Holder
@@ -115,7 +115,7 @@ Description: .. image:: https://raw.githubusercontent.com/jeetsukumaran/DendroPy
         Current Release
         ===============
         
-        The current release of DendroPy is version 4.1.0 (development-master-715b4cc, 2016-03-13 15:21:37).
+        The current release of DendroPy is version 4.2.0 (master-5051a46, 2016-12-28 13:25:19).
         
         
 Keywords: phylogenetics phylogeny phylogenies phylogeography evolution evolutionary biology systematics coalescent population genetics phyloinformatics bioinformatics
diff --git a/DendroPy.egg-info/SOURCES.txt b/DendroPy.egg-info/SOURCES.txt
index 681ac04..9b100de 100644
--- a/DendroPy.egg-info/SOURCES.txt
+++ b/DendroPy.egg-info/SOURCES.txt
@@ -20,6 +20,7 @@ dendropy/calculate/mathfn.py
 dendropy/calculate/phylogeneticdistance.py
 dendropy/calculate/popgenstat.py
 dendropy/calculate/probability.py
+dendropy/calculate/profiledistance.py
 dendropy/calculate/statistics.py
 dendropy/calculate/treecompare.py
 dendropy/calculate/treemeasure.py
@@ -87,6 +88,7 @@ dendropy/model/birthdeath.py
 dendropy/model/coalescent.py
 dendropy/model/continuous.py
 dendropy/model/discrete.py
+dendropy/model/multispeciescoalescent.py
 dendropy/model/parsimony.py
 dendropy/model/protractedspeciation.py
 dendropy/model/reconcile.py
@@ -145,6 +147,7 @@ dendropy/test/test_datamodel_tree_structure_and_iteration.py
 dendropy/test/test_datamodel_tree_taxon_management.py
 dendropy/test/test_datamodel_treearray.py
 dendropy/test/test_fitch.py
+dendropy/test/test_multispeciescoalescent.py
 dendropy/test/test_parsimony_scoring.py
 dendropy/test/test_paup.py
 dendropy/test/test_phylogenetic_distance_matrix.py
@@ -264,6 +267,7 @@ dendropy/test/data/other/hiv1.distances.csv
 dendropy/test/data/other/hiv1.node-to-node-dists.csv
 dendropy/test/data/other/hiv1.unweighted.node-to-node-dists.csv
 dendropy/test/data/other/laurasiatherian.distances.ml.csv
+dendropy/test/data/other/multispecies_coalescent_test_data.json
 dendropy/test/data/other/pythonidae.mle.node-to-node-dists.csv
 dendropy/test/data/other/pythonidae.mle.unweighted.node-to-node-dists.csv
 dendropy/test/data/other/pythonidae.mle.unweighted.pdm.csv
diff --git a/DendroPy.egg-info/requires.txt b/DendroPy.egg-info/requires.txt
index 8b6d003..49fe098 100644
--- a/DendroPy.egg-info/requires.txt
+++ b/DendroPy.egg-info/requires.txt
@@ -1 +1 @@
-setuptools
\ No newline at end of file
+setuptools
diff --git a/PKG-INFO b/PKG-INFO
index 4c951b6..1209eda 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: DendroPy
-Version: 4.1.0
+Version: 4.2.0
 Summary: A Python library for phylogenetics and phylogenetic computing: reading, writing, simulation, processing and manipulation of phylogenetic trees (phylogenies) and characters.
 Home-page: http://packages.python.org/DendroPy/
 Author: Jeet Sukumaran and Mark T. Holder
@@ -115,7 +115,7 @@ Description: .. image:: https://raw.githubusercontent.com/jeetsukumaran/DendroPy
         Current Release
         ===============
         
-        The current release of DendroPy is version 4.1.0 (development-master-715b4cc, 2016-03-13 15:21:37).
+        The current release of DendroPy is version 4.2.0 (master-5051a46, 2016-12-28 13:25:19).
         
         
 Keywords: phylogenetics phylogeny phylogenies phylogeography evolution evolutionary biology systematics coalescent population genetics phyloinformatics bioinformatics
diff --git a/applications/sumtrees/sumtrees.py b/applications/sumtrees/sumtrees.py
index 2d8393d..639f050 100755
--- a/applications/sumtrees/sumtrees.py
+++ b/applications/sumtrees/sumtrees.py
@@ -1699,49 +1699,8 @@ def main():
             msg = "Summarizing onto {} target trees".format(len(target_trees))
         else:
             msg = "Summarizing onto target tree".format(len(target_trees))
-        target_trees.append(tree)
         msg += " defined in '{}':".format(target_tree_filepath)
         _message_and_log(msg, wrap=False)
-    # if args.collapse_edges_with_less_than_minimum_support and args.summary_target != "consensus":
-    if args.min_clade_freq is not None and args.summary_target != "consensus":
-        msg = "Collapsing clades or splits with support frequency less than {}".format(args.min_clade_freq)
-        for tree in target_trees:
-            tree_array.collapse_edges_with_less_than_minimum_support(
-                    tree=tree,
-                    min_freq=args.min_clade_freq,)
-        _message_and_log(msg, wrap=False)
-
-    ###  rooting
-
-    if args.root_target_at_outgroup is not None or args.set_outgroup is not None:
-        if args.root_target_at_outgroup is not None:
-            outgroup_label = args.root_target_at_outgroup
-        elif args.set_outgroup is not None:
-            outgroup_label = args.set_outgroup
-        if args.input_format in ("nexus/newick", "nexus", "newick"):
-            if not args.preserve_underscores:
-                outgroup_label = outgroup_label.replace("_", " ")
-        for tree in target_trees:
-            outgroup_node = tree.find_node_with_taxon_label(outgroup_label)
-            if outgroup_node is None:
-                messenger.error("Cannot locate node with outgroup taxon '{}' on target tree".format(outgroup_label))
-                sys.exit(1)
-            tree.to_outgroup_position(
-                    outgroup_node=outgroup_node,
-                    update_bipartitions=True,
-                    suppress_unifurcations=True)
-            if args.root_target_at_outgroup is not None:
-                tree.is_rooted = True
-        if args.root_target_at_outgroup is not None:
-            _bulleted_message_and_log("Target tree(s) rerooted using outgroup: '{}'".format(outgroup_label))
-        elif args.set_outgroup is not None:
-            _bulleted_message_and_log("Target tree(s) rotated to set outgroup: '{}'".format(outgroup_label))
-    elif args.root_target_at_midpoint:
-        for tree in target_trees:
-            tree.reroot_at_midpoint(
-                    update_bipartitions=True,
-                    suppress_unifurcations=True)
-        _bulleted_message_and_log("Target tree(s) rerooted at midpoint")
 
     ###  set up summarization regime
 
@@ -1821,6 +1780,47 @@ def main():
             for nd in tree:
                 nd.label = None
 
+    # collapse if below minimum threshold
+    if args.min_clade_freq is not None and args.summary_target != "consensus":
+        msg = "Collapsing clades or splits with support frequency less than {}".format(args.min_clade_freq)
+        for tree in target_trees:
+            tree_array.collapse_edges_with_less_than_minimum_support(
+                    tree=tree,
+                    min_freq=args.min_clade_freq,)
+        _message_and_log(msg, wrap=False)
+
+    ###  rooting
+
+    if args.root_target_at_outgroup is not None or args.set_outgroup is not None:
+        if args.root_target_at_outgroup is not None:
+            outgroup_label = args.root_target_at_outgroup
+        elif args.set_outgroup is not None:
+            outgroup_label = args.set_outgroup
+        if args.input_format in ("nexus/newick", "nexus", "newick"):
+            if not args.preserve_underscores:
+                outgroup_label = outgroup_label.replace("_", " ")
+        for tree in target_trees:
+            outgroup_node = tree.find_node_with_taxon_label(outgroup_label)
+            if outgroup_node is None:
+                messenger.error("Cannot locate node with outgroup taxon '{}' on target tree".format(outgroup_label))
+                sys.exit(1)
+            tree.to_outgroup_position(
+                    outgroup_node=outgroup_node,
+                    update_bipartitions=True,
+                    suppress_unifurcations=True)
+            if args.root_target_at_outgroup is not None:
+                tree.is_rooted = True
+        if args.root_target_at_outgroup is not None:
+            _bulleted_message_and_log("Target tree(s) rerooted using outgroup: '{}'".format(outgroup_label))
+        elif args.set_outgroup is not None:
+            _bulleted_message_and_log("Target tree(s) rotated to set outgroup: '{}'".format(outgroup_label))
+    elif args.root_target_at_midpoint:
+        for tree in target_trees:
+            tree.reroot_at_midpoint(
+                    update_bipartitions=True,
+                    suppress_unifurcations=True)
+        _bulleted_message_and_log("Target tree(s) rerooted at midpoint")
+
     main_time_end = datetime.datetime.now()
 
     ###################################################
diff --git a/dendropy/__init__.py b/dendropy/__init__.py
index bf5ee5a..6282d62 100644
--- a/dendropy/__init__.py
+++ b/dendropy/__init__.py
@@ -22,6 +22,8 @@ import sys
 ## Populate the 'dendropy' namespace
 
 from dendropy.dataio.nexusprocessing import get_rooting_argument
+from dendropy.datamodel.basemodel import Annotation
+from dendropy.datamodel.basemodel import AnnotationSet
 from dendropy.datamodel.taxonmodel import Taxon
 from dendropy.datamodel.taxonmodel import TaxonNamespace
 from dendropy.datamodel.taxonmodel import TaxonNamespacePartition
@@ -102,7 +104,7 @@ import collections
 version_info = collections.namedtuple("dendropy_version_info",
         ["major", "minor", "micro", "releaselevel"])(
                 major=4,
-                minor=1,
+                minor=2,
                 micro=0,
                 releaselevel=""
                 )
diff --git a/dendropy/calculate/phylogeneticdistance.py b/dendropy/calculate/phylogeneticdistance.py
index 1b36f78..4278e06 100644
--- a/dendropy/calculate/phylogeneticdistance.py
+++ b/dendropy/calculate/phylogeneticdistance.py
@@ -270,7 +270,11 @@ class PhylogeneticDistanceMatrix(object):
                 node.desc_paths = {}
                 for cidx1, c1 in enumerate(children):
                     for desc1, (desc1_plen, desc1_psteps) in c1.desc_paths.items():
-                        node.desc_paths[desc1] = (desc1_plen + c1.edge.length, desc1_psteps + 1)
+                        if c1.edge_length is None:
+                            c1_edge_length = 0.0
+                        else:
+                            c1_edge_length = c1.edge.length
+                        node.desc_paths[desc1] = (desc1_plen + c1_edge_length, desc1_psteps + 1)
                         assert desc1.taxon is not None
                         if desc1.taxon not in self._taxon_phylogenetic_distances:
                             self._mapped_taxa.add(desc1.taxon)
@@ -285,7 +289,11 @@ class PhylogeneticDistanceMatrix(object):
                                 self._mrca[desc1.taxon][desc2.taxon] = c1.parent_node
                                 # self._all_distinct_mapped_taxa_pairs.add( tuple([desc1.taxon, desc2.taxon]) )
                                 self._all_distinct_mapped_taxa_pairs.add( frozenset([desc1.taxon, desc2.taxon]) )
-                                pat_dist = node.desc_paths[desc1][0] + desc2_plen + c2.edge.length
+                                if c2.edge_length is None:
+                                    c2_edge_length = 0.0
+                                else:
+                                    c2_edge_length = c2.edge.length
+                                pat_dist = node.desc_paths[desc1][0] + desc2_plen + c2_edge_length
                                 self._taxon_phylogenetic_distances[desc1.taxon][desc2.taxon] = pat_dist
                                 path_steps = node.desc_paths[desc1][1] + desc2_psteps + 1
                                 self._taxon_phylogenetic_path_steps[desc1.taxon][desc2.taxon] = path_steps
@@ -932,6 +940,7 @@ class PhylogeneticDistanceMatrix(object):
         if tree_factory is None:
             tree_factory = dendropy.Tree
         tree = tree_factory(taxon_namespace=self.taxon_namespace)
+        tree.is_rooted = False
 
         # initialize node pool
         node_pool = []
@@ -1077,6 +1086,7 @@ class PhylogeneticDistanceMatrix(object):
         if tree_factory is None:
             tree_factory = dendropy.Tree
         tree = tree_factory(taxon_namespace=self.taxon_namespace)
+        tree.is_rooted = True
         node_pool = []
         for t1 in self._mapped_taxa:
             nd = tree.node_factory()
@@ -1390,7 +1400,7 @@ class NodeDistanceMatrix(object):
             children = node1.child_nodes()
             for ch_idx, ch1 in enumerate(children):
                 ch1_elen = ch1.edge.length if ch1.edge.length is not None else 0.0
-                for ch1_subtree_node in self._node_phylogenetic_distances[ch1].keys():
+                for ch1_subtree_node in list(self._node_phylogenetic_distances[ch1].keys()):
                     if ch1_subtree_node not in self._node_phylogenetic_distances[node1]:
                         d = self._node_phylogenetic_distances[ch1][ch1_subtree_node] + ch1_elen
                         d2 = self._node_phylogenetic_path_steps[ch1][ch1_subtree_node] + 1
@@ -1523,4 +1533,37 @@ class NodeDistanceMatrix(object):
         else:
             return d
 
+    def distances(self,
+            is_weighted_edge_distances=True,
+            is_normalize_by_tree_size=False):
+        """
+        Returns list of patristic distances.
+        """
+        dmatrix, normalization_factor = self._get_distance_matrix_and_normalization_factor(
+                is_weighted_edge_distances=is_weighted_edge_distances,
+                is_normalize_by_tree_size=is_normalize_by_tree_size,
+                )
+        results = []
+        nodes = list(dmatrix.keys())
+        for node_idx1, node1 in enumerate(nodes[:-1]):
+            for node_idx2, node2 in enumerate(nodes[node_idx1+1:]):
+                results.append(dmatrix[node1][node2]/normalization_factor)
+        return results
+
+    def _get_distance_matrix_and_normalization_factor(self,
+            is_weighted_edge_distances,
+            is_normalize_by_tree_size):
+        if is_weighted_edge_distances:
+            dmatrix = self._node_phylogenetic_distances
+            if is_normalize_by_tree_size:
+                normalization_factor = self._tree_length
+            else:
+                normalization_factor = 1.0
+        else:
+            dmatrix = self._node_phylogenetic_path_steps
+            if is_normalize_by_tree_size:
+                normalization_factor = float(self._num_edges)
+            else:
+                normalization_factor = 1.0
+        return dmatrix, normalization_factor
 
diff --git a/dendropy/calculate/popgenstat.py b/dendropy/calculate/popgenstat.py
index 795da98..8a75a3a 100644
--- a/dendropy/calculate/popgenstat.py
+++ b/dendropy/calculate/popgenstat.py
@@ -37,18 +37,27 @@ def _count_differences(char_sequences, state_alphabet, ignore_uncertain=True):
     sum_diff = 0.0
     mean_diff = 0.0
     sq_diff = 0.0
-    total_counted = 0
     comps = 0
+
+    #Check that all sequences are the same length
+    if len(set([len(seq) for seq in char_sequences])) != 1:
+        raise Exception("sequences of unequal length")
+
     if ignore_uncertain:
         attr = "fundamental_indexes_with_gaps_as_missing"
-        states_to_ignore = set([state_alphabet.gap_state, state_alphabet.no_data_state])
+        _states_to_ignore = [state_alphabet.gap_state, state_alphabet.no_data_state]
+        states_to_ignore = set([getattr(char, attr) for char in _states_to_ignore])
     else:
         attr = "fundamental_indexes"
         states_to_ignore = set()
-    for vidx, i in enumerate(char_sequences[:-1]):
-        for j in char_sequences[vidx+1:]:
-            if len(i) != len(j):
-                raise Exception("sequences of unequal length")
+
+    reduced_char_sequences = []
+    for sequence in char_sequences:
+        seq = [getattr(char, attr) for char in sequence]
+        reduced_char_sequences.append(seq)
+
+    for vidx, i in enumerate(reduced_char_sequences[:-1]):
+        for j in reduced_char_sequences[vidx+1:]:
             diff = 0
             counted = 0
             comps += 1
@@ -58,10 +67,7 @@ def _count_differences(char_sequences, state_alphabet, ignore_uncertain=True):
                 if c1 in states_to_ignore or c2 in states_to_ignore:
                     continue
                 counted += 1
-                total_counted += 1
-                f1 = getattr(c1, attr)
-                f2 = getattr(c2, attr)
-                if f1 != f2:
+                if c1 is not c2:
                     diff += 1
             sum_diff += float(diff)
             # If counted < 0, this means that there is sites between these sequences
@@ -102,18 +108,19 @@ def _num_segregating_sites(char_sequences, state_alphabet, ignore_uncertain=True
     s = 0
     if ignore_uncertain:
         attr = "fundamental_indexes_with_gaps_as_missing"
-        states_to_ignore = set([state_alphabet.gap_state, state_alphabet.no_data_state])
+        _states_to_ignore = [state_alphabet.gap_state, state_alphabet.no_data_state]
+        states_to_ignore= set([getattr(char, attr) for char in _states_to_ignore])
     else:
         attr = "fundamental_indexes"
         states_to_ignore = set()
     for i, c1 in enumerate(char_sequences[0]):
         for v in char_sequences[1:]:
             c2 = v[i]
-            if c1 in states_to_ignore or c2 in states_to_ignore:
-                continue
             f1 = getattr(c1, attr)
             f2 = getattr(c2, attr)
-            if f1 != f2:
+            if f1 in states_to_ignore or f2 in states_to_ignore:
+                continue
+            if f1 is not f2:
                 s += 1
                 break
     return s
@@ -418,5 +425,3 @@ def unfolded_site_frequency_spectrum(
         else:
             freqs[p] += 1
     return freqs
-
-
diff --git a/dendropy/calculate/profiledistance.py b/dendropy/calculate/profiledistance.py
new file mode 100644
index 0000000..fc0a473
--- /dev/null
+++ b/dendropy/calculate/profiledistance.py
@@ -0,0 +1,327 @@
+#! /usr/bin/env python
+
+##############################################################################
+##  DendroPy Phylogenetic Computing Library.
+##
+##  Copyright 2010 Jeet Sukumaran and Mark T. Holder.
+##  All rights reserved.
+##
+##  See "LICENSE.txt" for terms and conditions of usage.
+##
+##  If you use this work or any portion thereof in published work,
+##  please cite it as:
+##
+##     Sukumaran, J. and M. T. Holder. 2010. DendroPy: a Python library
+##     for phylogenetic computing. Bioinformatics 26: 1569-1571.
+##
+##############################################################################
+
+"""
+Profile distances.
+"""
+
+import math
+import collections
+from dendropy.utility import constants
+from dendropy.model import coalescent
+
+class MeasurementProfile(object):
+
+    @staticmethod
+    def _euclidean_distance(v1, v2, is_weight_values_by_comparison_profile_size=True):
+        v1_size = len(v1)
+        v2_size = len(v2)
+        v1_idx = 0
+        v2_idx = 0
+        if v1_size > v2_size:
+            v1_idx = v1_size - v2_size
+            weight = float(v2_size)
+        elif v2_size > v1_size:
+            v2_idx = v2_size - v1_size
+            weight = float(v1_size)
+        else:
+            weight = float(v1_size)
+        if not is_weight_values_by_comparison_profile_size:
+            weight = 1.0
+        ss = 0.0
+        while v1_idx < v1_size and v2_idx < v2_size:
+            ss += pow(v1[v1_idx]/weight - v2[v2_idx]/weight, 2)
+            v1_idx += 1
+            v2_idx += 1
+        return math.sqrt(ss)
+
+    def __init__(self,
+            profile_data=None,
+            interpolation_method="piecewise_linear"):
+        self.set_data(profile_data)
+        self.fixed_size = 0
+        self.interpolation_method = interpolation_method
+
+    def add(self, value):
+        self._profile_data.append(value)
+        self._profile_data = sorted(self._profile_data)
+        self._raw_data_size = len(self._profile_data)
+        self._interpolated_profiles = {}
+
+    def set_data(self, values):
+        if values is None:
+            values = []
+        self._profile_data = sorted(values)
+        self._raw_data_size = len(self._profile_data)
+        self._interpolated_profiles = {}
+
+    def __len__(self):
+        return self._raw_data_size
+
+    def distance(self,
+            other,
+            profile_size,
+            is_weight_values_by_comparison_profile_size=True):
+        if profile_size is None:
+            profile_size = self._get_profile_comparison_size(other)
+        v1 = self._get_profile_for_size(profile_size)
+        v2 = other._get_profile_for_size(profile_size)
+        return MeasurementProfile._euclidean_distance(v1, v2,
+                is_weight_values_by_comparison_profile_size=is_weight_values_by_comparison_profile_size)
+    # def get(self, idx):
+    #     if idx >= self._raw_data_size:
+    #         val = 0.0
+    #     else:
+    #         val = self._profile_data[idx]
+    #         if val is None:
+    #             val = 0.0
+    #     return val
+
+    def _get_profile_comparison_size(self, other):
+        if self.fixed_size > 0 and other.fixed_size > 0:
+            if self.fixed_size != other.fixed_size:
+                raise ValueError("Comparing two profiles locked to different sizes: {} and {}".format(
+                    self.fixed_size, other.fixed_size))
+            return self.fixed_size
+        elif self.fixed_size == 0 and other.fixed_size > 0:
+            if other.fixed_size < self._raw_data_size:
+                raise ValueError("Cannot interpolate points in current profile: current raw data size is {} but other profile is locked to a smaller fixed size ({})".format(
+                    self._raw_data_size, other.fixed_size))
+            return other.fixed_size
+        elif self.fixed_size > 0 and other.fixed_size == 0:
+            if self.fixed_size < other._raw_data_size:
+                raise ValueError("Cannot interpolate points in other profile: other raw data size is {} but current profile is locked to a smaller fixed size ({})".format(
+                    other._raw_data_size,
+                    self.fixed_size,
+                    ))
+            return self.fixed_size
+        else:
+            return max(self._raw_data_size, other._raw_data_size)
+
+    def _get_profile_for_size(self, profile_size):
+        if not profile_size:
+            return self._raw_data_size
+        try:
+            return self._interpolated_profiles[profile_size]
+        except KeyError:
+            self._interpolated_profiles[profile_size] = self._generate_interpolated_profile(profile_size)
+            return self._interpolated_profiles[profile_size]
+
+    def _generate_interpolated_profile(self, profile_size):
+        if profile_size == self._raw_data_size:
+            self._interpolated_profiles[profile_size] = list(self._profile_data)
+            return self._interpolated_profiles[profile_size]
+        if self._raw_data_size == 0:
+            raise ValueError("No data in profile")
+        if profile_size < self._raw_data_size:
+            raise ValueError("Error interpolating points in profile: number of requested interpolated points ({}) is less than raw data size ({})".format(
+                profile_size, self._raw_data_size))
+        default_bin_size = int(profile_size / self._raw_data_size)
+        if default_bin_size == 0:
+            raise ValueError("Profile size ({}) is too small for raw data size ({}), resulting in a null bin size".
+                    format(profile_size, self._raw_data_size))
+        bin_sizes = [default_bin_size] * self._raw_data_size
+
+        # // due to rounding error, default bin size may not be enough
+        # // this hacky algorithm adds additional points to bins to make up the
+        # // difference, trying to distribute the additional points along the
+        # // length of the line
+        diff = profile_size - (default_bin_size * self._raw_data_size)
+        if diff > 0:
+            dv = float(diff) / self._raw_data_size
+            cv = 0.0
+            for bin_idx in range(len(bin_sizes)):
+                if diff <= 1.0:
+                    break
+                cv += dv
+                if cv >= 1.0:
+                    bin_sizes[bin_idx] += 1
+                    diff -= 1.0
+                    cv = cv - 1.0
+
+        interpolated_profile = []
+        if self.interpolation_method == "staircase":
+            for original_data_value in self._profile_data:
+                self._interpolate_flat(
+                        interpolated_profile=interpolated_profile,
+                        value=original_data_value,
+                        num_points=default_bin_size)
+        elif self.interpolation_method == "piecewise_linear":
+            for bin_idx, original_data_value in enumerate(self._profile_data[:-1]):
+                self._interpolate_linear(
+                        interpolated_profile=interpolated_profile,
+                        x1=bin_idx,
+                        y1=self._profile_data[bin_idx],
+                        y2=self._profile_data[bin_idx+1],
+                        num_points=bin_sizes[bin_idx],
+                        max_points=profile_size,
+                        )
+            interpolated_profile.append(self._profile_data[-1])
+        return interpolated_profile
+
+    def _interpolate_flat(self,
+            interpolated_profile,
+            value,
+            num_points):
+        interpolated_profile += [value] * num_points
+        return interpolated_profile
+
+    def _interpolate_linear(self,
+            interpolated_profile,
+            x1, y1, y2,
+            num_points,
+            max_points):
+        assert num_points > 0
+        slope = float(y2 - y1) / num_points
+        for xi in range(num_points):
+            if max_points and len(interpolated_profile) >= max_points:
+                return interpolated_profile
+            interpolated_profile.append((slope * xi) + y1)
+
+class TreeProfile(object):
+
+    def __init__(self,
+            tree,
+            is_measure_edge_lengths=True,
+            is_measure_patristic_distances=False,
+            is_measure_patristic_steps=False,
+            is_measure_node_distances=True,
+            is_measure_node_steps=True,
+            is_measure_node_ages=True,
+            is_measure_coalescence_intervals=True,
+            is_normalize=True,
+            ultrametricity_precision=constants.DEFAULT_ULTRAMETRICITY_PRECISION,
+            tree_phylogenetic_distance_matrix=None,
+            tree_node_distance_matrix=None,
+            tree_id=None,
+            is_skip_normalization_on_zero_division_error=False,
+            ):
+        self.tree_id = tree_id
+        self.is_measure_edge_lengths = is_measure_edge_lengths
+        self.is_measure_patristic_distances = is_measure_patristic_distances
+        self.is_measure_patristic_steps = is_measure_patristic_steps
+        self.is_measure_node_distances = is_measure_node_distances
+        self.is_measure_node_steps = is_measure_node_steps
+        self.is_measure_node_ages = is_measure_node_ages
+        self.is_measure_coalescence_intervals = is_measure_coalescence_intervals
+        self.is_normalize = is_normalize
+        self.is_skip_normalization_on_zero_division_error = is_skip_normalization_on_zero_division_error
+        self.ultrametricity_precision = ultrametricity_precision
+        self.measurement_profiles = collections.OrderedDict()
+        self.compile(tree)
+
+    def compile(self, tree,
+            tree_phylogenetic_distance_matrix=None,
+            tree_node_distance_matrix=None,
+            ):
+        if self.is_measure_edge_lengths:
+            if self.is_normalize:
+                tree_length_nf = tree.length()
+                if tree_length_nf == 0:
+                    tree_length_nf = 1.0
+            else:
+                tree_length_nf = 1.0
+            self.measurement_profiles["Edge.Lengths"] = MeasurementProfile(
+                    profile_data=[float(e.length)/tree_length_nf for e in tree.postorder_edge_iter() if e.length is not None])
+        if self.is_measure_patristic_distances or self.is_measure_patristic_steps:
+            if tree_phylogenetic_distance_matrix is None:
+                tree_phylogenetic_distance_matrix = tree.phylogenetic_distance_matrix()
+            if self.is_measure_patristic_distances:
+                self.measurement_profiles["Patristic.Distances"] = MeasurementProfile(
+                        profile_data=tree_phylogenetic_distance_matrix.distances(
+                            is_weighted_edge_distances=True,
+                            is_normalize_by_tree_size=self.is_normalize,))
+            if self.is_measure_patristic_steps:
+                self.measurement_profiles["Patristic.Steps"] = MeasurementProfile(
+                        profile_data=tree_phylogenetic_distance_matrix.distances(
+                        is_weighted_edge_distances=False,
+                        is_normalize_by_tree_size=self.is_normalize,))
+        if self.is_measure_node_distances or self.is_measure_node_steps:
+            if tree_node_distance_matrix is None:
+                tree_node_distance_matrix = tree.node_distance_matrix()
+            if self.is_measure_node_distances:
+                self.measurement_profiles["Node.Distances"] = MeasurementProfile(
+                        profile_data=tree_node_distance_matrix.distances(
+                            is_weighted_edge_distances=True,
+                            is_normalize_by_tree_size=self.is_normalize,))
+            if self.is_measure_node_steps:
+                self.measurement_profiles["Node.Steps"] = MeasurementProfile(
+                        profile_data=tree_node_distance_matrix.distances(
+                        is_weighted_edge_distances=False,
+                        is_normalize_by_tree_size=self.is_normalize,))
+        if self.is_measure_node_ages:
+            node_ages = tree.calc_node_ages(ultrametricity_precision=self.ultrametricity_precision)
+            if self.is_normalize:
+                s = sum(node_ages)
+                try:
+                    normalized_node_ages = [a/s for a in node_ages]
+                    node_ages = normalized_node_ages
+                except ZeroDivisionError as e:
+                    if self.is_skip_normalization_on_zero_division_error:
+                        pass
+                    else:
+                        raise
+            self.measurement_profiles["Node.Ages"] = MeasurementProfile(profile_data=node_ages,)
+        if self.is_measure_coalescence_intervals:
+            cf = coalescent.extract_coalescent_frames(
+                    tree=tree,
+                    ultrametricity_precision=self.ultrametricity_precision,)
+            waiting_times = cf.values()
+            if self.is_normalize:
+                s = sum(waiting_times)
+                try:
+                    normalized_waiting_times = [w/s for w in waiting_times]
+                    waiting_times = normalized_waiting_times
+                except ZeroDivisionError as e:
+                    if self.is_skip_normalization_on_zero_division_error:
+                        pass
+                    else:
+                        raise
+            self.measurement_profiles["Coalescence.Intervals"] = MeasurementProfile(profile_data=waiting_times,)
+
+    @property
+    def measurement_names(self):
+        names = []
+        if self.is_measure_edge_lengths:
+            names.append("Edge.Lengths")
+        if self.is_measure_patristic_distances:
+            names.append("Patristic.Distances")
+        if self.is_measure_patristic_steps:
+            names.append("Patristic.Steps")
+        if self.is_measure_node_distances:
+            names.append("Node.Distances")
+        if self.is_measure_node_steps:
+            names.append("Node.Steps")
+        if self.is_measure_node_ages:
+            names.append("Node.Ages")
+        if self.is_measure_coalescence_intervals:
+            names.append("Coalescence.Intervals")
+        return names
+
+    def measure_distances(self, other_tree_profile,
+            profile_size=None,
+            is_weight_values_by_comparison_profile_size=True):
+        d = collections.OrderedDict()
+        for pm_name in self.measurement_profiles:
+            p1 = self.measurement_profiles[pm_name]
+            p2 = other_tree_profile.measurement_profiles[pm_name]
+            d[pm_name] = p1.distance(p2,
+                    profile_size=None,
+                    is_weight_values_by_comparison_profile_size=is_weight_values_by_comparison_profile_size)
+        return d
+
diff --git a/dendropy/calculate/treecompare.py b/dendropy/calculate/treecompare.py
index a2308a1..52b4978 100644
--- a/dendropy/calculate/treecompare.py
+++ b/dendropy/calculate/treecompare.py
@@ -22,6 +22,8 @@ Statistics, metrics, measurements, and values calculated *between* *two* trees.
 
 import math
 import collections
+import itertools
+import dendropy
 from dendropy.utility import error
 
 ###############################################################################
@@ -230,8 +232,8 @@ def false_positives_and_negatives(
             comparison_tree.encode_bipartitions()
     ref_bipartitions = set(reference_tree.bipartition_encoding)
     comparison_bipartitions = set(comparison_tree.bipartition_encoding)
-    false_positives = ref_bipartitions.difference(comparison_bipartitions)
-    false_negatives = comparison_bipartitions.difference(ref_bipartitions)
+    false_positives = comparison_bipartitions.difference(ref_bipartitions)
+    false_negatives = ref_bipartitions.difference(comparison_bipartitions)
     return len(false_positives), len(false_negatives)
 
 def euclidean_distance(
@@ -361,10 +363,7 @@ class TreeShapeKernel(object):
     _TreeShapeKernelNodeCache = collections.namedtuple("_TreeShapeKernelNodeCache",
             ["production", "index", "edge_lengths", "sum_of_square_edge_lengths"])
 
-    def __init__(self,
-                sigma=1,
-                gauss_factor=1,
-                decay_factor=0.1):
+    def __init__(self, **kwargs):
         """
         Calculator for tree shape kernel tricking.
 
@@ -391,13 +390,19 @@ class TreeShapeKernel(object):
         """
 
         # kernel function
-        self.sigma = sigma
-        self.gauss_factor = gauss_factor
-        self.decay_factor = decay_factor
+        # sigma=1,
+        # gauss_factor=1,
+        # decay_factor=0.1,
+        self.sigma = kwargs.pop("sigma", 1)
+        self.gauss_factor = kwargs.pop("gauss_factor", 1)
+        self.decay_factor = kwargs.pop("decay_factor", 0.1)
 
         # cache management
         self._tree_cache = {}
 
+    def remove_from_cache(self, tree):
+        del self._tree_cache[tree]
+
     def update_cache(self, tree):
         """
         Pre-computes values needed for the kernel trick with this tree and
@@ -538,8 +543,14 @@ class AssemblageInducedTreeManager(object):
     def __init__(self, *args, **kwargs):
         self.is_exchangeable_assemblage_classifications = kwargs.pop("is_exchangeable_assemblage_classifications", True)
         self._num_assemblage_classifications = kwargs.pop("num_assemblages", None)
+        self.induced_tree_factory = kwargs.pop("induced_tree_factory", None)
+        self.induced_tree_node_factory = kwargs.pop("induced_tree_node_factory", None)
+        self.skip_null_assemblages = kwargs.pop("skip_null_assemblages", False)
         self._tree_assemblage_induced_trees_map = {}
 
+    def remove_from_cache(self, tree):
+        del self._tree_assemblage_induced_trees_map[tree]
+
     def generate_induced_trees(self, tree, assemblage_leaf_sets):
         if assemblage_leaf_sets is None:
             if self._num_assemblage_classifications is not None:
@@ -552,12 +563,18 @@ class AssemblageInducedTreeManager(object):
                         self._num_assemblage_classifications,
                         len(assemblage_leaf_sets)))
         induced_trees = []
-        for assemblage_leaf_set in assemblage_leaf_sets:
+        for idx, assemblage_leaf_set in enumerate(assemblage_leaf_sets):
+            if len(assemblage_leaf_set) == 0:
+                if self.skip_null_assemblages:
+                    continue
+                raise error.NullLeafSetException()
             node_filter_fn = lambda nd: nd in assemblage_leaf_set
             induced_tree = tree.extract_tree(
                                node_filter_fn=node_filter_fn,
                                is_apply_filter_to_leaf_nodes=True,
-                               is_apply_filter_to_internal_nodes=False)
+                               is_apply_filter_to_internal_nodes=False,
+                               tree_factory=self.induced_tree_factory,
+                               node_factory=self.induced_tree_node_factory)
             induced_trees.append(induced_tree)
         self._tree_assemblage_induced_trees_map[tree] = induced_trees
         return induced_trees
@@ -567,10 +584,39 @@ class AssemblageInducedTreeManager(object):
 
 class AssemblageInducedTreeShapeKernel(TreeShapeKernel, AssemblageInducedTreeManager):
 
+    @staticmethod
+    def _euclidean_distance(v1, v2, is_weight_values_by_comparison_size=True):
+        v1_size = len(v1)
+        v2_size = len(v2)
+        v1_idx = 0
+        v2_idx = 0
+        if v1_size > v2_size:
+            v1_idx = v1_size - v2_size
+            weight = float(v2_size)
+        elif v2_size > v1_size:
+            v2_idx = v2_size - v1_size
+            weight = float(v1_size)
+        else:
+            weight = float(v1_size)
+        if not is_weight_values_by_comparison_size:
+            weight = 1.0
+        ss = 0.0
+        while v1_idx < v1_size and v2_idx < v2_size:
+            ss += pow(v1[v1_idx]/weight - v2[v2_idx]/weight, 2)
+            v1_idx += 1
+            v2_idx += 1
+        return math.sqrt(ss)
+
     def __init__(self, *args, **kwargs):
+        self.exchangeable_assemblage_comparison_strategy = kwargs.pop("exchangeable_assemblage_comparison_strategy", "joint minimum")
         TreeShapeKernel.__init__(self, *args, **kwargs)
         AssemblageInducedTreeManager.__init__(self, *args, **kwargs)
-        self._cache_induced_tree_scores = {}
+
+    def remove_from_cache(self, tree):
+        for induced_tree in self._tree_assemblage_induced_trees_map[tree]:
+            TreeShapeKernel.remove_from_cache(self, induced_tree)
+        TreeShapeKernel.remove_from_cache(self, tree)
+        AssemblageInducedTreeManager.remove_from_cache(self, tree)
 
     def update_assemblage_induced_tree_cache(self,
             tree,
@@ -578,23 +624,8 @@ class AssemblageInducedTreeShapeKernel(TreeShapeKernel, AssemblageInducedTreeMan
         self.update_cache(tree=tree)
         induced_trees = self.generate_induced_trees(tree=tree,
                 assemblage_leaf_sets=assemblage_leaf_sets)
-        # self._cache_induced_tree_scores[tree] = []
-        # for induced_tree1 in induced_trees:
-        #     self.update_cache(tree=induced_tree1)
-        #     s0 = TreeShapeKernel.__call__(self,
-        #             tree1=induced_tree1,
-        #             tree2=tree,
-        #             is_tree1_cache_updated=True,
-        #             is_tree2_cache_updated=True,
-        #             )
-        #     for induced_tree2 in induced_trees:
-        #         s1 = TreeShapeKernel.__call__(self,
-        #                 tree1=induced_tree1,
-        #                 tree2=induced_tree2,
-        #                 is_tree1_cache_updated=True,
-        #                 is_tree2_cache_updated=True,
-        #                 )
-        #         self._cache_induced_tree_scores[tree].append(s1-s0)
+        for induced_tree in induced_trees:
+            self.update_cache(tree=induced_tree)
 
     def __call__(self,
             tree1,
@@ -604,7 +635,6 @@ class AssemblageInducedTreeShapeKernel(TreeShapeKernel, AssemblageInducedTreeMan
             is_tree1_cache_updated=False,
             is_tree2_cache_updated=False,
             ):
-        score_vector = []
         main_trees_score = TreeShapeKernel.__call__(self,
                 tree1=tree1,
                 tree2=tree2,
@@ -612,20 +642,27 @@ class AssemblageInducedTreeShapeKernel(TreeShapeKernel, AssemblageInducedTreeMan
                 is_tree2_cache_updated=is_tree2_cache_updated,
                 )
         if not is_tree1_cache_updated or tree1 not in self._tree_assemblage_induced_trees_map:
+            if tree1_assemblage_leaf_sets is None:
+                raise ValueError("Uncached tree requires specification of 'tree1_assemblage_leaf_sets'")
             self.update_assemblage_induced_tree_cache(
                     tree=tree1,
                     assemblage_leaf_sets=tree1_assemblage_leaf_sets)
         if not is_tree2_cache_updated or tree2 not in self._tree_assemblage_induced_trees_map:
+            if tree2_assemblage_leaf_sets is None:
+                raise ValueError("Uncached tree requires specification of 'tree2_assemblage_leaf_sets'")
             self.update_assemblage_induced_tree_cache(
                     tree=tree2,
                     assemblage_leaf_sets=tree2_assemblage_leaf_sets)
         ## ++ main tree score
-        score_vector.append(main_trees_score)
+        score_table = collections.OrderedDict()
+        score_table["primary.tree.kernel.trick.distance"] = main_trees_score
         induced_trees1 = self._tree_assemblage_induced_trees_map[tree1]
-        induced_trees2 = self._tree_assemblage_induced_trees_map[tree1]
-        assert len(induced_trees1) == len(induced_trees2) == self._num_assemblage_classifications
+        induced_trees2 = self._tree_assemblage_induced_trees_map[tree2]
+        # assert len(induced_trees1) == len(induced_trees2) == self._num_assemblage_classifications
         if not self.is_exchangeable_assemblage_classifications:
-            for induced_tree1, induced_tree2 in zip(induced_trees1, induced_trees2):
+            if len(induced_trees1) != len(induced_trees2):
+                raise TypeError("Different numbers of induced trees not supported for non-exchangeable classifications: {} vs. {}".format(len(induced_trees1), len(induced_trees2)))
+            for idx, (induced_tree1, induced_tree2) in enumerate(zip(induced_trees1, induced_trees2)):
                 s = TreeShapeKernel.__call__(self,
                                 tree1=induced_tree1,
                                 tree2=induced_tree2,
@@ -633,8 +670,34 @@ class AssemblageInducedTreeShapeKernel(TreeShapeKernel, AssemblageInducedTreeMan
                                 is_tree2_cache_updated=True,
                                 )
                 ## ++ raw scores direct comparisons of each of the induced trees
-                score_vector.append(s)
-        return score_vector
+                score_table["induced.tree.{}.kernel.trick.distance".format(idx+1)] = s
+        else:
+            if self.exchangeable_assemblage_comparison_strategy == "joint minimum":
+                # if lengths are different, we want to fix the smaller set
+                if len(induced_trees1) > len(induced_trees2):
+                    induced_trees2, induced_trees1 = induced_trees1, induced_trees2
+                comparison_vector = [0.0] * len(induced_trees1)
+                current_minimum_distance = None
+                current_joint_minimum_vector = None
+                for induced_trees_permutation in itertools.permutations(induced_trees2, len(induced_trees1)):
+                    distances = []
+                    for t2, t1 in zip(induced_trees_permutation, induced_trees1):
+                        distances.append(TreeShapeKernel.__call__(self,
+                                tree1=t1,
+                                tree2=t2,
+                                is_tree1_cache_updated=True,
+                                is_tree2_cache_updated=True,))
+                    euclidean_distance = self._euclidean_distance(distances, comparison_vector)
+                    if current_minimum_distance is None or euclidean_distance < current_minimum_distance:
+                        current_minimum_distance = euclidean_distance
+                        current_joint_minimum_vector = distances
+                for didx, d in enumerate(distances):
+                    score_table["induced.tree.{}.kernel.trick.distance".format(didx+1)] = d
+                for didx in range(didx+1, self._num_assemblage_classifications):
+                    score_table["induced.tree.{}.kernel.trick.distance".format(didx+1)] = "NA"
+            else:
+                raise NotImplementedError()
+        return score_table
 
 ###############################################################################
 ## Legacy
diff --git a/dendropy/dataio/newickreader.py b/dendropy/dataio/newickreader.py
index 090dbd2..6dcf3c5 100644
--- a/dendropy/dataio/newickreader.py
+++ b/dendropy/dataio/newickreader.py
@@ -13,7 +13,7 @@
 ##
 ##     Sukumaran, J. and M. T. Holder. 2010. DendroPy: a Python library
 ##     for phylogenetic computing. Bioinformatics 26: 1569-1571.
-##
+#
 ##############################################################################
 
 """
@@ -118,8 +118,7 @@ class NewickReader(ioservice.DataReader):
                     stream=stream)
 
     def __init__(self, **kwargs):
-        """
-        Keyword Arguments
+        """Keyword Arguments
         -----------------
         rooting : string, {['default-unrooted'], 'default-rooted', 'force-unrooted', 'force-rooted'}
             Specifies how trees in the data source should be intepreted with
@@ -155,9 +154,6 @@ class NewickReader(ioservice.DataReader):
         store_tree_weights : boolean, default: |False|
             If |True|, process the tree weight (e.g. "[&W 1/2]") comment
             associated with each tree, if any. Defaults to |False|.
-        encode_splits : boolean, default: |False|
-            If |True|, split hash bitmasks will be calculated and attached to
-            the edges.
         finish_node_fn : function object, default: |None|
             If specified, this function will be applied to each node after
             it has been constructed.
@@ -178,6 +174,15 @@ class NewickReader(ioservice.DataReader):
             If |False|, leaf (external) node labels will be instantantiated
             into |Taxon| objects. If |True|, leaff (external) node
             labels will *not* be instantantiated as strings.
+        is_parse_jplace_tokens : boolean: |False|
+            If |True|, then accept edge numbering according to the jplace
+            format, as described in Matsen et. al. PLoS One, 2012
+            http://dx.doi.org/10.1371/journal.pone.0031009. An instance variable
+            edge_index is added to the returned tree, and an edge_number is
+            added to each edge. If False [default], encountering edge labels
+            raises a NewickReaderMalformedStatementError.
+        is_assign_internal_labels_to_edges : boolean, default: |None|
+            If |True|, internal node labels will be assigned as edge labels.
         terminating_semicolon_required : boolean, default: |True|
             If |True| [default], then a tree statement that does not end in a
             semi-colon is an error. If |False|, then no error will be raised.
@@ -185,6 +190,7 @@ class NewickReader(ioservice.DataReader):
             If |True|, then unsupported or unrecognized keyword arguments will
             not result in an error. Default is |False|: unsupported keyword
             arguments will result in an error.
+
         """
 
         # base
@@ -253,6 +259,10 @@ class NewickReader(ioservice.DataReader):
         self.suppress_internal_node_taxa = kwargs.pop("suppress_internal_node_taxa", True)
         self.suppress_leaf_node_taxa = kwargs.pop("suppress_external_node_taxa", False) # legacy (will be deprecated)
         self.suppress_leaf_node_taxa = kwargs.pop("suppress_leaf_node_taxa", self.suppress_leaf_node_taxa)
+        self.is_parse_jplace_tokens = kwargs.pop("is_parse_jplace_tokens", False)
+        self.is_assign_internal_labels_to_edges = kwargs.pop("is_assign_internal_labels_to_edges", None)
+        if self.is_assign_internal_labels_to_edges and not self.suppress_internal_node_taxa:
+            raise ValueError("Conflicting options: cannot simultaneously assign internal labels to edges and to internal taxa")
         self.terminating_semicolon_required = kwargs.pop("terminating_semicolon_required", True)
         self.check_for_unused_keyword_arguments(kwargs)
 
@@ -622,11 +632,28 @@ class NewickReader(ioservice.DataReader):
                         line_num=nexus_tokenizer.token_line_num,
                         col_num=nexus_tokenizer.token_column_num,
                         stream=nexus_tokenizer.src)
+            elif self.is_parse_jplace_tokens and nexus_tokenizer.current_token == '{':
+                # Edge number from .jplace format
+                nexus_tokenizer.require_next_token()
+                edge_number = int(nexus_tokenizer.current_token)
+                edge = current_node.edge
+                edge.edge_number = edge_number
+                try:
+                    tree.edge_index.insert(edge_number, edge)
+                except AttributeError:
+                    tree.edge_index = []
+                    tree.edge_index.insert(edge_number, edge)
+                nexus_tokenizer.require_next_token() # for closing '}'
+                nexus_tokenizer.require_next_token()
             else: #267
                 # label
                 if label_parsed: #269
+                    msg = "Expecting ':'"
+                    if self.is_parse_jplace_tokens:
+                        msg += ", '{'"
+                    msg += ", ')', ',' or ';' after reading label but found '{}'".format(nexus_tokenizer.current_token)
                     raise NewickReader.NewickReaderMalformedStatementError(
-                            message="Expecting ':', ')', ',' or ';' after reading label but found '{}'".format(nexus_tokenizer.current_token),
+                            message=msg,
                             line_num=nexus_tokenizer.token_line_num,
                             col_num=nexus_tokenizer.token_column_num,
                             stream=nexus_tokenizer.src)
@@ -635,7 +662,10 @@ class NewickReader(ioservice.DataReader):
                     label = nexus_tokenizer.current_token
                     if ( (is_internal_node and self.suppress_internal_node_taxa)
                             or ((not is_internal_node) and self.suppress_leaf_node_taxa) ):
-                        current_node.label = label
+                        if self.is_assign_internal_labels_to_edges:
+                            current_node.edge.label = label
+                        else:
+                            current_node.label = label
                     else:
                         node_taxon = taxon_symbol_map_fn(label)
                         if node_taxon in self._seen_taxa:
diff --git a/dendropy/dataio/newickyielder.py b/dendropy/dataio/newickyielder.py
index 5288cda..a938c34 100644
--- a/dendropy/dataio/newickyielder.py
+++ b/dendropy/dataio/newickyielder.py
@@ -62,7 +62,7 @@ class NewickTreeDataYielder(ioservice.TreeDataYielder):
                 preserve_unquoted_underscores=self.newick_reader.preserve_unquoted_underscores)
         taxon_symbol_mapper = nexusprocessing.NexusTaxonSymbolMapper(
                 taxon_namespace=self.attached_taxon_namespace,
-                enable_lookup_by_taxon_number=True,
+                enable_lookup_by_taxon_number=False,
                 case_sensitive=self.newick_reader.case_sensitive_taxon_labels)
         while True:
             tree = self.newick_reader._parse_tree_statement(
diff --git a/dendropy/dataio/nexusreader.py b/dendropy/dataio/nexusreader.py
index 69e2be8..4cadd1a 100644
--- a/dendropy/dataio/nexusreader.py
+++ b/dendropy/dataio/nexusreader.py
@@ -472,10 +472,10 @@ class NexusReader(ioservice.DataReader):
                 raise self._nexus_error("Multiple taxa blocks with title '{}' defined".format(title), NexusReader.MultipleBlockWithSameTitleError)
             return found[0]
 
-    def _get_taxon_symbol_mapper(self, taxon_namespace):
+    def _get_taxon_symbol_mapper(self, taxon_namespace, enable_lookup_by_taxon_number=True):
         taxon_symbol_mapper = nexusprocessing.NexusTaxonSymbolMapper(
                 taxon_namespace=taxon_namespace,
-                enable_lookup_by_taxon_number=True,
+                enable_lookup_by_taxon_number=enable_lookup_by_taxon_number,
                 case_sensitive=self.case_sensitive_taxon_labels)
         return taxon_symbol_mapper
 
diff --git a/dendropy/dataio/nexuswriter.py b/dendropy/dataio/nexuswriter.py
index 6272f64..3f5e7ee 100644
--- a/dendropy/dataio/nexuswriter.py
+++ b/dendropy/dataio/nexuswriter.py
@@ -162,6 +162,9 @@ class NexusWriter(ioservice.DataWriter):
             annotations. The format specifier should be given in Python's
             string format specification mini-language. E.g. ".8f", ".4E",
             "8.4f".
+        exclude_from_taxa_blocks : set (or other iterable) of |Taxon| instances
+            If specified, any |Taxon| object in this set will be excluded from
+            all TAXA blocks, *even* if they are referenced in the data.
         ignore_unrecognized_keyword_arguments : boolean, default: |False|
             If |True|, then unsupported or unrecognized keyword arguments will
             not result in an error. Default is |False|: unsupported keyword
@@ -195,6 +198,7 @@ class NexusWriter(ioservice.DataWriter):
         if self.discrete_character_state_value_format_fn is None:
             self.discrete_character_state_value_format_fn = self._format_discrete_character_value
         self.translate_tree_taxa = kwargs.pop("translate_tree_taxa", None)
+        self.exclude_from_taxa_blocks = kwargs.pop("exclude_from_taxa_blocks", None)
 
         # The following are used by NewickWriter in addition to NexusWriter, so
         # they are extracted/set here and then forwarded on ...
@@ -290,14 +294,21 @@ class NexusWriter(ioservice.DataWriter):
                 stream.write(block)
                 stream.write("\n")
 
+    def _get_taxa_to_include(self, taxon_namespace):
+        if not self.exclude_from_taxa_blocks:
+            return list(taxon_namespace)
+        else:
+            return [t for t in taxon_namespace if t not in self.exclude_from_taxa_blocks]
+
     def _write_taxa_block(self, stream, taxon_namespace):
         stream.write("BEGIN TAXA;\n")
         self._write_block_title(stream, taxon_namespace)
         self._write_item_annotations(stream, taxon_namespace)
         self._write_item_comments(stream, taxon_namespace)
-        stream.write("    DIMENSIONS NTAX={};\n".format(len(taxon_namespace)))
+        taxon_to_include = self._get_taxa_to_include(taxon_namespace)
+        stream.write("    DIMENSIONS NTAX={};\n".format(len(taxon_to_include)))
         stream.write("    TAXLABELS\n")
-        for taxon in taxon_namespace:
+        for taxon in taxon_to_include:
             stream.write("        {}\n".format(
                 nexusprocessing.escape_nexus_token(taxon.label, preserve_spaces=self.preserve_spaces, quote_underscores=not self.unquoted_underscores),
                 ))
diff --git a/dendropy/dataio/nexusyielder.py b/dendropy/dataio/nexusyielder.py
index faa06e8..87d3dce 100644
--- a/dendropy/dataio/nexusyielder.py
+++ b/dendropy/dataio/nexusyielder.py
@@ -76,7 +76,10 @@ class NexusTreeDataYielder(
         token = self._nexus_tokenizer.next_token()
         if token.upper() != "#NEXUS":
             if self.assume_newick_if_not_nexus:
-                taxon_symbol_mapper = self._get_taxon_symbol_mapper(taxon_namespace=self.attached_taxon_namespace)
+                taxon_symbol_mapper = self._get_taxon_symbol_mapper(
+                        taxon_namespace=self.attached_taxon_namespace,
+                        enable_lookup_by_taxon_number=False,
+                        )
                 while True:
                     tree = self._build_tree_from_newick_tree_string(
                             tree_factory=self.tree_factory,
diff --git a/dendropy/datamodel/basemodel.py b/dendropy/datamodel/basemodel.py
index 95db357..9b44106 100644
--- a/dendropy/datamodel/basemodel.py
+++ b/dendropy/datamodel/basemodel.py
@@ -731,7 +731,8 @@ class Annotable(object):
                 if a2.is_attribute and a1._value[0] is other:
                     a2._value = (self, a1._value[1])
                 self.annotations.add(a2)
-            memo[id(other._annotations)] = self._annotations
+            if hasattr(self, "_annotations"):
+                memo[id(other._annotations)] = self._annotations
 
     # def __copy__(self):
     #     o = self.__class__.__new__(self.__class__)
@@ -975,7 +976,7 @@ class AnnotationSet(container.OrderedSet):
         try:
             o = self.__class__(target=memo[id(self.target)])
         except KeyError:
-            raise KeyError("deepcopy error: object id {} not found: {}".format((id(self.target), repr(self.target))))
+            raise KeyError("deepcopy error: object id {} not found: {}".format(id(self.target), repr(self.target)))
         memo[id(self)] = o
         for a in self:
             x = copy.deepcopy(a, memo)
diff --git a/dendropy/datamodel/taxonmodel.py b/dendropy/datamodel/taxonmodel.py
index 687eba2..3e8c981 100644
--- a/dendropy/datamodel/taxonmodel.py
+++ b/dendropy/datamodel/taxonmodel.py
@@ -1427,7 +1427,8 @@ class TaxonNamespace(
             bitmask |= self.taxon_bitmask(taxon)
         return bitmask
 
-    def taxa_bipartition(self, **kwargs):
+    def taxa_bipartition(self,
+            **kwargs):
         """
         Returns a bipartition that represents all taxa specified by
         keyword-specified list of taxon objects (``taxa=``) or labels
@@ -1449,8 +1450,15 @@ class TaxonNamespace(
             List of split hash bitmask values for specified |Taxon|
             objects.
         """
-        from dendropy.treemodel import Bipartition
-        return Bipartition(bitmask=bitmask, compile_bipartition=True)
+        tree_leafset_bitmask = kwargs.get("tree_leafset_bitmask")
+        if tree_leafset_bitmask is None:
+            tree_leafset_bitmask = self.all_taxa_bitmask()
+        from dendropy.datamodel.treemodel import Bipartition
+        bitmask = self.taxa_bitmask(**kwargs)
+        return Bipartition(
+                bitmask=bitmask,
+                tree_leafset_bitmask=tree_leafset_bitmask,
+                compile_bipartition=True)
 
     def get_taxa_bitmask(self, **kwargs):
         """
diff --git a/dendropy/datamodel/treemodel.py b/dendropy/datamodel/treemodel.py
index 43bc1cb..0ecfe31 100644
--- a/dendropy/datamodel/treemodel.py
+++ b/dendropy/datamodel/treemodel.py
@@ -370,7 +370,7 @@ class Bipartition(object):
         To represent a bipartition in the same scheme used by, e.g. PAUP* or
         Mr. Bayes::
 
-            print(bipartition.as_string('.', '*', reverse=True))
+            print(bipartition.leafset_as_bitstring('.', '*', reverse=True))
         """
         return self.bitmask_as_bitstring(
                 mask=self._leafset_bitmask,
@@ -2476,6 +2476,8 @@ class Node(
             if "'" in label:
                 label.replace("'", "''")
             return "'{}'".format(label)
+        elif " " in label and not kwargs.get("preserve_spaces"):
+            return label.replace(" ", "_")
         else:
             return label
 
@@ -5082,9 +5084,11 @@ class Tree(
             bipartitions_to_delete = set()
         else:
             bipartitions_to_delete = None
+        remapped_nodes = []
         for nd in self.postorder_node_iter():
             children = nd._child_nodes
             if len(children) == 1:
+                remapped_nodes.append((nd, children[0]))
                 if nd.edge.length is not None:
                     if children[0].edge.length is None:
                         children[0].edge.length = nd.edge.length
@@ -5109,6 +5113,7 @@ class Tree(
         if bipartitions_to_delete:
             old_encoding = self.bipartition_encoding
             self.bipartition_encoding = [b for b in old_encoding if id(b) not in bipartitions_to_delete]
+        return remapped_nodes
 
     def delete_outdegree_one_nodes(self):
         deprecate.dendropy_deprecation_warning(
@@ -5167,6 +5172,7 @@ class Tree(
                     next_attachment = Node()
                     p = next_sib._parent_node
                     p.add_child(next_attachment)
+                    next_attachment.edge.length = 0.0
                     p.remove_child(next_sib)
                     next_attachment.add_child(next_sib)
                     next_attachment.add_child(next_child)
@@ -5175,7 +5181,7 @@ class Tree(
             else:
                 while len(node._child_nodes) > limit:
                     nn1 = Node()
-                    nn1.edge.length = 0
+                    nn1.edge.length = 0.0
                     c1 = node._child_nodes[0]
                     c2 = node._child_nodes[1]
                     node.remove_child(c1)
@@ -5301,6 +5307,7 @@ class Tree(
         Removes terminal nodes associated with Taxon objects given by the container
         ``taxa`` (which can be any iterable, including a TaxonNamespace object) from ``self``.
         """
+        taxa = set(taxa)
         nodes_to_remove = []
         for nd in self.postorder_node_iter():
             if (
@@ -5603,10 +5610,34 @@ class Tree(
                             ocnd = nnd.age
                         d = abs(node.age - ocnd)
                         if  d > ultrametricity_precision:
-                            # raise ValueError("Tree is not ultrametric. Node '{}': expecting {}, but found {}".format(node.label, node.age, ocnd))
-                            raise error.UltrametricityError("Tree is not ultrametric within threshold of {threshold}: {deviance}".format(
+                            # try:
+                            #     self.encode_bipartitions()
+                            #     node_id = nnd.bipartition.split_as_newick_string(taxon_namespace=self.taxon_namespace)
+                            # except OSError:
+                            #     node_id = str(nnd)
+                            node_id = str(node)
+                            subtree = node._as_newick_string()
+                            desc = []
+                            for desc_nd in child_nodes:
+                                desc.append("-   {}: has age of {} and edge length of {}, resulting in parent node age of {}".format(
+                                    desc_nd,
+                                    desc_nd.age,
+                                    desc_nd.edge.length,
+                                    desc_nd.edge.length + desc_nd.age))
+                            desc = "\n".join(desc)
+                            raise error.UltrametricityError(
+                                    ("Tree is not ultrametric within threshold of {threshold}: {deviance}.\n"
+                                     "Encountered in subtree of node {node} (edge length of {length}):\n"
+                                     "\n    {subtree}\n\n"
+                                     "Age of children:\n"
+                                     "{desc}"
+                                     ).format(
                                 threshold=ultrametricity_precision,
                                 deviance=d,
+                                node=node_id,
+                                length=node.edge.length,
+                                desc=desc,
+                                subtree=subtree,
                                 ))
                 ages.append(node.age)
         return ages
@@ -6043,7 +6074,7 @@ class Tree(
                    hex(id(self)),
                    label))
         if depth >= 1:
-            newick_str = self.as_newick_string()
+            newick_str = self._as_newick_string()
             if not newick_str:
                 newick_str = "()"
             if depth == 1:
@@ -6473,7 +6504,7 @@ class AsciiTreePlot(object):
         widths = [self.node_offset[i] for i in tree.leaf_node_iter() if self.node_offset[i] is not None]
         max_width = float(max(widths))
         if max_width == 0:
-            raise AsciiTreePlot.NullEdgeLengthError("Tree cannot be plotted under metric '%s' due to zero or null edge lengths: '%s'" % (self.plot_metric, tree.as_newick_string()))
+            raise AsciiTreePlot.NullEdgeLengthError("Tree cannot be plotted under metric '%s' due to zero or null edge lengths: '%s'" % (self.plot_metric, tree._as_newick_string()))
         edge_scale_factor = float(effective_display_width) / max_width
         self.calc_plot(tree.seed_node,
                        edge_scale_factor=edge_scale_factor)
diff --git a/dendropy/interop/paup.py b/dendropy/interop/paup.py
index 1296c6d..f08b641 100644
--- a/dendropy/interop/paup.py
+++ b/dendropy/interop/paup.py
@@ -60,7 +60,8 @@ class PaupService(object):
             strip_extraneous_prompts_from_stderr=True,
             cwd=None,
             env=None,
-            paup_path=PAUP_PATH
+            paup_path=PAUP_PATH,
+            timeout=None,
             ):
         """
         Executes a sequence of commands in PAUP* and returns the results.
@@ -117,7 +118,15 @@ class PaupService(object):
                 cwd=cwd,
                 env=env,
                 )
-        raw_stdout, raw_stderr = processio.communicate(p, paup_block)
+        raw_stdout, raw_stderr = processio.communicate(p, paup_block, timeout=timeout)
+        # try:
+        #     raw_stdout, raw_stderr = processio.communicate(p, paup_block, timeout=timeout)
+        # except TypeError as e:
+        #     raise
+        #     if str(e) == "communicate() got an unexpected keyword argument 'timeout'":
+        #         raw_stdout, raw_stderr = processio.communicate(p, paup_block)
+        #     else:
+        #         raise
         stdout = raw_stdout
         stderr = raw_stderr
         if strip_extraneous_prompts_from_stdout:
@@ -683,7 +692,10 @@ def estimate_tree(char_matrix,
                     prop_invar=True,
                     extra_pre_est_commands=None,
                     extra_post_est_commands=None,
-                    paup_path='paup'):
+                    paup_path='paup',
+                    char_matrix_writing_kwargs=None,
+                    timeout=None,
+                    ):
     """
     Given a dataset, ``char_matrix``, estimates a tree using the given criterion.
     """
@@ -694,7 +706,9 @@ def estimate_tree(char_matrix,
         'pinvar' : prop_invar and 'estimate' or '0',
     }
     cf = tempfile.NamedTemporaryFile("w", delete=True)
-    char_matrix.write_to_stream(cf, schema='nexus')
+    if not char_matrix_writing_kwargs:
+        char_matrix_writing_kwargs = {}
+    char_matrix.write_to_stream(cf, schema='nexus', **char_matrix_writing_kwargs)
     cf.flush()
     paup_args['datafile'] = cf.name
     # output_tree_file_handle, output_tree_filepath = tempfile.mkstemp(text=True)
@@ -738,11 +752,16 @@ def estimate_tree(char_matrix,
     %(post_est_commands)s;
     savetrees file=%(est_tree_file)s format=nexus root=yes brlens=yes taxablk=yes maxdecimals=20;
     """
-    paup_run = subprocess.Popen(['%s -n' % paup_path],
-                                shell=True,
-                                stdin=subprocess.PIPE,
-                                stdout=subprocess.PIPE)
-    stdout, stderr = processio.communicate(paup_run, paup_template % paup_args)
+    # paup_run = subprocess.Popen(['%s -n' % paup_path],
+    #                             shell=True,
+    #                             stdin=subprocess.PIPE,
+    #                             stdout=subprocess.PIPE)
+    # stdout, stderr = processio.communicate(paup_run, paup_template % paup_args)
+    returncode, stdout, stderr = PaupService.call(
+            paup_commands=paup_template % paup_args,
+            paup_path=paup_path,
+            timeout=timeout,
+            )
     t = dendropy.Tree.get_from_path(output_tree_filepath, "nexus", taxon_namespace=char_matrix.taxon_namespace)
     cf.close()
     output_tree_file_handle.close()
diff --git a/dendropy/model/coalescent.py b/dendropy/model/coalescent.py
index c819cb6..bc4f9d0 100644
--- a/dendropy/model/coalescent.py
+++ b/dendropy/model/coalescent.py
@@ -377,7 +377,7 @@ def extract_coalescent_frames(tree, ultrametricity_precision=constants.DEFAULT_U
 
     Returns
     -------
-    x : list of tuples (node, coalescent interval)
+    x : dict
         Returns dictionary, with key = number of alleles, and values = waiting
         time for coalescent for the given tree
     """
@@ -388,9 +388,7 @@ def extract_coalescent_frames(tree, ultrametricity_precision=constants.DEFAULT_U
     for n in nwti:
         num_genes_wt[num_genes] = n[1]
         num_genes = num_genes - len(n[0].child_nodes()) + 1
-
-    import sys
-    num_alleles_list = sorted(num_genes_wt.keys(), reverse=True)
+    # num_alleles_list = sorted(num_genes_wt.keys(), reverse=True)
     return num_genes_wt
 
 def log_probability_of_coalescent_frames(coalescent_frames, haploid_pop_size):
diff --git a/dendropy/model/multispeciescoalescent.py b/dendropy/model/multispeciescoalescent.py
new file mode 100644
index 0000000..219b0e5
--- /dev/null
+++ b/dendropy/model/multispeciescoalescent.py
@@ -0,0 +1,275 @@
+#! /usr/bin/env python
+
+##############################################################################
+##  DendroPy Phylocoalescenttic Computing Library.
+##
+##  Copyright 2010-2015 Jeet Sukumaran and Mark T. Holder.
+##  All rights reserved.
+##
+##  See "LICENSE.rst" for terms and conditions of usage.
+##
+##  If you use this work or any portion thereof in published work,
+##  please cite it as:
+##
+##     Sukumaran, J. and M. T. Holder. 2010. DendroPy: a Python library
+##     for phylogenetic computing. Bioinformatics 26: 1569-1571.
+##
+##############################################################################
+
+from __future__ import division
+import math
+import dendropy
+import heapq
+from dendropy.model import reconcile
+from dendropy.model import coalescent
+from dendropy.utility import constants
+from dendropy.utility import error
+# from dendropy.calculate import combinatorics
+
+class MultispeciesCoalescent(object):
+
+    """
+    Provides methods to work with the "Multispecies Coalescent", a.k.a. the
+    "Truncated" or "Censored" Coalescent. That is, the coalescent process
+    conditioned on a structuring process such as population subdivision or
+    speciation. This is typically represented as gene or coalescent trees
+    embedded within a population or species tree.
+    """
+
+    def __init__(self,
+            species_tree,
+            ultrametricity_precision=constants.DEFAULT_ULTRAMETRICITY_PRECISION):
+        self._species_tree = None
+        self.ultrametricity_precision = ultrametricity_precision
+        self.is_enforce_structure_integrity = True
+        if species_tree is not None:
+            self._set_species_tree(species_tree=species_tree)
+
+    def _get_species_tree(self):
+        return self._species_tree
+    def _set_species_tree(self, species_tree):
+        self._species_tree = species_tree
+        self._species_tree.calc_node_ages(ultrametricity_precision=self.ultrametricity_precision)
+    species_tree = property(_get_species_tree, _set_species_tree)
+
+    def score_coalescent_tree(self,
+            coalescent_tree,
+            coalescent_species_lineage_map_fn,
+            population_theta_fn=None,
+            is_coalescent_species_lineage_map_by_node=False,
+            ):
+        """
+        Returns the log-probability of a coalescent (or gene) tree conditioned
+        on the structure (species or population) tree.
+
+        Parameters
+        ----------
+        coalescent_tree : |Tree|
+            The tree instance to be scored.
+        coalescent_species_lineage_map_fn : function object
+            A function that takes either a |Taxon| instance (if
+            ``is_coalescent_species_lineage_map_by_node`` is False) or
+            |Node| instance (if ``is_coalescent_species_lineage_map_by_node`` is
+            True) representing a lineage on the coalescent or gene tree
+            (specified by ``coalescent_tree``), and returns the |Taxon|
+            instance (if ``is_coalescent_species_lineage_map_by_node`` is False)
+            or |Node| instance (if ``is_coalescent_species_lineage_map_by_node``
+            is True) corresponding to the species or population on the
+            species tree with which it is associated.
+        population_theta_fn : function object
+            Function that takes an edge on the species structure tree as an argument
+            and returns the population parameter (theta) for that population or
+            species. If not specified, all edges are assumed to have a theta
+            value of 1.0.
+        is_coalescent_species_lineage_map_by_node : bool
+            Specifies the expected type of argument and return value of the
+            mapping function, ``coalescent_species_lineage_map_fn``. By default
+            this is |False|, and the mapping function is thus expected to take
+            a |Taxon| instance representing a lineage on the coalescent or gene
+            tree and return a |Taxon| instance representing a species or
+            population on the species tree with which that lineage is
+            associated. This is more efficient if you have many
+            moderately-sized gene trees that share the same taxa: you only need
+            to construct and provide a single mapping. On the other hand, if
+            you are dealing with HUGE trees, it might be optimum to skip
+            processing the taxon namespace, i.e. deserializing the tip labels
+            into rich |Taxon| objects, and just deal with them as plain string
+            labels. In this case, you would want to map the coalescent trees to
+            the species tree by nodes based on the labels, and will species
+            ``True`` for the ``is_coalescent_species_lineage_map_by_node``
+            argument. Then the mapping function
+            ``coalescent_species_lineage_map_fn`` will be expected to take a
+            |Node| instance representing a lineage on the coalescent or gene
+            tree and return a |Node| instance representing a species or
+            population on the species tree with which that lineage is
+            associated.
+
+        Returns
+        -------
+        p : numeric
+            Log probability of ``coalescent_tree`` given structuring imposed by
+            ``self._species_tree``.
+        """
+        edge_head_coalescent_edges, edge_tail_coalescent_edges, edge_coalescent_nodes = self._fit_coalescent_tree(
+                coalescent_tree=coalescent_tree,
+                coalescent_species_lineage_map_fn=coalescent_species_lineage_map_fn,
+                is_coalescent_species_lineage_map_by_node=is_coalescent_species_lineage_map_by_node)
+        if population_theta_fn is None:
+            population_theta_fn = lambda e: 1.0
+        logP = 0.0
+
+        # def _debug_log(x):
+        #     print(x)
+
+        for species_tree_edge in self._species_tree.postorder_edge_iter():
+        # for species_tree_edge in edge_coalescent_nodes:
+            theta = population_theta_fn(species_tree_edge)
+            coalescing_nodes = sorted(edge_coalescent_nodes[species_tree_edge], key=lambda nd: nd.age if nd else float("inf"))
+
+            # if species_tree_edge.tail_node is None:
+            #     _debug_log("-- Structure Edge {}: from {} to infinity (root)".format(self._compose_edge_desc(species_tree_edge), species_tree_edge.head_node.age, ))
+            # else:
+            #     _debug_log("-- Structure Edge {}: from {} to {}".format(self._compose_edge_desc(species_tree_edge), species_tree_edge.head_node.age, species_tree_edge.tail_node.age))
+            # _debug_log("          In: {} edges: {}".format(len(edge_head_coalescent_edges[species_tree_edge]), [self._compose_edge_desc(e) for e in edge_head_coalescent_edges[species_tree_edge]]))
+            # _debug_log("         Out: {} edges: {}".format(len(edge_tail_coalescent_edges[species_tree_edge]), [self._compose_edge_desc(e) for e in edge_tail_coalescent_edges[species_tree_edge]]))
+            # _debug_log("Coalescences: {} nodes: {}".format(len(coalescing_nodes),
+            #     ["{} ^ {} (= {} at {})".format(self._compose_edge_desc(c._child_nodes[0].edge), self._compose_edge_desc(c._child_nodes[1].edge), self._compose_edge_desc(c.edge), c.age) for c in coalescing_nodes if c is not None]))
+
+            j = len(edge_head_coalescent_edges[species_tree_edge])
+            t0 = species_tree_edge.head_node.age
+            t1 = species_tree_edge.head_node.age
+            oldest_coalescent_event_age = None
+            subP = 0.0
+            for cnd in coalescing_nodes:
+                if j == 1:
+                    break
+                t1 = cnd.age
+                wt = t1 - t0
+                # q = math.log( (j*(j-1.0))  /theta) + (-j * (j-1.0) * theta * wt)
+                q = math.log(2.0/theta) + (-j * (j-1) * theta * wt)
+                subP += q
+                j -= 1
+                t0 = t1
+                if oldest_coalescent_event_age is None or t1 > oldest_coalescent_event_age:
+                    oldest_coalescent_event_age = t1
+
+            remaining_lineages = j
+            if remaining_lineages > 1:
+                if oldest_coalescent_event_age is None:
+                    remaining_time = species_tree_edge.tail_node.age - species_tree_edge.head_node.age
+                else:
+                    remaining_time = species_tree_edge.tail_node.age - oldest_coalescent_event_age
+                q = -1 * (remaining_lineages*(remaining_lineages-1))/theta * remaining_time
+                subP += q
+            logP += subP
+        return logP
+
+    def _fit_coalescent_tree(self,
+            coalescent_tree,
+            coalescent_species_lineage_map_fn,
+            is_coalescent_species_lineage_map_by_node=False):
+        """
+        Map edges of coalescent tree into species tree (i.e., self).
+        """
+        # if self.fit_species_edge_lengths:
+        #     self.fit_edge_lengths(self.coalescent_trees)
+        coalescent_tree.calc_node_ages(ultrametricity_precision=self.ultrametricity_precision)
+        coalescent_leaves = coalescent_tree.leaf_nodes()
+        structure_to_coalescent = {}
+        if is_coalescent_species_lineage_map_by_node:
+            for coalescent_nd in coalescent_leaves:
+                structure_leaf = coalescent_species_lineage_map_fn(coalescent_nd)
+                x = structure_to_coalescent.setdefault(structure_leaf, set())
+                x.add(coalescent_nd.edge)
+        else:
+            for coalescent_nd in coalescent_leaves:
+                structure_taxon = coalescent_species_lineage_map_fn(coalescent_nd.taxon)
+                x = structure_to_coalescent.setdefault(structure_taxon, set())
+                x.add(coalescent_nd.edge)
+        edge_head_coalescent_edges = {}
+        edge_tail_coalescent_edges = {}
+        edge_coalescent_nodes = {}
+
+        # def _debug_log(x):
+        #     print(x)
+        # def _dump_edge_set(ee):
+        #     return ", ".join(self._compose_edge_desc(e) for e in ee)
+
+        for species_edge in self._species_tree.postorder_edge_iter():
+
+            # if species_edge.tail_node is None:
+            #     _debug_log("\nStructure Edge {}: from {} to infinity (root)".format(self._compose_edge_desc(species_edge), species_edge.head_node.age, ))
+            # else:
+            #     _debug_log("\nStructure Edge {}: from {} to {}".format(self._compose_edge_desc(species_edge), species_edge.head_node.age, species_edge.tail_node.age))
+
+            ## add initial/inherited coalescent edges to structure edges
+            if species_edge.is_terminal():
+                if is_coalescent_species_lineage_map_by_node:
+                    edge_head_coalescent_edges[species_edge] = structure_to_coalescent[species_edge.head_node]
+                else:
+                    edge_head_coalescent_edges[species_edge] = structure_to_coalescent[species_edge.head_node.taxon]
+                # _debug_log("    Initializing terminal with edges: {}".format(_dump_edge_set(edge_head_coalescent_edges[species_edge])))
+            else:
+                edge_head_coalescent_edges[species_edge] = set()
+                # _debug_log("    Initializing internal")
+                for nd in species_edge.head_node.child_node_iter():
+                    # edge_head_coalescent_edges[species_edge].update(nd.edge.tail_coalescent_edges[coalescent_tree])
+                    # _debug_log("        Adding from {}: {}".format(self._compose_edge_desc(nd.edge), _dump_edge_set(edge_tail_coalescent_edges[nd.edge])))
+                    edge_head_coalescent_edges[species_edge].update(edge_tail_coalescent_edges[nd.edge])
+                # _debug_log("        Internal now has edges: {}".format(_dump_edge_set(edge_head_coalescent_edges[species_edge])))
+
+            ## initialize data containers
+            edge_coalescent_nodes[species_edge] = set()
+            if len(edge_head_coalescent_edges[species_edge]) == 1:
+                edge_tail_coalescent_edges[species_edge] = set(edge_head_coalescent_edges[species_edge])
+                continue
+            edge_tail_coalescent_edges[species_edge] = set([])
+
+            if species_edge.tail_node is None:
+                ## root edge
+                # _debug_log("    Structure root edge: coalesce all")
+                for ex in edge_head_coalescent_edges[species_edge]:
+                    edge_coalescent_nodes[species_edge].add(ex.tail_node)
+                    if ex.tail_node is not None:
+                        parent_node = ex.tail_node.parent_node
+                        while parent_node is not None and parent_node not in edge_coalescent_nodes[species_edge]:
+                            edge_coalescent_nodes[species_edge].add(parent_node)
+                            parent_node = parent_node.parent_node
+                # _debug_log("        Structure edge now has edges: {}".format(_dump_edge_set(edge_head_coalescent_edges[species_edge])))
+                continue
+
+            structure_end_time = species_edge.tail_node.age
+            # _debug_log("    Structure end time: {}".format(structure_end_time))
+            current_lineages = list( (e.tail_node.age, e) for e in edge_head_coalescent_edges[species_edge] )
+            heapq.heapify(current_lineages)
+            if self.is_enforce_structure_integrity:
+                valid_coalescing_lineages = set(edge_head_coalescent_edges[species_edge])
+            while len(current_lineages) > 1:
+                coalescent_age, coalescent_edge = current_lineages[0]
+                if coalescent_age > structure_end_time:
+                    # _debug_log("    Time exceeded with {} lineages remaining".format(len(current_lineages)))
+                    break
+                # _debug_log("    {} lineages remaining".format(len(current_lineages)))
+                heapq.heappop(current_lineages)
+                if coalescent_edge.tail_node is not None:
+                    if coalescent_edge.tail_node in edge_coalescent_nodes[species_edge]:
+                        continue
+                    # _debug_log("        Adding node {} (age={}) to set of coalescing nodes".format(self._compose_edge_desc(coalescent_edge.tail_node.edge), coalescent_edge.tail_node.age))
+                    if self.is_enforce_structure_integrity:
+                        for chnd in coalescent_edge.tail_node._child_nodes:
+                            if chnd.edge is not coalescent_edge and chnd.edge not in valid_coalescing_lineages:
+                                msg = "Invalid coalescence within structure tree edge {}: coalescent tree lineage {} cannot coalesce with lineage {} because the latter is not in the same population at this time".format(
+                                        self._compose_edge_desc(species_edge), self._compose_edge_desc(coalescent_edge), self._compose_edge_desc(chnd.edge), )
+                                raise error.InvalidMultispeciesCoalescentStructureError(msg)
+                        valid_coalescing_lineages.add(coalescent_edge.tail_node.edge)
+                    edge_coalescent_nodes[species_edge].add(coalescent_edge.tail_node)
+                    new_edge = coalescent_edge.tail_node.edge
+                    heapq.heappush(current_lineages, (new_edge.tail_node.age, new_edge))
+                else:
+                    assert False
+            if current_lineages:
+                edge_tail_coalescent_edges[species_edge] = set(x[1] for x in current_lineages)
+        return edge_head_coalescent_edges, edge_tail_coalescent_edges, edge_coalescent_nodes
+
+    def _compose_edge_desc(self, e):
+        return "+".join(x.taxon.label for x in e.head_node.leaf_iter())
diff --git a/dendropy/test/data/other/multispecies_coalescent_test_data.json b/dendropy/test/data/other/multispecies_coalescent_test_data.json
new file mode 100644
index 0000000..f6e5649
--- /dev/null
+++ b/dendropy/test/data/other/multispecies_coalescent_test_data.json
@@ -0,0 +1,4680 @@
+[
+    {
+        "species_tree": "[&R] (((H:10.0,C:10.0)HC:10.0,G:20.0)HCG:10.0,O:30.0)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:14.0,((H2:2.5,H3:2.5)a:10.0,(C1:3.0,C2:3.0)b:9.5)c:1.5)d:17.0,G:31.0)e:2.0,O:33.0)f;",
+                "theta": 1.0,
+                "log_likelihood": -79.84111691664032
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:4.54295848698,C:4.54295848698)HC:1.88739527026,G:6.43035375724)HCG:0.0312414861203,O:6.46159524336)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:6.52541648158,((H2:0.387312496808,H3:0.387312496808)a:6.1196062797,(C1:4.18942123034,C2:4.18942123034)b:2.31749754618)c:0.018497705064)d:18.1389300354,G:24.664346517)e:1.10900842123,O:25.7733549382)f;",
+                "theta": 1.0,
+                "log_likelihood": -138.73439691664032
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:1.95350542396,C:1.95350542396)HC:4.83481563914,G:6.7883210631)HCG:1.27813134275,O:8.06645240585)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:6.86127916632,((H2:0.93821613923,H3:0.93821613923)a:1.75730532172,(C1:2.14679316487,C2:2.14679316487)b:0.548728296082)c:4.16575770537)d:40.3254463948,G:47.1867255611)e:9.74243848877,O:56.9291640499)f;",
+                "theta": 1.0,
+                "log_likelihood": -278.26009691664035
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:0.83421698573,C:0.83421698573)HC:6.27744803371,G:7.11166501944)HCG:1.0249022547,O:8.13656727413)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:5.69903883232,((H2:2.18798771423,H3:2.18798771423)a:2.67280729641,(C1:4.03499395611,C2:4.03499395611)b:0.825801054529)c:0.838243821679)d:34.2688646143,G:39.9679034466)e:4.80434246489,O:44.7722459115)f;",
+                "theta": 1.0,
+                "log_likelihood": -261.03209691664034
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:3.07057323096,C:3.07057323096)HC:1.20241110316,G:4.27298433411)HCG:0.330073508617,O:4.60305784273)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:3.88067972659,((H2:2.2969543782,H3:2.2969543782)a:1.56940659223,(C1:3.09150434958,C2:3.09150434958)b:0.77485662085)c:0.0143187561657)d:2.64199228188,G:6.52267200847)e:14.7638080519,O:21.2864800604)f;",
+                "theta": 1.0,
+                "log_likelihood": -63.945596916640326
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:1.33449213877,C:1.33449213877)HC:1.91704443523,G:3.25153657401)HCG:3.37217388398,O:6.62371045799)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:6.4469182135,((H2:1.50936053905,H3:1.50936053905)a:2.17315128592,(C1:1.86660394905,C2:1.86660394905)b:1.81590787593)c:2.76440638852)d:0.240520937072,G:6.68743915057)e:0.0804657572913,O:6.76790490786)f;",
+                "theta": 1.0,
+                "log_likelihood": -45.26595691664033
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:3.46897901977,C:3.46897901977)HC:0.478875282599,G:3.94785430237)HCG:3.25462024317,O:7.20247454553)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:6.1852408913,((H2:3.18302794386,H3:3.18302794386)a:2.92490242849,(C1:4.47816800373,C2:4.47816800373)b:1.62976236861)c:0.0773105189527)d:0.608096470851,G:6.79333736215)e:1.86709926104,O:8.66043662319)f;",
+                "theta": 1.0,
+                "log_likelihood": -62.95501691664033
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:1.25056939673,C:1.25056939673)HC:0.851446309728,G:2.10201570645)HCG:6.11631164493,O:8.21832735138)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:7.40305094906,((H2:0.637449856661,H3:0.637449856661)a:2.96011845235,(C1:0.930805046582,C2:0.930805046582)b:2.66676326243)c:3.80548264005)d:2.19321173753,G:9.59626268659)e:2.15956970844,O:11.755832395)f;",
+                "theta": 1.0,
+                "log_likelihood": -62.85913691664033
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:1.39228282043,C:1.39228282043)HC:1.57533023676,G:2.96761305719)HCG:5.00964283505,O:7.97725589225)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:5.57172548711,((H2:2.33098853293,H3:2.33098853293)a:2.59618926576,(C1:4.86411320303,C2:4.86411320303)b:0.0630645956568)c:0.644547688424)d:1.14832842681,G:6.72005391392)e:16.2340087393,O:22.9540626532)f;",
+                "theta": 1.0,
+                "log_likelihood": -108.19741691664032
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:0.25718360298,C:0.25718360298)HC:7.68747755082,G:7.9446611538)HCG:1.14491056317,O:9.08957171697)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:6.93957345406,((H2:0.636704070469,H3:0.636704070469)a:3.69294029497,(C1:3.92804237526,C2:3.92804237526)b:0.401601990175)c:2.60992908862)d:9.40150765872,G:16.3410811128)e:5.3447257737,O:21.6858068865)f;",
+                "theta": 1.0,
+                "log_likelihood": -109.10283691664031
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:0.911742737778,C:0.911742737778)HC:3.12443634702,G:4.03617908479)HCG:0.905568779653,O:4.94174786445)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:3.60516432969,((H2:0.0252917270525,H3:0.0252917270525)a:2.71442177714,(C1:0.792071602864,C2:0.792071602864)b:1.94764190133)c:0.865450825497)d:3.66098391132,G:7.26614824101)e:1.03045394908,O:8.29660219009)f;",
+                "theta": 1.0,
+                "log_likelihood": -29.867056916640326
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:0.633484247264,C:0.633484247264)HC:0.319063097405,G:0.952547344669)HCG:6.61305441993,O:7.5656017646)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:0.869996690097,((H2:0.520522042697,H3:0.520522042697)a:0.290157964958,(C1:0.579004937272,C2:0.579004937272)b:0.231675070383)c:0.0593166824431)d:20.427330739,G:21.2973274291)e:17.7414722626,O:39.0387996916)f;",
+                "theta": 1.0,
+                "log_likelihood": -132.62941691664034
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:2.1614309775,C:2.1614309775)HC:3.9411213673,G:6.10255234481)HCG:0.340410294653,O:6.44296263946)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:6.12425431514,((H2:0.167813004122,H3:0.167813004122)a:5.02829820218,(C1:2.67324862506,C2:2.67324862506)b:2.52286258124)c:0.928143108837)d:0.343771256063,G:6.4680255712)e:3.31185593719,O:9.77988150839)f;",
+                "theta": 1.0,
+                "log_likelihood": -35.791716916640326
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:3.95572088295,C:3.95572088295)HC:0.0653676014358,G:4.02108848439)HCG:1.12555621422,O:5.14664469861)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:4.93616742614,((H2:0.830692154387,H3:0.830692154387)a:3.68199495721,(C1:2.68863687146,C2:2.68863687146)b:1.82405024014)c:0.423480314539)d:5.25689105993,G:10.1930584861)e:2.72705315356,O:12.9201116396)f;",
+                "theta": 1.0,
+                "log_likelihood": -57.43841691664032
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:5.58575046855,C:5.58575046855)HC:0.0206635598848,G:5.60641402844)HCG:1.62188353969,O:7.22829756813)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:7.15229249702,((H2:1.7339024295,H3:1.7339024295)a:4.66309496603,(C1:3.0983542985,C2:3.0983542985)b:3.29864309704)c:0.755295101488)d:15.9998099352,G:23.1521024322)e:3.68806040402,O:26.8401628363)f;",
+                "theta": 1.0,
+                "log_likelihood": -137.35857691664032
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:2.61847523051,C:2.61847523051)HC:5.85167207088,G:8.47014730139)HCG:1.02434644091,O:9.4944937423)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:8.69881142174,((H2:1.76559746702,H3:1.76559746702)a:6.11863189453,(C1:6.60902062443,C2:6.60902062443)b:1.27520873713)c:0.814582060184)d:0.497447285701,G:9.19625870744)e:8.67219091532,O:17.8684496228)f;",
+                "theta": 1.0,
+                "log_likelihood": -89.20177691664033
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:0.650301773415,C:0.650301773415)HC:1.2356894674,G:1.88599124081)HCG:1.84652817829,O:3.73251941911)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:0.953136630487,((H2:0.242806515752,H3:0.242806515752)a:0.516736510438,(C1:0.502988484751,C2:0.502988484751)b:0.256554541439)c:0.193593604297)d:4.84118217588,G:5.79431880636)e:0.481767919863,O:6.27608672623)f;",
+                "theta": 1.0,
+                "log_likelihood": -17.189016916640327
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:4.60760040901,C:4.60760040901)HC:0.99047684457,G:5.59807725358)HCG:3.97689312284,O:9.57497037643)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:8.94833696748,((H2:0.635430344977,H3:0.635430344977)a:5.4799407627,(C1:4.98080158761,C2:4.98080158761)b:1.13456952006)c:2.83296585981)d:14.9574291307,G:23.9057660981)e:12.7117170147,O:36.6174831128)f;",
+                "theta": 1.0,
+                "log_likelihood": -160.86211691664033
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((H:2.89891592444,C:2.89891592444)HC:1.59522953849,G:4.49414546294)HCG:0.355127292715,O:4.84927275565)HCGO;",
+        "coalescent_species_lineage_label_map": {
+            "C1": "C",
+            "C2": "C",
+            "G": "G",
+            "H1": "H",
+            "H2": "H",
+            "H3": "H",
+            "O": "O"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((H1:4.10526073994,((H2:1.0888557307,H3:1.0888557307)a:1.9267717299,(C1:1.96873915015,C2:1.96873915015)b:1.04688831046)c:1.08963327933)d:15.3957198087,G:19.5009805486)e:11.3500167314,O:30.8509972801)f;",
+                "theta": 1.0,
+                "log_likelihood": -124.13189691664031
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((A.1:0.00188682050447,A.5:0.00188682050447):0.0636724178558,A.4:0.0655592383602):0.880905086097,(((A.8:0.00419686299296,A.2:0.00419686299296):0.115498816855,(A.10:0.092001232172,((A.6:0.0150420592666,A.3:0.0150420592666):0.00245867655001,A.9:0.0175007358166):0.0745004963554):0.027694447676):0.0441766141341,A.7:0.163872293982):0.782592030475):2.21717120792,((((B.8:0.0583121269738,((B.7:0.0229099748388,(B.9:0.0142490355172,B.1:0.0142490355172):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 8.703340041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((((A.3:0.0347822898056,A.10:0.0347822898056):0.0184796328506,(A.2:0.0359698824057,A.9:0.0359698824057):0.0172920402505):0.0137167127364,A.4:0.0669786353927):0.209386668465,(A.1:0.103053758311,A.5:0.103053758311):0.173311545547):0.14209503783,(A.7:0.168463367223,(A.8:0.00195971888565,A.6:0.00195971888565):0.166503648337):0.249996974464):2.66885809354,((((D.3:0.0836591125072,(D.4:0.00396305162714,D.10:0.00396305162714):0.0796960608801):0.05360879 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.727440041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((A.1:0.192271869549,(A.5:0.001727134858,A.3:0.001727134858):0.190544734691):0.355419899526,((((A.6:0.0131408101803,(A.9:0.00955813345639,(A.7:0.000441364976569,A.2:0.000441364976569):0.00911676847982):0.00358267672391):0.0243078438112,A.8:0.0374486539915):0.019145220649,A.10:0.0565938746405):0.113373522429,A.4:0.169967397069):0.377724372006):2.64582557475,(((((((D.9:0.0230645533617,(D.1:0.0157148834746,D.8:0.0157148834746):0.00734966988716):0.06 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.324780041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.6:0.027178618241,C.5:0.027178618241):0.092936242228,C.3:0.120114860469):0.161952675123,((C.1:0.00272092212961,C.9:0.00272092212961):0.214853327174,(((C.2:0.00359934403832,C.4:0.00359934403832):0.105447706555,C.10:0.109047050594):0.0455186529423,(C.7:0.0248371166992,C.8:0.0248371166992):0.129728586837):0.0630085457673):0.0644932862894):0.755586913291,(((D.10:0.0218490599183,D.4:0.0218490599183):0.156633320099,(((D.6:0.00435871054318,D.9:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.608580041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((((B.7:0.0119911148724,B.3:0.0119911148724):0.0291373426477,((B.2:0.00963912738165,B.6:0.00963912738165):0.0140652616155,(B.8:0.0104327589539,B.10:0.0104327589539):0.0132716300432):0.017424068523):0.0616151248114,B.5:0.102743582332):0.149217689528,(B.4:0.00228643780888,B.1:0.00228643780888):0.249674834051):0.0496896363795,B.9:0.301650908239):2.01579707742,(((C.1:0.117514341529,(((C.7:0.0675597045067,C.8:0.0675597045067):0.000479077932327,C.4:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.095060041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.10:0.275556337789,A.3:0.275556337789):0.12309056074,((A.5:0.012284578459,A.9:0.012284578459):0.0123394117267,A.7:0.0246239901857):0.374022908344):0.068954601526,((A.4:0.0215502717049,A.6:0.0215502717049):0.051626691007,(A.1:0.032316980097,(A.8:0.00857459959059,A.2:0.00857459959059):0.0237423805064):0.0408599826149):0.394424537343):2.56363255302,((((((B.7:0.034623845445,B.1:0.034623845445):0.0008800700226,B.8:0.0355039154676):0.0685385699079, [...]
+                "theta": 1.0,
+                "log_likelihood": 4.782800041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.8:0.0895576944727,(A.9:0.0442963212579,A.10:0.0442963212579):0.0452613732148):0.176481302965,(A.4:0.0304651117487,A.3:0.0304651117487):0.235573885689):0.302904915341,((A.7:0.0219539716205,(A.2:0.00620554608379,(A.1:0.00466320554298,A.6:0.00466320554298):0.00154234054081):0.0157484255367):0.0319456485096,A.5:0.05389962013):0.515044292648):2.48150984459,(((B.9:0.000441200239164,B.7:0.000441200239164):0.153798651889,((B.2:0.0163534503608,(((B.1 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.703400041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.7:0.0118397101518,A.6:0.0118397101518):0.00502859972407,A.5:0.0168683098758):0.0411431354725,(A.1:0.0342573196098,(A.10:0.0223418384706,A.3:0.0223418384706):0.0119154811392):0.0237541257386):0.534766592696,(A.8:0.0466593827793,((A.4:0.0102075356823,A.2:0.0102075356823):0.0189213872989,A.9:0.0291289229812):0.0175304597981):0.546118655265):3.72638967622,((((((B.6:0.00427717951498,B.5:0.00427717951498):0.00486328496446,B.3:0.00914046447945):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 3.7935400418378675
+            },
+            {
+                "coalescent_tree": "[&R] ((((((((C.9:0.0136391201113,C.6:0.0136391201113):0.0492713614473,C.4:0.0629104815586):0.00554277142869,C.10:0.0684532529872):0.118377469393,((C.1:0.0434971982263,C.7:0.0434971982263):0.000831956619927,(C.5:0.034454206794,(C.3:0.00702017399403,C.8:0.00702017399403):0.0274340327999):0.00987494805225):0.142501567534):0.299147963505,C.2:0.485978685885):0.534127263888,((D.4:0.0637629869377,((D.1:0.00388949402685,D.7:0.00388949402685):0.00479745314446,( [...]
+                "theta": 1.0,
+                "log_likelihood": 10.404000041837865
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.9:0.233245579549,D.6:0.233245579549):0.40815403734,(((D.4:0.0105512655202,D.10:0.0105512655202):0.045604520994,(((D.2:0.0404555052368,D.5:0.0404555052368):0.00946388946429,D.7:0.0499193947011):0.00374632023869,D.3:0.0536657149398):0.00249007157449):0.0932154120477,(D.8:0.0331441782495,D.1:0.0331441782495):0.116227020312):0.492028418328):0.381127126057,((C.7:0.284110449129,((C.6:0.124211852583,C.1:0.124211852583):0.142946186259,(C.10:0.18901 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.817760041837866
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((C.2:0.0481674203327,((C.7:0.0100158724841,C.4:0.0100158724841):0.0294084408192,C.1:0.0394243133033):0.00874310702938):0.0161136849373,(C.8:0.0474873981163,(C.10:0.0405527810407,C.6:0.0405527810407):0.00693461707558):0.0167937071537):0.0793554788565,(C.5:0.0642945261017,C.3:0.0642945261017):0.0793420580248):0.252315528302,C.9:0.395952112428):1.23850734241,(((D.10:0.00520925101856,D.4:0.00520925101856):0.139596271771,((D.9:0.0193401848253,D.3 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.956360041837865
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.4:0.0129582814795,A.7:0.0129582814795):0.019694303577,A.8:0.0326525850565):0.0210753699856,(A.10:0.0144322862016,A.3:0.0144322862016):0.0392956688406):0.0785406790993,((A.1:0.0339501262402,(A.9:0.030538044402,(A.2:0.0122558571777,A.5:0.0122558571777):0.0182821872243):0.00341208183822):0.0501059737788,A.6:0.084056100019):0.0482125341225):3.18472451453,((B.3:1.26868844796,(((B.5:0.000501573431609,B.10:0.000501573431609):0.241745545131,((B.2:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.646400041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((((D.6:0.00458219272122,D.7:0.00458219272122):0.0686325944728,((D.8:0.0231268547325,D.10:0.0231268547325):0.0254058277848,D.3:0.0485326825173):0.0246821046768):0.0312960936317,D.4:0.104510880826):0.0221897088284,D.5:0.126700589654):0.164175445661,(D.1:0.170797136793,(D.2:0.0931452302988,D.9:0.0931452302988):0.0776519064938):0.120078898523):1.2763086703,((C.4:0.05282564685,(C.10:0.0461315412172,C.3:0.0461315412172):0.0066941056328):0.823611666 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.237740041837869
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.7:0.00556919108729,B.2:0.00556919108729):0.256680286245,(((B.6:0.0273439920108,(B.3:0.0153156504295,(B.8:0.0136327151953,B.10:0.0136327151953):0.00168293523422):0.0120283415813):0.127025977489,((B.4:0.000315340462249,B.5:0.000315340462249):0.1091615269,B.9:0.109476867362):0.0448931021381):0.0442643628861,B.1:0.198634332386):0.0636151449468):1.9072869116,((((C.8:0.0258324171977,(C.9:0.00159142427131,C.2:0.00159142427131):0.0242409929264):0.09 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.742840041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.7:0.141565933361,((D.9:0.012437453323,D.1:0.012437453323):0.00651102036741,(D.2:0.0104788308088,D.8:0.0104788308088):0.00846964288157):0.12261745967):0.322342441153,((D.5:0.0215552677895,(D.4:0.0123735564449,D.6:0.0123735564449):0.00918171134453):0.07103897213,(D.10:0.00711446291206,D.3:0.00711446291206):0.0854797770074):0.371314134594):1.40962563869,(C.7:0.274254570433,(C.9:0.0799964789248,((C.2:0.0191623129231,(C.10:0.0152817702569,C.8:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 3.8682600418378654
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.8:0.0122838604917,A.3:0.0122838604917):0.256842864698,(A.1:0.0937265514461,(A.4:0.049752810479,A.5:0.049752810479):0.0439737409671):0.175400173744):0.168822414502,((A.10:0.0170331630168,A.7:0.0170331630168):0.329429469459,((A.9:0.0105431184693,A.6:0.0105431184693):0.0204636565863,A.2:0.0310067750556):0.31545585742):0.0914865072167):2.61099088165,(((B.1:0.0353625588655,(B.4:0.0219431553908,(B.3:0.00474574533698,B.10:0.00474574533698):0.017197 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.409900041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((B.1:0.265611505628,(((((B.4:0.0111406056454,B.3:0.0111406056454):0.00656655846756,B.10:0.017707164113):0.0468199491619,B.5:0.0645271132748):0.0395706423048,B.6:0.10409775558):0.0338811287495,((B.2:0.0268241726164,(B.8:0.0253196427002,B.9:0.0253196427002):0.00150452991612):0.00911536845629,B.7:0.0359395410726):0.102039343256):0.127632621299):1.92834157426,(((D.3:0.22223200951,D.10:0.22223200951):0.679085863804,(((D.8:0.0730823438178,D.1:0.073082 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.349520041837865
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.6:0.0650754739028,B.2:0.0650754739028):0.0177348553055,B.7:0.0828103292083):0.254521866234,((B.9:0.0352623831987,((B.5:0.0164393777941,(B.4:0.00945769108682,B.1:0.00945769108682):0.00698168670732):0.0117777704328,(B.10:0.0247304776817,B.3:0.0247304776817):0.00348667054529):0.00704523497174):0.14322893558,B.8:0.178491318778):0.158840876664):1.80065281583,((((C.3:0.0113025947858,C.7:0.0113025947858):0.258246788791,((C.2:0.111051876283,(C.6:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 7.7551800418378685
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.10:0.0339080182864,(A.1:0.016820389324,A.3:0.016820389324):0.0170876289624):0.0961566334514,(A.4:0.00835477011466,A.9:0.00835477011466):0.121709881623):0.0936303328431,(((A.2:0.0214285737281,A.8:0.0214285737281):0.0494211993403,A.6:0.0708497730684):0.00335965647891,(A.5:0.00590583260143,A.7:0.00590583260143):0.0683035969459):0.149485555034):2.92341333622,((((((C.2:0.0549219095962,C.1:0.0549219095962):0.0158368068858,C.8:0.070758716482):0.348 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.648040041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.3:0.0179338513808,(A.4:0.0160575990969,A.2:0.0160575990969):0.00187625228391):0.0292408852348,(A.10:0.0121405279516,A.7:0.0121405279516):0.035034208664):0.0727522194292,A.5:0.119926956045):0.0234657403312,(((A.1:0.00251119253017,A.6:0.00251119253017):0.0263275429456,A.8:0.0288387354758):0.0850649493411,A.9:0.113903684817):0.0294890115591):2.9731784617,(((((C.1:0.07694243337,((C.6:0.043825577783,C.9:0.043825577783):0.0190439368257,C.3:0.0628 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.494360041837867
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((B.8:0.0020872944611,(B.6:0.000420560021353,B.10:0.000420560021353):0.00166673443975):0.0241005124002,B.4:0.0261878068613):1.02695717634,(B.5:0.323851666965,((B.3:0.0258316718736,B.2:0.0258316718736):0.207434597114,(B.1:0.0470979021915,(B.9:0.026020530255,B.7:0.026020530255):0.0210773719365):0.186168366796):0.0905853979776):0.729293316241):0.973626345593,(((C.3:0.138701137595,((C.1:0.00568115738042,C.4:0.00568115738042):0.0655699574696,C.8:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.494680041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.4:0.0279993558719,B.5:0.0279993558719):0.427656291753,(B.10:0.287050839104,(B.9:0.0908333660881,(((B.6:0.00586172288665,(B.8:2.60900115667e-05,B.3:2.60900115667e-05):0.00583563287509):0.035130470149,(B.1:0.0209888238071,B.7:0.0209888238071):0.0200033692285):0.0140683557016,B.2:0.0550605487373):0.0357728173508):0.196217473016):0.168604808521):1.62075864934,((((D.8:0.100114751218,D.4:0.100114751218):0.0168275261661,D.9:0.116942277384):0.372294 [...]
+                "theta": 1.0,
+                "log_likelihood": -3.458259958162131
+            },
+            {
+                "coalescent_tree": "[&R] (((A.10:0.0109595204543,A.2:0.0109595204543):0.193052177932,((A.9:0.0229697834591,(A.3:0.0135747852432,A.6:0.0135747852432):0.00939499821593):0.145819166708,(A.5:0.115101794313,((A.8:0.00304592311342,A.4:0.00304592311342):0.0975665753742,(A.1:0.0118019503302,A.7:0.0118019503302):0.0888105481575):0.0144892958257):0.053687155854):0.0352227482188):2.86380324627,((((B.7:0.054001386701,B.10:0.054001386701):0.0405236638886,((B.9:0.0505296258827,(B.1:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.764660041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((A.3:0.0244986327457,A.5:0.0244986327457):0.00943979026065,A.9:0.0339384230063):0.0918504517009,(A.6:0.0151623850122,A.7:0.0151623850122):0.110626489695):0.161734211228,(((A.2:0.0176990941881,A.4:0.0176990941881):0.0344593435644,A.1:0.0521584377524):0.00154198946579,A.8:0.0537004272182):0.233822658717):0.33301256359,A.10:0.620535649525):2.53410457222,(((((C.5:0.0118963182429,C.1:0.0118963182429):0.155528381557,C.4:0.1674246998):0.159909763743 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.501060041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((((C.9:0.0303744723613,C.2:0.0303744723613):0.0756128045156,C.3:0.105987276877):0.0683626109064,C.6:0.174349887783):0.148271747776,(((C.8:0.0149123596159,C.7:0.0149123596159):0.050684705963,C.5:0.065597065579):0.0619957346826,((C.4:0.0122043024413,C.1:0.0122043024413):0.0694195909806,C.10:0.0816238934219):0.0459689068397):0.195028835297):1.63577355045,(D.9:0.714537721623,(((((D.2:0.0123237387974,D.10:0.0123237387974):0.00857615437714,D.7:0.020 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.483980041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((((A.10:0.00695067205939,A.7:0.00695067205939):0.0185612709102,A.8:0.0255119429696):0.0710224404601,(A.9:0.08719556635,A.1:0.08719556635):0.00933881707973):0.022360303075,(((A.4:0.00971614353747,A.2:0.00971614353747):0.0375592974779,A.5:0.0472754410154):0.0118414322844,A.6:0.0591168732998):0.059777813205):0.0945713387614,A.3:0.213466025266):2.80724382621,(((B.8:0.015361306105,((B.9:0.00515910131279,B.2:0.00515910131279):0.0043783357006,B.7:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.857720041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.3:0.00130595044342,B.1:0.00130595044342):0.00517349545795,(B.9:0.00115072918773,B.7:0.00115072918773):0.00532871671364):0.240541081595,((B.10:0.0384368947085,B.6:0.0384368947085):0.0768854516057,(B.5:0.0485558472275,B.4:0.0485558472275):0.0667664990868):0.131698181182):0.301966688281,(B.2:0.0112653973368,B.8:0.0112653973368):0.53772181844):1.61954909123,((D.5:0.417354690209,((D.2:0.0725437076067,(D.8:0.00355227320647,D.1:0.00355227320647): [...]
+                "theta": 1.0,
+                "log_likelihood": 9.742020041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((C.5:0.0793496388806,(C.9:0.0188630757784,C.1:0.0188630757784):0.0604865631022):0.299025013349,((C.8:0.11430131816,(C.2:0.00139492926972,C.4:0.00139492926972):0.112906388891):0.00159692305122,((C.6:0.00559208799775,C.7:0.00559208799775):0.0298276027271,(C.3:0.0228682633107,C.10:0.0228682633107):0.0125514274141):0.0804785504869):0.262476411018):1.34252669802,(((((D.3:0.0111313054414,D.10:0.0111313054414):0.00251381779233,D.4:0.0136451232338):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 8.644080041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((A.8:0.324817104218,((A.7:0.00698880178868,A.2:0.00698880178868):0.149093922606,(A.5:0.0830848773453,((((A.9:0.000888101859393,A.6:0.000888101859393):0.0246919944368,A.4:0.0255800962962):0.0408558791518,(A.10:0.0017943264775,A.3:0.0017943264775):0.0646416489706):0.00681252682865,A.1:0.0732485022767):0.00983637506856):0.0729978470492):0.168734379823):2.69582053425,(((((B.2:0.0584684691647,B.3:0.0584684691647):0.0422085370931,(B.7:0.00633859430993, [...]
+                "theta": 1.0,
+                "log_likelihood": 3.568380041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.9:0.00858308781673,B.1:0.00858308781673):0.0354356719759,(B.5:0.0124455195716,B.6:0.0124455195716):0.031573240221):0.13971456217,B.4:0.183733321963):0.183795206547,((B.8:0.0165066401712,((B.2:0.000250516128364,B.3:0.000250516128364):0.0045684094571,B.7:0.00481892558546):0.0116877145858):0.0673191211853,B.10:0.0838257613566):0.283702767154):1.91525794367,((C.7:0.159953176525,(((C.8:0.00926080083038,C.4:0.00926080083038):0.0943764503434,((C. [...]
+                "theta": 1.0,
+                "log_likelihood": 11.443960041837867
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((A.6:0.179658377354,(A.3:0.0150057089842,A.2:0.0150057089842):0.16465266837):0.360414837541,((A.8:0.0391963655926,A.9:0.0391963655926):0.0816936315748,(((A.4:0.00889080795133,A.1:0.00889080795133):0.00469859109217,(A.7:0.0107490857469,A.10:0.0107490857469):0.00284031329658):0.0779812000448,A.5:0.0915705990883):0.0293193980791):0.419183217728):2.53819101832,((((B.1:0.0895117855237,(B.10:0.0797163249576,B.2:0.0797163249576):0.00979546056611):0.130 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.451240041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((B.1:0.194188042163,((B.9:0.0590271970626,(B.4:0.00878495272705,B.8:0.00878495272705):0.0502422443355):0.12364508192,((B.7:0.100757567002,B.5:0.100757567002):0.00530973714395,((B.6:0.00827419452059,(B.3:0.00353028825561,B.10:0.00353028825561):0.00474390626498):0.0838135862709,B.2:0.0920877807915):0.0139795233547):0.076604974836):0.0115157631806):1.81061279441,((C.4:0.429418475397,(((C.2:0.0214509180742,C.9:0.0214509180742):0.000602392635821,C.7: [...]
+                "theta": 1.0,
+                "log_likelihood": 10.654460041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.7:0.00897162814571,A.5:0.00897162814571):0.00111095028127,A.8:0.010082578427):0.0607568836596,(A.2:0.0439336905777,A.1:0.0439336905777):0.0269057715089):0.32498512869,((A.9:0.150856407587,((A.4:0.00243318534014,A.10:0.00243318534014):0.0325198199814,A.3:0.0349530053216):0.115903402265):0.0621884553249,A.6:0.213044862912):0.182779727865):2.85342117646,(((((D.10:0.0588875687173,D.6:0.0588875687173):0.0319001836035,((D.1:0.00732167202112,D.2:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.549040041837864
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.7:0.103932329399,(((C.5:0.00103570438225,C.8:0.00103570438225):0.00300709658223,C.3:0.00404280096448):0.000508832489424,C.6:0.0045516334539):0.0993806959452):0.0731000810211,(C.4:0.0133253402727,C.2:0.0133253402727):0.163707070148):0.243837265973,((C.10:0.0248842265199,C.9:0.0248842265199):0.0445465231185,C.1:0.0694307496385):0.351438926755):0.815436609266,(D.5:0.618176001753,((((D.7:0.0256984067277,D.2:0.0256984067277):0.0836576786386,(D. [...]
+                "theta": 1.0,
+                "log_likelihood": 6.254900041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.1:0.0133222707023,A.7:0.0133222707023):0.140386166734,(A.4:0.0162276730974,A.5:0.0162276730974):0.137480764339):0.687958907411,((A.3:0.0177630305566,A.8:0.0177630305566):0.260254114106,((A.2:0.0244642908331,(A.10:0.0215918212502,A.6:0.0215918212502):0.00287246958291):0.00577270903876,A.9:0.0302369998719):0.247780144791):0.563650200184):2.38703780966,((((B.4:0.0460866434424,B.8:0.0460866434424):0.00730017584987,(B.5:0.00213343597315,B.7:0.002 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.197920041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((A.2:0.482610647491,((A.10:0.061510739668,A.3:0.061510739668):0.158941792708,((((A.7:0.0066586576657,A.6:0.0066586576657):0.0774964856635,(A.8:0.000986290042985,A.1:0.000986290042985):0.0831688532862):0.0376663617254,(A.5:0.083304079232,A.9:0.083304079232):0.0385174258226):0.0615227400825,A.4:0.183344245137):0.0371082872386):0.262158115115):2.57027580365,((((((B.4:0.0720763671814,B.7:0.0720763671814):0.0138051939673,(B.5:0.00412914723379,B.9:0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.8717600418378675
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.1:0.000905014520231,B.10:0.000905014520231):0.132647645772,((B.4:0.0260205639605,((B.2:0.00651422952619,B.3:0.00651422952619):0.00101017036128,B.6:0.00752439988748):0.0184961640731):0.0312275347231,B.8:0.0572480986836):0.0763045616082):0.0435587792117,(B.7:0.16015165446,B.5:0.16015165446):0.0169597850432):0.262051118239,B.9:0.439162557743):1.73984782242,(((C.3:0.0847146945115,((C.7:0.00392021535794,C.6:0.00392021535794):0.0269004275281,C.4 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.5662000418378685
+            },
+            {
+                "coalescent_tree": "[&R] (((A.9:0.111504116193,(A.6:0.0454731944432,(A.3:0.0130564253709,A.7:0.0130564253709):0.0324167690723):0.0660309217496):0.731750415262,((A.2:0.0368363613976,((A.10:0.0195371143774,A.1:0.0195371143774):0.00401902993467,A.8:0.0235561443121):0.0132802170855):0.0183277635617,(A.4:0.048234027071,A.5:0.048234027071):0.00693009788832):0.788090406495):2.47007382068,((((((B.2:0.015902438869,B.6:0.015902438869):0.0284249948415,(B.7:0.0270849418168,B.10:0.027 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.726840041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.1:0.0871484756413,((((B.5:0.000296491931044,B.8:0.000296491931044):0.0157766859692,B.10:0.0160731779002):0.016024369116,B.7:0.0320975470162):0.0201386021507,(B.4:0.0443479569098,((B.3:0.00267255518411,B.6:0.00267255518411):0.00225426218789,B.2:0.004926817372):0.0394211395378):0.00788819225712):0.0349123264744):0.375353972074,B.9:0.462502447716):2.02629474908,(((D.8:0.0819044088211,(D.1:0.0383002268053,D.2:0.0383002268053):0.0436041820157):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 12.740200041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.3:0.000259042025076,A.6:0.000259042025076):0.0304543470875,(A.1:0.0105792001124,A.10:0.0105792001124):0.0201341890002):1.02896394805,(((A.7:0.0265475361978,A.4:0.0265475361978):0.0152669108655,A.2:0.0418144470633):0.159286454245,((A.9:0.000933807198446,A.8:0.000933807198446):0.101195726786,A.5:0.102129533984):0.0989713673239):0.858576435859):2.46178044208,((((D.10:0.176368134443,(D.9:0.0116868332013,(D.3:0.0046252971592,D.7:0.0046252971592): [...]
+                "theta": 1.0,
+                "log_likelihood": 4.1744800418378665
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((D.5:0.0277556268889,D.4:0.0277556268889):0.116358044325,((D.1:0.0310615921401,D.3:0.0310615921401):0.0145024679899,D.9:0.04556406013):0.0985496110842):0.303093095001,(D.7:0.00173364220078,D.8:0.00173364220078):0.445473124014):0.230272171008,((D.6:0.00211598530571,D.10:0.00211598530571):0.330705855811,D.2:0.332821841117):0.344657096106):0.528392423766,((((C.6:0.00460723644396,C.9:0.00460723644396):0.0906153361793,C.4:0.0952225726233):0.13318 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.535200041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.10:0.171335666333,(((D.1:0.0251015532441,D.4:0.0251015532441):0.026643600784,(D.3:0.0208504223931,D.9:0.0208504223931):0.030894731635):0.0625811652416,(D.7:0.0183332882359,D.8:0.0183332882359):0.0959930310337):0.057009347063):0.036134699954,((D.2:0.0101754046623,D.5:0.0101754046623):0.0983492640252,D.6:0.108524668687):0.0989456975991):0.903925002534,((((C.5:0.0068146293998,C.3:0.0068146293998):0.0118556822644,(C.10:0.0100220169939,C.9:0.010 [...]
+                "theta": 1.0,
+                "log_likelihood": 13.251580041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.3:0.133002493538,B.1:0.133002493538):0.304192139979,((((B.9:0.0105450809207,B.6:0.0105450809207):0.0229412861477,B.10:0.0334863670684):0.0421999312259,B.4:0.0756862982943):0.0208907788275,(((B.5:0.00157757452651,B.2:0.00157757452651):0.0255265767168,B.7:0.0271041512433):0.0206777339701,B.8:0.0477818852134):0.0487951919083):0.340617556394):1.62456349366,(((D.3:0.0330491492045,((D.7:0.00462337499242,D.5:0.00462337499242):0.00880086725015,D.2:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.876760041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.9:0.00478572079895,A.2:0.00478572079895):0.0205945118225,A.1:0.0253802326214):0.22256615046,((A.8:0.0513468633279,A.3:0.0513468633279):0.0574052426435,A.6:0.108752105971):0.13919427711):0.141494263699,(((A.10:0.00867971622526,A.4:0.00867971622526):0.00402017219643,A.5:0.0126998884217):0.0107499181671,A.7:0.0234498065888):0.365990840192):2.65426385532,((((D.3:0.321466287987,D.4:0.321466287987):0.16128043069,(((D.5:0.0114576477355,D.7:0.01145 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.791540041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((A.3:0.0295689909457,A.2:0.0295689909457):0.214049952681,(((A.10:0.0177238651322,A.4:0.0177238651322):0.134847501799,(A.7:0.103033991267,A.9:0.103033991267):0.0495373756645):0.010294838687,(A.6:0.157215122239,((A.1:0.000321920949867,A.8:0.000321920949867):0.0114526407533,A.5:0.0117745617032):0.145440560535):0.00565108337972):0.0807527380086):2.90296489138,(((((B.1:0.0211164398268,B.9:0.0211164398268):0.0238089776474,((B.7:0.00603050867591,B.2:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 9.033520041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.2:0.103671807077,(B.10:0.00390007496642,B.7:0.00390007496642):0.099771732111):0.244012991059,(B.6:0.079400183856,(B.9:0.00949062789522,B.1:0.00949062789522):0.0699095559608):0.26828461428):0.323988031319,(B.4:0.0360272377387,((B.8:0.00691436722004,B.3:0.00691436722004):0.0259518527676,B.5:0.0328662199877):0.00316101775101):0.635645591717):1.55875456472,(((((D.1:0.00132592827015,D.9:0.00132592827015):0.0354855019816,D.6:0.0368114302518):0.10 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.545740041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.6:0.00256460420472,A.5:0.00256460420472):0.0792370098909,(A.9:0.0750445033073,((A.8:0.0599138416925,A.3:0.0599138416925):0.0119514256763,A.1:0.0718652673688):0.00317923593845):0.00675711078836):0.0780847172357,(A.7:0.0399584170199,(A.2:0.00303866955023,A.10:0.00303866955023):0.0369197474697):0.119927914311):0.51773545593,A.4:0.677621787262):2.3539710503,(((((D.2:0.0685319915756,(D.3:0.00775196902687,D.9:0.00775196902687):0.0607800225487):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 5.7261400418378665
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.8:0.00669935483664,B.3:0.00669935483664):0.0637215354894,(B.5:0.0542940275987,B.7:0.0542940275987):0.0161268627273):0.144816980447,((((B.2:0.00113416949252,B.1:0.00113416949252):0.00288245791024,B.4:0.00401662740276):0.0432701751311,B.9:0.0472868025339):0.023284239252,(B.10:0.0153179580477,B.6:0.0153179580477):0.0552530837382):0.144666828988):1.90582431916,((((C.7:0.185055785908,((C.6:0.018348728487,C.2:0.018348728487):0.0356826719109,C.10: [...]
+                "theta": 1.0,
+                "log_likelihood": 11.186740041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.3:0.0415581377235,B.6:0.0415581377235):0.0416085364661,B.10:0.0831666741896):0.11529303619,B.4:0.19845971038):1.00152265041,((B.1:0.0569427786973,(B.7:0.0263025761392,B.9:0.0263025761392):0.0306402025581):0.0825046234428,((B.8:0.00790161909523,B.5:0.00790161909523):0.0825231313186,B.2:0.0904247504138):0.0490226517263):1.06053495865):1.08381961343,((((C.3:0.108283467726,(C.7:0.0117081165172,C.9:0.0117081165172):0.096575351209):0.06458450598 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.573040041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((A.4:0.482372002421,(((A.7:0.00806824855482,A.8:0.00806824855482):0.0295387929054,A.6:0.0376070414602):0.298780013323,(((A.5:0.010843360374,(A.9:8.57926214222e-05,A.10:8.57926214222e-05):0.0107575677526):0.0957320761474,A.2:0.106575436521):0.0548763131844,(A.1:0.13323733257,A.3:0.13323733257):0.0282144171359):0.174935305078):0.145984947638):2.95160140065,((((((B.6:0.0352711748679,(B.1:0.00520104741626,B.8:0.00520104741626):0.0300701274517):0.0004 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.083960041837866
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((A.1:0.0427496952655,A.3:0.0427496952655):1.30349718693,(((A.2:0.0555962649976,(A.7:0.0216730105199,A.4:0.0216730105199):0.0339232544777):0.016178607665,(A.9:0.0213359070783,(A.10:0.00893939642393,A.8:0.00893939642393):0.0123965106543):0.0504389655844):0.123139955169,(A.6:0.0390539987565,A.5:0.0390539987565):0.155860829075):1.15133205436):1.72791628543,(((((D.6:0.04243787574,D.8:0.04243787574):0.162450149496,(D.9:0.156834417534,(((D.10:0.0219111 [...]
+                "theta": 1.0,
+                "log_likelihood": 1.2009400418378675
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.9:0.0301403981946,B.10:0.0301403981946):0.775769552654,(((B.2:0.0136863693951,B.7:0.0136863693951):0.0294007273756,B.3:0.0430870967707):0.0324793132801,(((B.4:0.00686156757331,B.8:0.00686156757331):0.0293937001437,(B.1:0.0295537988094,B.5:0.0295537988094):0.00670146890755):0.0119978046301,B.6:0.0482530723471):0.0273133377036):0.730343540798):1.23697310201,(((C.6:0.219028242681,((C.3:0.0319019346692,(C.5:0.00833280507413,C.2:0.00833280507413) [...]
+                "theta": 1.0,
+                "log_likelihood": 7.646180041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.7:0.015797148036,(A.2:0.00525269078689,A.3:0.00525269078689):0.0105444572491):0.193496482528,(A.6:0.184001041867,(((A.10:0.0147019134001,A.4:0.0147019134001):0.0330723687224,A.9:0.0477742821225):0.109095633571,(A.8:0.108261749958,(A.5:0.0203526507112,A.1:0.0203526507112):0.0879090992467):0.0486081657361):0.0271311261729):0.0252925886974):2.90725731317,(((((C.7:0.150194564718,C.8:0.150194564718):0.154638177709,(((C.6:0.0289442678175,C.2:0.0289 [...]
+                "theta": 1.0,
+                "log_likelihood": 2.107080041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.10:0.0635132834198,((B.2:0.00574495141068,B.4:0.00574495141068):0.00814472747142,B.7:0.0138896788821):0.0496236045377):1.06348220603,(((B.8:0.000564749742044,B.1:0.000564749742044):0.0267441141613,(B.5:0.00768160374926,B.3:0.00768160374926):0.0196272601541):0.00545560795107,(B.9:0.00754165301614,B.6:0.00754165301614):0.0252228188382):1.0942310176):1.17699870302,(((((C.7:0.00829471742645,C.1:0.00829471742645):0.0153843247177,C.4:0.02367904214 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.976760041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.8:0.0204979234236,(B.5:0.0141774865699,(B.10:0.00814302493578,B.2:0.00814302493578):0.00603446163411):0.00632043685372):0.018312091941,(B.1:0.0287738843429,B.9:0.0287738843429):0.0100361310217):0.103217606751,(B.7:0.109716401343,(B.6:0.0199986874367,B.4:0.0199986874367):0.0897177139061):0.0323112207726):0.00408938505178,B.3:0.146117007167):1.88396579139,((((C.1:0.00233302380517,C.3:0.00233302380517):0.055005674064,((C.4:0.0235695776992,C.7 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.991460041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.8:0.00176885976417,(B.5:0.00169463166348,B.3:0.00169463166348):7.42281006965e-05):0.253360968831,(((B.4:0.00890097224081,B.9:0.00890097224081):0.0582263466219,((B.10:0.0265486275051,(B.1:0.0127010440292,B.6:0.0127010440292):0.0138475834759):0.00582910271615,B.7:0.0323777302212):0.0347495886415):0.163725000782,B.2:0.230852319645):0.0242775089503):2.37734447467,(((C.2:0.00288365139217,C.6:0.00288365139217):0.536114637255,((((C.8:0.006816108676 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.411620041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.3:0.0162492399719,((B.4:0.00288246582047,B.9:0.00288246582047):0.00198682189061,B.10:0.00486928771108):0.0113799522608):0.012480767429,(B.8:0.0277415347511,B.7:0.0277415347511):0.000988472649879):0.0589652169922,((B.1:0.0303411568879,B.6:0.0303411568879):0.0440655584367,B.5:0.0744067153246):0.0132885090686):0.0640569572782,B.2:0.151752181671):1.91592720718,((((C.3:0.0263979854591,C.9:0.0263979854591):0.0536176563031,((C.10:0.0123718405171, [...]
+                "theta": 1.0,
+                "log_likelihood": 10.22022004183787
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.5:0.0175259164633,C.9:0.0175259164633):0.238120646554,((C.7:0.0195371155144,(C.8:0.0179299042095,C.6:0.0179299042095):0.00160721130483):0.020866918688,(C.3:0.00867383837161,C.2:0.00867383837161):0.0317301958308):0.215242528815):0.408096282862,(C.10:0.149448917578,(C.4:0.00458483627333,C.1:0.00458483627333):0.144864081304):0.514293928302):0.423608363884,((D.1:0.106124833433,((D.2:0.00954589236233,D.10:0.00954589236233):0.00260351917902,D.8: [...]
+                "theta": 1.0,
+                "log_likelihood": 10.625660041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((A.7:0.0771685471524,((A.5:0.0462772395278,A.1:0.0462772395278):0.0112613257004,A.9:0.0575385652282):0.0196299819242):0.42980995456,((A.10:0.0291564375979,(((A.4:0.0163214105665,A.3:0.0163214105665):0.00462462427328,A.8:0.0209460348397):0.000738281536653,A.6:0.0216843163764):0.00747212122147):0.0656494014753,A.2:0.0948058390732):0.412172662639):2.50849143004,((((B.2:0.0155638193209,B.8:0.0155638193209):0.212131024398,(B.6:0.224817476897,(((B.5:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.566780041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.6:0.026513075869,(B.4:0.0156223609072,(B.2:0.0129843144488,B.3:0.0129843144488):0.00263804645833):0.0108907149618):0.0989745906987,(B.10:0.0609587830208,B.7:0.0609587830208):0.0645288835469):0.0485034809093,(B.1:0.00589188762229,B.9:0.00589188762229):0.168099259855):0.165295706824,(B.8:0.0226121533419,B.5:0.0226121533419):0.316674700959):1.95747721188,(((D.7:0.290300063022,(D.2:0.0450239699949,((D.3:2.65562646472e-05,D.10:2.65562646472e-05 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.249960041837864
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((C.5:0.0211028020125,C.9:0.0211028020125):0.380457212735,(((C.3:0.00970292409891,C.2:0.00970292409891):0.051704747235,C.6:0.0614076713339):0.125044467917,(C.1:0.0139324150391,((C.7:0.00318771495544,(C.8:0.00096050247547,C.4:0.00096050247547):0.00222721247997):0.00582722095023,C.10:0.00901493590567):0.00491747913346):0.172519724212):0.215107875496):0.81500045956,(D.6:0.235244629047,(((D.7:0.00668983241441,D.4:0.00668983241441):0.0692014708212,( [...]
+                "theta": 1.0,
+                "log_likelihood": 13.413880041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((A.3:0.0772893905665,A.6:0.0772893905665):0.299440292584,(A.8:0.350862020277,(((A.10:0.00661444849631,A.4:0.00661444849631):0.0153783510358,(A.5:0.0164201057642,(A.7:0.00998272894802,(A.9:0.00673476689411,A.2:0.00673476689411):0.00324796205391):0.00643737681621):0.00557269376787):0.0385856160699,A.1:0.060578415602):0.290283604675):0.0258676628735):2.77453609262,((B.4:0.276212562322,((B.7:0.102079805248,(B.2:0.0601329443142,(B.5:0.0108643482079,B [...]
+                "theta": 1.0,
+                "log_likelihood": 8.190300041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.9:0.017100017731,C.6:0.017100017731):0.195251957288,((C.3:0.0493578589569,C.1:0.0493578589569):0.0926932186308,(C.5:0.058756386845,(C.4:0.0130291491692,(C.8:0.00280484435953,C.10:0.00280484435953):0.0102243048097):0.0457272376758):0.0832946907427):0.0703008974319):0.357449189912,(C.2:0.0192165338892,C.7:0.0192165338892):0.550584631043):0.505852685259,((((D.9:0.0203419899261,D.6:0.0203419899261):0.0354541685247,(D.3:0.00416044264298,D.7:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.839540041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.8:0.1208926865,(A.10:0.0580112450946,((A.2:0.0225451746677,A.1:0.0225451746677):0.000338441883124,(A.9:0.00259419347498,A.7:0.00259419347498):0.0202894230759):0.0351276285438):0.0628814414049):0.327864572095,((A.3:0.0448260291378,(A.5:0.0183800555358,A.4:0.0183800555358):0.0264459736019):0.0279897115437,A.6:0.0728157406814):0.375941517914):2.59412076496,(((C.1:0.581698977218,(((C.6:0.0256031326393,C.3:0.0256031326393):0.0116675746618,(C.4:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 12.772160041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.6:0.0416896919376,A.5:0.0416896919376):0.329549288146,(((A.10:0.00333644422605,A.8:0.00333644422605):0.0405969380106,((A.3:0.0375103291031,A.9:0.0375103291031):0.00390858501499,A.1:0.0414189141181):0.00251446811854):0.0917640802236,A.2:0.13569746246):0.235541517623):0.142328601467,(A.7:0.0304245945665,A.4:0.0304245945665):0.483142986984):2.56587010771,(((B.2:0.107792124406,B.6:0.107792124406):0.112190489284,((B.10:0.0579375570251,B.9:0.05793 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.208440041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.9:0.00873460311957,A.4:0.00873460311957):0.0363273800844,(A.3:0.0087550717133,A.5:0.0087550717133):0.0363069114907):0.181354374664,(((A.7:0.032107396545,A.6:0.032107396545):0.0507458116334,A.8:0.0828532081784):0.0570226418377,((A.10:0.00396164839755,A.2:0.00396164839755):0.0958664493524,A.1:0.0998280977499):0.0400477522661):0.0865405078516):2.85470213511,(((C.4:0.283214605201,(((C.2:0.0104275738626,C.5:0.0104275738626):0.0713510362129,(C.1:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 12.726000041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((C.7:0.482794668199,((((C.1:0.0120765396654,C.4:0.0120765396654):0.00238248211006,C.9:0.0144590217755):0.23661067782,(C.5:0.0222872953845,C.2:0.0222872953845):0.228782404211):0.160718969576,(C.6:0.0288163504792,((C.8:0.00325770879586,C.10:0.00325770879586):0.0014917243396,C.3:0.00474943313546):0.0240669173437):0.382972318692):0.0710059990282):0.52548308055,(((((D.5:0.0605654192831,((D.10:0.00610577151969,D.9:0.00610577151969):0.0152375229266,(D [...]
+                "theta": 1.0,
+                "log_likelihood": -3.2733399581621323
+            },
+            {
+                "coalescent_tree": "[&R] (((A.8:0.0542877771998,(A.1:0.00894733476023,A.4:0.00894733476023):0.0453404424396):0.181529538734,((A.7:0.0156668712391,A.2:0.0156668712391):0.16087609632,((A.10:0.0316616234735,A.5:0.0316616234735):0.0116139283508,((A.9:0.00848293587818,A.3:0.00848293587818):0.0250925366633,A.6:0.0335754725415):0.00970007928269):0.133267415735):0.0592743483754):2.84108755273,(((B.4:0.297391948278,(B.2:0.204022557422,((B.8:0.0324968996521,B.1:0.0324968996521):0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.646740041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.6:0.0114374540522,A.2:0.0114374540522):0.0257484007036,A.10:0.0371858547558):0.0776057287877,A.1:0.114791583543):0.225296435929,(((A.8:0.0216622327827,A.4:0.0216622327827):0.0318468969081,((A.3:0.00424056839559,A.9:0.00424056839559):0.013965176455,A.7:0.0182057448506):0.0353033848401):0.242268922977,A.5:0.295778052668):0.0443099668043):2.99980589239,((((C.4:0.00675804930055,C.5:0.00675804930055):0.193657212617,((((C.2:0.000759848169932,C.7: [...]
+                "theta": 1.0,
+                "log_likelihood": 7.817320041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.8:0.0431015576511,((A.2:0.00865213303538,A.4:0.00865213303538):0.0063629318826,A.1:0.015015064918):0.0280864927331):0.268406408064,((A.5:0.138538357837,(A.7:0.0356398185203,A.6:0.0356398185203):0.102898539317):0.0894568594759,(A.3:0.00666235064488,(A.10:0.00579374489913,A.9:0.00579374489913):0.000868605745749):0.221332866668):0.0835127484023):2.70976003957,(((((B.4:0.0404044899049,B.1:0.0404044899049):0.0362692230758,B.10:0.0766737129807):0.1 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.214500041837868
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((A.2:0.290216343885,A.1:0.290216343885):0.0172731624296,(A.4:0.00700525702334,A.5:0.00700525702334):0.300484249292):0.37165106599,((A.8:0.0971872544245,((A.9:0.00469492128287,A.3:0.00469492128287):0.00170614748532,(A.6:0.00101435211939,A.7:0.00101435211939):0.0053867166488):0.0907861856563):0.0693328967264,A.10:0.166520151151):0.512620421154):2.4804452014,(((B.5:0.10931528917,(B.9:0.0745294755997,B.8:0.0745294755997):0.0347858135705):0.07456554 [...]
+                "theta": 1.0,
+                "log_likelihood": 2.3135200418378665
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.7:0.00132564613791,A.2:0.00132564613791):0.0327355338732,A.1:0.0340611800111):0.501817874146,(A.9:0.321870269078,((A.3:0.0483838617615,A.5:0.0483838617615):0.22356378164,(A.10:0.0354574659436,((A.4:0.0300452561057,A.8:0.0300452561057):0.000140053663928,A.6:0.0301853097696):0.00527215617399):0.236490177457):0.049922625677):0.214008785079):3.01737369496,(((((B.3:0.0471757835533,B.7:0.0471757835533):0.01685775549,(B.4:0.0155347663808,(B.2:0.008 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.064240041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((A.4:0.202667557039,(((A.2:0.0193252602064,(((A.9:0.00616510193556,A.7:0.00616510193556):0.00162079349095,A.10:0.00778589542651):0.00596299190202,A.5:0.0137488873285):0.00557637287785):0.0358287659376,A.1:0.0551540261439):0.00375367492898,((A.6:0.00689047543289,A.3:0.00689047543289):0.0059172956703,A.8:0.0128077711032):0.0460999299697):0.143759855966):2.87861704401,(((B.5:0.148389292811,((((B.3:0.00435776012178,B.10:0.00435776012178):0.0036747041 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.881580041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((((C.5:0.0011837124328,C.9:0.0011837124328):0.0322558438554,(C.4:0.00166810165909,C.2:0.00166810165909):0.0317714546291):0.0148398010456,C.8:0.0482793573337):0.00647967978819,((C.1:0.0398545257344,(C.6:0.0223390299239,C.10:0.0223390299239):0.0175154958104):0.0120695723944,(C.7:0.0392026750657,C.3:0.0392026750657):0.0127214230631):0.0028349389932):1.59685404864,((D.10:0.488607000745,(D.9:0.155660989053,D.2:0.155660989053):0.332946011692):0.2226 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.525440041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((A.9:0.562164839028,((((A.1:0.0170159815361,A.3:0.0170159815361):0.0289179949454,(A.5:0.0192703211249,(A.8:0.0169472333759,A.7:0.0169472333759):0.00232308774897):0.0266636553567):0.00314527976642,(A.10:0.0211821201099,(A.4:0.00109084229691,A.6:0.00109084229691):0.020091277813):0.0278971361381):0.0301801691702,A.2:0.0792594254182):0.482905413609):2.59511038661,(((B.3:0.0758964711458,(B.2:0.0210964849267,B.4:0.0210964849267):0.0547999862191):0.2679 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.445400041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((A.10:0.119601887047,((A.6:0.0151022109299,A.3:0.0151022109299):0.0124462102919,A.4:0.0275484212218):0.0920534658254):0.973743761612,(((A.5:0.0109251137907,A.9:0.0109251137907):0.0180057127374,A.2:0.0289308265281):0.266990327091,((A.1:0.000240323950427,A.8:0.000240323950427):0.00743324792433,A.7:0.00767357187476):0.288247581744):0.797424495041):1.95311839675,((((B.8:0.00426507181697,B.5:0.00426507181697):0.0875830399697,B.1:0.0918481117866):0.45 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.404800041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.6:0.00968248554483,C.10:0.00968248554483):0.171093159422,((((C.8:0.04464304216,C.5:0.04464304216):0.00447989715836,C.9:0.0491229393183):0.0616389827132,C.2:0.110761922032):0.016333628124,C.4:0.127095550156):0.0536800948111):0.37433050303,(C.3:0.101347042514,(C.1:0.00609086843439,C.7:0.00609086843439):0.0952561740792):0.453759105483):0.465801754817,(((D.9:0.01415133473,D.4:0.01415133473):0.00963530964199,(D.6:0.00431677369682,D.7:0.00431677 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.8251400418378685
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.8:0.0105817318509,A.2:0.0105817318509):0.277591230212,((A.5:0.0409732657361,A.10:0.0409732657361):0.184981853876,((A.7:0.0542714055439,A.4:0.0542714055439):0.00236294008025,A.3:0.0566343456241):0.169320773988):0.0622178424512):0.273339888597,((A.6:0.024719267403,A.9:0.024719267403):0.0219294397005,A.1:0.0466487071035):0.514864143557):2.58547307283,(((B.5:0.190899581099,((B.4:0.0678528768944,B.2:0.0678528768944):0.0463617303722,(B.1:0.0409878 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.833920041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.10:0.0143342734851,B.2:0.0143342734851):0.352839726054,((((B.8:0.0130897566012,B.6:0.0130897566012):0.0286303658254,B.5:0.0417201224267):0.0453827427407,(B.9:0.0585106379548,(B.1:0.0112914071048,B.4:0.0112914071048):0.04721923085):0.0285922272126):0.0270055208233,(B.3:0.0288367798764,B.7:0.0288367798764):0.0852716061143):0.253065613548):1.7619573237,((((D.9:0.00306346787021,D.4:0.00306346787021):0.165564183871,(D.8:0.0474941674549,D.1:0.0474 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.156220041837866
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((A.6:0.0232663001294,A.5:0.0232663001294):0.273007156078,((A.3:0.0363159318902,A.8:0.0363159318902):0.217600543863,(A.1:0.206384668851,(A.4:0.0744571051607,(A.7:0.0707545163725,(A.2:0.0407520522939,(A.9:0.00474336014121,A.10:0.00474336014121):0.0360086921527):0.0300024640786):0.00370258878817):0.131927563691):0.0475318069023):0.0423569804536):2.76659275305,(((B.1:0.256126537994,B.5:0.256126537994):0.173104336263,(((((B.9:0.000270843647654,B.6:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 8.161780041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.6:0.442423963856,((((B.3:0.0012470941171,B.5:0.0012470941171):0.0342835174202,(B.8:0.025972167728,B.1:0.025972167728):0.00955844380929):0.0146653843775,(B.7:0.0439299542986,B.2:0.0439299542986):0.00626604161622):0.0534578416181,B.10:0.103653837533):0.338770126323):0.00330626769132,(B.4:0.0433539608357,B.9:0.0433539608357):0.402376270712):1.84227978415,((((C.4:0.00984444903634,C.6:0.00984444903634):0.00717827088594,(C.3:0.0127471152034,(C.2:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.078160041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((A.5:0.106625648009,((A.8:0.0425751224401,(A.9:0.0154710238962,A.10:0.0154710238962):0.0271040985439):0.0568012697259,A.4:0.099376392166):0.00724925584304):0.131633843102,(A.6:0.0167746540807,(A.2:0.00785408565654,(A.1:0.00295666192744,(A.3:0.00199143461596,A.7:0.00199143461596):0.00096522731148):0.00489742372911):0.00892056842417):0.221484837031):2.81005502644,(((B.9:0.409920234985,(B.7:0.0259481631435,B.3:0.0259481631435):0.383972071842):0.016 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.043720041837869
+            },
+            {
+                "coalescent_tree": "[&R] ((((D.4:0.344789634512,(D.8:0.223787948152,((((D.1:0.0170991845514,D.9:0.0170991845514):0.00616432226167,D.6:0.0232635068131):0.00181353286087,D.2:0.025077039674):0.162958413895,((D.10:0.0143642499276,D.5:0.0143642499276):0.133958748942,(D.3:0.126286438136,D.7:0.126286438136):0.0220365607334):0.0397124546999):0.0357524945826):0.12100168636):1.45802867469,((((C.5:0.0211768598464,(C.1:0.0044561476778,C.2:0.0044561476778):0.0167207121686):0.052635855 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.285300041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.10:0.0684815644175,(A.8:0.0248998596913,A.3:0.0248998596913):0.0435817047263):0.128095651669,((((A.6:0.0177480882448,(A.7:0.0145222587113,A.1:0.0145222587113):0.00322582953359):0.00317503237038,A.9:0.0209231206152):0.0572987854534,A.4:0.0782219060686):0.0117866523435,(A.5:0.0621755803828,A.2:0.0621755803828):0.0278329780294):0.106568657674):2.91411907118,(((((D.10:0.000618130460179,D.4:0.000618130460179):0.0462532069399,D.2:0.0468713374001):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 12.195380041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.2:0.0866392387371,((A.9:0.0453082539147,((A.10:0.0190656760879,A.5:0.0190656760879):0.0236174889938,(A.7:0.0288194191375,A.8:0.0288194191375):0.0138637459442):0.00262508883298):0.0189221939391,A.6:0.0642304478538):0.0224087908833):0.0451488288469,A.3:0.131788067584):0.155885622181,(A.1:0.0512833495186,A.4:0.0512833495186):0.236390340246):2.74809556688,(((B.2:0.0243295519845,B.4:0.0243295519845):0.361529218978,(B.5:0.123446966042,((((B.7:0.02 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.298520041837865
+            },
+            {
+                "coalescent_tree": "[&R] (((A.2:0.0248423236679,A.5:0.0248423236679):0.115749623048,(((A.7:0.0524791872856,((A.3:0.00214588666687,A.4:0.00214588666687):0.0142735348981,A.1:0.016419421565):0.0360597657206):0.0216136464149,(A.9:0.0071808058337,A.6:0.0071808058337):0.0669120278668):0.0272639821446,(A.10:0.000987727032025,A.8:0.000987727032025):0.100369088813):0.0392351308707):3.03995855411,((((B.5:0.00466192674113,B.7:0.00466192674113):0.0560820077372,(B.6:0.0446511686856,(B [...]
+                "theta": 1.0,
+                "log_likelihood": 9.490780041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((A.5:0.0168915561821,A.9:0.0168915561821):0.084909091808,(A.7:0.0522803015375,((((A.6:0.00720578356227,A.2:0.00720578356227):0.00575903796547,A.8:0.0129648215277):0.00272314693712,((A.1:0.00558347513841,A.10:0.00558347513841):0.00355496203761,A.3:0.00913843717602):0.00654953128884):0.0221130005737,A.4:0.0378009690386):0.0144793324989):0.0495203464526):2.99261973288,(((B.4:0.00444586271725,B.5:0.00444586271725):0.459644373076,(B.10:0.097919498525 [...]
+                "theta": 1.0,
+                "log_likelihood": 15.345300041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((B.8:0.432790025349,((B.3:0.0542905301595,B.5:0.0542905301595):0.023652371928,(((B.1:0.00302839768739,B.6:0.00302839768739):0.0117864298741,((B.4:0.00475354050056,B.9:0.00475354050056):0.00310654419528,B.7:0.00786008469584):0.00695474286561):0.0162693072853,(B.10:0.021694579577,B.2:0.021694579577):0.00938955526979):0.0468587672408):0.354847123262):1.63535411298,(((C.2:0.105846890824,(C.5:0.0784328017851,(C.6:0.0157062374296,(C.9:0.00777546329519 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.666600041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((A.6:0.0157436637196,((A.8:0.00650217600052,(A.4:0.0036282667963,A.3:0.0036282667963):0.00287390920422):0.00705483019951,A.2:0.0135570062):0.00218665751952):0.219132831014,(((A.9:0.00174395872301,A.1:0.00174395872301):0.115281567878,A.10:0.117025526601):0.098863339335,(A.7:0.170383700051,A.5:0.170383700051):0.0455051658853):0.018987628797):2.98490056335,(((((((D.6:0.00662167475731,D.7:0.00662167475731):0.0217390664498,D.10:0.0283607412071):0.003 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.326180041837867
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((A.8:0.0193133689438,A.4:0.0193133689438):0.0356108832447,((A.5:0.0135466538946,A.6:0.0135466538946):0.0261271486172,A.1:0.0396738025118):0.0152504496766):0.018907090475,A.2:0.0738313426634):0.0699176480822,(A.7:0.116272975816,(A.9:0.0119290751374,(A.3:0.00971862039162,A.10:0.00971862039162):0.00221045474574):0.104343900679):0.0274760149294):3.29427665285,((((D.9:0.0636678859882,(D.1:0.0372083107678,(D.7:0.0314304761438,D.10:0.0314304761438):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.355220041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((C.6:0.240538835768,((C.7:0.00234694955487,C.8:0.00234694955487):0.146163023179,(((C.3:0.0319271961244,C.5:0.0319271961244):0.0157777432719,(((C.1:0.0229268032684,C.9:0.0229268032684):0.00917650376633,C.4:0.0321033070347):0.000717860574811,C.10:0.0328211676095):0.0148837717868):0.0160154323225,C.2:0.0637203717188):0.0847896010148):0.0920288630342):1.44345731738,((D.7:0.0278212235649,D.8:0.0278212235649):0.591948887612,((D.5:0.174261705185,(D.3: [...]
+                "theta": 1.0,
+                "log_likelihood": 5.005240041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.5:0.0239815951409,(A.4:0.00806293613903,(A.9:0.0053331269817,A.2:0.0053331269817):0.00272980915734):0.0159186590019):0.00931661894575,A.8:0.0332982140867):0.17748756711,((A.1:0.0140485141676,A.6:0.0140485141676):0.128194519018,(A.7:0.0909348479557,(A.10:0.038262477131,A.3:0.038262477131):0.0526723708247):0.0513081852295):0.0685427480119):2.91186459991,((((B.8:0.0292569361461,(B.9:0.0163778105554,(B.10:0.0089217118275,B.1:0.0089217118275):0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 13.169480041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.4:0.00725847813604,B.1:0.00725847813604):0.283332169338,(((B.7:0.00849379823687,B.3:0.00849379823687):0.0132802659937,B.10:0.0217740642305):0.00772391805673,(B.9:0.0195093712162,(B.5:0.0160376299265,B.2:0.0160376299265):0.00347174128965):0.00998861107109):0.261092665187):0.179181728753,(B.8:0.0114648620438,B.6:0.0114648620438):0.458307514183):1.54885975967,((((C.1:0.0271215158579,(C.8:0.00477724459934,C.2:0.00477724459934):0.0223442712585): [...]
+                "theta": 1.0,
+                "log_likelihood": 5.646320041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.3:0.0298725533199,C.2:0.0298725533199):0.160618965591,(C.10:0.0835869731648,((C.6:0.0212587854116,C.5:0.0212587854116):0.000298408618899,(C.1:0.0121962944079,C.4:0.0121962944079):0.00936089962258):0.0620297791342):0.106904545746):0.0725334377347,(C.7:0.0223813168621,(C.8:0.0138956439021,C.9:0.0138956439021):0.00848567296006):0.240643639783):0.988777428507,(D.7:0.316921384138,((((D.3:0.0465602334732,D.2:0.0465602334732):0.000103049978008,(D [...]
+                "theta": 1.0,
+                "log_likelihood": 10.072000041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((C.7:0.0794432274556,(C.4:0.00669223405718,C.8:0.00669223405718):0.0727509933984):0.239200355286,((C.10:0.000542877019273,C.2:0.000542877019273):0.169820538266,(C.6:0.1643413048,(((C.5:0.0264679552251,C.9:0.0264679552251):0.00145886202617,C.3:0.0279268172512):0.0401764636204,C.1:0.0681032808716):0.0962380239287):0.00602211048455):0.148280167457):0.788820715209,(((D.2:0.0197111136534,D.5:0.0197111136534):0.0840980856443,(((D.8:0.00821410585365, [...]
+                "theta": 1.0,
+                "log_likelihood": 10.985820041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.1:0.0521132537292,A.8:0.0521132537292):0.296742249921,A.3:0.34885550365):0.0546311689197,(((A.2:0.0216106699807,(A.9:0.000162902232156,A.7:0.000162902232156):0.0214477677485):0.0092387590191,A.6:0.0308494289998):0.148642725038,((A.4:0.0401474514836,A.5:0.0401474514836):0.101867528975,A.10:0.142014980458):0.03747717358):0.223994518532):2.7397114415,((((D.7:0.0224380439809,D.8:0.0224380439809):0.993778943377,(((C.6:0.073279247102,((C.9:0.01697 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.268360041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((D.7:0.152724451475,(D.4:0.0147302158331,D.2:0.0147302158331):0.137994235642):0.155844002381,((D.8:0.0103748494514,D.1:0.0103748494514):0.0311442961623,(D.9:0.0246317453289,D.3:0.0246317453289):0.0168874002849):0.267049308242):0.113944420204,(D.6:0.0465436429069,(D.10:0.0297151574788,D.5:0.0297151574788):0.0168284854282):0.375969231153):0.825894654408,(((C.9:0.0587743571274,(C.5:0.00781636735186,C.8:0.00781636735186):0.0509579897755):0.066663 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.3990200418378675
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.9:0.0336100848118,((B.6:0.000694098069548,B.5:0.000694098069548):0.00707620512651,B.8:0.00777030319606):0.0258397816158):0.0475085032698,(B.1:0.0125017838689,B.2:0.0125017838689):0.0686168042127):0.353331822397,(B.4:0.0861756984657,((B.10:0.00367463289045,B.3:0.00367463289045):0.00402188942012,B.7:0.00769652231057):0.0784791761551):0.348274712013):1.88966082584,((((((C.8:0.0120998962025,C.5:0.0120998962025):0.0182358465669,(C.9:0.0269389889 [...]
+                "theta": 1.0,
+                "log_likelihood": 14.040400041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.2:0.00598941463628,B.5:0.00598941463628):0.0651972293821,B.6:0.0711866440184):0.0127656250569,(((B.4:0.0192687102404,B.9:0.0192687102404):0.017221583866,B.7:0.0364902941064):0.0364568520548,B.10:0.0729471461613):0.011005122914):0.205560134927,(B.3:0.00447048560042,(B.8:0.00232399672362,B.1:0.00232399672362):0.00214648887679):0.285041918402):2.23489585526,((((D.5:8.39866925808e-05,D.10:8.39866925808e-05):0.280399427906,(D.2:0.0513860968123, [...]
+                "theta": 1.0,
+                "log_likelihood": 10.038360041837866
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((A.5:0.000995464883847,A.7:0.000995464883847):0.00734787501644,A.2:0.00834333990028):0.0680342642117,(A.1:0.0678808710657,A.9:0.0678808710657):0.00849673304624):0.00841674906818,A.6:0.0847943531802):0.04180990842,((A.3:0.00318765157749,A.8:0.00318765157749):0.0841933198471,A.10:0.0873809714246):0.0392232901755):0.0223659892003,A.4:0.1489702508):3.02230447264,(((B.3:0.0870094600291,(B.9:0.0131592482867,(B.6:0.0118768334936,B.5:0.0118768334936 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.299420041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((A.3:0.0776592230261,((A.7:0.0167959444828,((A.4:0.000918356076829,A.8:0.000918356076829):0.00227549991829,A.10:0.00319385599512):0.0136020884877):0.0183012487541,A.9:0.035097193237):0.0425620297892):0.29436010717,((A.5:0.0427841145634,(A.6:0.0374619474033,A.1:0.0374619474033):0.00532216716007):0.053046292463,A.2:0.0958304070263):0.27618892317):3.18783864808,((((B.10:0.0846468483534,((B.2:0.0234968697277,B.3:0.0234968697277):0.0140641775438,(B.6 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.031300041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((A.1:0.25629949293,((((((A.8:0.000412078101804,A.6:0.000412078101804):0.000687929855622,A.7:0.00110000795743):0.0331449866739,A.4:0.0342449946313):0.0312154940107,(A.3:0.0151361284206,A.10:0.0151361284206):0.0503243602214):0.0457311701335,A.5:0.111191658776):0.0113877176394,(A.9:0.00220886686139,A.2:0.00220886686139):0.120370509554):0.133720116515):2.84803245727,(((((C.7:0.0581547677462,C.2:0.0581547677462):0.0781383786175,((C.4:0.0130547269769,( [...]
+                "theta": 1.0,
+                "log_likelihood": 12.505480041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((C.1:0.335582066051,((C.4:0.109291797537,(C.9:0.0103682561544,(C.2:0.00500984322711,C.10:0.00500984322711):0.00535841292734):0.0989235413826):0.0762335233605,(((C.5:0.0245305521346,C.3:0.0245305521346):0.0351110015379,(C.7:0.0368130034141,C.6:0.0368130034141):0.0228285502585):0.0568873828127,C.8:0.116528936485):0.0689963844123):0.150056745154):0.834662226437,(((D.8:0.0326285855543,D.6:0.0326285855543):0.243639798696,(D.5:0.0724852932031,D.1:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.6326800418378666
+            },
+            {
+                "coalescent_tree": "[&R] ((A.2:0.58138434818,(((A.3:0.0737506502613,(A.9:0.0567201490436,(A.10:0.00316039921662,A.7:0.00316039921662):0.053559749827):0.0170305012177):0.0331082622257,A.6:0.106858912487):0.265845337991,((A.4:0.033863072277,(A.5:0.0087323576065,A.8:0.0087323576065):0.0251307146705):0.00506198079824,A.1:0.0389250530753):0.333779197403):0.208680097702):3.06890463946,(((D.10:0.67180510105,((((D.3:0.0194473001263,D.4:0.0194473001263):0.023285134722,(D.6:0.03536 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.6524000418378675
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.3:0.0310565509994,B.8:0.0310565509994):0.11033913294,((B.1:0.0148071929009,B.4:0.0148071929009):0.0319969119703,((B.5:0.00280111473596,B.9:0.00280111473596):0.0299737641229,B.6:0.0327748788588):0.0140292260124):0.0945915790679):0.44471329048,(B.10:0.110822856949,(B.7:0.0439282262872,B.2:0.0439282262872):0.0668946306614):0.475286117471):1.61345195815,(((C.10:0.117556282042,(C.5:0.0489867830985,(C.3:0.00475564594124,C.2:0.00475564594124):0.04 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.9639600418378675
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.7:0.0209744006606,(C.8:0.00193155010858,C.3:0.00193155010858):0.0190428505521):0.0458998487242,((C.4:0.0168242359046,C.1:0.0168242359046):0.031672622226,C.2:0.0484968581306):0.0183773912542):0.216432307073,(C.10:0.127718471543,((C.5:0.0238603169852,C.9:0.0238603169852):0.0703471962209,C.6:0.0942075132061):0.0335109583365):0.155588084915):0.959106503103,(((D.2:0.00323615404914,D.9:0.00323615404914):0.0873156042873,((D.8:0.0237810460348,D.4: [...]
+                "theta": 1.0,
+                "log_likelihood": 10.268940041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.9:0.0114789711737,D.8:0.0114789711737):0.182707398719,D.7:0.194186369893):0.416039857447,((D.5:0.0918954054956,(D.2:0.0113641299528,D.10:0.0113641299528):0.0805312755428):0.353851125469,(((D.3:0.0159312050896,D.4:0.0159312050896):0.0458118497515,D.6:0.0617430548412):0.0347852029028,D.1:0.096528257744):0.349218273221):0.164479696374):1.6075649788,(((B.8:0.0339786709879,(B.5:0.0267608533183,B.3:0.0267608533183):0.00721781766966):0.67729690886 [...]
+                "theta": 1.0,
+                "log_likelihood": 2.6804400418378664
+            },
+            {
+                "coalescent_tree": "[&R] (((((C.10:0.121496873006,((C.2:0.00151217280514,C.8:0.00151217280514):0.00308654918284,C.4:0.00459872198798):0.116898151018):0.00602589421485,((((C.7:0.0261176544003,C.1:0.0261176544003):0.00438563514115,C.3:0.0305032895414):0.00194951356138,(C.5:0.00783697603681,C.9:0.00783697603681):0.024615827066):0.0119760712341,C.6:0.044428874337):0.0830938928842):2.02436540112,((((D.6:0.00329313057343,D.3:0.00329313057343):0.0171598056557,D.4:0.0204529362291 [...]
+                "theta": 1.0,
+                "log_likelihood": 12.315740041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((A.7:0.693455927887,((A.4:0.0439375012434,(A.6:0.0374674608754,A.8:0.0374674608754):0.006470040368):0.36389908109,(A.1:0.170486467001,((A.3:0.0309586229314,(A.2:0.0213095007468,A.9:0.0213095007468):0.00964912218458):0.0798722618634,(A.10:0.0586481590161,A.5:0.0586481590161):0.0521827257788):0.0596555822064):0.237350115332):0.285619345554):2.5526580967,((((B.10:0.134967650877,(((B.7:0.00323410117235,B.6:0.00323410117235):0.0273083421279,B.8:0.0305 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.755080041837867
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((A.10:0.0129063220214,(A.9:0.0065887902858,A.3:0.0065887902858):0.00631753173558):0.0304305067583,A.1:0.0433368287797):0.014818850897,A.6:0.0581556796766):0.483820141855,((A.4:0.00111452883252,A.7:0.00111452883252):0.394125701418,(A.8:0.0753774489654,(A.5:0.050919132541,A.2:0.050919132541):0.0244583164243):0.319862781285):0.146735591282):2.71633763865,((B.6:0.164249921422,((B.7:0.0311967822481,(B.8:0.0100873682962,(B.9:0.00124145194312,B.3:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.145920041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((D.7:0.0347919650548,D.3:0.0347919650548):0.100234062889,D.10:0.135026027944):0.063468367193,(((D.1:0.0144246747379,(D.6:0.0106093604361,(D.9:6.12355059535e-05,D.5:6.12355059535e-05):0.0105481249302):0.00381531430177):0.0514338697873,D.4:0.0658585445252):0.0266315339088,(D.2:0.0156464028755,D.8:0.0156464028755):0.0768436755586):0.106004316703):1.05037532108,(((((((C.7:0.00768913897746,C.4:0.00768913897746):0.0148851903366,(C.2:0.0210693556758 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.931700041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.5:0.157166402292,(((D.7:0.0118354131944,D.4:0.0118354131944):0.0128949497052,D.8:0.0247303628995):0.0242857990746,(D.2:0.0202326132058,D.3:0.0202326132058):0.0287835487684):0.108150240318):0.133345030495,((D.9:0.00990131620312,D.6:0.00990131620312):0.0264352005515,(D.1:0.00136590698095,D.10:0.00136590698095):0.0349706097737):0.254174916032):0.903569733015,(((C.2:0.00987838457971,C.9:0.00987838457971):0.226963124627,C.1:0.236841509207):0.019 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.8483800418378666
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.6:0.0354096692924,A.9:0.0354096692924):0.0387373229393,(A.10:0.0169744950573,A.4:0.0169744950573):0.0571724971744):0.287236891799,((A.7:0.0544277544747,(A.1:0.0238186009127,A.3:0.0238186009127):0.030609153562):0.248589835471,((A.8:0.00375092712281,A.5:0.00375092712281):0.137709244543,A.2:0.141460171666):0.161557418279):0.0583662940848):2.7830685824,(((B.3:0.161631533419,(B.7:0.154722342025,B.10:0.154722342025):0.00690919139353):0.16252399071 [...]
+                "theta": 1.0,
+                "log_likelihood": 2.378300041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((D.5:0.0237447751471,D.1:0.0237447751471):0.121248542409,D.8:0.144993317556):0.139091315963,((D.4:0.0175226906188,(D.3:0.010606718275,D.6:0.010606718275):0.00691597234384):0.0987920657625,(D.9:0.0885232502021,((D.7:0.000593141189398,D.10:0.000593141189398):0.0211307820939,D.2:0.0217239232833):0.0667993269188):0.0277915061792):0.167769877138):1.06476124507,(C.5:0.109977815663,((((C.8:0.0255072361168,C.9:0.0255072361168):0.0147295675026,C.10:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 2.556180041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((((C.1:0.0324537746712,C.6:0.0324537746712):0.0297195818103,C.2:0.0621733564815):0.0245446387318,(C.4:0.00609170646266,C.7:0.00609170646266):0.0806262887506):0.405653857554,((C.9:0.0981589960253,(C.3:0.0127950816321,C.10:0.0127950816321):0.0853639143932):0.0293942593058,(C.5:0.0246946976284,C.8:0.0246946976284):0.102858557703):0.364818597436):0.788635598188,((((D.10:0.00710313950418,D.2:0.00710313950418):0.0131152743079,D.8:0.020218413812):0.1 [...]
+                "theta": 1.0,
+                "log_likelihood": 14.562760041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.1:0.00323523399079,B.8:0.00323523399079):0.0302171744745,B.6:0.0334524084653):0.379313341727,((B.10:0.00448888723064,B.4:0.00448888723064):0.000261840939304,B.9:0.00475072816994):0.408015022022):0.335822122236,(((B.5:0.00686034972497,B.7:0.00686034972497):0.0712998305918,B.2:0.0781601803168):0.00817247013413,B.3:0.0863326504509):0.662255221978):1.32137484154,((((((D.3:0.00472868852001,D.9:0.00472868852001):0.00025798967104,D.6:0.0049866781 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.858700041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((((D.4:0.0773068868417,D.5:0.0773068868417):0.0051758895472,((D.8:0.0027034262088,D.1:0.0027034262088):0.0610520939767,(D.3:0.000529360859289,D.9:0.000529360859289):0.0632261593262):0.0187272562035):0.224970423645,((D.6:0.0209773165787,(D.7:0.00290409676788,D.2:0.00290409676788):0.0180732198109):0.0319945790463,D.10:0.0529718956251):0.254481304409):1.33912896649,(C.9:0.299515512587,(((C.6:0.069590748005,(C.8:0.0012650832385,C.4:0.0012650832385) [...]
+                "theta": 1.0,
+                "log_likelihood": 9.684680041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.9:0.143196730472,((D.7:0.0088464784898,D.8:0.0088464784898):0.0114749659163,(D.5:0.00969999471954,(D.10:0.00860714677182,D.3:0.00860714677182):0.00109284794772):0.0106214496866):0.122875286066):0.378485341381,((D.1:0.0105751202907,D.4:0.0105751202907):0.465695730278,(D.6:0.0095921530839,D.2:0.0095921530839):0.466678697485):0.0454112212849):0.876169975556,(((C.7:0.0722808462403,(C.6:0.0206955691537,C.8:0.0206955691537):0.0515852770867):0.066 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.712240041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.8:0.00160064126196,B.1:0.00160064126196):0.346195529176,(((B.10:0.0254196383499,B.9:0.0254196383499):0.273322227902,(B.4:0.0306789811267,(B.5:0.000867641594349,B.7:0.000867641594349):0.0298113395324):0.268062885126):0.045259636572,((B.6:0.0139384863933,B.3:0.0139384863933):0.0525812694819,B.2:0.0665197558751):0.277481746949):0.00379466761369):1.77878889558,((((D.2:0.0154958427985,D.4:0.0154958427985):0.253114818079,(D.1:0.0333158356799,(D.10 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.780520041837868
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((A.7:0.0141421297084,A.3:0.0141421297084):0.139789477106,(A.1:0.123866647872,(A.10:0.120323866624,((A.4:0.00092706839214,A.2:0.00092706839214):0.0915571479389,(A.9:0.0705347850483,(A.5:0.0246653976732,A.8:0.0246653976732):0.0458693873751):0.0219494312827):0.0278396502935):0.00354278124749):0.0300649589428):0.353095142567,A.6:0.507026749382):2.77503362337,((((C.8:0.114026852374,C.1:0.114026852374):0.0803962121707,(((C.4:0.0242341104031,(C.9:0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.648100041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.8:0.0543983653197,(A.10:0.0224592217365,A.5:0.0224592217365):0.0319391435832):0.00297616883653,(A.2:0.00223122286069,A.4:0.00223122286069):0.0551433112956):0.0370277216515,A.3:0.0944022558078):0.483007615267,((A.7:0.0146650410314,A.1:0.0146650410314):0.164643666873,(A.6:0.0305244113541,A.9:0.0305244113541):0.14878429655):0.398101163171):2.78195758432,((((B.6:0.0762436460135,B.2:0.0762436460135):0.0551951513518,(B.3:0.0113553456356,(B.1:0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.682560041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.4:0.0143001943697,A.8:0.0143001943697):0.0119196404042,(A.5:0.0125602516899,(A.3:0.0122662796539,A.10:0.0122662796539):0.000293972036017):0.013659583084):0.215488495661,(((A.6:0.00698774783945,A.9:0.00698774783945):0.00894368005426,A.7:0.0159314278937):0.0295499292104,(A.2:0.0356204959191,A.1:0.0356204959191):0.00986086118504):0.196226973331):2.8597382956,(((D.4:0.142802846636,((D.1:0.0307522856053,D.9:0.0307522856053):0.0414447316049,D.7:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.124420041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((A.8:0.0153222399154,A.9:0.0153222399154):0.737775561665,((A.6:0.116479172389,(A.3:0.00144113677899,A.7:0.00144113677899):0.11503803561):0.576305169853,(((A.1:0.0128306443416,A.2:0.0128306443416):0.14349439055,A.4:0.156325034891):0.00136864251019,(A.5:0.0185887660688,A.10:0.0185887660688):0.139104911333):0.535090664841):0.0603134593381):2.38456427418,((((C.10:0.0670358026735,(C.2:0.0309346438218,C.8:0.0309346438218):0.0361011588517):0.8060965822 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.889860041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.3:0.0665710759656,C.1:0.0665710759656):0.0310557022573,(C.7:0.0293327294717,((C.4:0.0044446508172,(C.5:0.00441312157679,C.2:0.00441312157679):3.1529240413e-05):0.00689348859779,C.10:0.011338139415):0.0179945900567):0.0682940487512):0.343497253972,(C.6:0.328594569148,(C.8:0.182708251709,C.9:0.182708251709):0.145886317439):0.112529463047):0.576737741432,((D.7:0.0208568507254,D.6:0.0208568507254):0.541630876076,(D.1:0.181617692214,((((D.2:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.885420041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.2:0.192999711999,B.9:0.192999711999):0.212334829773,((B.6:0.124928857595,(B.3:0.0702768001695,(((B.8:0.00411774922746,(B.1:0.00300454267321,B.10:0.00300454267321):0.00111320655425):0.000407724770986,B.7:0.00452547399845):0.0568970833015,B.4:0.0614225573):0.00885424286954):0.0546520574254):0.11993808499,B.5:0.244866942584):0.160467599188):2.12646234867,((((((C.6:0.0190338548613,C.2:0.0190338548613):0.00914710431163,C.1:0.028180959173):0.02643 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.349440041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.4:0.00999503640089,A.10:0.00999503640089):0.0583491220813,A.2:0.0683441584822):0.0179166819442,A.3:0.0862608404264):0.0351780354356,((A.5:0.0205859761778,((A.7:0.00850552604093,A.6:0.00850552604093):0.0049599708764,A.9:0.0134654969173):0.00712047926047):0.0760427780965,(A.8:0.04274506289,A.1:0.04274506289):0.0538836913843):0.0248101215877):3.5035306124,((((((D.7:0.0153065631183,D.4:0.0153065631183):0.00775756415274,D.1:0.0230641272711):0.02 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.689480041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((((D.4:0.00391204265513,D.7:0.00391204265513):0.36063338136,D.5:0.364545424015):0.515418533331,((D.8:0.0446591537895,D.9:0.0446591537895):0.100481610293,((D.10:0.0149660524773,(D.1:0.00167136804745,D.3:0.00167136804745):0.0132946844298):0.122835357174,(D.6:0.0284529588502,D.2:0.0284529588502):0.109348450801):0.00733935443045):0.734823193263):0.216606201437,((C.3:0.128311072712,((C.4:0.0129506980298,C.5:0.0129506980298):0.0168874912872,C.9:0.029 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.285820041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.6:0.0121215760402,(B.3:0.00914236656446,B.8:0.00914236656446):0.00297920947574):0.10533573566,((((B.9:0.0314700802259,(B.2:0.0267793784721,B.1:0.0267793784721):0.00469070175373):0.0115533733005,B.5:0.0430234535264):0.0271091037831,B.10:0.0701325573094):0.024210113183,B.4:0.0943426704924):0.023114641208):0.217490832773,B.7:0.334948144474):2.10674044603,(((D.2:0.0299429492581,D.5:0.0299429492581):0.372354464171,(((D.9:0.146285807375,D.6:0.146 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.82048004183787
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((B.8:0.0428391246553,B.6:0.0428391246553):0.0221579850748,(B.7:0.0122790816782,B.10:0.0122790816782):0.0527180280519):0.122409979921,(B.2:0.0429115212721,B.9:0.0429115212721):0.144495568379):0.0639088464708,((B.1:0.0176187716007,B.3:0.0176187716007):0.0738364313421,(B.5:0.0189113755298,B.4:0.0189113755298):0.0725438274131):0.159860733179):2.12156164975,(((((D.1:0.0060617565538,D.6:0.0060617565538):0.132822303495,(D.2:0.0127810859887,D.3:0.012 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.196140041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.7:0.018015712349,A.6:0.018015712349):0.0670695280264,(A.3:0.0231797488738,(A.2:0.0188267029654,A.1:0.0188267029654):0.00435304590836):0.0619054915017):0.666320973636,((A.9:0.0203253029382,(A.4:0.00371228025917,(A.8:0.000792123969793,A.5:0.000792123969793):0.00292015628938):0.0166130226791):0.0117815307738,A.10:0.032106833712):0.719299380299):2.48746366911,((B.3:0.29051056772,((B.9:0.0267071799476,B.8:0.0267071799476):0.0918165615155,((B.2:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 8.767320041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((A.8:0.871356024451,(((A.7:0.0771501658408,A.2:0.0771501658408):0.122611962061,((A.6:0.0336275151855,A.1:0.0336275151855):0.0497094445823,A.3:0.0833369597678):0.116425168133):0.00402936495352,(A.4:0.149822727811,((A.5:0.00411340757099,A.10:0.00411340757099):0.046959943705,A.9:0.051073351276):0.0987493765348):0.0539687650439):0.667564531596):2.26690295829,((((C.8:0.305688344504,(((C.4:0.0281210626124,C.9:0.0281210626124):0.0221982405647,(C.6:0.031 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.731400041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.8:0.0797846606785,(A.5:0.0214856145169,(A.1:0.00396350686734,A.10:0.00396350686734):0.0175221076496):0.0582990461616):0.060725379087,((A.2:0.0634574720447,A.3:0.0634574720447):0.0351925009749,(A.4:0.0333970421864,A.9:0.0333970421864):0.0652529308332):0.0418600667458):0.0273531056007,(A.6:0.0362571495953,A.7:0.0362571495953):0.131605995771):3.0634854343,(((B.6:0.369171656305,((((B.9:0.0155808780614,(B.1:0.0130500760677,B.7:0.0130500760677):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 6.869600041837868
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.10:0.0163726673894,C.6:0.0163726673894):0.0894341256079,(((C.4:0.0319356814417,(C.3:0.00146162169477,C.8:0.00146162169477):0.0304740597469):0.0118662559208,C.9:0.0438019373624):0.0210195777923,C.7:0.0648215151547):0.0409852778426):0.0339270548877,(C.5:0.0757658540219,(C.1:0.0219071299924,C.2:0.0219071299924):0.0538587240295):0.0639679938631):0.952878845144,(D.10:0.813647603319,((D.8:0.0551999385698,D.1:0.0551999385698):0.463155500067,((((D [...]
+                "theta": 1.0,
+                "log_likelihood": 10.017200041837864
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.7:0.0107898727648,C.2:0.0107898727648):0.121898971214,C.3:0.132688843979):0.0243983407035,(((((C.8:0.0145904351353,C.1:0.0145904351353):0.0116404578997,C.6:0.026230893035):0.0277482233509,C.5:0.0539791163859):0.00675312766977,C.9:0.0607322440557):0.0879891831668,(C.4:0.0282141279144,C.10:0.0282141279144):0.120507299308):0.00836575745972):1.17639444077,((((D.3:0.0189637889202,D.5:0.0189637889202):0.0397870760144,D.4:0.0587508649345):0.06809 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.421040041837864
+            },
+            {
+                "coalescent_tree": "[&R] ((A.3:0.180856145143,((A.8:0.0989783995005,A.6:0.0989783995005):0.0550603311788,(((A.4:0.0182835239178,A.9:0.0182835239178):0.0602240521845,A.5:0.0785075761022):0.01466714057,(A.10:0.0339189532447,(A.2:0.0190131149341,(A.1:0.0187100768397,A.7:0.0187100768397):0.000303038094383):0.0149058383106):0.0592557634275):0.0608640140071):0.0268174144634):3.03653555484,(((B.4:0.0984456831383,(B.10:0.0230484813404,B.3:0.0230484813404):0.0753972017979):0.32044 [...]
+                "theta": 1.0,
+                "log_likelihood": 2.1989200418378667
+            },
+            {
+                "coalescent_tree": "[&R] (((((((C.1:0.0150022931199,(C.7:0.00818921892915,C.9:0.00818921892915):0.00681307419074):0.0174481181912,C.5:0.0324504113111):0.0560641447702,((C.2:0.0106758848217,C.10:0.0106758848217):0.0634627086776,(C.8:0.014762693777,C.6:0.014762693777):0.0593758997224):0.014375962582):0.0135281026735,(C.3:0.0333480951186,C.4:0.0333480951186):0.0686945636362):1.21632208173,((D.5:0.0555647785,D.6:0.0555647785):0.359630046527,(((D.1:0.0778884261589,D.9:0.077888 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.442520041837865
+            },
+            {
+                "coalescent_tree": "[&R] (((A.3:0.160635514712,A.7:0.160635514712):0.307764758805,((A.4:0.027103922897,A.5:0.027103922897):0.186565012451,(((A.2:0.00253341204425,A.10:0.00253341204425):0.0124903629147,A.9:0.0150237749589):0.0851507922867,(A.1:0.043015271833,(A.6:0.0342647914415,A.8:0.0342647914415):0.00875048039145):0.0571592954126):0.113494368102):0.254731338169):2.75407693691,(((B.3:0.286641004425,((B.4:0.042312566988,((B.7:0.0213179605092,B.10:0.0213179605092):0.007472 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.899520041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.10:0.00105948286029,B.2:0.00105948286029):0.0595082940077,B.7:0.0605677768679):0.0246727954023,(B.3:0.0153043161087,B.9:0.0153043161087):0.0699362561616):0.383057820687,((B.1:0.106777330483,(B.6:0.00787330913372,B.5:0.00787330913372):0.0989040213493):0.136383710178,(B.8:0.027814483122,B.4:0.027814483122):0.215346557539):0.225137352297):1.67350942737,((((D.6:0.023634583291,D.7:0.023634583291):0.180972792018,((D.10:0.033850825215,D.1:0.03385 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.047800041837869
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((A.1:0.0336101584989,A.10:0.0336101584989):0.213613031274,(A.7:0.0237684224256,A.2:0.0237684224256):0.223454767348):0.0857772023441,(((A.8:0.00168827266742,A.9:0.00168827266742):0.0295859745439,(A.5:0.0283725750926,(A.4:0.0028497209746,A.3:0.0028497209746):0.025522854118):0.00290167211874):0.186813494251,A.6:0.218087741462):0.114912650655):2.94190830278,(((B.7:0.0352126419478,B.2:0.0352126419478):0.523306166328,(B.5:0.365857565748,((B.8:0.10954 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.708380041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((((D.1:0.0536124193556,(D.2:0.0206531074882,D.7:0.0206531074882):0.0329593118674):0.0205423990849,(D.3:0.0119048314762,D.8:0.0119048314762):0.0622499869644):0.0291857753097,((D.5:0.0147186980684,D.9:0.0147186980684):0.063217415967,(D.6:0.0232750146832,D.10:0.0232750146832):0.0546610993522):0.0254044797148):0.443084137943,D.4:0.546424731693):0.530342519374,((C.8:0.024590224853,(C.6:0.0184314403475,(C.4:0.00916438426514,C.10:0.00916438426514):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 7.0947800418378675
+            },
+            {
+                "coalescent_tree": "[&R] (((A.7:0.0399311067655,A.6:0.0399311067655):0.502995968803,((A.10:0.0885513228967,(A.2:0.00742662277513,A.1:0.00742662277513):0.0811247001216):0.211428595126,((A.5:0.0381216167823,(A.3:0.00926705837145,A.4:0.00926705837145):0.0288545584109):0.0140662795799,(A.8:0.00655482160583,A.9:0.00655482160583):0.0456330747564):0.247792021661):0.242947157545):2.58843112591,(((((B.7:0.0243274243742,B.9:0.0243274243742):0.0192602062795,(B.8:0.00261572564399,B.1 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.604080041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((((C.5:0.00339088321773,C.3:0.00339088321773):0.0263241601354,(C.9:0.00970755255828,C.4:0.00970755255828):0.0200074907948):0.165962422415,((C.1:0.0490220093022,C.8:0.0490220093022):0.0304098165501,C.6:0.0794318258523):0.116245639916):0.575784251597,(C.2:0.0841255093834,(C.7:0.00268800833188,C.10:0.00268800833188):0.0814375010515):0.687336207981):0.457760356617,((D.10:0.2079221972,(((D.9:0.0276965206742,(D.2:0.00499332375025,D.4:0.0049933237502 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.293840041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((((B.1:0.017792657586,B.8:0.017792657586):0.0194347217236,B.4:0.0372273793096):0.0754818173481,((B.5:0.018930105345,B.2:0.018930105345):0.00143502023026,B.7:0.0203651255753):0.0923440710824):0.127659491681,(B.9:0.0582044546171,B.10:0.0582044546171):0.182164233722):0.52288946436,(B.6:0.0157979663273,B.3:0.0157979663273):0.747460186371):1.31747420093,((((C.10:0.166556387959,(C.3:0.0933668790328,C.8:0.0933668790328):0.0731895089262):0.03379119769 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.609800041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.4:0.0445665681072,((A.8:0.00265775105969,A.9:0.00265775105969):0.0150074647342,A.2:0.0176652157939):0.0269013523132):0.170006682066,((A.5:0.0713257833888,A.1:0.0713257833888):0.049830211915,((A.7:0.0908998645548,A.10:0.0908998645548):0.0258560397297,(A.6:0.0591996185567,A.3:0.0591996185567):0.0575562857278):0.00440009101932):0.0934172548696):2.81533015646,(((((D.6:0.0212116755115,D.3:0.0212116755115):0.0468859265323,(D.7:0.0159361452079,D.2:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.103000041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.5:0.0659182051584,((A.2:0.00436717102312,A.8:0.00436717102312):0.0522423642852,(A.1:0.0276775601645,A.4:0.0276775601645):0.0289319751438):0.00930866985006):0.0278380230295,(A.6:0.00966074790747,A.3:0.00966074790747):0.0840954802804):0.298960212394,(A.10:0.220189447178,(A.7:0.175122851472,A.9:0.175122851472):0.045066595706):0.172526993403):2.61613470024,(((((((C.5:0.0228102663657,C.7:0.0228102663657):0.031150432451,((C.10:0.00424340982361,C.1 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.5945200418378676
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.1:0.0899776804255,A.8:0.0899776804255):0.126392978192,((A.7:0.0231209106689,A.10:0.0231209106689):0.0153848128604,((A.9:0.0201447077473,A.5:0.0201447077473):0.0172182409734,A.2:0.0373629487207):0.00114277480859):0.177864935089):0.0385099838317,((A.3:0.0340132511121,A.6:0.0340132511121):0.0541677443457,A.4:0.0881809954578):0.166699646992):3.09558214716,((((((C.5:0.00059832609597,C.4:0.00059832609597):0.0822727928426,(C.8:0.0466860799766,(C.6: [...]
+                "theta": 1.0,
+                "log_likelihood": 7.616440041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.9:0.00351893312045,B.1:0.00351893312045):0.0490543435013,B.10:0.0525732766217):0.0743069412213,((B.2:0.0250431060289,(B.8:0.0196794463112,B.3:0.0196794463112):0.00536365971768):0.0887948178251,(B.5:0.00967362500681,B.7:0.00967362500681):0.104164298847):0.013042293989):0.528676616291,(B.4:0.00400481146894,B.6:0.00400481146894):0.651552022665):1.48365721394,(((D.6:0.0380345041775,(D.1:0.033390318099,(D.8:0.011910646071,(D.3:0.0114400241827,D [...]
+                "theta": 1.0,
+                "log_likelihood": 11.268040041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.2:0.0124109710584,A.8:0.0124109710584):0.0284592238923,(A.3:0.00924302364135,A.10:0.00924302364135):0.0316271713094):0.509577886821,(((A.4:0.123987539801,A.6:0.123987539801):0.00431469552917,A.1:0.12830223533):0.00696733591844,(A.9:0.111093108334,(A.5:0.00771296146439,A.7:0.00771296146439):0.10338014687):0.0241764629145):0.415178510523):2.56255220779,(((((D.9:0.156159378424,D.7:0.156159378424):0.0122304029538,((D.3:0.066442339511,D.8:0.06644 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.361280041837868
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((B.10:0.0857599968534,(B.7:0.0261709753826,B.4:0.0261709753826):0.0595890214708):0.0673348407111,(((B.3:0.00939961660272,B.8:0.00939961660272):0.00864395941413,B.6:0.0180435760169):0.130835198745,(B.1:0.0292094236616,B.9:0.0292094236616):0.1196693511):0.00421606280267):0.263514416182,(B.5:0.0218781453608,B.2:0.0218781453608):0.394731108385):1.62285933758,(((D.5:0.0860857051732,((D.2:0.00282104439929,D.6:0.00282104439929):0.0758627902513,(D.7:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.023360041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.8:0.0306499393785,D.2:0.0306499393785):0.44399927189,((((D.7:0.00392552033421,D.4:0.00392552033421):0.0436288620214,(D.6:0.015772176766,D.1:0.015772176766):0.0317822055896):0.0533897301696,(D.5:0.0239878957209,D.3:0.0239878957209):0.0769562168043):0.00192503071748,(D.9:0.00476160643044,D.10:0.00476160643044):0.0981075368123):0.371780068026):0.586399967765,((C.8:0.104571654852,C.2:0.104571654852):0.450424211229,(((C.6:0.00333684882685,C.9:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 7.133740041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((A.1:0.046728632017,((A.8:0.0317398277927,A.9:0.0317398277927):0.0141350373711,A.4:0.0458748651638):0.000853766853199):0.244048116032,(A.5:0.0319442344756,(A.6:0.0231142297001,((A.7:0.000123858275567,A.10:0.000123858275567):0.0119959997544,(A.3:0.00649396213256,A.2:0.00649396213256):0.00562589589742):0.0109943716701):0.00883000477553):0.258832513573):2.84215523453,(((((D.1:0.0238217804049,(D.9:0.0107067864389,D.2:0.0107067864389):0.013114993966) [...]
+                "theta": 1.0,
+                "log_likelihood": 9.047940041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.1:0.0194355703802,A.6:0.0194355703802):0.144630102036,A.8:0.164065672416):0.166202663986,(A.7:0.119414879494,(((A.9:0.0223559470839,A.10:0.0223559470839):0.0165412393148,A.4:0.0388971863987):0.0261455457944,A.2:0.0650427321931):0.0543721473013):0.210853456908):0.233685606417,(A.3:0.108475731353,A.5:0.108475731353):0.455478211466):2.99295979841,((((B.8:0.00973753526466,B.2:0.00973753526466):0.0526484717877,(B.5:0.0599026641559,(B.7:0.0052499 [...]
+                "theta": 1.0,
+                "log_likelihood": -1.7722799581621334
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.5:0.204241726109,(B.1:0.0652451021369,((B.7:0.0208924349019,(B.6:0.00807796593427,(B.2:0.00136540554618,B.9:0.00136540554618):0.00671256038809):0.0128144689676):0.0236534993077,B.4:0.0445459342096):0.0206991679273):0.138996623972):0.289264840933,((B.10:0.0336174698827,B.3:0.0336174698827):0.284155658431,B.8:0.317773128314):0.175733438727):2.02572422242,((((C.8:0.00372384033918,C.9:0.00372384033918):0.250504014858,((((C.7:0.00231517358265,C.5 [...]
+                "theta": 1.0,
+                "log_likelihood": 3.056060041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((B.9:0.216714756961,(((B.5:0.0357750323829,B.8:0.0357750323829):0.031244456021,(B.1:0.0184384631877,B.7:0.0184384631877):0.0485810252162):0.0657175899477,(B.3:0.115280756617,(((B.6:0.00924175454448,B.2:0.00924175454448):0.0307724767801,B.4:0.0400142313246):0.00854728633922,B.10:0.0485615176638):0.0667192389531):0.0174563217346):0.083977678609):1.81753865094,((D.7:0.457452002529,((D.5:0.163533040792,D.9:0.163533040792):0.246774373144,((D.3:0.1446 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.950280041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.5:0.0199867524931,B.3:0.0199867524931):0.0432573170616,(B.7:0.0299511994346,B.1:0.0299511994346):0.0332928701201):0.136780994254,((B.8:0.0273350508448,B.10:0.0273350508448):0.0366928704372,(((B.9:0.00600518995095,B.4:0.00600518995095):0.00428969316594,B.2:0.0102948831169):0.0115653493167,B.6:0.0218602324336):0.0421676888484):0.135997142526):1.81619306417,((D.5:0.260974180153,((D.7:0.0609981085556,((D.8:0.00325270768218,D.10:0.00325270768218 [...]
+                "theta": 1.0,
+                "log_likelihood": 13.938720041837865
+            },
+            {
+                "coalescent_tree": "[&R] (((A.6:0.0668676859152,(A.2:0.059783008496,(A.7:0.0379404909955,(A.10:0.0138005449654,A.8:0.0138005449654):0.0241399460301):0.0218425175005):0.00708467741917):0.509004360071,((((A.1:0.00201558137046,A.5:0.00201558137046):0.00188886418492,A.9:0.00390444555537):0.0181576248795,A.4:0.0220620704349):0.0959313920928,A.3:0.117993462528):0.457878583459):2.80326228216,((((((C.9:0.0245903470089,C.8:0.0245903470089):0.0343379493839,C.7:0.0589282963929):0.01 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.543040041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.10:0.137423326874,(((A.1:0.00629029412909,A.2:0.00629029412909):0.0557373025775,((A.3:0.0123843651986,A.9:0.0123843651986):0.0214762973891,A.8:0.0338606625877):0.0281669341189):0.0483685539521,((A.5:0.026245036083,A.7:0.026245036083):0.00457919295148,A.6:0.0308242290345):0.0795719216242):0.0270271762155):0.0603922238246,A.4:0.197815550699):2.94695690147,((B.5:0.510264364341,((((B.7:0.0127038514637,B.4:0.0127038514637):0.00410621252997,B.6:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.369960041837867
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((A.3:0.0293498785417,A.8:0.0293498785417):0.23255289152,((A.6:0.0286939344689,((A.7:0.0100324337087,A.5:0.0100324337087):0.00289283098397,A.9:0.0129252646927):0.0157686697762):0.181256335171,(A.2:0.0184248900104,A.4:0.0184248900104):0.19152537963):0.0519525004214):0.134198156678,(A.10:0.147211805956,A.1:0.147211805956):0.248889120783):2.61048021872,(((((B.5:0.0070333003553,B.3:0.0070333003553):0.0109729165262,B.1:0.0180062168815):0.029132075366 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.314720041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.8:0.000644966969004,A.3:0.000644966969004):0.00265378870393,A.5:0.00329875567294):0.019912134261,A.1:0.023210889934):0.111425278183,(A.2:0.129135292979,(((A.6:0.00914400669601,A.4:0.00914400669601):0.0203902402253,A.10:0.0295342469213):0.0381491784152,(A.7:0.00817668489763,A.9:0.00817668489763):0.0595067404389):0.061451867642):0.00550087513819):2.88659794709,((((B.3:0.0114420595805,B.1:0.0114420595805):0.0119249861958,B.10:0.0233670457763): [...]
+                "theta": 1.0,
+                "log_likelihood": 10.623600041837864
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.9:5.48670739177e-05,A.7:5.48670739177e-05):0.0140844878452,(A.5:0.0053144203849,A.2:0.0053144203849):0.00882493453419):0.185450154954,(((A.3:0.00654715733,A.6:0.00654715733):0.0128857605413,A.4:0.0194329178713):0.0789053542089,((A.1:0.0185369941568,A.10:0.0185369941568):0.0123134213457,A.8:0.0308504155025):0.0674878565777):0.101251237793):2.98393729011,((((((C.8:0.00536778545156,C.4:0.00536778545156):0.0636462256809,(C.3:0.0116876720503,(C.5 [...]
+                "theta": 1.0,
+                "log_likelihood": 13.762420041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((B.3:0.172899195954,((B.4:0.0524414444586,(((B.6:0.0199334467841,B.9:0.0199334467841):0.00554234640917,((B.2:0.00733364268364,B.5:0.00733364268364):0.000799044115529,(B.7:0.00749257985833,B.8:0.00749257985833):0.000640106940835):0.0173431063941):0.0210141812255,B.10:0.0464899744188):0.00595147003972):0.0700855282094,B.1:0.122526972668):0.0503722232859):2.42469792203,((((D.3:0.0130654810874,D.5:0.0130654810874):0.10860927833,(D.9:0.0557359957701, [...]
+                "theta": 1.0,
+                "log_likelihood": 9.079620041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.1:0.00492923083853,B.6:0.00492923083853):0.0667681804417,B.2:0.0716974112803):0.0247925794869,((B.4:0.0219893031647,((B.10:0.00798925352603,B.7:0.00798925352603):0.00440246362142,B.9:0.0123917171475):0.00959758601729):0.00861586104612,B.8:0.0306051642109):0.0658848265563):0.235711332245,(B.5:0.0505361567623,B.3:0.0505361567623):0.28166516625):1.66970322377,(((((C.8:0.0410517503071,C.10:0.0410517503071):0.0443673221896,C.1:0.0854190724967): [...]
+                "theta": 1.0,
+                "log_likelihood": 6.256020041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((((C.10:0.0411669154757,C.1:0.0411669154757):0.0389365447382,(C.2:0.00381112390999,C.3:0.00381112390999):0.0762923363039):0.351404150417,(((C.7:0.0360277889882,(C.6:0.0236003154413,C.9:0.0236003154413):0.0124274735469):0.0190209755863,C.8:0.0550487645745):0.029417673906,(C.5:0.00700783633746,C.4:0.00700783633746):0.0774586021431):0.34704117215):1.29876518649,((D.5:0.0190995009047,D.1:0.0190995009047):0.853117367544,(D.6:0.0961408000484,(D.2:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.251320041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.8:0.015444908313,(A.3:0.0126385605961,A.2:0.0126385605961):0.00280634771688):0.1308590343,((((A.7:0.0222815644002,A.9:0.0222815644002):0.00876741856884,A.5:0.0310489829691):0.022227527262,A.4:0.053276510231):0.0785593778914,((A.6:0.0237667197056,A.10:0.0237667197056):0.0337248471975,A.1:0.0574915669031):0.0743443212194):0.014468054491):3.0279967576,(((((B.1:0.0367566915119,(B.5:0.00314348112206,B.4:0.00314348112206):0.0336132103898):0.0240776 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.431940041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.5:0.027618820311,(D.4:0.00666188166763,(D.10:0.00210224731299,D.1:0.00210224731299):0.00455963435464):0.0209569386434):0.237004300074,((((D.7:0.00436967355879,D.6:0.00436967355879):0.011571493736,D.2:0.0159411672948):0.120263214644,(D.3:0.000581055831153,D.8:0.000581055831153):0.135623326108):0.0468661682993,D.9:0.183070550238):0.0815525701463):0.915715951805,(C.3:0.982421821182,(C.6:0.217020210377,((C.5:0.0667267251661,C.7:0.0667267251661) [...]
+                "theta": 1.0,
+                "log_likelihood": 8.133780041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.4:0.0591890608798,(B.2:0.0241941061275,B.9:0.0241941061275):0.0349949547523):0.0376226162333,(B.6:0.0678682669897,B.5:0.0678682669897):0.0289434101234):0.398243199986,(((B.3:0.0300459857984,B.10:0.0300459857984):0.0249205230694,(B.7:0.000254532011798,B.1:0.000254532011798):0.054711976856):0.0441439894477,B.8:0.0991104983155):0.395944378784):1.58248466385,(((((C.9:0.0196625449371,(C.1:0.011670585097,C.5:0.011670585097):0.00799195984006):0.06 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.286480041837868
+            },
+            {
+                "coalescent_tree": "[&R] (((A.4:0.0160981304808,A.2:0.0160981304808):0.586951461257,(((A.9:0.0152355873854,A.6:0.0152355873854):0.00579173932694,(A.8:0.00631964892532,A.5:0.00631964892532):0.014707677787):0.240162779137,((A.1:0.0260202790887,A.7:0.0260202790887):0.109349809923,(A.3:0.0360278670077,A.10:0.0360278670077):0.0993422220036):0.125820016838):0.341859485889):2.49710393293,((((C.2:0.0539908228278,((C.3:0.0159869439337,C.9:0.0159869439337):0.00490726780551,C.10:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.429600041837867
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((D.1:0.0294093701132,D.3:0.0294093701132):0.0146630119459,(D.4:0.0331986325207,D.6:0.0331986325207):0.0108737495384):0.0100815491635,(((D.7:0.000486519106008,D.5:0.000486519106008):0.0297949993076,D.10:0.0302815184136):0.0164720568305,(D.2:0.0220243459712,(D.8:0.00601816525223,D.9:0.00601816525223):0.016006180719):0.0247292292729):0.00740035597859):1.08442726088,((C.6:0.141208753032,(C.7:0.107931305196,(C.10:0.0627857888839,((C.9:0.0233617158 [...]
+                "theta": 1.0,
+                "log_likelihood": 9.401540041837865
+            },
+            {
+                "coalescent_tree": "[&R] ((A.10:0.197491455366,(((A.3:0.0128026319815,(A.5:0.000899263638776,(A.7:0.000638548111593,A.8:0.000638548111593):0.000260715527183):0.0119033683427):0.0755224561241,A.1:0.0883250881056):0.0730172594657,((A.9:0.00950334901871,A.4:0.00950334901871):0.0600966299551,(A.2:0.0175470487673,A.6:0.0175470487673):0.0520529302065):0.0917423685975):0.0361491077949):2.86600275565,(((B.10:0.177005878679,(((B.8:0.023208313494,B.1:0.023208313494):0.0087142371251 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.204940041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.8:0.0429416299988,A.4:0.0429416299988):0.320080298434,(((A.5:0.0300568598669,A.10:0.0300568598669):0.0268139085397,A.1:0.0568707684067):0.273469157127,A.2:0.330339925534):0.0326820028991):0.304636646301,((A.3:0.021569298808,(A.9:0.00181645453383,A.6:0.00181645453383):0.0197528442742):0.172653603414,A.7:0.194222902222):0.473435672512):2.4106625078,(((B.6:0.0183688804999,(B.8:0.00830427512918,B.4:0.00830427512918):0.0100646053707):0.3654562757 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.012000041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.3:0.0156084148056,A.6:0.0156084148056):0.114438899332,A.2:0.130047314137):0.596128199687,((A.9:0.0180023682616,A.8:0.0180023682616):0.196109688301,(A.4:0.0774617131274,(A.5:0.0489637693565,(A.10:0.0102331390486,(A.1:0.0079318901377,A.7:0.0079318901377):0.00230124891086):0.0387306303079):0.0284979437709):0.136650343435):0.512063457262):2.29292690191,((((((C.7:0.0233860509559,(C.10:0.000857914355097,C.2:0.000857914355097):0.0225281366008):0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 0.9663000418378673
+            },
+            {
+                "coalescent_tree": "[&R] (((((((B.7:0.0119507834951,B.3:0.0119507834951):0.0105555468491,(B.4:0.0192226780305,B.6:0.0192226780305):0.00328365231378):0.0280285598183,(B.5:0.0109386227673,B.8:0.0109386227673):0.0395962673952):0.0559912679779,(B.9:0.0705439397112,B.2:0.0705439397112):0.0359822184292):0.0605295472158,(B.1:0.105070705601,B.10:0.105070705601):0.0619849997551):1.83916936448,((((D.3:0.00133990611135,D.5:0.00133990611135):0.158694981986,D.1:0.160034888097):0.16517 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.233380041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.6:0.0764416562063,B.3:0.0764416562063):0.867892702716,(((B.8:0.0383401954834,B.9:0.0383401954834):0.210698853487,(B.4:0.199163128913,B.2:0.199163128913):0.0498759200573):0.0914454473429,((B.5:0.0152353305332,B.10:0.0152353305332):0.0512678769345,(B.1:0.0231687807723,B.7:0.0231687807723):0.0433344266953):0.273981288846):0.603849862608):1.74750362292,(((C.1:0.178991124144,(C.9:0.136527030398,C.6:0.136527030398):0.0424640937459):0.284499699446, [...]
+                "theta": 1.0,
+                "log_likelihood": -0.561199958162133
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.8:0.0342663673466,B.6:0.0342663673466):0.269887778886,(((B.10:0.0233514033132,(B.7:0.000886402157505,B.3:0.000886402157505):0.0224650011557):0.0113706879706,B.1:0.0347220912838):0.0162821051919,((B.5:0.019419745504,(B.2:0.00684708825617,B.4:0.00684708825617):0.0125726572478):0.00991968509542,B.9:0.0293394305994):0.0216647658763):0.253149949756):1.83636978163,((((D.10:0.0125150413171,D.7:0.0125150413171):0.0193870203171,D.2:0.0319020616342):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.797740041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((((C.5:0.0442421944806,C.10:0.0442421944806):0.00448022103738,C.7:0.048722415518):0.029516529985,(C.9:0.0685471641571,C.6:0.0685471641571):0.00969178134584):0.0066321468067,C.3:0.0848710923097):0.582447156255,(C.1:0.136511052957,(C.8:0.0581547301539,(C.2:0.00317446361763,C.4:0.00317446361763):0.0549802665363):0.0783563228029):0.530807195608):0.544524044991,((((D.3:0.0332237237377,(D.7:0.0122173889024,D.4:0.0122173889024):0.0210063348354):0.04 [...]
+                "theta": 1.0,
+                "log_likelihood": 7.181960041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((A.3:0.273522933312,(A.1:0.0258092109491,A.10:0.0258092109491):0.247713722363):0.705066412592,((A.6:0.0485783815938,(A.5:0.0192567864571,(A.9:0.017508614232,A.4:0.017508614232):0.00174817222511):0.0293215951367):0.028595432338,(A.7:0.065343680539,(A.8:0.0629554649843,A.2:0.0629554649843):0.00238821555474):0.0118301333927):0.901415531972):2.16555869747,(((B.5:0.112268792998,((B.7:0.00707466590677,B.10:0.00707466590677):0.0994832050076,B.4:0.10655 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.285720041837868
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((B.7:0.0266767623667,B.10:0.0266767623667):0.0940641880106,B.2:0.120740950377):0.158260823249,(B.8:0.240915867616,((B.5:0.0334096527943,B.6:0.0334096527943):0.170835523682,(((B.9:0.0125423962372,B.4:0.0125423962372):0.00380021417307,B.1:0.0163426104102):0.0317871801513,B.3:0.0481297905615):0.156115385915):0.0366706911398):0.0380859060098):1.72942283382,(((D.3:0.196502169986,(((D.8:0.0109365177481,D.7:0.0109365177481):0.0537159226789,D.9:0.0646 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.893360041837869
+            },
+            {
+                "coalescent_tree": "[&R] ((A.3:0.726624121431,(((A.10:0.0257762814195,A.6:0.0257762814195):0.0449160533635,(A.9:0.0436403844188,A.1:0.0436403844188):0.0270519503643):0.428332701278,((A.8:0.0291082393279,A.2:0.0291082393279):0.0605766633242,(A.5:0.0666639310101,(A.7:0.0473929264691,A.4:0.0473929264691):0.019271004541):0.023020971642):0.409340133409):0.22759908537):2.27583322346,(((((C.2:0.0640155785566,(C.5:0.0403866210242,(C.9:0.0380037113446,(C.4:0.0249575505013,(C.3:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 4.718160041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((((B.2:0.0356315438084,B.4:0.0356315438084):0.000539552799298,B.1:0.0361710966077):0.0179255550292,(B.9:0.0486285848509,B.3:0.0486285848509):0.00546806678589):0.0247918686874,(B.8:0.0571691271924,(B.6:0.00943999645628,B.10:0.00943999645628):0.0477291307362):0.0217193931318):0.10723233605,(B.7:0.0390905534333,B.5:0.0390905534333):0.147030302941):2.23369499083,(((C.1:0.0413324397573,C.8:0.0413324397573):0.170455496885,(((C.6:0.0109019081138,C.4: [...]
+                "theta": 1.0,
+                "log_likelihood": 7.361120041837867
+            },
+            {
+                "coalescent_tree": "[&R] ((((B.5:0.172369969913,(B.7:0.0867092952899,B.1:0.0867092952899):0.0856606746231):0.249987399526,((((B.8:0.0230402041874,B.10:0.0230402041874):0.000611377490969,((B.9:0.00466662399765,B.2:0.00466662399765):0.0148948503851,B.6:0.0195614743827):0.00409010729562):0.0572093002976,B.4:0.080860881976):0.0456059081343,B.3:0.12646679011):0.295890579329):2.84546556142,((A.1:0.230898372411,(A.2:0.00948432182743,A.6:0.00948432182743):0.221414050584):0.118953 [...]
+                "theta": 1.0,
+                "log_likelihood": 2.172520041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.5:0.0674285827113,(A.3:0.0409126157641,A.9:0.0409126157641):0.0265159669471):0.077644788958,(A.1:0.083022591005,(A.10:0.0344294651519,(A.6:0.0210795210903,(A.4:0.0177133566349,A.2:0.0177133566349):0.00336616445531):0.0133499440616):0.0485931258531):0.0620507806642):0.0167205734842,(A.7:0.043485029146,A.8:0.043485029146):0.118308916007):2.89744698147,(((((C.8:0.0600912621959,(C.3:0.019954574798,C.2:0.019954574798):0.0401366873979):0.115951982 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.9636800418378675
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.8:0.120360866722,B.1:0.120360866722):0.0473144971832,((B.3:0.0486324561859,(B.9:0.0407606300558,B.7:0.0407606300558):0.00787182613014):0.0494905261774,(B.4:0.0281197981818,B.5:0.0281197981818):0.0700031841815):0.0695523815417):0.959693985938,(B.6:0.289562845802,(B.2:7.43589628306e-05,B.10:7.43589628306e-05):0.289488486839):0.837806504041):0.973811602903,(((D.7:0.23575785111,((D.4:0.0376610861964,D.3:0.0376610861964):0.178116923927,(D.9:0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 6.442180041837869
+            },
+            {
+                "coalescent_tree": "[&R] (((A.9:0.0078754012386,A.10:0.0078754012386):0.370215110356,(A.6:0.303894577752,(((A.3:0.00635310733771,A.1:0.00635310733771):0.0681305046557,((A.5:0.00346749933491,A.7:0.00346749933491):0.00477239261857,A.2:0.00823989195348):0.0662437200399):0.149304359297,(A.8:0.0404617430107,A.4:0.0404617430107):0.183326228279):0.0801066064617):0.0741959338431):3.13105439272,(((B.6:0.244529943022,(((B.1:0.0338177382825,((B.3:0.00746241076359,B.8:0.0074624107635 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.041800041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((A.5:0.00570139885977,A.2:0.00570139885977):0.26437594154,((A.10:0.155588310807,((A.8:0.00503699439833,A.6:0.00503699439833):0.00278939262341,A.9:0.00782638702174):0.147761923785):0.0846835851643,(A.1:0.125492355936,(A.3:0.049048435914,(A.7:0.029093418986,A.4:0.029093418986):0.0199550169279):0.076443920022):0.114779540035):0.0298054444284):2.86821242891,((((C.10:0.111750319602,((C.2:0.0253551985317,C.5:0.0253551985317):0.0253777844309,C.9:0.0507 [...]
+                "theta": 1.0,
+                "log_likelihood": -0.3004199581621327
+            },
+            {
+                "coalescent_tree": "[&R] ((((((B.9:0.00176188556125,(B.3:0.0015165687733,(B.6:0.000516150051882,B.2:0.000516150051882):0.00100041872141):0.000245316787954):0.00584425574895,B.7:0.00760614131019):0.130110847787,B.10:0.137716989098):0.229919529623,(B.1:0.100244003137,(B.8:0.0791542137422,(B.5:0.0397523970665,B.4:0.0397523970665):0.0394018166757):0.0210897893945):0.267392515584):2.31145241505,((((D.1:0.0200858012442,D.5:0.0200858012442):0.017703740087,D.3:0.0377895413312):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 9.626340041837864
+            },
+            {
+                "coalescent_tree": "[&R] (((A.6:0.0601910708042,A.10:0.0601910708042):0.533359804878,((((A.2:0.00700176817779,A.5:0.00700176817779):0.0289386510393,A.4:0.0359404192171):0.0328244572424,A.7:0.0687648764595):0.171854400951,((A.1:0.00925373720961,A.8:0.00925373720961):0.214741417337,(A.3:0.0341499970663,A.9:0.0341499970663):0.18984515748):0.0166241228636):0.352931598272):3.00625199848,(((((((C.3:0.0274174111636,C.7:0.0274174111636):0.0110994105009,(C.10:0.0126759463366,C.5:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.626800041837868
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (A:3.0,(B:2.0,(C:1.0,D:1.0):1.0):1.0):2.5;",
+        "coalescent_species_lineage_label_map": {
+            "A.1": "A",
+            "A.10": "A",
+            "A.2": "A",
+            "A.3": "A",
+            "A.4": "A",
+            "A.5": "A",
+            "A.6": "A",
+            "A.7": "A",
+            "A.8": "A",
+            "A.9": "A",
+            "B.1": "B",
+            "B.10": "B",
+            "B.2": "B",
+            "B.3": "B",
+            "B.4": "B",
+            "B.5": "B",
+            "B.6": "B",
+            "B.7": "B",
+            "B.8": "B",
+            "B.9": "B",
+            "C.1": "C",
+            "C.10": "C",
+            "C.2": "C",
+            "C.3": "C",
+            "C.4": "C",
+            "C.5": "C",
+            "C.6": "C",
+            "C.7": "C",
+            "C.8": "C",
+            "C.9": "C",
+            "D.1": "D",
+            "D.10": "D",
+            "D.2": "D",
+            "D.3": "D",
+            "D.4": "D",
+            "D.5": "D",
+            "D.6": "D",
+            "D.7": "D",
+            "D.8": "D",
+            "D.9": "D"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((B.2:0.305303860313,(B.9:0.138292089902,((B.7:0.00477927409342,B.5:0.00477927409342):0.0334397931563,((B.6:0.00236727247216,B.8:0.00236727247216):0.0319996434413,(B.1:0.00458273042029,B.3:0.00458273042029):0.0297841854932):0.00385215133619):0.100073022652):0.167011770411):0.0940551890735,(B.4:0.0400321716192,B.10:0.0400321716192):0.359326877767):1.75035969286,(((((((C.9:0.00174728545953,C.4:0.00174728545953):0.00880560906882,C.8:0.0105528945283 [...]
+                "theta": 1.0,
+                "log_likelihood": 5.565040041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((A.5:0.0185012304138,A.6:0.0185012304138):0.0263005885022,A.4:0.044801818916):0.0406244638673,((A.1:0.0270224800252,((A.7:0.0010412280879,A.9:0.0010412280879):0.00721619628044,A.10:0.00825742436833):0.0187650556569):0.0259531214225,(A.8:0.049915943099,A.2:0.049915943099):0.00305965834871):0.0324506813356):0.641764568909,A.3:0.727190851692):2.75926951137,((((B.2:0.0227422554979,((B.7:0.00572380158111,B.6:0.00572380158111):0.0170043599801,B.8:0. [...]
+                "theta": 1.0,
+                "log_likelihood": 6.264760041837869
+            },
+            {
+                "coalescent_tree": "[&R] ((((A.9:0.0977497776292,(A.8:0.0345575963439,A.1:0.0345575963439):0.0631921812853):0.074382283944,A.4:0.172132061573):0.272676260426,(((A.3:0.00114339559842,A.7:0.00114339559842):0.103043673773,((A.5:0.0206644613462,A.2:0.0206644613462):0.0258245972307,A.10:0.0464890585769):0.0576980107944):0.0191612869178,A.6:0.123348356289):0.32145996571):2.95713090944,(((((D.7:0.0268653276327,(D.3:0.0101408125468,D.9:0.0101408125468):0.0167245150859):0.01663169 [...]
+                "theta": 1.0,
+                "log_likelihood": 8.994300041837866
+            },
+            {
+                "coalescent_tree": "[&R] ((((((D.9:0.156575914412,(D.5:0.0473540356281,(D.10:0.0120915521259,D.6:0.0120915521259):0.0352624835023):0.109221878784):0.0188892803883,((D.7:0.0236751954335,D.3:0.0236751954335):0.0772973750015,D.8:0.100972570435):0.0744926243655):0.0552424982588,((D.1:0.021170975332,D.2:0.021170975332):0.016299668739,D.4:0.037470644071):0.193237048988):0.93035877375,((C.2:0.178082642733,C.6:0.178082642733):0.817248898424,(((C.5:0.0197132759712,(C.10:0.00122196 [...]
+                "theta": 1.0,
+                "log_likelihood": 0.7931800418378677
+            },
+            {
+                "coalescent_tree": "[&R] (((A.8:0.271774574906,(A.3:0.00400084745213,A.4:0.00400084745213):0.267773727454):0.337296668191,((A.2:0.0193306189669,A.7:0.0193306189669):0.0249198005716,((A.6:0.00794838691639,A.9:0.00794838691639):0.0166354128051,(A.5:0.0214625594358,(A.1:0.00814770662837,A.10:0.00814770662837):0.0133148528074):0.00312124028569):0.0196666198169):0.564820823559):2.57573709414,((((B.6:0.114658255169,(B.7:0.0305610709476,B.3:0.0305610709476):0.0840971842216):0.02 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.925400041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((A.6:0.035519038959,(A.4:0.0082926870491,(A.1:0.00125425509793,(A.2:0.00026699244323,A.7:0.00026699244323):0.000987262654699):0.00703843195117):0.0272263519099):0.188104772893,((A.8:0.0581660366821,(A.5:0.0477081902856,A.10:0.0477081902856):0.0104578463965):0.0309149695338,(A.3:0.06723688593,A.9:0.06723688593):0.021844120286):0.134542805636):2.90913451622,((((B.5:0.0131789819285,B.7:0.0131789819285):0.0485511338349,B.3:0.0617301157634):0.2251887 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.810480041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((((A.7:0.00894986464506,A.2:0.00894986464506):0.0306925920913,(A.9:0.0140007522667,A.8:0.0140007522667):0.0256417044697):0.000803670792819,(A.3:0.0256929520814,A.10:0.0256929520814):0.0147531754478):0.0418905233503,A.1:0.0823366508795):0.152031886992,A.4:0.234368537872):0.0113417031444,(A.6:0.0927667492735,A.5:0.0927667492735):0.152943491743):2.85910266556,(((((D.9:0.0991443465968,(D.10:0.000500136511168,D.2:0.000500136511168):0.0986442100857) [...]
+                "theta": 1.0,
+                "log_likelihood": 9.803840041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((D.10:0.00483304888359,D.6:0.00483304888359):0.241243382163,(D.1:0.158601683236,((D.4:0.0452308728368,D.8:0.0452308728368):0.0912982007529,(D.3:0.0122020492204,((D.9:0.00857915058057,(D.2:0.00475161536603,D.5:0.00475161536603):0.00382753521454):0.00331055430671,D.7:0.0118897048873):0.000312344333119):0.124327024369):0.0220726096459):0.0874747478109):0.808434682735,((C.6:0.0785480285344,C.8:0.0785480285344):0.379468101541,(((C.7:0.0216175366042 [...]
+                "theta": 1.0,
+                "log_likelihood": 11.737220041837867
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.4:0.0319129312339,B.1:0.0319129312339):0.156319362161,(B.8:0.0795588281766,B.6:0.0795588281766):0.108673465219):0.222056628499,(((B.3:0.0150272189591,B.2:0.0150272189591):0.0234664206946,(B.9:0.00364010144623,B.5:0.00364010144623):0.0348535382075):0.00375579370168,(B.10:0.000528517298433,B.7:0.000528517298433):0.041720916057):0.368039488538):1.67473239498,((((D.1:0.0394871420553,D.9:0.0394871420553):0.0576188472111,(D.6:0.0182482042421,D.8: [...]
+                "theta": 1.0,
+                "log_likelihood": 7.752220041837866
+            },
+            {
+                "coalescent_tree": "[&R] (((((B.1:0.0419831481284,(B.3:0.0276057583415,B.8:0.0276057583415):0.0143773897869):0.0528044695441,(B.9:0.0116965174032,B.10:0.0116965174032):0.0830911002693):0.212200967696,(B.5:0.0895072228676,((B.6:0.0133076698798,(B.7:0.0109432191644,B.4:0.0109432191644):0.00236445071543):0.00360413916459,B.2:0.0169118090444):0.0725954138232):0.217481362501):1.78924939009,((((D.4:0.063882630626,D.2:0.063882630626):0.0261440724777,((D.10:0.0191973797575,(D.3:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 10.472780041837868
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] ((T1:1.77035726847,(T2:0.262613902375,T3:0.262613902375):1.5077433661):0.413989545735,(((T4:0.0714018244118,T5:0.0714018244118):0.480306754597,T6:0.551708579009):0.700418319281,((((T7:0.144996657202,T8:0.144996657202):0.778164520607,T9:0.923161177809):0.072018205412,(T10:0.12092948585,(T11:0.0948121934778,T12:0.0948121934778):0.0261172923724):0.874249897371):0.163337427379,T13:1.1585168106):0.0936100876904):0.932219915915):0.5780088685;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((T4.1:0.0319727039022,T4.4:0.0319727039022):0.0229156606119,T4.10:0.0548883645141):0.0590793958047,(T4.8:0.0951844647331,T5.9:0.0951844647331):0.0187832955857):0.232814056337,((T4.3:0.0648646947502,(T4.2:0.000190553830497,T4.7:0.000190553830497):0.0646741409197):0.159398887365,((T5.4:0.131782642264,((((T5.10:0.0423337857344,T5.6:0.0423337857344):0.010196167541,T5.2:0.0525299532754):0.0117801160913,T5.8:0.0643100693667):0.0104469870406,(T4.6: [...]
+                "theta": 1.0,
+                "log_likelihood": 25.124586292232934
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T6.4:0.0704258348206,((T6.8:0.0197128452133,T6.9:0.0197128452133):0.00861101783628,T6.7:0.0283238630495):0.0421019717711):0.143620564976,(T6.1:0.167468551017,T6.3:0.167468551017):0.0465778487796):0.297780334214,((T6.2:0.0149147712207,T6.5:0.0149147712207):0.00303671213795,(T6.6:0.00404944732918,T6.10:0.00404944732918):0.0139020360295):0.493875250653):0.0756728684941,(((T4.1:0.041275231098,T4.6:0.041275231098):0.173572078424,((T5.5:0.0164667 [...]
+                "theta": 1.0,
+                "log_likelihood": 18.913286292232943
+            },
+            {
+                "coalescent_tree": "[&R] ((((((((T11.7:0.0543491995416,T11.2:0.0543491995416):0.00451571211105,(T11.5:0.0214369421362,(T11.6:0.00617285793529,T11.10:0.00617285793529):0.0152640842009):0.0374279695165):0.0169149616074,(T11.8:0.0115450169421,(T11.1:0.000252101443561,T11.4:0.000252101443561):0.0112929154985):0.064234856318):0.0277930273563,T11.3:0.103572900616):0.0858035694736,(((T10.6:0.135592269367,(T12.6:0.0885874232268,((T12.5:0.0378104286353,(T12.8:0.0109829680112,T12.3 [...]
+                "theta": 1.0,
+                "log_likelihood": 25.505846292232945
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.254238144537,T2:0.254238144537):0.181413516097,(T3:0.0913360522121,T4:0.0913360522121):0.344315608421):0.783888342873,(((T5:0.690708999419,((T6:0.0226620568711,T7:0.0226620568711):0.348803449426,T8:0.371465506297):0.319243493122):0.0937903199337,T9:0.784499319353):0.171952404202,((T10:0.0445752968217,T11:0.0445752968217):0.113433657693,(T12:0.0777952666689,T13:0.0777952666689):0.0802136878458):0.79844276904):0.263088279951):0.121715441301;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((((T1.10:0.0515048535034,T1.6:0.0515048535034):0.0120444172204,T1.1:0.0635492707238):0.0563960375737,(((T1.4:0.0103223821352,T1.3:0.0103223821352):0.0373050859882,T1.9:0.0476274681234):0.00830775159356,T1.5:0.055935219717):0.0640100885805):0.166756617765,(T2.5:0.163774057887,(((T2.6:0.017327390015,T2.7:0.017327390015):0.0312292959453,T2.9:0.0485566859602):0.0791235496849,(T2.1:0.0895848828202,(T2.4:0.0195939830914,T2.2:0.0195939830914):0.069 [...]
+                "theta": 1.0,
+                "log_likelihood": 21.475786292232947
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] ((((((((T1:0.0452825059986,T2:0.0452825059986):0.0278152310681,T3:0.0730977370667):0.0981919820194,T4:0.171289719086):0.257757510365,T5:0.429047229451):0.150924495032,T6:0.579971724484):0.0489031052784,T7:0.628874829762):0.512370555543,T8:1.14124538531):1.49720934177,((T9:0.979490301045,T10:0.979490301045):0.713256617237,(T11:1.08331443138,(T12:0.333660426614,T13:0.333660426614):0.749654004762):0.609432486906):0.945707808789):0.29093937987;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((T9.3:0.390512768731,((((T9.9:0.0220244284611,((T9.6:0.005982926188,T9.10:0.005982926188):0.00880232258337,T9.7:0.0147852487714):0.00723917968977):0.0159628967737,T9.8:0.0379873252349):0.168916824146,T9.4:0.206904149381):0.00645087130611,((T9.2:0.0515292472366,T9.5:0.0515292472366):0.0113150607857,T9.1:0.0628443080223):0.150510712665):0.177157748043):0.78638327628,((((T10.1:0.0342304875165,T10.8:0.0342304875165):0.00848998763123,T10.7:0.0427204 [...]
+                "theta": 1.0,
+                "log_likelihood": 22.131606292232945
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] ((((T1:0.428123993145,((T2:0.213195938082,T3:0.213195938082):0.136134139185,(T4:0.278099580871,(T5:0.147385513146,T6:0.147385513146):0.130714067725):0.0712304963959):0.0787939158784):0.235870666487,(T7:0.0482035466747,T8:0.0482035466747):0.615791112957):0.173518300429,(T9:0.258269549841,(T10:0.234998431285,T11:0.234998431285):0.0232711185562):0.57924341022):0.113476747359,(T12:0.0737156160088,T13:0.0737156160088):0.877274091411):0.716050643307;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((T9.8:0.133749002501,(T9.3:0.0213820558581,T9.9:0.0213820558581):0.112366946643):0.0846203897854,(((T9.1:0.0105927473987,(T9.5:0.00165994090793,(T9.10:0.00136391460499,T9.4:0.00136391460499):0.000296026302943):0.00893280649076):0.038739363371,(T9.6:0.029754934511,T9.2:0.029754934511):0.0195771762586):0.0727838907816,T9.7:0.122116001551):0.0962533907349):0.151238301557,(T11.7:0.0836816659286,((T11.6:0.0169881457748,T11.10:0.0169881457748):0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 31.976426292232947
+            },
+            {
+                "coalescent_tree": "[&R] (((((T2.5:0.185803410536,((T2.7:0.00249064653612,T2.6:0.00249064653612):0.0211706462987,((T2.2:0.00866936050631,T2.8:0.00866936050631):0.00176423583621,T2.3:0.0104335963425):0.0132276964923):0.162142117701):0.00761976461626,(T2.4:0.0480053173841,(T2.1:0.0355493827721,(T2.10:0.00204938134918,T2.9:0.00204938134918):0.0335000014229):0.012455934612):0.145417857768):0.301623433921,((((T1.4:0.0647407949192,(T1.10:0.025241516154,T1.1:0.025241516154):0.03 [...]
+                "theta": 1.0,
+                "log_likelihood": 31.808706292232948
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((((T1:8.29144184178,T2:8.29144184178):3.83671187442,T3:12.1281537162):0.404772634056,(T4:9.45543022529,T5:9.45543022529):3.07749612497):6.85891653174,(T6:8.78634518035,(T7:8.55044591066,(T8:3.82740130777,(T9:0.639326459849,T10:0.639326459849):3.18807484792):4.72304460289):0.235899269689):10.6054977016):2.09394724899,((T11:0.0928056135251,T12:0.0928056135251):5.99773190891,T13:6.09053752243):15.3952526086):5.49850255255;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((T3.1:0.164003173987,(T3.7:0.101591072969,(T3.9:0.0507180612138,(T3.2:0.0162112933489,((T3.6:0.0116971024125,T3.10:0.0116971024125):0.00156494913808,T3.5:0.0132620515506):0.00294924179828):0.0345067678649):0.0508730117552):0.062412101018):0.186719248071,(T3.3:0.0134627755104,(T3.8:0.0037345224775,T3.4:0.0037345224775):0.00972825303288):0.337259646547):11.8355755709,(((T1.4:0.00980020779285,T1.9:0.00980020779285):0.926561204556,((((T1.7:0.0202 [...]
+                "theta": 1.0,
+                "log_likelihood": 37.86948629223295
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T5.3:0.0413093235827,(T5.4:0.00157585525321,T5.7:0.00157585525321):0.0397334683295):0.182420118008,(((((T5.10:0.0226228732987,T5.9:0.0226228732987):0.0307695185424,T5.6:0.0533923918411):0.0104423338348,T5.1:0.0638347256759):0.00283878256107,(T5.8:0.00186442664641,T5.5:0.00186442664641):0.0648090815906):0.0158877528472,T5.2:0.0825612610842):0.141168180506):9.34065621223,(T4.3:0.294858786706,((T4.9:0.0125810454707,T4.5:0.0125810454707):0.15046 [...]
+                "theta": 1.0,
+                "log_likelihood": 31.009366292232947
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T6.3:0.00698226927457,T6.7:0.00698226927457):0.0145171262058,(T6.5:0.0044649520272,T6.4:0.0044649520272):0.0170344434532):0.0674111967909,((T6.1:0.0387708974187,T6.6:0.0387708974187):0.0406444596132,T6.8:0.079415357032):0.00949523523934):0.19824482504,(T6.9:0.258156729466,(T6.10:0.0276400883069,T6.2:0.0276400883069):0.230516641159):0.0289986878447):8.89058796273,(((T7.10:0.381725522242,(T7.9:0.0157860212781,T7.8:0.0157860212781):0.365939500 [...]
+                "theta": 1.0,
+                "log_likelihood": 26.648706292232937
+            },
+            {
+                "coalescent_tree": "[&R] (((((T13.1:0.0211333372178,T13.7:0.0211333372178):0.172340199615,(T13.10:0.09982243475,((T13.5:0.0134081826522,T13.9:0.0134081826522):0.0110467815999,T13.2:0.0244549642522):0.0753674704978):0.0936511020828):0.474202261495,((T13.8:0.0116880496742,T13.3:0.0116880496742):0.0866894350631,(T13.4:0.0548682631495,T13.6:0.0548682631495):0.0435092215879):0.569298313591):5.69528899213,((((T12.1:0.0143083539553,T12.8:0.0143083539553):0.037707439228,((T12.4:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 27.532866292232953
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:1.05608092132,(T2:0.883723823734,(T3:0.601444779377,T4:0.601444779377):0.282279044357):0.172357097582):0.994501152438,(T5:0.453438149848,T6:0.453438149848):1.59714392391):3.4040252179,((T7:0.753151988314,(T8:0.111416399001,(T9:0.0684432972852,T10:0.0684432972852):0.0429731017157):0.641735589313):0.424690216031,((T11:0.0488640475106,T12:0.0488640475106):0.278025961333,T13:0.326890008844):0.850952195501):4.27676508731):0.241224159069;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((((T11.7:0.0337094702865,((T11.5:0.00218914305448,T11.1:0.00218914305448):0.0300399021642,T11.8:0.0322290452187):0.00148042506777):0.00226314697107,T11.4:0.0359726172575):0.0343783445561,(T12.7:0.00910528513085,T12.1:0.00910528513085):0.0612456766828):0.046930985435,((T11.2:0.00191809762401,T11.3:0.00191809762401):0.0744924809799,T11.9:0.0764105786039):0.0408713686448):0.0691018294255,(T12.8:0.0386820849326,T12.9:0.0386820849326):0.1477016917 [...]
+                "theta": 1.0,
+                "log_likelihood": 32.54706629223295
+            },
+            {
+                "coalescent_tree": "[&R] ((((((((T1.6:0.00382098621632,T1.9:0.00382098621632):0.132277064762,(T1.8:0.0722559904299,T1.5:0.0722559904299):0.0638420605489):0.0974625544604,((T1.10:0.0391340975956,T1.4:0.0391340975956):0.0331959112551,T1.2:0.0723300088507):0.161230596588):0.0567031841852,(T1.7:0.0761399324858,(T1.3:0.065357982038,T1.1:0.065357982038):0.0107819504477):0.214123857139):0.970947417099,((((T3.7:0.131107866664,(T3.6:0.00204357206388,T3.3:0.00204357206388):0.129064 [...]
+                "theta": 1.0,
+                "log_likelihood": 16.797826292232948
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.504410739324,(((T2:0.0768112403382,T3:0.0768112403382):0.0776494417494,T4:0.154460682088):0.25043248175,(T5:0.0245983039824,T6:0.0245983039824):0.380294859855):0.0995175754871):0.152055989513,(T7:0.141392997809,T8:0.141392997809):0.515073731029):0.487808466389,((T9:0.384217603202,T10:0.384217603202):0.555195089648,((T11:0.247303103178,T12:0.247303103178):0.146558986719,T13:0.393862089897):0.545550602953):0.204862502376):0.410755634414;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((T13.4:0.0739358809513,(T13.9:0.0147719212041,(T13.1:0.0134881530506,T13.2:0.0134881530506):0.00128376815351):0.0591639597472):0.197774687788,((T13.3:0.00790841181947,T13.10:0.00790841181947):0.209563560119,(T13.8:0.205599011374,((T13.5:0.0170646215365,T13.7:0.0170646215365):0.0664444336259,T13.6:0.0835090551623):0.122089956211):0.0118729605649):0.0542385968008):0.230860008141,(((T12.8:0.0971323920102,(T12.6:0.0899089461338,(T12.7:0.019720728 [...]
+                "theta": 1.0,
+                "log_likelihood": 28.810066292232943
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T9.1:0.00118585308417,T9.9:0.00118585308417):0.121289727059,T9.4:0.122475580143):0.148655444563,(T9.10:0.174553271871,((T9.8:0.0225610523919,T9.6:0.0225610523919):0.0908558248115,(T9.3:0.0225095850066,(T9.2:0.000498535028902,T9.7:0.000498535028902):0.0220110499777):0.0909072921968):0.0611363946673):0.0965777528355):0.101342917293,T9.5:0.372473941999):0.0812791050823,((T10.10:0.100472040154,(T10.7:0.0347502226344,T10.5:0.0347502226344):0.065 [...]
+                "theta": 1.0,
+                "log_likelihood": 32.40800629223294
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.221266484241,T2:0.221266484241):0.497475775144,(T3:0.129512048462,T4:0.129512048462):0.589230210922):0.346522286471,(((T5:0.254225008563,T6:0.254225008563):0.0635169383237,T7:0.317741946886):0.738295749725,((T8:0.342555463717,((T9:0.0670430527009,T10:0.0670430527009):0.246751117926,(T11:0.109632253048,T12:0.109632253048):0.204161917578):0.0287612930902):0.0391410363008,T13:0.381696500018):0.674341196593):0.00922684924461):0.570165518303;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((T13.3:0.024608099873,T13.9:0.024608099873):0.0817950336314,((T13.1:0.0334928994901,(T13.4:0.0071804018362,T13.6:0.0071804018362):0.0263124976539):0.00329221936851,T13.8:0.0367851188586):0.0696180146458):0.0257102601943,T13.5:0.132113393699):0.445523462248,((((((T8.6:0.0172393415189,T8.7:0.0172393415189):0.0170664984845,T8.10:0.0343058400034):0.0504953237958,(T8.5:0.0609237273687,(T8.3:0.00206188903596,T8.1:0.00206188903596):0.0588618383327):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 32.51726629223295
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] ((T1:2.2404986435,(((T2:0.882122796644,((T3:0.057991292251,T4:0.057991292251):0.515885187869,T5:0.57387648012):0.308246316524):0.522252465954,T6:1.4043752626):0.356719220672,((T7:0.267887796879,T8:0.267887796879):1.23006234412,T9:1.497950141):0.263144342268):0.479404160226):7.23515171637,(((T10:0.799845791024,T11:0.799845791024):1.05462596853,T12:1.85447175955):2.5226710508,T13:4.37714281035):5.09850754952):0.343037034365;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((T12.1:0.029167441267,((T12.10:0.0104614806075,T12.7:0.0104614806075):0.0155431508348,(T12.8:0.00958042631753,T12.9:0.00958042631753):0.0164242051248):0.00316280982474):0.0542535363036,(T12.3:0.0780497800833,T12.4:0.0780497800833):0.00537119748738):0.0173965447851,(T12.6:0.0948060135135,(T12.5:0.0264261432169,T12.2:0.0264261432169):0.0683798702965):0.0060115088423):1.94345252149,((((T11.5:0.0538846429869,T11.4:0.0538846429869):0.187746351005, [...]
+                "theta": 1.0,
+                "log_likelihood": 34.05858629223294
+            },
+            {
+                "coalescent_tree": "[&R] (((((((((T10.10:0.0123928021236,T10.8:0.0123928021236):0.175270562916,T10.9:0.187663365039):0.0145245265798,T10.2:0.202187891619):0.0302500927336,T10.5:0.232437984353):0.177731574038,((T10.3:0.0244823191441,((T10.1:0.00106350013206,T10.6:0.00106350013206):0.00471493605844,T10.7:0.0057784361905):0.0187038829536):0.0282003883546,T10.4:0.0526827074987):0.357486850892):0.562168081794,((T11.10:0.419976725283,((((T11.7:0.0109973986401,T11.4:0.0109973986 [...]
+                "theta": 1.0,
+                "log_likelihood": 12.883686292232944
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.976672599842,T2:0.976672599842):6.15590358083,((T3:3.36706277582,(T4:1.55561140735,(T5:1.20630302583,T6:1.20630302583):0.349308381516):1.81145136848):0.00298691129576,((T7:1.14951079673,T8:1.14951079673):1.32096859988,(T9:1.54299397461,T10:1.54299397461):0.927485421996):0.899570290515):3.76252649356):6.09976252789,(T11:4.34147938243,(T12:2.86662862833,T13:2.86662862833):1.4748507541):8.89085932613):2.80984101347;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((T6.4:0.192579470324,(T6.7:0.0962288582076,(T6.5:0.0304343894018,T6.2:0.0304343894018):0.0657944688058):0.0963506121163):0.0176741385174,(((T6.3:0.00265702367445,T6.10:0.00265702367445):0.0648454943829,T6.8:0.0675025180574):0.0907129934367,((T6.9:0.0228999427899,T6.6:0.0228999427899):0.00602294480331,T6.1:0.0289228875932):0.129292623901):0.0520380973472):1.37899476998,((T5.7:0.177736276355,(T5.9:0.126666066583,(T5.2:0.00870061350486,T5.6:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 27.233486292232943
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.834380971761,T2:0.834380971761):0.150945237808,(T3:0.230069747334,T4:0.230069747334):0.755256462235):1.18336752121,((T5:0.468326747142,(T6:0.449759080749,(T7:0.443625442341,(T8:0.415973590853,(T9:0.231477179554,(T10:0.157516344232,T11:0.157516344232):0.0739608353219):0.184496411299):0.0276518514876):0.00613363840876):0.0185676663923):0.287175551021,(T12:0.614855957069,T13:0.614855957069):0.140646341093):1.41319143262):0.245252134755;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((T12.10:0.626573027643,((T12.7:0.0358280337716,T12.9:0.0358280337716):0.0117420611645,((T12.6:0.0248849005402,T12.3:0.0248849005402):0.0166147745245,(((T12.1:0.00645204115909,T12.5:0.00645204115909):0.0218516973168,(T12.4:0.00422806426563,T12.8:0.00422806426563):0.0240756742102):0.00512765315898,T12.2:0.0334313916348):0.00806828342986):0.0060704198714):0.579002932707):0.207610042418,(((T13.1:0.00844202785814,T13.10:0.00844202785814):0.116457034 [...]
+                "theta": 1.0,
+                "log_likelihood": 22.325786292232948
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T4.2:0.0365085589962,(T4.8:0.0325022960565,T4.9:0.0325022960565):0.00400626293971):0.0572510085837,((((T4.10:0.000951745234606,T4.1:0.000951745234606):0.000566071674799,T4.5:0.0015178169094):0.00346236511392,T4.4:0.00498018202333):0.0686553604543,T4.7:0.0736355424776):0.0201240251023):0.305293868472,((T4.3:0.0134739243672,T4.6:0.0134739243672):0.250789730578,((T3.10:0.0328291959449,T3.3:0.0328291959449):0.0357518523968,(T3.8:0.0216356554978 [...]
+                "theta": 1.0,
+                "log_likelihood": 26.39954629223294
+            },
+            {
+                "coalescent_tree": "[&R] (((((T1.1:0.41879974184,(T1.6:0.256337405835,((((T1.3:0.00733810187184,(T1.9:0.00538766032041,T1.8:0.00538766032041):0.00195044155143):0.030133022576,(T1.4:0.0176521109103,(T1.7:0.00246686958351,T1.10:0.00246686958351):0.0151852413268):0.0198190135376):0.0564256654569,T1.5:0.0938967899048):0.0396256535555,T1.2:0.13352244346):0.122814962375):0.162462336005):0.427373800511,(((T2.6:0.0218629053214,T2.7:0.0218629053214):0.040513129908,(T2.5:0.02397349 [...]
+                "theta": 1.0,
+                "log_likelihood": 34.020166292232936
+            },
+            {
+                "coalescent_tree": "[&R] (((((T4.9:0.0357786742939,T4.8:0.0357786742939):0.0335491226922,((T4.6:0.0581407239328,T4.7:0.0581407239328):0.00447085444747,(T4.4:0.000684029280812,T4.5:0.000684029280812):0.0619275490994):0.00671621860587):0.457551552292,((((T3.2:0.0134379030991,T3.8:0.0134379030991):0.0325143978335,(T3.4:0.0442710796671,T3.1:0.0442710796671):0.00168122126557):0.0159329449441,(((T3.6:0.0077422817805,T3.10:0.0077422817805):0.0160162428967,T3.3:0.0237585246772):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 24.71036629223295
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:3.86204651121,((T2:0.468387264501,T3:0.468387264501):3.20448987072,(T4:0.994607576267,T5:0.994607576267):2.67826955896):0.189169375987):0.180935044144,T6:4.04298155535):2.9732872641,(((T7:1.8742734055,T8:1.8742734055):2.1213803825,((T9:0.292990885311,T10:0.292990885311):0.440527286818,T11:0.733518172129):3.26213561586):0.694580095142,(T12:0.113675274247,T13:0.113675274247):4.57655860889):2.32603493632):4.96731734049;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((T5.7:0.131225143607,((T5.9:0.011145328839,T5.2:0.011145328839):0.096184190172,(((T5.4:0.000184021418451,T5.5:0.000184021418451):0.0508426707739,T5.8:0.0510266921924):0.0326945602877,T5.6:0.0837212524801):0.0236082665309):0.0238956245958):0.0741000835805,(T5.3:0.0351170786547,T5.10:0.0351170786547):0.170208148533):0.110970520954,T5.1:0.316295748141):0.701138983928,(((T4.10:0.0130809973735,T4.9:0.0130809973735):0.0365081328748,T4.3:0.04958913 [...]
+                "theta": 1.0,
+                "log_likelihood": 30.537526292232943
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T11.7:0.130637418275,((T11.6:0.0110712694499,T11.4:0.0110712694499):0.114049938636,T11.10:0.125121208086):0.00551621018945):0.254744214689,((((T11.5:0.0140805868218,T11.2:0.0140805868218):0.000310105615694,(T11.1:0.011790015583,T11.8:0.011790015583):0.00260067685454):0.00164391652105,T11.3:0.0160346089585):0.0312293720422,T11.9:0.0472639810007):0.338117651964):0.424447964931,(((T10.6:0.0524721003086,T10.4:0.0524721003086):0.275306860342,(((( [...]
+                "theta": 1.0,
+                "log_likelihood": 29.72518629223294
+            },
+            {
+                "coalescent_tree": "[&R] ((((T13.5:0.15614525782,(((((T12.5:0.0129588058997,T12.7:0.0129588058997):0.0679870556852,T12.9:0.080945861585):0.0396926734246,(T13.3:0.0323090608098,T13.4:0.0323090608098):0.0883294741998):0.0265289097731,((T12.4:0.00514940575275,T12.1:0.00514940575275):0.103268904419,T12.2:0.108418310172):0.038749134611):0.005941792117,(T13.10:0.0355452518989,T13.8:0.0355452518989):0.117563985001):0.00303602092009):0.197287666396,(((T13.9:0.010238736183,T13.1:0 [...]
+                "theta": 1.0,
+                "log_likelihood": 24.709426292232937
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.0100857673865,T2:0.0100857673865):0.26227130945,T3:0.272357076836):0.350328295811,(((((T4:0.0942601373291,T5:0.0942601373291):0.0299030174833,((T6:9.78999384396e-05,T7:9.78999384396e-05):0.0667344254765,T8:0.0668323254149):0.0573308293975):0.0156567771567,T9:0.139819931969):0.117922855185,T10:0.257742787154):0.296047995121,((T11:0.175485912366,T12:0.175485912366):0.0278216332493,T13:0.203307545615):0.35048323666):0.0688945903715):0.972879909484;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((((T13.7:0.103671694144,((T13.5:0.00255642249653,T13.6:0.00255642249653):0.0734283431607,T13.1:0.0759847656573):0.0276869284872):0.124982143832,(((T11.8:0.00972033166397,T11.4:0.00972033166397):0.0424162819471,(T11.7:0.0262170271669,T11.5:0.0262170271669):0.0259195864442):0.0832824505802,T11.3:0.135419064191):0.0932347737851):0.0935846100592,(T13.8:0.249331041971,(T13.10:0.0519802388327,T13.4:0.0519802388327):0.197350803138):0.0729074060645):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 26.665146292232947
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T3.3:0.00689327201634,T3.5:0.00689327201634):0.104437776414,((T3.7:0.0918029177592,((T3.2:0.00443099742576,T3.8:0.00443099742576):0.0735200840906,(T3.9:0.00127424459217,T3.1:0.00127424459217):0.0766768369242):0.0138518362428):0.00213968460648,T3.4:0.0939426023656):0.0173884460652):0.524174551409,((T3.6:0.154818209538,T3.10:0.154818209538):0.129133320359,(((T2.6:0.010184083949,T1.6:0.010184083949):0.0230250226711,(((T1.7:0.0129995580452,T2.7: [...]
+                "theta": 1.0,
+                "log_likelihood": 22.346346292232944
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] ((T1:2.32436557126,(T2:1.30999826312,T3:1.30999826312):1.01436730814):2.42616575437,(((T4:1.45940712256,(T5:0.905262684567,T6:0.905262684567):0.554144437995):0.881627025844,((T7:1.12516582628,T8:1.12516582628):0.582116495059,(T9:0.789407143243,T10:0.789407143243):0.917875178098):0.633751827066):0.418832295609,((T11:0.0265097828315,T12:0.0265097828315):0.641595294883,T13:0.668105077715):2.0917613663):1.99066488162):1.09171485515;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((((T12.2:0.0342525788933,T12.6:0.0342525788933):0.0399120741689,((T12.5:0.0191883918316,(T12.9:0.00440148249145,T12.4:0.00440148249145):0.0147869093401):0.0315564703544,((T12.8:0.00433723292577,T12.3:0.00433723292577):0.0302238421011,T12.10:0.0345610750269):0.0161837871591):0.0234197908762):0.0481331496365,((T11.4:0.0682349736561,((T11.5:0.018241570288,(T11.7:0.00931232387402,T11.3:0.00931232387402):0.008929246414):0.0139046419065,(T11.8:0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 35.549846292232935
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T1.5:0.0212676498069,T1.4:0.0212676498069):0.00317886201693,T1.6:0.0244465118238):0.0608333837764,(((T1.7:0.00127052883084,(T1.2:4.91395797596e-05,T1.10:4.91395797596e-05):0.00122138925108):0.0394703953106,(T1.1:0.0276483525269,T1.9:0.0276483525269):0.0130925716145):0.0425851580956,T1.3:0.083326082237):0.00195381336326):0.174903839881,T1.8:0.260183735482):2.5835621941,(((T3.3:0.12825195772,T3.6:0.12825195772):0.249508926706,((T3.1:0.04939655 [...]
+                "theta": 1.0,
+                "log_likelihood": 28.410466292232943
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T1.6:0.0223303820776,T1.9:0.0223303820776):0.000579666402165,T1.8:0.0229100484798):0.0803473457634,(T1.4:0.0295175069911,((T1.2:0.00196099532843,T1.7:0.00196099532843):0.00893785931797,T1.3:0.0108988546464):0.0186186523447):0.0737398872521):0.153275734497,(T1.10:0.0156904744984,(T1.5:0.0154441064547,T1.1:0.0154441064547):0.000246368043776):0.240842654241):2.11313704185,((((T3.7:0.0231865338198,(T3.5:0.00687287663467,T3.10:0.00687287663467):0 [...]
+                "theta": 1.0,
+                "log_likelihood": 24.66246629223294
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.513362480943,(T2:0.0571152321752,T3:0.0571152321752):0.456247248768):0.0899693290805,T4:0.603331810024):0.852377267798,((((T5:0.127892291813,T6:0.127892291813):0.426570284958,T7:0.554462576771):0.265420793776,(T8:0.396850192246,T9:0.396850192246):0.4230331783):0.608370730519,(T10:0.329858108244,(T11:0.0540520440216,(T12:0.0297452694356,T13:0.0297452694356):0.024306774586):0.275806064222):1.09839599282):0.0274549767563):0.374840981351;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] ((((((T1.6:0.2530111217,T1.10:0.2530111217):0.36038737497,(((((T1.9:0.0725531917383,T1.7:0.0725531917383):0.00296246847587,T1.8:0.0755156602142):0.0231046632377,T1.1:0.0986203234519):0.20512367973,(T1.3:0.0288160509925,(T1.5:0.00908211442043,(T1.4:0.00164934399022,T1.2:0.00164934399022):0.0074327704302):0.0197339365721):0.274927952189):0.240137039495,((T3.10:0.192066113687,(((((T3.4:0.015757539009,T3.3:0.015757539009):0.0156810591128,T3.9:0.031438 [...]
+                "theta": 1.0,
+                "log_likelihood": 23.519966292232944
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T9.2:0.119155666358,(T9.6:0.0125403929929,T9.7:0.0125403929929):0.106615273366):0.0245115544117,T9.3:0.14366722077):0.209797387192,(T9.8:0.0885445325927,((T9.1:0.0360565953093,T9.10:0.0360565953093):0.017590759295,(T9.9:0.0116481916384,T9.5:0.0116481916384):0.0419991629659):0.0348971779884):0.264920075369):1.07593058437,((T10.1:0.208416302251,(((T10.10:0.0518123993656,(T10.8:0.000559198544619,T10.3:0.000559198544619):0.051253200821):0.046420 [...]
+                "theta": 1.0,
+                "log_likelihood": 21.207886292232942
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T2.4:0.0322163378147,T2.2:0.0322163378147):0.0483192828728,((T3.9:0.0117614609594,T3.3:0.0117614609594):0.00652277711365,T3.5:0.018284238073):0.0622513826145):0.0743981243753,T2.9:0.154933745063):0.401105612723,((((T3.7:0.0886932683403,(((T2.1:0.0509703956551,(T2.8:0.0229987727322,T2.10:0.0229987727322):0.0279716229228):0.0170180261211,(T2.6:0.0334716762018,T2.3:0.0334716762018):0.0345167455743):0.00485661357375,(T3.6:0.0181319208264,(T3.8: [...]
+                "theta": 1.0,
+                "log_likelihood": 25.437586292232943
+            },
+            {
+                "coalescent_tree": "[&R] ((((T4.10:0.0667853103467,(T4.4:0.0113481408574,T4.9:0.0113481408574):0.0554371694893):0.0113703927368,((T4.8:0.039955981794,(T4.1:0.0224332514307,T4.7:0.0224332514307):0.0175227303633):0.0322764818542,(T4.5:0.00367880519863,T4.6:0.00367880519863):0.0685536584496):0.00592323943527):0.893342858159,((T1.3:0.316231003161,((T1.10:0.104266188655,((T1.4:0.0428967150449,((T1.8:0.0211704785364,T1.1:0.0211704785364):0.0140644993709,T1.6:0.0352349779072):0. [...]
+                "theta": 1.0,
+                "log_likelihood": 18.475386292232944
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T1.6:0.0884986568297,T1.3:0.0884986568297):0.00726589872159,((T1.4:0.0444797849048,(((T1.2:0.00820665480057,T1.10:0.00820665480057):0.0201788283719,(T1.9:0.0102148833592,T1.8:0.0102148833592):0.0181705998133):0.00701941972706,T1.1:0.0354049028996):0.00907488200519):0.0251883542699,T1.7:0.0696681391747):0.0260964163767):0.409108757755,T1.5:0.504873313306):0.119813211842,((((T2.8:0.0647389376485,T3.4:0.0647389376485):0.0144535112366,(T2.2:0.0 [...]
+                "theta": 1.0,
+                "log_likelihood": 35.93216629223294
+            },
+            {
+                "coalescent_tree": "[&R] ((((((T2.9:0.0607161251164,(T3.5:0.0306398650614,T3.3:0.0306398650614):0.030076260055):0.315945460346,(((T3.2:0.0334085377085,T3.6:0.0334085377085):0.0742816199587,(T2.6:0.0909542553981,(T3.7:0.0265474081341,T3.10:0.0265474081341):0.0644068472641):0.016735902269):0.210807791332,((((((T2.7:0.00498367777654,T2.10:0.00498367777654):0.0103709317879,(T2.4:0.0109082773259,T2.5:0.0109082773259):0.00444633223849):0.0124161817675,T2.8:0.0277707913319):0.00 [...]
+                "theta": 1.0,
+                "log_likelihood": 19.466226292232946
+            }
+        ]
+    },
+    {
+        "species_tree": "[&R] (((T1:0.489324877543,T2:0.489324877543):0.0742674012424,(((T3:0.28931597492,T4:0.28931597492):0.0502696855861,T5:0.339585660506):0.0977185798434,(T6:0.29684027593,T7:0.29684027593):0.140463964419):0.126288038436):0.294080514677,((T8:0.27702154089,(T9:0.090767941656,(T10:0.0562558956249,T11:0.0562558956249):0.0345120460311):0.186253599234):0.222039820507,(T12:0.423141800293,T13:0.423141800293):0.0759195611031):0.358611432067):0.165867152061;",
+        "coalescent_species_lineage_label_map": {
+            "T1.1": "T1",
+            "T1.10": "T1",
+            "T1.2": "T1",
+            "T1.3": "T1",
+            "T1.4": "T1",
+            "T1.5": "T1",
+            "T1.6": "T1",
+            "T1.7": "T1",
+            "T1.8": "T1",
+            "T1.9": "T1",
+            "T10.1": "T10",
+            "T10.10": "T10",
+            "T10.2": "T10",
+            "T10.3": "T10",
+            "T10.4": "T10",
+            "T10.5": "T10",
+            "T10.6": "T10",
+            "T10.7": "T10",
+            "T10.8": "T10",
+            "T10.9": "T10",
+            "T11.1": "T11",
+            "T11.10": "T11",
+            "T11.2": "T11",
+            "T11.3": "T11",
+            "T11.4": "T11",
+            "T11.5": "T11",
+            "T11.6": "T11",
+            "T11.7": "T11",
+            "T11.8": "T11",
+            "T11.9": "T11",
+            "T12.1": "T12",
+            "T12.10": "T12",
+            "T12.2": "T12",
+            "T12.3": "T12",
+            "T12.4": "T12",
+            "T12.5": "T12",
+            "T12.6": "T12",
+            "T12.7": "T12",
+            "T12.8": "T12",
+            "T12.9": "T12",
+            "T13.1": "T13",
+            "T13.10": "T13",
+            "T13.2": "T13",
+            "T13.3": "T13",
+            "T13.4": "T13",
+            "T13.5": "T13",
+            "T13.6": "T13",
+            "T13.7": "T13",
+            "T13.8": "T13",
+            "T13.9": "T13",
+            "T2.1": "T2",
+            "T2.10": "T2",
+            "T2.2": "T2",
+            "T2.3": "T2",
+            "T2.4": "T2",
+            "T2.5": "T2",
+            "T2.6": "T2",
+            "T2.7": "T2",
+            "T2.8": "T2",
+            "T2.9": "T2",
+            "T3.1": "T3",
+            "T3.10": "T3",
+            "T3.2": "T3",
+            "T3.3": "T3",
+            "T3.4": "T3",
+            "T3.5": "T3",
+            "T3.6": "T3",
+            "T3.7": "T3",
+            "T3.8": "T3",
+            "T3.9": "T3",
+            "T4.1": "T4",
+            "T4.10": "T4",
+            "T4.2": "T4",
+            "T4.3": "T4",
+            "T4.4": "T4",
+            "T4.5": "T4",
+            "T4.6": "T4",
+            "T4.7": "T4",
+            "T4.8": "T4",
+            "T4.9": "T4",
+            "T5.1": "T5",
+            "T5.10": "T5",
+            "T5.2": "T5",
+            "T5.3": "T5",
+            "T5.4": "T5",
+            "T5.5": "T5",
+            "T5.6": "T5",
+            "T5.7": "T5",
+            "T5.8": "T5",
+            "T5.9": "T5",
+            "T6.1": "T6",
+            "T6.10": "T6",
+            "T6.2": "T6",
+            "T6.3": "T6",
+            "T6.4": "T6",
+            "T6.5": "T6",
+            "T6.6": "T6",
+            "T6.7": "T6",
+            "T6.8": "T6",
+            "T6.9": "T6",
+            "T7.1": "T7",
+            "T7.10": "T7",
+            "T7.2": "T7",
+            "T7.3": "T7",
+            "T7.4": "T7",
+            "T7.5": "T7",
+            "T7.6": "T7",
+            "T7.7": "T7",
+            "T7.8": "T7",
+            "T7.9": "T7",
+            "T8.1": "T8",
+            "T8.10": "T8",
+            "T8.2": "T8",
+            "T8.3": "T8",
+            "T8.4": "T8",
+            "T8.5": "T8",
+            "T8.6": "T8",
+            "T8.7": "T8",
+            "T8.8": "T8",
+            "T8.9": "T8",
+            "T9.1": "T9",
+            "T9.10": "T9",
+            "T9.2": "T9",
+            "T9.3": "T9",
+            "T9.4": "T9",
+            "T9.5": "T9",
+            "T9.6": "T9",
+            "T9.7": "T9",
+            "T9.8": "T9",
+            "T9.9": "T9"
+        },
+        "coalescent_trees": [
+            {
+                "coalescent_tree": "[&R] (((((T8.1:0.0465721865095,(T8.2:0.0243125404241,T8.5:0.0243125404241):0.0222596460855):0.34800721,((T8.4:0.121666357195,(((T8.7:0.00143156498942,T8.9:0.00143156498942):0.0212799456953,(T8.3:0.0143879896903,T8.10:0.0143879896903):0.00832352099445):0.0103431760674,T8.8:0.0330546867521):0.0886116704428):0.269914203078,(((T10.2:0.267948791864,((T11.10:0.00460204829976,T11.5:0.00460204829976):0.22272232444,((T9.10:0.00770919591706,T9.1:0.00770919591706 [...]
+                "theta": 1.0,
+                "log_likelihood": 21.429046292232943
+            },
+            {
+                "coalescent_tree": "[&R] (((((T1.5:0.0491897723097,T1.7:0.0491897723097):0.298080017951,((((T1.4:0.00153068741322,T1.6:0.00153068741322):0.0151467318101,T1.9:0.0166774192234):0.0409118008002,T1.2:0.0575892200236):0.150458197384,(T1.3:0.102771453118,((T1.10:0.00181464809576,T1.8:0.00181464809576):0.0319469126022,T1.1:0.0337615606979):0.0690098924202):0.10527596429):0.139222372853):0.218628358067,((T5.6:0.464555278413,((((T6.3:0.0624407818077,T6.1:0.0624407818077):0.1802028 [...]
+                "theta": 1.0,
+                "log_likelihood": 28.415786292232944
+            },
+            {
+                "coalescent_tree": "[&R] (((((((T3.3:0.00503680548908,T3.4:0.00503680548908):0.097284560003,T3.8:0.102321365492):0.374230743452,(((T5.4:0.12006250205,T5.2:0.12006250205):0.189225334797,(T5.9:0.0793092545848,(T5.3:0.0316367747044,((T5.5:0.00435287677957,T5.8:0.00435287677957):0.0155995744934,T5.10:0.019952451273):0.0116843234314):0.0476724798804):0.229978582263):0.0609491208896,((T4.4:0.0386636768042,(T4.7:0.0311159552685,T4.8:0.0311159552685):0.00754772153574):0.182489421 [...]
+                "theta": 1.0,
+                "log_likelihood": 15.637626292232943
+            },
+            {
+                "coalescent_tree": "[&R] ((((((((T9.9:0.0314369445324,(T9.10:0.0113432968453,T9.2:0.0113432968453):0.0200936476872):0.0752291275318,(T9.3:0.0889466310307,T9.4:0.0889466310307):0.0177194410336):0.0418870960526,(((T10.4:0.00327466079896,T10.5:0.00327466079896):0.0291420441005,(T10.2:0.0102348658659,T10.7:0.0102348658659):0.0221818390335):0.100063626029,((T10.6:0.068807566253,(T10.10:0.0385780394832,T10.9:0.0385780394832):0.0302295267698):0.00312498664776,(T11.9:0.0548237205 [...]
+                "theta": 1.0,
+                "log_likelihood": 18.836826292232942
+            }
+        ]
+    }
+]
\ No newline at end of file
diff --git a/dendropy/test/test_dataio_newick_reader_tree.py b/dendropy/test/test_dataio_newick_reader_tree.py
index 084cfcf..97bcd12 100644
--- a/dendropy/test/test_dataio_newick_reader_tree.py
+++ b/dendropy/test/test_dataio_newick_reader_tree.py
@@ -930,5 +930,70 @@ class NewickTreeReaderOffsetTreeTest(
     #             with self.assertRaises(IndexError):
     #                 f(src, "newick", collection_offset=1, tree_offset=0)
 
+class JplaceParsingTest(dendropytest.ExtendedTestCase):
+
+    def test_basic(self):
+        s = "((A:.01[e]{0}, B:.02{1})D:.3{3}[g], C:.04{4}[h]) {5};"
+        tree = dendropy.Tree.get_from_string(s,
+                                             "newick",
+                                             is_parse_jplace_tokens=True)
+        self.assertEqual([0.01, 0.02, 0.3, 0.04, None],
+                         [e.length for e in tree.edge_index])
+        self.assertEqual('((A:0.01,B:0.02)D:0.3,C:0.04)',
+                         str(tree))
+        self.assertEqual([0,1,3,4,5],
+                         [e.edge_number for e in tree.edge_index])
+
+    def test_do_not_parse_by_default(self):
+        s = "((A:.01[e]{0}, B:.02{1})D:.3{3}[g], C:.04{4}[h]) {5};"
+        with self.assertRaises(newickreader.NewickReader.NewickReaderMalformedStatementError):
+            try:
+                tree = dendropy.Tree.get_from_string(s, "newick")
+            except newickreader.NewickReader.NewickReaderMalformedStatementError as e:
+                self.assertEqual(
+                    "Expecting ':', ')', ',' or ';' after reading label but found '{'",
+                    e.message)
+                raise e
+
+    def test_malformed_error_message_parsing_jplace(self):
+        s = "((A}:.01[e]{0}, B:.02{1})D:.3{3}[g], C:.04{4}[h]) {5};"
+        with self.assertRaises(newickreader.NewickReader.NewickReaderMalformedStatementError):
+            try:
+                tree = dendropy.Tree.get_from_string(s, "newick", is_parse_jplace_tokens=True)
+            except newickreader.NewickReader.NewickReaderMalformedStatementError as e:
+                self.assertEqual(
+                    # extra 2nd element of list
+                    "Expecting ':', '{', ')', ',' or ';' after reading label but found '}'",
+                    e.message)
+                raise e
+
+class NewickInternalLabelAssociationTest(unittest.TestCase):
+
+    def test_assign_to_edges(self):
+        s = "((C:1.3,D:4.0)34:0.034,(A:1.1,(B:1.2,X:1.6)26:0.026)12:0.0126,E:1.5)seed;"
+        expected_labels = {
+                0 :"seed",
+                60 :"34",
+                28 :"12",
+                24 :"26",
+                }
+        for labels_to_edges in (True, False):
+            for rooting in ("force-rooted", "force-unrooted"):
+                tree = dendropy.Tree.get(
+                        data=s,
+                        schema="newick",
+                        is_assign_internal_labels_to_edges=labels_to_edges)
+                tree.encode_bipartitions()
+                for nd in tree:
+                    if nd.is_leaf():
+                        continue
+                    expected_label = expected_labels[int(nd.bipartition)]
+                    if labels_to_edges:
+                        self.assertIs(nd.label, None)
+                        self.assertEquals(nd.edge.label, expected_label)
+                    else:
+                        self.assertEquals(nd.label, expected_label)
+                        self.assertIs(nd.edge.label, None)
+
 if __name__ == "__main__":
     unittest.main()
diff --git a/dendropy/test/test_multispeciescoalescent.py b/dendropy/test/test_multispeciescoalescent.py
new file mode 100644
index 0000000..6747f77
--- /dev/null
+++ b/dendropy/test/test_multispeciescoalescent.py
@@ -0,0 +1,307 @@
+#! /usr/bin/env python
+
+##############################################################################
+##  DendroPy Phylogenetic Computing Library.
+##
+##  Copyright 2010-2015 Jeet Sukumaran and Mark T. Holder.
+##  All rights reserved.
+##
+##  See "LICENSE.rst" for terms and conditions of usage.
+##
+##  If you use this work or any portion thereof in published work,
+##  please cite it as:
+##
+##     Sukumaran, J. and M. T. Holder. 2010. DendroPy: a Python library
+##     for phylogenetic computing. Bioinformatics 26: 1569-1571.
+##
+##############################################################################
+
+import math
+import unittest
+import json
+import dendropy
+from dendropy.model import multispeciescoalescent
+from dendropy.test.support import pathmap
+
+def generate_multispecies_coalescent_system(
+        speciation_ages,
+        coalescent_ages,
+        ):
+    """
+    Generates a species tree and a coalescent tree based on Figure 1 of:
+
+        Rannala B, Yang Z. 2003. Bayesian estimation of species divergence
+        ages and ancestral population sizes using DNA sequences from
+        multiple loci. Genetics 164L 1645-1656.
+
+    """
+    assert len(speciation_ages) == 3
+    assert len(coalescent_ages) == 6
+    speciation_ages = sorted(float(i) for i in speciation_ages)
+    coalescent_ages = sorted(float(i) for i in coalescent_ages)
+
+    species_taxa = dendropy.TaxonNamespace(["H","C","G","O"])
+    species_tree_str = "(((H,C)HC,G)HCG,O)HCGO;"
+    species_tree = dendropy.Tree.get(
+            data=species_tree_str,
+            schema="newick",
+            taxon_namespace=species_taxa,
+            rooting="force-rooted",
+            )
+    species_taxa.is_mutable = False
+    for nd in species_tree.leaf_node_iter():
+        nd.age = 0.0
+        nd.label = nd.taxon.label
+    species_tree.find_node_with_label("HC").age = speciation_ages[0]
+    species_tree.find_node_with_label("HCG").age = speciation_ages[1]
+    species_tree.find_node_with_label("HCGO").age = speciation_ages[2]
+    species_tree.set_edge_lengths_from_node_ages()
+
+    gene_taxa = dendropy.TaxonNamespace(["H1", "H2", "H3", "C1", "C2", "G", "O"])
+    coalescent_tree_str = "(((H1, ((H2, H3)a,(C1, C2)b)c)d,G)e,O)f;"
+    coalescent_tree = dendropy.Tree.get(
+            data=coalescent_tree_str,
+            schema="newick",
+            taxon_namespace=gene_taxa,
+            rooting="force-rooted",
+            )
+    gene_taxa.is_mutable = False
+    for nd in coalescent_tree.leaf_node_iter():
+        nd.age = 0.0
+        nd.label = nd.taxon.label
+    coalescent_tree.find_node_with_label("a").age = coalescent_ages[0]
+    coalescent_tree.find_node_with_label("b").age = coalescent_ages[1]
+    coalescent_tree.find_node_with_label("c").age = coalescent_ages[2]
+    coalescent_tree.find_node_with_label("d").age = coalescent_ages[3]
+    coalescent_tree.find_node_with_label("e").age = coalescent_ages[4]
+    coalescent_tree.find_node_with_label("f").age = coalescent_ages[5]
+    coalescent_tree.set_edge_lengths_from_node_ages()
+
+    coalescent_to_species_taxon_map = {
+        gene_taxa.require_taxon("H1"): species_taxa.require_taxon("H"),
+        gene_taxa.require_taxon("H2"): species_taxa.require_taxon("H"),
+        gene_taxa.require_taxon("H3"): species_taxa.require_taxon("H"),
+        gene_taxa.require_taxon("C1"): species_taxa.require_taxon("C"),
+        gene_taxa.require_taxon("C2"): species_taxa.require_taxon("C"),
+        gene_taxa.require_taxon("G"): species_taxa.require_taxon("G"),
+        gene_taxa.require_taxon("O"): species_taxa.require_taxon("O"),
+    }
+
+    return species_tree, coalescent_tree, coalescent_to_species_taxon_map
+
+class MultispeciesCoalescentFixedSingleTreesCalculationTestCase(unittest.TestCase):
+
+    def test1(self):
+        with open(pathmap.other_source_path("multispecies_coalescent_test_data.json")) as src:
+            test_regimes = json.load(src)
+        for test_regime in test_regimes:
+            species_tree = dendropy.Tree.get(
+                    data=test_regime["species_tree"],
+                    schema="newick",
+                    rooting="force-rooted",
+                    )
+            species_tree.taxon_namespace.is_mutable = False
+            msc = multispeciescoalescent.MultispeciesCoalescent(species_tree=species_tree)
+            coalescent_species_lineage_label_map = test_regime["coalescent_species_lineage_label_map"]
+            coalescent_species_lineage_map_fn = lambda x: species_tree.taxon_namespace.require_taxon(coalescent_species_lineage_label_map[x.label])
+            coalescent_taxa = dendropy.TaxonNamespace(sorted(coalescent_species_lineage_label_map.keys()))
+            coalescent_taxa.is_mutable = False
+            for sub_regime in test_regime["coalescent_trees"]:
+                coalescent_tree = dendropy.Tree.get(
+                        data=sub_regime["coalescent_tree"],
+                        schema="newick",
+                        rooting="force-rooted",
+                        taxon_namespace=coalescent_taxa,
+                        )
+                obs_ln_likelihood = msc.score_coalescent_tree(
+                        coalescent_tree=coalescent_tree,
+                        coalescent_species_lineage_map_fn=coalescent_species_lineage_map_fn,
+                        )
+                exp_ln_likelihood = sub_regime["log_likelihood"]
+                self.assertAlmostEqual(obs_ln_likelihood, exp_ln_likelihood, 2)
+
+class MultispeciesCoalescentBasicTestCase(unittest.TestCase):
+
+    def calc_log_likelihood(self,
+            species_tree,
+            coalescent_tree,
+            thetas=None,
+            default_theta=1.0,
+            ):
+        tau_HC = species_tree.find_node_with_label("HC").age
+        tau_HCG = species_tree.find_node_with_label("HCG").age
+        tau_HCGO = species_tree.find_node_with_label("HCGO").age
+        t3_H = coalescent_tree.find_node_with_label("a").age
+        t2_C = coalescent_tree.find_node_with_label("b").age
+        t3_HC = coalescent_tree.find_node_with_label("c").age - species_tree.find_node_with_label("HC").age
+        t2_HC = coalescent_tree.find_node_with_label("d").age - coalescent_tree.find_node_with_label("c").age
+        t3_HCGO = coalescent_tree.find_node_with_label("e").age - species_tree.find_node_with_label("HCGO").age
+        t2_HCGO = coalescent_tree.find_node_with_label("f").age - coalescent_tree.find_node_with_label("e").age
+        if thetas is None:
+            thetas = {}
+        theta_H = thetas.get("H", default_theta)
+        theta_C = thetas.get("C", default_theta)
+        theta_HC = thetas.get("HC", default_theta)
+        theta_HCG = thetas.get("HCG", default_theta)
+        theta_HCGO = thetas.get("HCGO", default_theta)
+        p1 = 2.0/theta_H * math.exp(-6 * t3_H/theta_H) * math.exp(-2 * (tau_HC-t3_H)/theta_H)
+        p2 = 2.0/theta_C * math.exp(-2 * t2_C/theta_C)
+        p3 = 2.0/theta_HC * math.exp(-6 * t3_HC/theta_HC) * 2.0/theta_HC * math.exp(-2 * t2_HC/theta_HC)
+
+        # below is as originally given in the Rannala and Yang paper,
+        # but is incorrect
+        # p4 = math.exp(-2 * (tau_HCG - tau_HC - (t3_HC + t2_HC)) / theta_HCG)
+        p4 = math.exp(-2 * (tau_HCGO - tau_HCG) / theta_HCG)
+
+        p5 = 2.0/theta_HCGO * math.exp(-6 * t3_HCGO/theta_HCGO)
+        p6 = 2.0/theta_HCGO * math.exp(-2 * t2_HCGO/theta_HCGO)
+        p = p1 * p2 * p3 * p4 * p5 * p6
+
+        q1 = math.log(2.0/theta_H) + (-6 * t3_H/theta_H) + (-2 * (tau_HC-t3_H)/theta_H)
+        q2 = math.log(2.0/theta_C) + (-2 * t2_C/theta_C)
+        q3 = math.log(2.0/theta_HC) + (-6 * t3_HC/theta_HC) + math.log(2.0/theta_HC) + (-2 * t2_HC/theta_HC)
+        # below is as originally given in the Rannala and Yang paper,
+        # but is incorrect
+        # q4 = (-2 * (tau_HCG - tau_HC - (t3_HC + t2_HC)) / theta_HCG)
+        q4 = (-2 * (tau_HCGO - tau_HCG) / theta_HCG)
+        q5 = math.log(2.0/theta_HCGO) + (-6 * t3_HCGO/theta_HCGO)
+        q6 = math.log(2.0/theta_HCGO) + (-2 * t2_HCGO/theta_HCGO)
+        q = q1 + q2 + q3 + q4 + q5 + q6
+
+        self.assertAlmostEqual(math.log(p), q, 7)
+
+        return q
+
+    def get_node(self, tree, label):
+        return tree.find_node(filter_fn=lambda n: n.label==label)
+
+    def get_edge(self, tree, label):
+        return tree.find_node(filter_fn=lambda n: n.label==label).edge
+
+    def test_fixed_species_tree_fitting(self):
+        species_tree, coalescent_tree, coalescent_to_species_taxon_map = generate_multispecies_coalescent_system(
+                speciation_ages=[10, 20, 30],
+                coalescent_ages=[5, 6, 15, 16, 35, 36]
+                )
+        msc = multispeciescoalescent.MultispeciesCoalescent(species_tree)
+        edge_head_coalescent_edges, edge_tail_coalescent_edges, edge_coalescent_nodes = msc._fit_coalescent_tree(
+                coalescent_tree=coalescent_tree,
+                coalescent_species_lineage_map_fn=lambda x: coalescent_to_species_taxon_map[x])
+
+        expected_head_coalescent_edges = {
+            self.get_edge(species_tree, "H"): set([
+                                               self.get_edge(coalescent_tree, "H1"),
+                                               self.get_edge(coalescent_tree, "H2"),
+                                               self.get_edge(coalescent_tree, "H3"),
+                                               ]),
+            self.get_edge(species_tree, "C"): set([
+                                               self.get_edge(coalescent_tree, "C1"),
+                                               self.get_edge(coalescent_tree, "C2"),
+                                               ]),
+            self.get_edge(species_tree, "G"): set([
+                                               self.get_edge(coalescent_tree, "G"),
+                                              ]),
+            self.get_edge(species_tree, "O"): set([
+                                               self.get_edge(coalescent_tree, "O"),
+                                              ]),
+            self.get_edge(species_tree, "HC"): set([
+                                               self.get_edge(coalescent_tree, "H1"),
+                                               self.get_edge(coalescent_tree, "a"),
+                                               self.get_edge(coalescent_tree, "b"),
+                                               ]),
+            self.get_edge(species_tree, "HCG"): set([
+                                               self.get_edge(coalescent_tree, "d"),
+                                               self.get_edge(coalescent_tree, "G"),
+                                               ]),
+            self.get_edge(species_tree, "HCGO"): set([
+                                               self.get_edge(coalescent_tree, "d"),
+                                               self.get_edge(coalescent_tree, "G"),
+                                               self.get_edge(coalescent_tree, "O"),
+                                               ]),
+        }
+        expected_tail_coalescent_edges = {
+            self.get_edge(species_tree, "H"): set([
+                                               self.get_edge(coalescent_tree, "H1"),
+                                               self.get_edge(coalescent_tree, "a"),
+                                               ]),
+            self.get_edge(species_tree, "C"): set([
+                                               self.get_edge(coalescent_tree, "b"),
+                                               ]),
+            self.get_edge(species_tree, "G"): set([
+                                               self.get_edge(coalescent_tree, "G"),
+                                              ]),
+            self.get_edge(species_tree, "O"): set([
+                                               self.get_edge(coalescent_tree, "O"),
+                                              ]),
+            self.get_edge(species_tree, "HC"): set([
+                                               self.get_edge(coalescent_tree, "d"),
+                                               ]),
+            self.get_edge(species_tree, "HCG"): set([
+                                               self.get_edge(coalescent_tree, "d"),
+                                               self.get_edge(coalescent_tree, "G"),
+                                               ]),
+            self.get_edge(species_tree, "HCGO"): set([
+                                               ]),
+        }
+        expected_coalescing_nodes = {
+            self.get_edge(species_tree, "H"): set([
+                                               self.get_node(coalescent_tree, "a"),
+                                               ]),
+            self.get_edge(species_tree, "C"): set([
+                                               self.get_node(coalescent_tree, "b"),
+                                               ]),
+            self.get_edge(species_tree, "G"): set([
+                                              ]),
+            self.get_edge(species_tree, "O"): set([
+                                              ]),
+            self.get_edge(species_tree, "HC"): set([
+                                               self.get_node(coalescent_tree, "d"),
+                                               self.get_node(coalescent_tree, "c"),
+                                               ]),
+            self.get_edge(species_tree, "HCG"): set([
+                                               ]),
+            self.get_edge(species_tree, "HCGO"): set([
+                                               self.get_node(coalescent_tree, "f"),
+                                               self.get_node(coalescent_tree, "e"),
+                                               ]),
+        }
+
+        for species_tree_edge in edge_head_coalescent_edges:
+            # print("-- {} --".format(species_tree_edge.head_node.label if species_tree_edge.head_node else "<root>"))
+            # print("{}: {} vs. {}".format(
+            #     species_tree_edge.head_node.label,
+            #     [ce.head_node.label for ce in edge_head_coalescent_edges[species_tree_edge]],
+            #     [ce.head_node.label for ce in expected_head_coalescent_edges[species_tree_edge]]))
+            self.assertEqual(
+                    set(edge_head_coalescent_edges[species_tree_edge]),
+                    expected_head_coalescent_edges[species_tree_edge]
+                    )
+            # print("{}: {} vs. {}".format(
+            #     species_tree_edge.head_node.label if species_tree_edge.head_node else "<root>",
+            #     [ce.head_node.label for ce in edge_tail_coalescent_edges[species_tree_edge]],
+            #     [ce.head_node.label for ce in expected_tail_coalescent_edges[species_tree_edge]]))
+            self.assertEqual(
+                    set(edge_tail_coalescent_edges[species_tree_edge]),
+                    expected_tail_coalescent_edges[species_tree_edge]
+                    )
+            # print("{}: {} vs. {}".format(
+            #     species_tree_edge.head_node.label if species_tree_edge.head_node else "<root>",
+            #     [nd.label for nd in edge_coalescent_nodes[species_tree_edge]],
+            #     [nd.label for nd in expected_coalescing_nodes[species_tree_edge]]))
+            self.assertEqual(
+                    set(edge_coalescent_nodes[species_tree_edge]),
+                    expected_coalescing_nodes[species_tree_edge]
+                    )
+
+        expected_lnL = self.calc_log_likelihood(
+                species_tree=species_tree,
+                coalescent_tree=coalescent_tree,)
+        s = msc.score_coalescent_tree(
+                coalescent_tree=coalescent_tree,
+                coalescent_species_lineage_map_fn=lambda x: coalescent_to_species_taxon_map[x],
+                )
+        self.assertAlmostEqual(s, expected_lnL)
+
+if __name__ == "__main__":
+    unittest.main()
+
diff --git a/dendropy/test/test_phylogenetic_distance_matrix.py b/dendropy/test/test_phylogenetic_distance_matrix.py
index 10c05f5..9dae69c 100644
--- a/dendropy/test/test_phylogenetic_distance_matrix.py
+++ b/dendropy/test/test_phylogenetic_distance_matrix.py
@@ -786,7 +786,7 @@ class PdmUpgmaTree(PdmTreeChecker, unittest.TestCase):
             expected_tree = dendropy.Tree.get(
                     data=expected_tree_str,
                     schema="newick",
-                    # rooting="force-unrooted",
+                    rooting="force-rooted",
                     taxon_namespace=pdm.taxon_namespace,
                     preserve_underscores=True)
             self.check_tree(obs_tree=obs_tree,
diff --git a/dendropy/test/test_popgenstat.py b/dendropy/test/test_popgenstat.py
index d405807..1a9b51d 100644
--- a/dendropy/test/test_popgenstat.py
+++ b/dendropy/test/test_popgenstat.py
@@ -55,9 +55,35 @@ class TajimasDTests(dendropytest.ExtendedTestCase):
             AAAAAAAAAA AAAAATAAAA AAATAATAAA AAAAAAAAAA A"""
         self.matrix = dendropy.DnaCharacterMatrix.get_from_string(s, 'fasta')
 
+        s_with_missing = """\
+            >s1
+            ATAATAAAAA AATAATAAAA AAATAAAAAA AATAAAAAAA A
+            >s2
+            AAAAAAAATA AATAATAAAA AAATAAAAAA AAAAAAAAAA A
+            >s3
+            AAAATAAAAA TATAATAAAA AAATATAAAA ?AAAAAAAAA ?
+            >s4
+            AAAAAAAAAA AATAATAAAA AAATAAATAA ATAAAAAAAA A
+            >s5
+            AAAATAAAAA AAATATAAAA AAATAAAAAA AAAAAAAAAA A
+            >s6
+            ?AAATAAAAA AAAAATAAAA AAAAAAAAAA AAAAATAAAA A
+            >s7
+            AAAAAATAAA AATAATAAAA AAATAAAAAA AAAAAAAAAA A
+            >s8
+            AAAAAAAAAA AAAAATAAAA AAATAAAAAA AAAAAAAAAT A
+            >s9
+            AAAAAAAAAA AAAAAAAAAA AAATAAAAAA ?AAAAAAAAA A
+            >s10
+            AAAAAAAAAA AAAAATAAAA AAATAATAAA AAAAAAAAAA A"""
+        self.matrix_with_missing = dendropy.DnaCharacterMatrix.get_from_string(s_with_missing, 'fasta')
+
     def testTajimasD(self):
         self.assertAlmostEqual(popgenstat.tajimas_d(self.matrix), -1.44617198561, 4)
 
+    def testTajimasD_with_missing(self):
+        self.assertAlmostEqual(popgenstat.tajimas_d(self.matrix_with_missing), -1.44617198561, 4)
+
 class SinglePopTest(dendropytest.ExtendedTestCase):
 
     data = dendropy.DnaCharacterMatrix.get_from_path(pathmap.char_source_path('COII_Apes.nex'), schema="nexus")
@@ -100,4 +126,3 @@ class PopulationPairSummaryStatisticsTests(dendropytest.ExtendedTestCase):
 
 if __name__ == "__main__":
     unittest.main()
-
diff --git a/dendropy/utility/error.py b/dendropy/utility/error.py
index 96d80ba..21a6fe5 100644
--- a/dendropy/utility/error.py
+++ b/dendropy/utility/error.py
@@ -144,11 +144,21 @@ class TreeSimTotalExtinctionException(ProcessFailedException):
     def __init__(self, *args, **kwargs):
         ProcessFailedException.__init__(self, *args, **kwargs)
 
+class NullLeafSetException(Exception):
+
+    def __init__(self, *args, **kwargs):
+        Exception.__init__(self, *args, **kwargs)
+
 class SeedNodeDeletionException(Exception):
 
     def __init__(self, *args, **kwargs):
         Exception.__init__(self, *args, **kwargs)
 
+class InvalidMultispeciesCoalescentStructureError(Exception):
+
+    def __init__(self, *args, **kwargs):
+        Exception.__init__(self, *args, **kwargs)
+
 class ExternalServiceError(Exception):
 
     def __init__(self,
diff --git a/dendropy/utility/processio.py b/dendropy/utility/processio.py
index dc67be1..99bcb51 100644
--- a/dendropy/utility/processio.py
+++ b/dendropy/utility/processio.py
@@ -36,12 +36,21 @@ ON_POSIX = 'posix' in sys.builtin_module_names
 ############################################################################
 ## Handling of byte/string conversion during subprocess calls
 
-def communicate(p, commands=None):
+def communicate(p, commands=None, timeout=None):
     if isinstance(commands, list) or isinstance(commands, tuple):
         commands = "\n".join(str(c) for c in commands)
     if commands is not None:
         commands = str.encode(commands)
-    stdout, stderr = p.communicate(commands)
+    if timeout is None:
+        stdout, stderr = p.communicate(commands)
+    else:
+        try:
+            stdout, stderr = p.communicate(commands, timeout=timeout)
+        except TypeError as e:
+            if "unexpected keyword argument 'timeout'" in str(e):
+                stdout, stderr = p.communicate(commands)
+            else:
+                raise
     if stdout is not None:
         stdout = textprocessing.bytes_to_text(stdout)
     if stderr is not None:
diff --git a/dendropy/utility/timeprocessing.py b/dendropy/utility/timeprocessing.py
index ce86e5f..a55fc0c 100644
--- a/dendropy/utility/timeprocessing.py
+++ b/dendropy/utility/timeprocessing.py
@@ -16,15 +16,17 @@
 ##
 ##############################################################################
 
-import time
+import datetime
 
 def pretty_timestamp(t=None, style=0):
     if t is None:
-        t = time.localtime()
+        t = datetime.datetime.now()
     if style == 0:
-        return time.strftime("%Y-%m-%d", t)
+        return t.strftime("%Y-%m-%d")
+    elif style == 1:
+        return t.strftime("%Y%m%d%H%M%S")
     else:
-        return time.strftime("%Y%m%d%H%M%S", t)
+        return t.strftime("%Y%m%d%H%M%S%f")
 
 def pretty_elapsed_datetime(t, fill=False):
     parts = []
diff --git a/setup.py b/setup.py
index ddeb634..8bebba4 100644
--- a/setup.py
+++ b/setup.py
@@ -23,6 +23,12 @@ Package setup and installation.
 import sys
 import os
 
+### "highly-discouraged" workaround to deal with Python 2.8+ and 3.4+ verifying
+### certificates by default; this breaks PyPI uploads ...
+import ssl
+if hasattr(ssl, '_create_unverified_context'):
+    ssl._create_default_https_context = ssl._create_unverified_context
+
 ###############################################################################
 # Identification
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-dendropy.git



More information about the debian-med-commit mailing list