@@ -32,7 +32,7 @@ import Data.List as L
32
32
import Data.Map as M
33
33
import Data.Maybe (Maybe (..), fromMaybe )
34
34
import Data.Traversable (class Traversable , sequenceDefault , traverse )
35
- import Data.Tuple (Tuple , uncurry )
35
+ import Data.Tuple (Tuple (..) )
36
36
import Data.Tuple.Nested ((/\))
37
37
import Parsing (ParserT )
38
38
@@ -43,7 +43,7 @@ data Event
43
43
| LateralGeneTransfer
44
44
| Recombination
45
45
46
- derive instance eqNodeType :: Eq Event
46
+ derive instance eqEvent :: Eq Event
47
47
48
48
eventToString :: Event -> String
49
49
eventToString Clade = " Clade"
@@ -52,6 +52,9 @@ eventToString Hybrid = "Hybrid"
52
52
eventToString LateralGeneTransfer = " LateralGeneTransfer"
53
53
eventToString Recombination = " Recombination"
54
54
55
+ instance showEvent :: Show Event where
56
+ show = eventToString
57
+
55
58
type NodeName = String
56
59
57
60
type NodeIdentifier = Int
@@ -137,6 +140,13 @@ data Tree a
137
140
138
141
derive instance eqTree :: Eq a => Eq (Tree a )
139
142
143
+ instance showTree :: Show a => Show (Tree a ) where
144
+ show (Leaf l) = " L: " <> show l
145
+ show (Internal v children) = " (I:" <> show v <> toStr children <> " )"
146
+ where
147
+ toStr :: forall x . Show x => Array x -> String
148
+ toStr xs = foldl (\acc x -> acc <> " " <> show x) " " xs
149
+
140
150
instance functorTree :: Functor Tree where
141
151
map f (Leaf n) = Leaf (f n)
142
152
map f (Internal p cs) = Internal (f p) (map (map f) cs)
@@ -238,12 +248,12 @@ toPhylogeny (PartialPhylogeny phylogeny) =
238
248
239
249
toAnnotatedPhylogeny :: Array Metadata -> PartialPhylogeny -> Phylogeny
240
250
toAnnotatedPhylogeny metadata (PartialPhylogeny phylogeny) =
241
- { metadata: uncurry mergeMetadata <$> A .zip metadata phylogeny.metadata
251
+ { metadata: mergeMetadata <$> A .zip metadata phylogeny.metadata
242
252
, network: fromMap phylogeny.network
243
253
}
244
254
where
245
- mergeMetadata :: Metadata -> Metadata -> Metadata
246
- mergeMetadata a b =
255
+ mergeMetadata :: Tuple Metadata Metadata -> Metadata
256
+ mergeMetadata ( Tuple a b) =
247
257
{ name: a.name <|> b.name
248
258
, parent: max a.parent b.parent
249
259
, rooted: a.rooted || b.rooted
0 commit comments