phylogenie 2.1.14__tar.gz → 2.1.16__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of phylogenie might be problematic. Click here for more details.

Files changed (34) hide show
  1. {phylogenie-2.1.14 → phylogenie-2.1.16}/PKG-INFO +1 -1
  2. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/plot.py +4 -5
  3. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/tree.py +16 -4
  4. {phylogenie-2.1.14 → phylogenie-2.1.16}/pyproject.toml +1 -1
  5. {phylogenie-2.1.14 → phylogenie-2.1.16}/LICENSE.txt +0 -0
  6. {phylogenie-2.1.14 → phylogenie-2.1.16}/README.md +0 -0
  7. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/__init__.py +0 -0
  8. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/__init__.py +0 -0
  9. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/alisim.py +0 -0
  10. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/configs.py +0 -0
  11. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/dataset.py +0 -0
  12. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/factories.py +0 -0
  13. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/trees.py +0 -0
  14. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/generators/typeguards.py +0 -0
  15. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/io.py +0 -0
  16. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/main.py +0 -0
  17. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/models.py +0 -0
  18. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/msa.py +0 -0
  19. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/py.typed +0 -0
  20. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/skyline/__init__.py +0 -0
  21. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/skyline/matrix.py +0 -0
  22. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/skyline/parameter.py +0 -0
  23. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/skyline/vector.py +0 -0
  24. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/__init__.py +0 -0
  25. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/events/__init__.py +0 -0
  26. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/events/contact_tracing.py +0 -0
  27. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/events/core.py +0 -0
  28. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/events/mutations.py +0 -0
  29. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/features.py +0 -0
  30. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/gillespie.py +0 -0
  31. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/treesimulator/model.py +0 -0
  32. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/typeguards.py +0 -0
  33. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/typings.py +0 -0
  34. {phylogenie-2.1.14 → phylogenie-2.1.16}/phylogenie/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phylogenie
3
- Version: 2.1.14
3
+ Version: 2.1.16
4
4
  Summary: Generate phylogenetic datasets with minimal setup effort
5
5
  Author: Gabriele Marino
6
6
  Author-email: gabmarino.8601@gmail.com
@@ -6,7 +6,7 @@ import matplotlib.pyplot as plt
6
6
  from matplotlib.axes import Axes
7
7
 
8
8
  from phylogenie.tree import Tree
9
- from phylogenie.utils import get_node_depths
9
+ from phylogenie.utils import get_node_depth_levels, get_node_depths
10
10
 
11
11
 
12
12
  class Coloring(str, Enum):
@@ -22,15 +22,14 @@ def plot_tree(
22
22
  coloring: str | Coloring | None = None,
23
23
  cmap: str | None = None,
24
24
  show_legend: bool = True,
25
- x_feature: str | None = None,
26
25
  ) -> Axes:
27
26
  if ax is None:
28
27
  ax = plt.gca()
29
28
 
30
29
  xs = (
31
- get_node_depths(tree)
32
- if x_feature is None
33
- else {node: node.get(x_feature) for node in tree}
30
+ get_node_depth_levels(tree)
31
+ if any(node.branch_length is None for node in tree)
32
+ else get_node_depths(tree)
34
33
  )
35
34
  ys = {node: i for i, node in enumerate(tree.inorder_traversal())}
36
35
 
@@ -1,4 +1,5 @@
1
- from collections.abc import Iterator
1
+ from collections import deque
2
+ from collections.abc import Callable, Iterator
2
3
  from typing import Any
3
4
 
4
5
 
@@ -55,6 +56,10 @@ class Tree:
55
56
  return 0
56
57
  return 1 + max(child.height_level for child in self.children)
57
58
 
59
+ @property
60
+ def n_leaves(self) -> int:
61
+ return len(self.get_leaves())
62
+
58
63
  def set(self, key: str, value: Any) -> None:
59
64
  self._features[key] = value
60
65
 
@@ -102,6 +107,13 @@ class Tree:
102
107
  yield from child.postorder_traversal()
103
108
  yield self
104
109
 
110
+ def breadth_first_traversal(self) -> Iterator["Tree"]:
111
+ queue: deque["Tree"] = deque([self])
112
+ while queue:
113
+ node = queue.popleft()
114
+ yield node
115
+ queue.extend(node.children)
116
+
105
117
  def get_node(self, name: str) -> "Tree":
106
118
  for node in self:
107
119
  if node.name == name:
@@ -114,10 +126,10 @@ class Tree:
114
126
  def get_leaves(self) -> tuple["Tree", ...]:
115
127
  return tuple(node for node in self if node.is_leaf())
116
128
 
117
- def ladderize(self, feature: str) -> None:
118
- self._children.sort(key=lambda x: x.get(feature))
129
+ def ladderize(self, criterion: Callable[["Tree"], Any]) -> None:
130
+ self._children.sort(key=criterion)
119
131
  for child in self.children:
120
- child.ladderize(feature)
132
+ child.ladderize(criterion)
121
133
 
122
134
  def copy(self):
123
135
  new_tree = Tree(self.name, self.branch_length)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "phylogenie"
3
- version = "2.1.14"
3
+ version = "2.1.16"
4
4
  description = "Generate phylogenetic datasets with minimal setup effort"
5
5
  authors = ["Gabriele Marino <gabmarino.8601@gmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes