Copyright | (c) Dominik Schrempf 2021 |
---|---|

License | GPL-3.0-or-later |

Maintainer | dominik.schrempf@gmail.com |

Stability | unstable |

Portability | portable |

Safe Haskell | None |

Language | Haskell2010 |

Creation date: Sat Jul 18 13:15:49 2020.

A topology, as it is used in phylogenetics is a `Topology`

with unique leaf
labels, and the order of the topologies in the sub-forest is considered to be
meaningless.

NOTE: The functions in this module are defined using the functions in ELynx.Tree.Phylogeny. This induces a runtime overhead, but greatly reduces the probability of additional bugs.

## Synopsis

- equal :: (Eq a, Ord a) => Topology a -> Topology a -> Either String Bool
- equal' :: Eq a => Topology a -> Topology a -> Bool
- intersect :: Ord a => [Topology a] -> Either String [Topology a]
- bifurcating :: Topology a -> Bool
- outgroup :: (Default a, Ord a) => Set a -> Topology a -> Either String (Topology a)
- midpoint :: Default a => Topology a -> Either String (Topology a)
- roots :: Default a => Topology a -> Either String [Topology a]

# Documentation

equal :: (Eq a, Ord a) => Topology a -> Topology a -> Either String Bool Source #

The equality check is slow because the order of children is considered to be arbitrary.

Return `Left`

if a topology does not have unique leaves.

equal' :: Eq a => Topology a -> Topology a -> Bool Source #

Same as `equal`

, but assume that leaves are unique.

intersect :: Ord a => [Topology a] -> Either String [Topology a] Source #

Intersection of topologies.

| See `intersect`

.

outgroup :: (Default a, Ord a) => Set a -> Topology a -> Either String (Topology a) Source #

Root topology using an outgroup.

See `outgroup`

.