phylogenie 2.0.1__py3-none-any.whl → 2.0.3__py3-none-any.whl
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.
- phylogenie/__init__.py +72 -0
- phylogenie/generators/__init__.py +20 -2
- phylogenie/generators/configs.py +3 -1
- phylogenie/generators/factories.py +4 -1
- phylogenie/generators/trees.py +6 -6
- phylogenie/io.py +1 -1
- phylogenie/skyline/matrix.py +7 -3
- phylogenie/treesimulator/events.py +47 -48
- {phylogenie-2.0.1.dist-info → phylogenie-2.0.3.dist-info}/METADATA +3 -6
- {phylogenie-2.0.1.dist-info → phylogenie-2.0.3.dist-info}/RECORD +13 -13
- {phylogenie-2.0.1.dist-info → phylogenie-2.0.3.dist-info}/LICENSE.txt +0 -0
- {phylogenie-2.0.1.dist-info → phylogenie-2.0.3.dist-info}/WHEEL +0 -0
- {phylogenie-2.0.1.dist-info → phylogenie-2.0.3.dist-info}/entry_points.txt +0 -0
phylogenie/__init__.py
CHANGED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from phylogenie.generators import (
|
|
2
|
+
AliSimDatasetGenerator,
|
|
3
|
+
BDEITreeDatasetGenerator,
|
|
4
|
+
BDSSTreeDatasetGenerator,
|
|
5
|
+
BDTreeDatasetGenerator,
|
|
6
|
+
CanonicalTreeDatasetGenerator,
|
|
7
|
+
DatasetGenerator,
|
|
8
|
+
DatasetGeneratorConfig,
|
|
9
|
+
EpidemiologicalTreeDatasetGenerator,
|
|
10
|
+
FBDTreeDatasetGenerator,
|
|
11
|
+
TreeDatasetGeneratorConfig,
|
|
12
|
+
)
|
|
13
|
+
from phylogenie.io import load_fasta, load_newick
|
|
14
|
+
from phylogenie.msa import MSA
|
|
15
|
+
from phylogenie.skyline import (
|
|
16
|
+
SkylineMatrix,
|
|
17
|
+
SkylineMatrixCoercible,
|
|
18
|
+
SkylineParameter,
|
|
19
|
+
SkylineParameterLike,
|
|
20
|
+
SkylineVector,
|
|
21
|
+
SkylineVectorCoercible,
|
|
22
|
+
SkylineVectorLike,
|
|
23
|
+
skyline_matrix,
|
|
24
|
+
skyline_parameter,
|
|
25
|
+
skyline_vector,
|
|
26
|
+
)
|
|
27
|
+
from phylogenie.tree import Tree
|
|
28
|
+
from phylogenie.treesimulator import (
|
|
29
|
+
Event,
|
|
30
|
+
get_BD_events,
|
|
31
|
+
get_BDEI_events,
|
|
32
|
+
get_BDSS_events,
|
|
33
|
+
get_canonical_events,
|
|
34
|
+
get_epidemiological_events,
|
|
35
|
+
get_FBD_events,
|
|
36
|
+
simulate_tree,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
__all__ = [
|
|
40
|
+
"AliSimDatasetGenerator",
|
|
41
|
+
"BDEITreeDatasetGenerator",
|
|
42
|
+
"BDSSTreeDatasetGenerator",
|
|
43
|
+
"BDTreeDatasetGenerator",
|
|
44
|
+
"CanonicalTreeDatasetGenerator",
|
|
45
|
+
"DatasetGenerator",
|
|
46
|
+
"DatasetGeneratorConfig",
|
|
47
|
+
"EpidemiologicalTreeDatasetGenerator",
|
|
48
|
+
"FBDTreeDatasetGenerator",
|
|
49
|
+
"SkylineMatrix",
|
|
50
|
+
"SkylineMatrixCoercible",
|
|
51
|
+
"skyline_matrix",
|
|
52
|
+
"SkylineParameter",
|
|
53
|
+
"SkylineParameterLike",
|
|
54
|
+
"skyline_parameter",
|
|
55
|
+
"SkylineVector",
|
|
56
|
+
"SkylineVectorCoercible",
|
|
57
|
+
"SkylineVectorLike",
|
|
58
|
+
"skyline_vector",
|
|
59
|
+
"Tree",
|
|
60
|
+
"TreeDatasetGeneratorConfig",
|
|
61
|
+
"Event",
|
|
62
|
+
"get_BD_events",
|
|
63
|
+
"get_BDEI_events",
|
|
64
|
+
"get_BDSS_events",
|
|
65
|
+
"get_canonical_events",
|
|
66
|
+
"get_epidemiological_events",
|
|
67
|
+
"get_FBD_events",
|
|
68
|
+
"simulate_tree",
|
|
69
|
+
"load_fasta",
|
|
70
|
+
"load_newick",
|
|
71
|
+
"MSA",
|
|
72
|
+
]
|
|
@@ -4,11 +4,29 @@ from pydantic import Field
|
|
|
4
4
|
|
|
5
5
|
from phylogenie.generators.alisim import AliSimDatasetGenerator
|
|
6
6
|
from phylogenie.generators.dataset import DatasetGenerator
|
|
7
|
-
from phylogenie.generators.trees import
|
|
7
|
+
from phylogenie.generators.trees import (
|
|
8
|
+
BDEITreeDatasetGenerator,
|
|
9
|
+
BDSSTreeDatasetGenerator,
|
|
10
|
+
BDTreeDatasetGenerator,
|
|
11
|
+
CanonicalTreeDatasetGenerator,
|
|
12
|
+
EpidemiologicalTreeDatasetGenerator,
|
|
13
|
+
FBDTreeDatasetGenerator,
|
|
14
|
+
TreeDatasetGeneratorConfig,
|
|
15
|
+
)
|
|
8
16
|
|
|
9
17
|
DatasetGeneratorConfig = Annotated[
|
|
10
18
|
TreeDatasetGeneratorConfig | AliSimDatasetGenerator,
|
|
11
19
|
Field(discriminator="data_type"),
|
|
12
20
|
]
|
|
13
21
|
|
|
14
|
-
__all__ = [
|
|
22
|
+
__all__ = [
|
|
23
|
+
"DatasetGeneratorConfig",
|
|
24
|
+
"DatasetGenerator",
|
|
25
|
+
"AliSimDatasetGenerator",
|
|
26
|
+
"CanonicalTreeDatasetGenerator",
|
|
27
|
+
"EpidemiologicalTreeDatasetGenerator",
|
|
28
|
+
"FBDTreeDatasetGenerator",
|
|
29
|
+
"BDTreeDatasetGenerator",
|
|
30
|
+
"BDEITreeDatasetGenerator",
|
|
31
|
+
"BDSSTreeDatasetGenerator",
|
|
32
|
+
]
|
phylogenie/generators/configs.py
CHANGED
|
@@ -38,4 +38,6 @@ SkylineParameterConfig = ScalarConfig | SkylineParameterModel
|
|
|
38
38
|
SkylineVectorConfig = (
|
|
39
39
|
str | pgt.Scalar | list[SkylineParameterConfig] | SkylineVectorModel
|
|
40
40
|
)
|
|
41
|
-
SkylineMatrixConfig =
|
|
41
|
+
SkylineMatrixConfig = (
|
|
42
|
+
str | pgt.Scalar | list[SkylineVectorConfig] | SkylineMatrixModel | None
|
|
43
|
+
)
|
|
@@ -148,7 +148,10 @@ def one_or_many_2D_scalars(
|
|
|
148
148
|
|
|
149
149
|
def skyline_matrix(
|
|
150
150
|
x: cfg.SkylineMatrixConfig, data: dict[str, Any]
|
|
151
|
-
) -> SkylineMatrixCoercible:
|
|
151
|
+
) -> SkylineMatrixCoercible | None:
|
|
152
|
+
if x is None:
|
|
153
|
+
return None
|
|
154
|
+
|
|
152
155
|
if isinstance(x, str):
|
|
153
156
|
e = _eval_expression(x, data)
|
|
154
157
|
if tg.is_one_or_many_2D_scalars(e):
|
phylogenie/generators/trees.py
CHANGED
|
@@ -89,8 +89,8 @@ class CanonicalTreeDatasetGenerator(TreeDatasetGenerator):
|
|
|
89
89
|
birth_rates: cfg.SkylineVectorConfig = 0
|
|
90
90
|
death_rates: cfg.SkylineVectorConfig = 0
|
|
91
91
|
removal_probabilities: cfg.SkylineVectorConfig = 0
|
|
92
|
-
migration_rates: cfg.SkylineMatrixConfig =
|
|
93
|
-
birth_rates_among_states: cfg.SkylineMatrixConfig =
|
|
92
|
+
migration_rates: cfg.SkylineMatrixConfig = None
|
|
93
|
+
birth_rates_among_states: cfg.SkylineMatrixConfig = None
|
|
94
94
|
states: list[str] | None = None
|
|
95
95
|
|
|
96
96
|
def _get_events(self, rng: Generator, data: dict[str, Any]) -> list[Event]:
|
|
@@ -116,8 +116,8 @@ class EpidemiologicalTreeDatasetGenerator(TreeDatasetGenerator):
|
|
|
116
116
|
become_uninfectious_rates: cfg.SkylineVectorConfig = 0
|
|
117
117
|
sampling_proportions: cfg.SkylineVectorConfig = 1
|
|
118
118
|
removal_probabilities: cfg.SkylineVectorConfig = 1
|
|
119
|
-
migration_rates: cfg.SkylineMatrixConfig =
|
|
120
|
-
reproduction_numbers_among_states: cfg.SkylineMatrixConfig =
|
|
119
|
+
migration_rates: cfg.SkylineMatrixConfig = None
|
|
120
|
+
reproduction_numbers_among_states: cfg.SkylineMatrixConfig = None
|
|
121
121
|
|
|
122
122
|
def _get_events(self, rng: Generator, data: dict[str, Any]) -> list[Event]:
|
|
123
123
|
return get_epidemiological_events(
|
|
@@ -142,8 +142,8 @@ class FBDTreeDatasetGenerator(TreeDatasetGenerator):
|
|
|
142
142
|
turnover: cfg.SkylineVectorConfig = 0
|
|
143
143
|
sampling_proportions: cfg.SkylineVectorConfig = 1
|
|
144
144
|
removal_probabilities: cfg.SkylineVectorConfig = 0
|
|
145
|
-
migration_rates: cfg.SkylineMatrixConfig =
|
|
146
|
-
diversification_between_types: cfg.SkylineMatrixConfig =
|
|
145
|
+
migration_rates: cfg.SkylineMatrixConfig = None
|
|
146
|
+
diversification_between_types: cfg.SkylineMatrixConfig = None
|
|
147
147
|
|
|
148
148
|
def _get_events(self, rng: Generator, data: dict[str, Any]) -> list[Event]:
|
|
149
149
|
return get_FBD_events(
|
phylogenie/io.py
CHANGED
phylogenie/skyline/matrix.py
CHANGED
|
@@ -159,9 +159,13 @@ class SkylineMatrix:
|
|
|
159
159
|
@overload
|
|
160
160
|
def __getitem__(self, item: slice) -> "SkylineMatrix": ...
|
|
161
161
|
@overload
|
|
162
|
-
def __getitem__(
|
|
163
|
-
|
|
164
|
-
|
|
162
|
+
def __getitem__(self, item: tuple[int, int]) -> SkylineParameter: ...
|
|
163
|
+
@overload
|
|
164
|
+
def __getitem__(self, item: tuple[int, slice]) -> SkylineVector: ...
|
|
165
|
+
@overload
|
|
166
|
+
def __getitem__(self, item: tuple[slice, int]) -> SkylineVector: ...
|
|
167
|
+
@overload
|
|
168
|
+
def __getitem__(self, item: tuple[slice, slice]) -> "SkylineMatrix": ...
|
|
165
169
|
def __getitem__(
|
|
166
170
|
self, item: int | slice | tuple[int | slice, int | slice]
|
|
167
171
|
) -> Union[SkylineParameter | SkylineVector, "SkylineMatrix"]:
|
|
@@ -55,7 +55,7 @@ class DeathEvent(Event):
|
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
class MigrationEvent(Event):
|
|
58
|
-
def __init__(self,
|
|
58
|
+
def __init__(self, rate: SkylineParameterLike, state: str, target_state: str):
|
|
59
59
|
super().__init__(rate, state)
|
|
60
60
|
self.target_state = target_state
|
|
61
61
|
|
|
@@ -68,8 +68,8 @@ class SamplingEvent(Event):
|
|
|
68
68
|
def __init__(
|
|
69
69
|
self,
|
|
70
70
|
rate: SkylineParameterLike,
|
|
71
|
-
removal_probability: SkylineParameterLike,
|
|
72
71
|
state: str | None = None,
|
|
72
|
+
removal_probability: SkylineParameterLike = 0,
|
|
73
73
|
):
|
|
74
74
|
super().__init__(rate, state)
|
|
75
75
|
self.removal_probability = skyline_parameter(removal_probability)
|
|
@@ -85,8 +85,8 @@ def get_canonical_events(
|
|
|
85
85
|
birth_rates: SkylineVectorCoercible = 0,
|
|
86
86
|
death_rates: SkylineVectorCoercible = 0,
|
|
87
87
|
removal_probabilities: SkylineVectorCoercible = 0,
|
|
88
|
-
migration_rates: SkylineMatrixCoercible =
|
|
89
|
-
birth_rates_among_states: SkylineMatrixCoercible =
|
|
88
|
+
migration_rates: SkylineMatrixCoercible | None = None,
|
|
89
|
+
birth_rates_among_states: SkylineMatrixCoercible | None = None,
|
|
90
90
|
states: list[str] | None = None,
|
|
91
91
|
) -> list[Event]:
|
|
92
92
|
N = 1 if states is None else len(states)
|
|
@@ -95,31 +95,32 @@ def get_canonical_events(
|
|
|
95
95
|
death_rates = skyline_vector(death_rates, N)
|
|
96
96
|
sampling_rates = skyline_vector(sampling_rates, N)
|
|
97
97
|
removal_probabilities = skyline_vector(removal_probabilities, N)
|
|
98
|
-
if migration_rates and N == 1:
|
|
99
|
-
raise ValueError(f"Migration rates require multiple states (got {states}).")
|
|
100
|
-
if birth_rates_among_states and N == 1:
|
|
101
|
-
raise ValueError(
|
|
102
|
-
f"Birth rates among states require multiple states (got {states})."
|
|
103
|
-
)
|
|
104
98
|
|
|
105
99
|
events: list[Event] = []
|
|
106
100
|
for i in range(N):
|
|
107
101
|
state = None if states is None else states[i]
|
|
108
102
|
events.append(BirthEvent(birth_rates[i], state, state))
|
|
109
103
|
events.append(DeathEvent(death_rates[i], state))
|
|
110
|
-
events.append(SamplingEvent(sampling_rates[i], removal_probabilities[i]
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
|
|
104
|
+
events.append(SamplingEvent(sampling_rates[i], state, removal_probabilities[i]))
|
|
105
|
+
|
|
106
|
+
if states is not None and migration_rates is not None:
|
|
107
|
+
migration_rates = skyline_matrix(migration_rates, N, N - 1)
|
|
108
|
+
for i, state in enumerate(states):
|
|
109
|
+
for j, other_state in enumerate([s for s in states if s != state]):
|
|
110
|
+
events.append(MigrationEvent(migration_rates[i, j], state, other_state))
|
|
111
|
+
elif migration_rates is not None:
|
|
112
|
+
raise ValueError(f"Migration rates require states to be provided.")
|
|
113
|
+
|
|
114
|
+
if states is not None and birth_rates_among_states is not None:
|
|
115
|
+
birth_rates_among_states = skyline_matrix(birth_rates_among_states, N, N - 1)
|
|
116
|
+
for i, state in enumerate(states):
|
|
118
117
|
for j, other_state in enumerate([s for s in states if s != state]):
|
|
119
|
-
events.append(MigrationEvent(state, other_state, migration_rates[i][j]))
|
|
120
118
|
events.append(
|
|
121
|
-
BirthEvent(birth_rates_among_states[i
|
|
119
|
+
BirthEvent(birth_rates_among_states[i, j], state, other_state)
|
|
122
120
|
)
|
|
121
|
+
elif birth_rates_among_states is not None:
|
|
122
|
+
raise ValueError(f"Birth rates among states require states to be provided.")
|
|
123
|
+
|
|
123
124
|
return [event for event in events if event.rate]
|
|
124
125
|
|
|
125
126
|
|
|
@@ -128,8 +129,8 @@ def get_epidemiological_events(
|
|
|
128
129
|
reproduction_numbers: SkylineVectorCoercible = 0,
|
|
129
130
|
become_uninfectious_rates: SkylineVectorCoercible = 0,
|
|
130
131
|
removal_probabilities: SkylineVectorCoercible = 1,
|
|
131
|
-
migration_rates: SkylineMatrixCoercible =
|
|
132
|
-
reproduction_numbers_among_states: SkylineMatrixCoercible =
|
|
132
|
+
migration_rates: SkylineMatrixCoercible | None = None,
|
|
133
|
+
reproduction_numbers_among_states: SkylineMatrixCoercible | None = None,
|
|
133
134
|
states: list[str] | None = None,
|
|
134
135
|
) -> list[Event]:
|
|
135
136
|
N = 1 if states is None else len(states)
|
|
@@ -138,20 +139,20 @@ def get_epidemiological_events(
|
|
|
138
139
|
become_uninfectious_rates = skyline_vector(become_uninfectious_rates, N)
|
|
139
140
|
sampling_proportions = skyline_vector(sampling_proportions, N)
|
|
140
141
|
removal_probabilities = skyline_vector(removal_probabilities, N)
|
|
141
|
-
if N == 1 and reproduction_numbers_among_states:
|
|
142
|
-
raise ValueError(
|
|
143
|
-
f"Reproduction numbers among states require multiple states (got {states})."
|
|
144
|
-
)
|
|
145
|
-
reproduction_numbers_among_states = (
|
|
146
|
-
skyline_matrix(reproduction_numbers_among_states, N, N - 1) if N > 1 else 0
|
|
147
|
-
)
|
|
148
142
|
|
|
149
143
|
birth_rates = reproduction_numbers * become_uninfectious_rates
|
|
150
144
|
sampling_rates = become_uninfectious_rates * sampling_proportions
|
|
151
|
-
birth_rates_among_states = (
|
|
152
|
-
reproduction_numbers_among_states * become_uninfectious_rates
|
|
153
|
-
)
|
|
154
145
|
death_rates = become_uninfectious_rates - removal_probabilities * sampling_rates
|
|
146
|
+
birth_rates_among_states = None
|
|
147
|
+
if states is None and reproduction_numbers_among_states is not None:
|
|
148
|
+
raise ValueError(
|
|
149
|
+
f"Reproduction numbers among states require states to be provided."
|
|
150
|
+
)
|
|
151
|
+
elif reproduction_numbers_among_states is not None:
|
|
152
|
+
birth_rates_among_states = (
|
|
153
|
+
skyline_matrix(reproduction_numbers_among_states, N, N - 1)
|
|
154
|
+
* become_uninfectious_rates
|
|
155
|
+
)
|
|
155
156
|
|
|
156
157
|
return get_canonical_events(
|
|
157
158
|
states=states,
|
|
@@ -169,32 +170,30 @@ def get_FBD_events(
|
|
|
169
170
|
turnover: SkylineVectorCoercible = 0,
|
|
170
171
|
sampling_proportions: SkylineVectorCoercible = 1,
|
|
171
172
|
removal_probabilities: SkylineVectorCoercible = 0,
|
|
172
|
-
migration_rates: SkylineMatrixCoercible =
|
|
173
|
-
diversification_between_types: SkylineMatrixCoercible =
|
|
173
|
+
migration_rates: SkylineMatrixCoercible | None = None,
|
|
174
|
+
diversification_between_types: SkylineMatrixCoercible | None = None,
|
|
174
175
|
states: list[str] | None = None,
|
|
175
|
-
):
|
|
176
|
+
) -> list[Event]:
|
|
176
177
|
N = 1 if states is None else len(states)
|
|
177
178
|
|
|
178
179
|
diversification = skyline_vector(diversification, N)
|
|
179
180
|
turnover = skyline_vector(turnover, N)
|
|
180
181
|
sampling_proportions = skyline_vector(sampling_proportions, N)
|
|
181
182
|
removal_probabilities = skyline_vector(removal_probabilities, N)
|
|
182
|
-
if N == 1 and diversification_between_types:
|
|
183
|
-
raise ValueError(
|
|
184
|
-
f"Diversification rates among states require multiple states (got {states})."
|
|
185
|
-
)
|
|
186
|
-
diversification_between_types = (
|
|
187
|
-
skyline_matrix(diversification_between_types, N, N - 1) if N > 1 else 0
|
|
188
|
-
)
|
|
189
183
|
|
|
190
184
|
birth_rates = diversification / (1 - turnover)
|
|
191
185
|
death_rates = turnover * birth_rates
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
186
|
+
sampling_rates_dividend = 1 - removal_probabilities * sampling_proportions
|
|
187
|
+
sampling_rates = sampling_proportions * death_rates / sampling_rates_dividend
|
|
188
|
+
birth_rates_among_states = None
|
|
189
|
+
if states is None and diversification_between_types is not None:
|
|
190
|
+
raise ValueError(
|
|
191
|
+
f"Diversification rates among states require states to be provided."
|
|
192
|
+
)
|
|
193
|
+
elif diversification_between_types is not None:
|
|
194
|
+
birth_rates_among_states = (
|
|
195
|
+
skyline_matrix(diversification_between_types, N, N - 1) + death_rates
|
|
196
|
+
)
|
|
198
197
|
|
|
199
198
|
return get_canonical_events(
|
|
200
199
|
states=states,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: phylogenie
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: Generate phylogenetic datasets with minimal setup effort
|
|
5
5
|
Author: Gabriele Marino
|
|
6
6
|
Author-email: gabmarino.8601@gmail.com
|
|
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
[](https://iqtree.github.io/doc/AliSim)
|
|
26
|
-
[](https://pypi.org/project/phylogenie/)
|
|
27
27
|
[](https://pypi.org/project/phylogenie/)
|
|
28
28
|
|
|
29
29
|
Phylogenie is a [Python](https://www.python.org/) package designed to easily simulate phylogenetic datasets—such as trees and multiple sequence alignments (MSAs)—with minimal setup effort. Simply specify the distributions from which your parameters should be sampled, and Phylogenie will handle the rest!
|
|
@@ -53,9 +53,6 @@ Phylogenie comes packed with useful features, including:
|
|
|
53
53
|
- **Arithmetic operations on parameters** 🧮
|
|
54
54
|
Perform flexible arithmetic operations between parameters directly within the config file.
|
|
55
55
|
|
|
56
|
-
- **Modular and extendible architecture** 🧩
|
|
57
|
-
Easily add new simulation backends as needed.
|
|
58
|
-
|
|
59
56
|
## 📦 Installation
|
|
60
57
|
Phylogenie requires [Python](https://www.python.org/) 3.10 to be installed on your system. There are several ways to install Python and managing different Python versions. One popular option is to use [pyenv](https://github.com/pyenv/pyenv).
|
|
61
58
|
|
|
@@ -83,7 +80,7 @@ It includes a collection of thoroughly commented configuration files, organized
|
|
|
83
80
|
|
|
84
81
|
For quick start, pick your favorite config file and run Phylogenie with:
|
|
85
82
|
```bash
|
|
86
|
-
phylogenie examples
|
|
83
|
+
phylogenie examples/config_file.yaml
|
|
87
84
|
```
|
|
88
85
|
This command will create the output dataset in the folder specified inside the configuration file, including data directories and metadata files for each dataset split defined in the config.
|
|
89
86
|
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
phylogenie/__init__.py,sha256=
|
|
2
|
-
phylogenie/generators/__init__.py,sha256=
|
|
1
|
+
phylogenie/__init__.py,sha256=1w_0H9lg7hI3b-NLjKuzc34GbJJGyjLq9LrlogecTzI,1759
|
|
2
|
+
phylogenie/generators/__init__.py,sha256=zsOxy28-9j9alOQLIgrOAFfmM58NNHO_NEtW-KXQXAY,888
|
|
3
3
|
phylogenie/generators/alisim.py,sha256=Psh_fAHHrJBCd1kqVtz_BdoVVmNvieHJRMmapQncJhM,2288
|
|
4
|
-
phylogenie/generators/configs.py,sha256=
|
|
4
|
+
phylogenie/generators/configs.py,sha256=uiqPvdGSwmItQmhRMT-s1xG7DVnfpwaDTZ_wztL1Pwo,1123
|
|
5
5
|
phylogenie/generators/dataset.py,sha256=Q8GsO6b4792VACvwle26QAsbeiyOGUqID2Q3-_urVS4,2543
|
|
6
|
-
phylogenie/generators/factories.py,sha256=
|
|
7
|
-
phylogenie/generators/trees.py,sha256=
|
|
6
|
+
phylogenie/generators/factories.py,sha256=lJ517JC0T8fVu_2NBNC1GUbMPQfRNeNpO5rGdxubQOA,6998
|
|
7
|
+
phylogenie/generators/trees.py,sha256=pSqnYslDMPl4OVsIUFgQu_Rtc2htlBVwhIWnYgSAr3s,8735
|
|
8
8
|
phylogenie/generators/typeguards.py,sha256=6WIQIy6huHok4vYqA9ym6g2kvyyXPggBONWwbiHtDiY,925
|
|
9
|
-
phylogenie/io.py,sha256=
|
|
9
|
+
phylogenie/io.py,sha256=ZXlofnSh7FX5UJiP0svRHrTraMSNgKa1GiAv0bMz7jU,2854
|
|
10
10
|
phylogenie/main.py,sha256=vtvSpQxBNlYABoFQ25czl-l3fIr4QRo3svWVd-jcArw,1170
|
|
11
11
|
phylogenie/msa.py,sha256=JDGyZUsAq6-m-SQjoCDjAkAZIxfgyl_PDIhdYn5HOow,2064
|
|
12
12
|
phylogenie/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
phylogenie/skyline/__init__.py,sha256=7pF4CUb4ZCLzNYJNhOjpuTOLTRhlK7L6ugfccNqjIGo,620
|
|
14
|
-
phylogenie/skyline/matrix.py,sha256=
|
|
14
|
+
phylogenie/skyline/matrix.py,sha256=BnIreEyCymWzo5jiFtLWXE33ck0pbOFNAfcJW7S2m2s,9147
|
|
15
15
|
phylogenie/skyline/parameter.py,sha256=CJ5OEyRQG2Tg1WJWQ1IpfX-6hjJv80Zj8lMoRke5nnQ,4648
|
|
16
16
|
phylogenie/skyline/vector.py,sha256=becZlWLeT12mvpDC5MLGXZPKlgmbkY-DEcuhdQpnsSc,7135
|
|
17
17
|
phylogenie/tree.py,sha256=nNUQrTtUqgc-Z6CHflqROZ8W2ZL1YWGG7xeWmcKwZUU,1684
|
|
18
18
|
phylogenie/treesimulator/__init__.py,sha256=koyVZxKUeMtY1S2WUgqbeIthoGbdUmx9vP4svFi4a6U,459
|
|
19
|
-
phylogenie/treesimulator/events.py,sha256=
|
|
19
|
+
phylogenie/treesimulator/events.py,sha256=RfFodTxMAPUtI3ZkDmw5ekXCaRGnQ8Sy3tjR4oJ8CW4,9636
|
|
20
20
|
phylogenie/treesimulator/gillespie.py,sha256=p2bjwc6iyaf4mMI-xregJwOnXkjT2tIhxXbcGncQ5b0,2293
|
|
21
21
|
phylogenie/treesimulator/model.py,sha256=pPl4JYnBIHjWeSgpIypaDOes11tA4bFAGuMRArXbsVo,3577
|
|
22
22
|
phylogenie/typeguards.py,sha256=WBOSJSaOC8VDtrYoA2w_AYEXTpyKdCfmsM29KaKXl3A,1350
|
|
23
23
|
phylogenie/typings.py,sha256=O1X6lGKTjJ2YJz3ApQ-rYb_tEJNUIcHdUIeYlSM4s5o,500
|
|
24
|
-
phylogenie-2.0.
|
|
25
|
-
phylogenie-2.0.
|
|
26
|
-
phylogenie-2.0.
|
|
27
|
-
phylogenie-2.0.
|
|
28
|
-
phylogenie-2.0.
|
|
24
|
+
phylogenie-2.0.3.dist-info/LICENSE.txt,sha256=NUrDqElK-eD3I0WqC004CJsy6cs0JgsAoebDv_42-pw,1071
|
|
25
|
+
phylogenie-2.0.3.dist-info/METADATA,sha256=VoJ3oxfg0YcD-uXcYE4iE-v2vXh3TQRc_Sp8aEN-pmY,5456
|
|
26
|
+
phylogenie-2.0.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
27
|
+
phylogenie-2.0.3.dist-info/entry_points.txt,sha256=Rt6_usN0FkBX1ZfiqCirjMN9FKOgFLG8rydcQ8kugeE,51
|
|
28
|
+
phylogenie-2.0.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|