bella-companion 0.0.44__py3-none-any.whl → 0.0.46__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.

Potentially problematic release.


This version of bella-companion might be problematic. Click here for more details.

Files changed (59) hide show
  1. bella_companion/__pycache__/__init__.cpython-310.pyc +0 -0
  2. bella_companion/__pycache__/cli.cpython-310.pyc +0 -0
  3. bella_companion/cli.py +9 -4
  4. bella_companion/eucovid/__pycache__/__init__.cpython-310.pyc +0 -0
  5. bella_companion/eucovid/__pycache__/run_beast.cpython-310.pyc +0 -0
  6. bella_companion/eucovid/run_beast.py +80 -73
  7. bella_companion/platyrrhine/__init__.py +2 -2
  8. bella_companion/platyrrhine/__pycache__/__init__.cpython-310.pyc +0 -0
  9. bella_companion/platyrrhine/__pycache__/results.cpython-310.pyc +0 -0
  10. bella_companion/platyrrhine/__pycache__/run_beast.cpython-310.pyc +0 -0
  11. bella_companion/platyrrhine/__pycache__/summarize.cpython-310.pyc +0 -0
  12. bella_companion/platyrrhine/__pycache__/summarize_logs.cpython-310.pyc +0 -0
  13. bella_companion/platyrrhine/results.py +146 -24
  14. bella_companion/platyrrhine/run_beast.py +12 -11
  15. bella_companion/platyrrhine/{summarize_logs.py → summarize.py} +6 -6
  16. bella_companion/simulations/__init__.py +2 -2
  17. bella_companion/simulations/__pycache__/__init__.cpython-310.pyc +0 -0
  18. bella_companion/simulations/__pycache__/features.cpython-310.pyc +0 -0
  19. bella_companion/simulations/__pycache__/generate_data.cpython-310.pyc +0 -0
  20. bella_companion/simulations/__pycache__/generate_figures.cpython-310.pyc +0 -0
  21. bella_companion/simulations/__pycache__/metrics.cpython-310.pyc +0 -0
  22. bella_companion/simulations/__pycache__/run_beast.cpython-310.pyc +0 -0
  23. bella_companion/simulations/__pycache__/summarize.cpython-310.pyc +0 -0
  24. bella_companion/simulations/__pycache__/summarize_logs.cpython-310.pyc +0 -0
  25. bella_companion/simulations/figures/__pycache__/__init__.cpython-310.pyc +0 -0
  26. bella_companion/simulations/figures/__pycache__/epi_multitype.cpython-310.pyc +0 -0
  27. bella_companion/simulations/figures/__pycache__/epi_skyline.cpython-310.pyc +0 -0
  28. bella_companion/simulations/figures/__pycache__/fbd_2traits.cpython-310.pyc +0 -0
  29. bella_companion/simulations/figures/__pycache__/fbd_no_traits.cpython-310.pyc +0 -0
  30. bella_companion/simulations/figures/__pycache__/scenarios.cpython-310.pyc +0 -0
  31. bella_companion/simulations/figures/__pycache__/utils.cpython-310.pyc +0 -0
  32. bella_companion/simulations/figures/epi_multitype.py +3 -3
  33. bella_companion/simulations/figures/epi_skyline.py +1 -1
  34. bella_companion/simulations/figures/explain/__pycache__/__init__.cpython-310.pyc +0 -0
  35. bella_companion/simulations/figures/explain/__pycache__/pdp.cpython-310.pyc +0 -0
  36. bella_companion/simulations/figures/explain/__pycache__/shap.cpython-310.pyc +0 -0
  37. bella_companion/simulations/figures/fbd_2traits.py +3 -3
  38. bella_companion/simulations/figures/fbd_no_traits.py +1 -3
  39. bella_companion/simulations/generate_figures.py +0 -9
  40. bella_companion/simulations/metrics.py +1 -1
  41. bella_companion/simulations/run_beast.py +5 -1
  42. bella_companion/simulations/scenarios/__pycache__/__init__.cpython-310.pyc +0 -0
  43. bella_companion/simulations/scenarios/__pycache__/common.cpython-310.pyc +0 -0
  44. bella_companion/simulations/scenarios/__pycache__/epi_multitype.cpython-310.pyc +0 -0
  45. bella_companion/simulations/scenarios/__pycache__/epi_skyline.cpython-310.pyc +0 -0
  46. bella_companion/simulations/scenarios/__pycache__/fbd_2traits.cpython-310.pyc +0 -0
  47. bella_companion/simulations/scenarios/__pycache__/fbd_no_traits.cpython-310.pyc +0 -0
  48. bella_companion/simulations/scenarios/__pycache__/scenario.cpython-310.pyc +0 -0
  49. bella_companion/simulations/{summarize_logs.py → summarize.py} +2 -2
  50. bella_companion/utils/__pycache__/__init__.cpython-310.pyc +0 -0
  51. bella_companion/utils/__pycache__/beast.cpython-310.pyc +0 -0
  52. bella_companion/utils/__pycache__/explain.cpython-310.pyc +0 -0
  53. bella_companion/utils/__pycache__/slurm.cpython-310.pyc +0 -0
  54. {bella_companion-0.0.44.dist-info → bella_companion-0.0.46.dist-info}/METADATA +3 -3
  55. bella_companion-0.0.46.dist-info/RECORD +116 -0
  56. bella_companion-0.0.44.dist-info/RECORD +0 -78
  57. {bella_companion-0.0.44.dist-info → bella_companion-0.0.46.dist-info}/WHEEL +0 -0
  58. {bella_companion-0.0.44.dist-info → bella_companion-0.0.46.dist-info}/entry_points.txt +0 -0
  59. {bella_companion-0.0.44.dist-info → bella_companion-0.0.46.dist-info}/top_level.txt +0 -0
bella_companion/cli.py CHANGED
@@ -2,15 +2,16 @@ import argparse
2
2
  import os
3
3
  from pathlib import Path
4
4
 
5
+ import matplotlib.pyplot as plt
5
6
  from dotenv import load_dotenv
6
7
 
7
8
  from bella_companion.eucovid import run_beast as run_eucovid_beast
8
9
  from bella_companion.platyrrhine import plot_platyrrhine_results
9
10
  from bella_companion.platyrrhine import run_beast as run_platyrrhine
10
- from bella_companion.platyrrhine import summarize_logs as summarize_platyrrhine
11
+ from bella_companion.platyrrhine import summarize as summarize_platyrrhine
11
12
  from bella_companion.simulations import generate_data, generate_figures, print_metrics
12
13
  from bella_companion.simulations import run_beast as run_simulations
13
- from bella_companion.simulations import summarize_logs as summarize_simulations
14
+ from bella_companion.simulations import summarize as summarize_simulations
14
15
 
15
16
 
16
17
  def main():
@@ -21,12 +22,16 @@ def main():
21
22
  os.getenv("JAVA_OPTIONS", ""),
22
23
  f"-jar {Path(__file__).parent / 'BELLA.jar'}",
23
24
  f"-version_file {Path(__file__).parent / 'version.xml'}",
24
- "-seed 42",
25
25
  "-overwrite",
26
26
  "-statefile /tmp/state",
27
- "-DFout /dev/null",
28
27
  ]
29
28
  )
29
+ plt.rcParams["pdf.fonttype"] = 42
30
+ plt.rcParams["xtick.labelsize"] = 14
31
+ plt.rcParams["ytick.labelsize"] = 14
32
+ plt.rcParams["font.size"] = 14
33
+ plt.rcParams["figure.constrained_layout.use"] = True
34
+ plt.rcParams["lines.linewidth"] = 3
30
35
 
31
36
  parser = argparse.ArgumentParser(
32
37
  prog="bella",
@@ -33,79 +33,86 @@ def run_beast():
33
33
  ]
34
34
  )
35
35
 
36
- os.makedirs(output_dir / "Nonparametric", exist_ok=True)
37
- submit_job(
38
- " ".join(
39
- [
40
- os.environ["BELLA_RUN_BEAST_CMD"],
41
- f"-D aligned_fasta={msa_file}",
42
- f"-prefix {output_dir / 'Nonparametric'}{os.sep}",
43
- str(beast_configs_dir / "Nonparametric.xml"),
44
- ]
45
- ),
46
- base_log_dir / "Nonparametric",
47
- cpus=128,
48
- mem_per_cpu=12000,
49
- )
50
-
51
- os.makedirs(output_dir / "all-predictors-GLM", exist_ok=True)
52
- submit_job(
53
- " ".join(
54
- [
55
- os.environ["BELLA_RUN_BEAST_CMD"],
56
- all_predictors_data,
57
- f"-prefix {output_dir / 'all-predictors-GLM'}{os.sep}",
58
- str(beast_configs_dir / "GLM.xml"),
59
- ]
60
- ),
61
- base_log_dir / "all-predictors-GLM",
62
- cpus=128,
63
- mem_per_cpu=12000,
64
- )
36
+ for seed in range(1, 3):
37
+ run_beast_cmd = [os.environ["BELLA_RUN_BEAST_CMD"], f"-seed {42 + seed}"]
65
38
 
66
- os.makedirs(output_dir / "flights-GLM", exist_ok=True)
67
- submit_job(
68
- " ".join(
69
- [
70
- os.environ["BELLA_RUN_BEAST_CMD"],
71
- flight_predictor_data,
72
- f"-prefix {output_dir / 'flights-GLM'}{os.sep}",
73
- str(beast_configs_dir / "GLM.xml"),
74
- ]
75
- ),
76
- base_log_dir / "flights-GLM",
77
- cpus=128,
78
- mem_per_cpu=12000,
79
- )
39
+ """
40
+ os.makedirs(output_dir / "Nonparametric", exist_ok=True)
41
+ submit_job(
42
+ " ".join(
43
+ [
44
+ *run_beast_cmd,
45
+ f"-D aligned_fasta={msa_file}",
46
+ f"-prefix {output_dir / 'Nonparametric'}{os.sep}{seed}-",
47
+ str(beast_configs_dir / "Nonparametric.xml"),
48
+ ]
49
+ ),
50
+ base_log_dir / "Nonparametric" / str(seed),
51
+ cpus=128,
52
+ mem_per_cpu=12000,
53
+ )
54
+ """
80
55
 
81
- os.makedirs(output_dir / "all-predictors-MLP", exist_ok=True)
82
- submit_job(
83
- " ".join(
84
- [
85
- os.environ["BELLA_RUN_BEAST_CMD"],
86
- f'-D layersRange="0,1,2",nodes="16 8"',
87
- all_predictors_data,
88
- f"-prefix {output_dir / 'all-predictors-MLP'}{os.sep}",
89
- str(beast_configs_dir / "MLP.xml"),
90
- ]
91
- ),
92
- base_log_dir / "all-predictors-MLP",
93
- cpus=128,
94
- mem_per_cpu=12000,
95
- )
56
+ os.makedirs(output_dir / "all-predictors-GLM", exist_ok=True)
57
+ submit_job(
58
+ " ".join(
59
+ [
60
+ *run_beast_cmd,
61
+ all_predictors_data,
62
+ f"-prefix {output_dir / 'all-predictors-GLM'}{os.sep}{seed}-",
63
+ str(beast_configs_dir / "GLM.xml"),
64
+ ]
65
+ ),
66
+ base_log_dir / "Nonparametric" / str(seed),
67
+ cpus=128,
68
+ mem_per_cpu=12000,
69
+ )
70
+ """
71
+ os.makedirs(output_dir / "flights-GLM", exist_ok=True)
72
+ submit_job(
73
+ " ".join(
74
+ [
75
+ *run_beast_cmd,
76
+ flight_predictor_data,
77
+ f"-prefix {output_dir / 'flights-GLM'}{os.sep}{seed}-",
78
+ str(beast_configs_dir / "GLM.xml"),
79
+ ]
80
+ ),
81
+ base_log_dir / "Nonparametric" / str(seed),
82
+ cpus=128,
83
+ mem_per_cpu=12000,
84
+ )
85
+ """
96
86
 
97
- os.makedirs(output_dir / "flights-MLP", exist_ok=True)
98
- submit_job(
99
- " ".join(
100
- [
101
- os.environ["BELLA_RUN_BEAST_CMD"],
102
- f'-D layersRange="0,1,2",nodes="16 8"',
103
- flight_predictor_data,
104
- f"-prefix {output_dir / 'flights-MLP'}{os.sep}",
105
- str(beast_configs_dir / "MLP.xml"),
106
- ]
107
- ),
108
- base_log_dir / "flights-MLP",
109
- cpus=128,
110
- mem_per_cpu=12000,
111
- )
87
+ os.makedirs(output_dir / "all-predictors-MLP", exist_ok=True)
88
+ submit_job(
89
+ " ".join(
90
+ [
91
+ *run_beast_cmd,
92
+ '-D layersRange="0,1,2",nodes="16 8"',
93
+ all_predictors_data,
94
+ f"-prefix {output_dir / 'all-predictors-MLP'}{os.sep}{seed}-",
95
+ str(beast_configs_dir / "MLP.xml"),
96
+ ]
97
+ ),
98
+ base_log_dir / "Nonparametric" / str(seed),
99
+ cpus=128,
100
+ mem_per_cpu=12000,
101
+ )
102
+ """
103
+ os.makedirs(output_dir / "flights-MLP", exist_ok=True)
104
+ submit_job(
105
+ " ".join(
106
+ [
107
+ *run_beast_cmd,
108
+ '-D layersRange="0,1,2",nodes="16 8"',
109
+ flight_predictor_data,
110
+ f"-prefix {output_dir / 'flights-MLP'}{os.sep}{seed}-",
111
+ str(beast_configs_dir / "MLP.xml"),
112
+ ]
113
+ ),
114
+ base_log_dir / "Nonparametric" / str(seed),
115
+ cpus=128,
116
+ mem_per_cpu=12000,
117
+ )
118
+ """
@@ -1,5 +1,5 @@
1
1
  from bella_companion.platyrrhine.results import plot_platyrrhine_results
2
2
  from bella_companion.platyrrhine.run_beast import run_beast
3
- from bella_companion.platyrrhine.summarize_logs import summarize_logs
3
+ from bella_companion.platyrrhine.summarize import summarize
4
4
 
5
- __all__ = ["plot_platyrrhine_results", "run_beast", "summarize_logs"]
5
+ __all__ = ["plot_platyrrhine_results", "run_beast", "summarize"]
@@ -4,46 +4,160 @@ from pathlib import Path
4
4
  import matplotlib.pyplot as plt
5
5
  import numpy as np
6
6
  import polars as pl
7
+ from matplotlib.colors import LinearSegmentedColormap, ListedColormap
7
8
  from numpy.typing import NDArray
8
- from phylogenie import get_node_depths, load_newick
9
+ from phylogenie import draw_tree, get_node_depths, load_newick, load_nexus
9
10
 
11
+ DATA_DIR = Path(__file__).parent / "data"
12
+ CHANGE_TIMES = (
13
+ pl.read_csv(DATA_DIR / "change_times.csv", has_header=False).to_series().to_list()
14
+ )
10
15
 
11
- def _plot_predictions(output_dir: Path):
12
- log_summaries_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"])
13
- log_summary = pl.read_csv(log_summaries_dir / "platyrrhine" / "MLP.csv")
14
16
 
15
- data_dir = Path(__file__).parent / "data"
16
- change_times = (
17
- pl.read_csv(data_dir / "change_times.csv", has_header=False)
18
- .to_series()
19
- .to_list()
20
- )
17
+ def _plot_marginal_rates(output_dir: Path, trees_file: str | Path):
18
+ trees = load_newick(trees_file)
19
+ all_node_depths = [get_node_depths(tree) for tree in trees]
20
+ max_time = max(max(node_depths.values()) for node_depths in all_node_depths)
21
+ time_bins = np.array(list(reversed([0.0, *CHANGE_TIMES, max_time])))
22
+ for tree in trees:
23
+ for node in tree:
24
+ node["diversificationRateSP"] = node["birthRateSP"] - node["deathRateSP"]
25
+
26
+ for i, rate in enumerate(["birthRateSP", "deathRateSP", "diversificationRateSP"]):
27
+ marginal_rates: list[list[float]] = [[] for _ in range(len(CHANGE_TIMES) + 1)]
28
+ for tree, node_depths in zip(trees, all_node_depths):
29
+ root_age = tree.height
30
+ for node in tree:
31
+ if node.parent is None:
32
+ marginal_rates[0].append(node[rate])
33
+ continue
34
+ parent_age = root_age - node_depths[node.parent] # pyright: ignore
35
+ node_age = root_age - node_depths[node]
36
+ t1 = np.where(time_bins >= parent_age)[0][-1]
37
+ t2 = np.where(time_bins > node_age)[0][-1]
38
+ for t in range(t1, t2 + 1):
39
+ marginal_rates[t].append(node[rate])
40
+
41
+ median = [float(np.median(rates)) for rates in marginal_rates]
42
+ lower = [float(np.percentile(rates, 2.5)) for rates in marginal_rates]
43
+ upper = [float(np.percentile(rates, 97.5)) for rates in marginal_rates]
44
+ plt.step( # pyright: ignore
45
+ time_bins, [median[0], *median], color=f"C{i}", label=type
46
+ )
47
+ plt.fill_between( # pyright: ignore
48
+ time_bins,
49
+ [lower[0], *lower],
50
+ [upper[0], *upper],
51
+ color=f"C{i}",
52
+ alpha=0.2,
53
+ step="pre",
54
+ )
55
+
56
+ plt.gca().invert_xaxis()
57
+ plt.xlabel("Time (mya)") # pyright: ignore
58
+ plt.ylabel( # pyright: ignore
59
+ r"$\lambda$"
60
+ if rate == "birthRateSP"
61
+ else r"$\mu$"
62
+ if rate == "deathRateSP"
63
+ else r"$d$"
64
+ )
65
+ plt.savefig(output_dir / f"marginal-{rate}.svg") # pyright: ignore
66
+ plt.close()
67
+
68
+
69
+ def _plot_tree(output_dir: Path, tree_file: str | Path):
70
+ sample_trees = load_nexus(tree_file)
71
+ trees = [sample_trees[f"STATE_{i * 100_000}"] for i in range(11, 101)]
72
+
73
+ for tree in trees:
74
+ for node in tree:
75
+ if node.parent is not None and not node.branch_length:
76
+ node.parent.remove_child(node)
77
+
78
+ avg_tree = trees[0].copy()
79
+ for node in avg_tree:
80
+ node.clear()
81
+ for avg_node, nodes in zip(avg_tree, zip(*trees)):
82
+ avg_node["birthRateSP"] = np.mean([n["birthRateSP"] for n in nodes])
83
+ avg_node["deathRateSP"] = np.mean([n["deathRateSP"] for n in nodes])
84
+ avg_node["diversificationRateSP"] = (
85
+ avg_node["birthRateSP"] - avg_node["deathRateSP"]
86
+ )
87
+ avg_node["type"] = int(np.median([int(n["type"]) for n in nodes]))
88
+
89
+ avg_tree.ladderize()
90
+ cmaps: dict[str, LinearSegmentedColormap] = {
91
+ "birthRateSP": plt.cm.Blues, # pyright: ignore
92
+ "deathRateSP": plt.cm.Oranges, # pyright: ignore
93
+ "diversificationRateSP": plt.cm.Greens, # pyright: ignore
94
+ "type": plt.cm.Purples, # pyright: ignore
95
+ }
96
+ for color_by, cm in cmaps.items():
97
+ ax = plt.gca()
98
+ if color_by == "type":
99
+ cmap = ListedColormap(cm(np.linspace(0.3, 1, 4))) # pyright: ignore
100
+ draw_tree(
101
+ avg_tree,
102
+ ax,
103
+ color_by=color_by,
104
+ legend_kwargs={"title": "Body mass", "loc": "upper left"},
105
+ colormap=cmap,
106
+ )
107
+ else:
108
+ cmap = LinearSegmentedColormap.from_list(
109
+ "cmap",
110
+ cm(np.linspace(0.2, 1, 256)), # pyright: ignore
111
+ )
112
+ draw_tree(
113
+ avg_tree,
114
+ ax,
115
+ color_by=color_by,
116
+ hist_axes_kwargs={
117
+ "loc": "upper left",
118
+ "bbox_to_anchor": (0.06, 0, 1, 1),
119
+ "bbox_transform": ax.transAxes,
120
+ },
121
+ colormap=cmap,
122
+ )
123
+ height = avg_tree.height
124
+ ticks = np.arange(height, 0, -10)
125
+ ax.set_xticks(ticks, [str(round(height - t)) for t in ticks]) # pyright: ignore
126
+ ax.set_xlabel("Time (mya)") # pyright: ignore
127
+ plt.savefig(output_dir / f"{color_by}-tree.svg") # pyright: ignore
128
+ plt.close()
129
+
130
+
131
+ def _plot_predictions(output_dir: Path, log_summary_file: str | Path):
132
+ log_summary = pl.read_csv(log_summary_file)
133
+
21
134
  max_time = max(
22
135
  max(get_node_depths(tree).values())
23
- for tree in load_newick(data_dir / "trees.nwk")
136
+ for tree in load_newick(DATA_DIR / "trees.nwk")
24
137
  )
25
- time_bins = list(reversed([0.0, *change_times, max_time]))
138
+ time_bins = list(reversed([0.0, *CHANGE_TIMES, max_time]))
26
139
 
140
+ gradient = np.linspace(0.4, 0.9, 4)
27
141
  colors: dict[str, NDArray[np.floating]] = {
28
- "birth": plt.cm.Blues(np.linspace(0.4, 0.9, 4)), # pyright: ignore
29
- "death": plt.cm.Oranges(np.linspace(0.4, 0.9, 4)), # pyright: ignore
30
- "diversification": plt.cm.Greens(np.linspace(0.4, 0.9, 4)), # pyright: ignore
142
+ "birthRateSP": plt.cm.Blues(gradient), # pyright: ignore
143
+ "deathRateSP": plt.cm.Oranges(gradient), # pyright: ignore
144
+ "diversificationRateSP": plt.cm.Greens(gradient), # pyright: ignore
31
145
  }
32
- for rate in ["birth", "death", "diversification"]:
146
+ for rate in colors:
33
147
  for type in [0, 1, 2, 3]:
34
- if rate == "diversification":
148
+ if rate == "diversificationRateSP":
35
149
  estimates = log_summary.select(
36
150
  [
37
151
  pl.col(f"birthRateSPi{i}_{type}_median")
38
152
  - pl.col(f"deathRateSPi{i}_{type}_median")
39
- for i in range(len(change_times) + 1)
153
+ for i in range(len(CHANGE_TIMES) + 1)
40
154
  ]
41
155
  ).to_numpy()
42
156
  else:
43
157
  estimates = log_summary.select(
44
158
  [
45
- pl.col(f"{rate}RateSPi{i}_{type}_median")
46
- for i in range(len(change_times) + 1)
159
+ pl.col(f"{rate}i{i}_{type}_median")
160
+ for i in range(len(CHANGE_TIMES) + 1)
47
161
  ]
48
162
  ).to_numpy()
49
163
  median = np.median(estimates, axis=0)
@@ -52,18 +166,26 @@ def _plot_predictions(output_dir: Path):
52
166
  time_bins, [median[0], *median], color=color, label=type
53
167
  )
54
168
 
55
- ax = plt.gca()
56
- ax.invert_xaxis()
169
+ plt.gca().invert_xaxis()
57
170
  plt.legend(title="Body mass") # pyright: ignore
58
171
  plt.xlabel("Time (mya)") # pyright: ignore
59
172
  plt.ylabel( # pyright: ignore
60
- r"$\lambda$" if rate == "birth" else r"$\mu$" if rate == "death" else r"$d$"
173
+ r"$\lambda$"
174
+ if rate == "birthRateSP"
175
+ else r"$\mu$"
176
+ if rate == "deathRateSP"
177
+ else r"$d$"
61
178
  )
179
+ if rate in ["birthRateSP", "deathRateSP"]:
180
+ plt.ylim(0, 0.4) # pyright: ignore
62
181
  plt.savefig(output_dir / f"{rate}-predictions.svg") # pyright: ignore
63
182
  plt.close()
64
183
 
65
184
 
66
185
  def plot_platyrrhine_results():
186
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"]) / "platyrrhine"
67
187
  output_dir = Path(os.environ["BELLA_FIGURES_DIR"]) / "platyrrhine"
68
188
  os.makedirs(output_dir, exist_ok=True)
69
- _plot_predictions(output_dir)
189
+ _plot_predictions(output_dir, summaries_dir / "MLP.csv")
190
+ _plot_tree(output_dir, summaries_dir / "sample-trees.nexus")
191
+ _plot_marginal_rates(output_dir, summaries_dir / "trees.nwk")
@@ -39,22 +39,23 @@ def run_beast():
39
39
  command = " ".join(
40
40
  [
41
41
  os.environ["BELLA_RUN_BEAST_CMD"],
42
+ "-seed 42",
42
43
  f'-D types="{",".join(types)}"',
43
- f'-D startTypePriorProbs="0.25 0.25 0.25 0.25"',
44
- f"-D birthRateUpper=5",
45
- f"-D deathRateUpper=5",
46
- f'-D samplingChangeTimes="2.58 5.333 23.03"',
47
- f"-D samplingRateUpper=5",
48
- f'-D samplingRateInit="2.5 2.5 2.5 2.5"',
49
- f"-D migrationRateUpper=5",
50
- f'-D migrationRateInit="2.5 0 0 2.5 2.5 0 0 2.5 2.5 0 0 2.5"',
51
- f'-D nodes="16 8"',
52
- f'-D layersRange="0,1,2"',
44
+ '-D startTypePriorProbs="0.25 0.25 0.25 0.25"',
45
+ "-D birthRateUpper=5",
46
+ "-D deathRateUpper=5",
47
+ '-D samplingChangeTimes="2.58 5.333 23.03"',
48
+ "-D samplingRateUpper=5",
49
+ '-D samplingRateInit="2.5 2.5 2.5 2.5"',
50
+ "-D migrationRateUpper=5",
51
+ '-D migrationRateInit="2.5 0 0 2.5 2.5 0 0 2.5 2.5 0 0 2.5"',
52
+ '-D nodes="16 8"',
53
+ '-D layersRange="0,1,2"',
53
54
  f"-D treeFile={tree_file}",
54
55
  f"-D treeIndex={i}",
55
56
  f"-D changeTimesFile={change_times_file}",
56
57
  f"-D traitsFile={traits_file}",
57
- f"-D traitValueCol=3",
58
+ "-D traitValueCol=3",
58
59
  f"-D processLength={process_length}",
59
60
  f'-D timePredictor="{time_predictor}"',
60
61
  f'-D log10BMPredictor="{log10BM_predictor}"',
@@ -5,13 +5,13 @@ from pathlib import Path
5
5
 
6
6
  import joblib
7
7
  import polars as pl
8
- from phylogenie import Tree, load_nexus
8
+ from phylogenie import Tree, dump_newick, load_nexus
9
9
  from tqdm import tqdm
10
10
 
11
11
  from bella_companion.utils import read_weights_dir, summarize_logs_dir
12
12
 
13
13
 
14
- def summarize_logs():
14
+ def summarize():
15
15
  data_dir = Path(__file__).parent / "data"
16
16
  change_times = pl.read_csv(data_dir / "change_times.csv", has_header=False)
17
17
  n_time_bins = len(change_times) + 1
@@ -28,14 +28,14 @@ def summarize_logs():
28
28
  )
29
29
  weights = read_weights_dir(logs_dir)
30
30
 
31
- summaries_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"], "platyrrhine")
31
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"], "platyrrhine")
32
32
  os.makedirs(summaries_dir, exist_ok=True)
33
33
  summaries.write_csv(summaries_dir / "MLP.csv")
34
34
  joblib.dump(weights, summaries_dir / "MLP.weights.pkl")
35
35
 
36
36
  trees: list[Tree] = []
37
37
  for tree_file in tqdm(glob(str(logs_dir / "*.trees")), "Summarizing trees"):
38
- trees.extend(list(load_nexus(tree_file).values())[:-10])
39
- joblib.dump(trees, summaries_dir / "trees.pkl")
38
+ trees.extend(list(load_nexus(tree_file).values())[-10:])
39
+ dump_newick(trees, summaries_dir / "trees.nwk")
40
40
 
41
- shutil.copy(logs_dir / "0.trees", summaries_dir / "sample-tree.nexus")
41
+ shutil.copy(logs_dir / "0.trees", summaries_dir / "sample-trees.nexus")
@@ -2,12 +2,12 @@ from bella_companion.simulations.generate_data import generate_data
2
2
  from bella_companion.simulations.generate_figures import generate_figures
3
3
  from bella_companion.simulations.metrics import print_metrics
4
4
  from bella_companion.simulations.run_beast import run_beast
5
- from bella_companion.simulations.summarize_logs import summarize_logs
5
+ from bella_companion.simulations.summarize import summarize
6
6
 
7
7
  __all__ = [
8
8
  "generate_data",
9
9
  "generate_figures",
10
10
  "print_metrics",
11
11
  "run_beast",
12
- "summarize_logs",
12
+ "summarize",
13
13
  ]
@@ -58,10 +58,10 @@ def plot_epi_multitype_results():
58
58
  output_dir = Path(os.environ["BELLA_FIGURES_DIR"]) / "epi-multitype"
59
59
  os.makedirs(output_dir, exist_ok=True)
60
60
 
61
- log_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"]) / "epi-multitype"
61
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"]) / "epi-multitype"
62
62
  model = "MLP-32_16"
63
- log_summary = pl.read_csv(log_dir / f"{model}.csv")
64
- weights = joblib.load(log_dir / f"{model}.weights.pkl")
63
+ log_summary = pl.read_csv(summaries_dir / f"{model}.csv")
64
+ weights = joblib.load(summaries_dir / f"{model}.weights.pkl")
65
65
  weights = [w["migrationRate"] for w in weights]
66
66
 
67
67
  _plot_predictions(log_summary, output_dir)
@@ -17,7 +17,7 @@ def plot_epi_skyline_results():
17
17
  base_output_dir = Path(os.environ["BELLA_FIGURES_DIR"]) / "epi-skyline"
18
18
 
19
19
  for i, reproduction_number in enumerate(REPRODUCTION_NUMBERS, start=1):
20
- summaries_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"]) / f"epi-skyline_{i}"
20
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"]) / f"epi-skyline_{i}"
21
21
  logs_summaries = {
22
22
  "Nonparametric": pl.read_csv(summaries_dir / "Nonparametric.csv"),
23
23
  "GLM": pl.read_csv(summaries_dir / "GLM.csv"),
@@ -58,10 +58,10 @@ def _plot_predictions(log_summary: pl.DataFrame, output_dir: Path):
58
58
  def plot_fbd_2traits_results():
59
59
  output_dir = Path(os.environ["BELLA_FIGURES_DIR"]) / "fbd-2traits"
60
60
 
61
- log_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"]) / "fbd-2traits"
61
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"]) / "fbd-2traits"
62
62
  model = "MLP-32_16"
63
- log_summary = pl.read_csv(log_dir / f"{model}.csv")
64
- weights = joblib.load(log_dir / f"{model}.weights.pkl")
63
+ log_summary = pl.read_csv(summaries_dir / f"{model}.csv")
64
+ weights = joblib.load(summaries_dir / f"{model}.weights.pkl")
65
65
 
66
66
  for rate in RATES:
67
67
  os.makedirs(output_dir / rate, exist_ok=True)
@@ -17,9 +17,7 @@ def plot_fbd_no_traits_results():
17
17
  base_output = Path(os.environ["BELLA_FIGURES_DIR"]) / "fbd-no-traits"
18
18
 
19
19
  for i, rates in enumerate(RATES, start=1):
20
- summaries_dir = (
21
- Path(os.environ["BELLA_LOG_SUMMARIES_DIR"]) / f"fbd-no-traits_{i}"
22
- )
20
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"]) / f"fbd-no-traits_{i}"
23
21
  logs_summaries = {
24
22
  "Nonparametric": pl.read_csv(summaries_dir / "Nonparametric.csv"),
25
23
  "GLM": pl.read_csv(summaries_dir / "GLM.csv"),
@@ -1,5 +1,3 @@
1
- import matplotlib.pyplot as plt
2
-
3
1
  from bella_companion.simulations.figures import (
4
2
  plot_epi_multitype_results,
5
3
  plot_epi_skyline_results,
@@ -10,13 +8,6 @@ from bella_companion.simulations.figures import (
10
8
 
11
9
 
12
10
  def generate_figures():
13
- plt.rcParams["pdf.fonttype"] = 42
14
- plt.rcParams["xtick.labelsize"] = 14
15
- plt.rcParams["ytick.labelsize"] = 14
16
- plt.rcParams["font.size"] = 14
17
- plt.rcParams["figure.constrained_layout.use"] = True
18
- plt.rcParams["lines.linewidth"] = 3
19
-
20
11
  plot_scenarios()
21
12
  plot_epi_skyline_results()
22
13
  plot_epi_multitype_results()
@@ -36,7 +36,7 @@ def _avg_ci_width(summary: pl.DataFrame, true_values: dict[str, float]) -> float
36
36
 
37
37
 
38
38
  def print_metrics():
39
- base_summaries_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"])
39
+ base_summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"])
40
40
  metrics = {}
41
41
  for name, scenario in SCENARIOS.items():
42
42
  summaries_dir = base_summaries_dir / name
@@ -56,7 +56,11 @@ def run_beast():
56
56
  f"-D lastSampleTime={max(get_node_depths(tree).values())}"
57
57
  )
58
58
 
59
- base_command = [os.environ["BELLA_RUN_BEAST_CMD"], *beast_args]
59
+ base_command = [
60
+ os.environ["BELLA_RUN_BEAST_CMD"],
61
+ "-seed 42",
62
+ *beast_args,
63
+ ]
60
64
  if model in ["Nonparametric", "GLM"]:
61
65
  command = " ".join(
62
66
  [*base_command, str(inference_configs_dir / f"{model}.xml")]
@@ -8,13 +8,13 @@ from bella_companion.simulations.scenarios import SCENARIOS
8
8
  from bella_companion.utils import read_weights_dir, summarize_logs_dir
9
9
 
10
10
 
11
- def summarize_logs():
11
+ def summarize():
12
12
  output_dir = Path(os.environ["BELLA_BEAST_OUTPUT_DIR"])
13
13
  with open(output_dir / "simulations_job_ids.json", "r") as f:
14
14
  job_ids: dict[str, dict[str, dict[str, str]]] = json.load(f)
15
15
 
16
16
  for scenario_name, scenario in SCENARIOS.items():
17
- summaries_dir = Path(os.environ["BELLA_LOG_SUMMARIES_DIR"]) / scenario_name
17
+ summaries_dir = Path(os.environ["BELLA_SUMMARIES_DIR"]) / scenario_name
18
18
  os.makedirs(summaries_dir, exist_ok=True)
19
19
  for model in job_ids[scenario_name]:
20
20
  logs_dir = output_dir / scenario_name / model
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bella-companion
3
- Version: 0.0.44
4
- Summary: Add your description here
3
+ Version: 0.0.46
4
+ Summary: Bayesian Evolutionary Layered Learning Architectures (BELLA) companion
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
7
7
  Requires-Dist: arviz>=0.22.0
8
8
  Requires-Dist: bella-lumiere>=0.0.14
9
9
  Requires-Dist: dotenv>=0.9.9
10
- Requires-Dist: phylogenie>=3.1.2
10
+ Requires-Dist: phylogenie>=3.1.4
11
11
  Requires-Dist: poetry>=2.2.1
12
12
  Requires-Dist: seaborn>=0.13.2
@@ -0,0 +1,116 @@
1
+ bella_companion/BELLA.jar,sha256=4mKDzPfz263rTqA9KS2f4Mc-UWGMuj8G48ZDonKSqVw,67408597
2
+ bella_companion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ bella_companion/cli.py,sha256=CrtV2CG6G1nKCCVu02gtNlpHNJHLnFtSaru-LFiHKKc,3014
4
+ bella_companion/version.xml,sha256=Gr3nsYqFhVNP0Mszl_IfilxefsPN8ZpQlGlB8OJSwnE,522
5
+ bella_companion/__pycache__/__init__.cpython-310.pyc,sha256=OWbv3-oQ0uVrCKYMlnplMpvDhv5Ytf3aYb7Eu_UONkU,151
6
+ bella_companion/__pycache__/cli.cpython-310.pyc,sha256=-k34T2uplWxW_fUrSVadFAYEDos-bvonW2RDeyHuj0A,2680
7
+ bella_companion/eucovid/__init__.py,sha256=09Ld_G7fZvCDCgEWsmaOyLVQ8pFc9QHAGnXKJ9Zm2AM,81
8
+ bella_companion/eucovid/run_beast.py,sha256=vIS0MiRAGYkQyr2qXeOCtNyaN4tkyRrxumCv_WC8vrc,3905
9
+ bella_companion/eucovid/__pycache__/__init__.cpython-310.pyc,sha256=cwLb8j-Jrl5beRcoZEtbpvQlG9KENPuB2F4fa1RBYIQ,248
10
+ bella_companion/eucovid/__pycache__/run_beast.cpython-310.pyc,sha256=jEqqaPBugV7B8YZQjNIgYnhpCwDOV21xyG1N_IbRdJo,1922
11
+ bella_companion/eucovid/beast_configs/GLM.xml,sha256=b5rAeKVEam3u2AGSJsm7EHB6LcC0l9bp1SyZT2QyjpI,10892
12
+ bella_companion/eucovid/beast_configs/MLP.xml,sha256=M0_B6t0bZpjCAQqAmjrFshW96pt9sNREcoLUjwchX6Q,10616
13
+ bella_companion/eucovid/beast_configs/Nonparametric.xml,sha256=n-t4sUfDS9AzC02tbIk5mx_RDg2l62ELhdR3I3_jjHE,17783
14
+ bella_companion/eucovid/data/case_data.tsv,sha256=XaSzZh5NcEMVt9d_XlQ19T8UuEkHGrjpSFXhe9IycNg,12412
15
+ bella_companion/eucovid/data/change_dates.tsv,sha256=_pmVFYiL4X9Pd79uYVgyz3sKeRap7xVcXk0OjqVhuVQ,227
16
+ bella_companion/eucovid/data/msa.fasta,sha256=sWaVSINSJDDLjmwlpl31JWM5VnKF7yViSpERI69glQc,4839354
17
+ bella_companion/eucovid/data/osi.tsv,sha256=iTDWL_-PnVQPg_-hWROXWKNFakDq_S1fEig1A_MqMVI,9228
18
+ bella_companion/eucovid/data/predictors/changetimes_all_7e.tsv,sha256=hH0xXD2lr_8RPQRqvENv6clPHauAXH22SGQHb3hlfzs,120
19
+ bella_companion/eucovid/data/predictors/changetimes_flights_4e.tsv,sha256=XEepIXKRwcKknJq4-ovKlorvCypGi67B8znuQ5f1LTg,60
20
+ bella_companion/eucovid/data/predictors/flight_pop_x_4e_ls.tsv,sha256=tMR9-tuGtC3rVABXUtNdV9irUX-9aCCVb_fwksHTn8U,1068
21
+ bella_companion/eucovid/data/predictors/all/closedborders_7e_nt.tsv,sha256=5gP-cEzgKSCvlK0_PlkrimYGEwOaLPO0GiiM4PIKU-M,280
22
+ bella_companion/eucovid/data/predictors/all/dist_7e_ls.tsv,sha256=rr71QPiJu35CYbySMJyH_GDX51D2iTIncZImwAXIvlo,1890
23
+ bella_companion/eucovid/data/predictors/all/flight_7e_ls.tsv,sha256=5WztZpQrjK7puERA1oxsCn5t2G1w9NGTGKjr85gMQ54,1873
24
+ bella_companion/eucovid/data/predictors/all/flight_pop_x_7e_ls.tsv,sha256=qfRTXyZItzEm8pxurhFYO-DvpJXD-J4lMH5eyZKF0aE,1862
25
+ bella_companion/eucovid/data/predictors/all/osi_x_7e_ls.tsv,sha256=kke2eHlVuc84qMj1WBllhBG2BQt7JHUWDZeiVoAP8Lw,1900
26
+ bella_companion/eucovid/data/predictors/all/osi_y_7e_ls.tsv,sha256=5YDXe4GstyyRKP15213cAAEm5lVFW_bC98R8ipc1XoE,1900
27
+ bella_companion/eucovid/data/predictors/all/pop_x_7e_ls.tsv,sha256=3fVYRQ1ylwsa7YptMU8f_xELwwqIF3Ux8akL9UaXKis,1904
28
+ bella_companion/eucovid/data/predictors/all/pop_y_7e_ls.tsv,sha256=Ku39Ts0HW9r5lThAZ01V7HJDi0aoRYs0aQs5EXlZCkQ,1904
29
+ bella_companion/eucovid/data/predictors/all/sharedborders_7e_nt.tsv,sha256=pPVT5DIaZuc3B0mSs-B3kw3G2zja1LfmL_xLwlNtLDo,280
30
+ bella_companion/platyrrhine/__init__.py,sha256=gySgNPoKaEdhcZppKMsCmS-aAcYw_rDEw0viz72Udaw,259
31
+ bella_companion/platyrrhine/beast_config.xml,sha256=bLzavt-Zd8cmSgQQnlCBfZ9KyM7d1inOGx12VNjPFb4,7056
32
+ bella_companion/platyrrhine/results.py,sha256=aRx9MkI43f5bhr-16UkShDH-_oMNFzhHxfU2WK1L3BY,7468
33
+ bella_companion/platyrrhine/run_beast.py,sha256=t1gUmn_HEXKqxgGXYCdohGDWeL-QEpW7r3bKXlRfdog,2494
34
+ bella_companion/platyrrhine/summarize.py,sha256=Qc3GE2vUspTqU_QjLdULvK0r7AZ3JTdqsBmd71izt7M,1356
35
+ bella_companion/platyrrhine/__pycache__/__init__.cpython-310.pyc,sha256=_7OOgWWr8apuTVm7TLhvmP41QHTDFlDNjTtJ9J3vpZc,425
36
+ bella_companion/platyrrhine/__pycache__/results.cpython-310.pyc,sha256=ytoolBYXSbQHjso0byIJXWwGSE94TeM5ko8L0tOCrTk,6627
37
+ bella_companion/platyrrhine/__pycache__/run_beast.cpython-310.pyc,sha256=Z5nfOPwht1yR_uDJoTt2Zj-ZR_Tr-QeIqGWtZYEBbBQ,2172
38
+ bella_companion/platyrrhine/__pycache__/summarize.cpython-310.pyc,sha256=m9ruJb4uO_az3qn4T8Iq3zPR0LSsFLBjeISn6y5-DXM,1622
39
+ bella_companion/platyrrhine/__pycache__/summarize_logs.cpython-310.pyc,sha256=yKvebBShpNqMoVI2g3VzseuJrMG43A8U8vF7Yg288AE,1616
40
+ bella_companion/platyrrhine/data/change_times.csv,sha256=tedobHbaY7-6M3V6F6HSqGAU9dpeeajR5mu1XGJfp6w,68
41
+ bella_companion/platyrrhine/data/traits.csv,sha256=N_mCnaM9Gy0Qot7-l_mK0vMvr7e_5BZ4bgUHpcoG9UM,3949
42
+ bella_companion/platyrrhine/data/trees.nwk,sha256=lpSiGUG5s3zE--IKPOyWrJ5vpJb_xAPnfxychs3YNIs,488232
43
+ bella_companion/simulations/__init__.py,sha256=gjO_QB2wp335l7UO-zA9fFQ5vmZauGItBuO-QZFu93E,439
44
+ bella_companion/simulations/features.py,sha256=DZOBpJGlQ0UinqUZYbEtoemZ2eQGVLV_i-DfpW31qJI,104
45
+ bella_companion/simulations/generate_data.py,sha256=edfhXrs76hl30i_xizup4z6qgzXZyaDzX_PVC62Ytpw,849
46
+ bella_companion/simulations/generate_figures.py,sha256=r3zGKnLGDpuVzzWVQIumkt1sTMl_4w1iKnVNy-fTJAg,371
47
+ bella_companion/simulations/metrics.py,sha256=kSX7-B4a-LDm1V--S8CvEJDktlJ8qkpo_gY6V7XbOXw,1930
48
+ bella_companion/simulations/run_beast.py,sha256=-L5PHkpPK-NGQoXxmeH7LMIWxtodvL4TOo-KkR2ISVQ,3299
49
+ bella_companion/simulations/summarize.py,sha256=hfYpgmv2irD8wNQ-GYtJA324w94SKoYhx0bpDG2bb3w,1207
50
+ bella_companion/simulations/__pycache__/__init__.cpython-310.pyc,sha256=IoVTIDdo1s8l5t8qtw71HwOMnHnc-HrfbapHEuY_ItA,588
51
+ bella_companion/simulations/__pycache__/features.cpython-310.pyc,sha256=lKPxu0fteOgho5ZuC0MNQJssIGZ1L5YP6G6wtdKZhH0,437
52
+ bella_companion/simulations/__pycache__/generate_data.cpython-310.pyc,sha256=02XU0jjLp_OpbdRXHCuESRb7gLIPc6r7ZlgWOt90oTc,1273
53
+ bella_companion/simulations/__pycache__/generate_figures.cpython-310.pyc,sha256=tU90zwDopaeqgz5v7p_uMnVmdZoRqxN84-zsiKu1t-U,560
54
+ bella_companion/simulations/__pycache__/metrics.cpython-310.pyc,sha256=39dzyU2PWUDpR0npJlO-MMha1jTFJ40sDQF9BLhPZRE,2652
55
+ bella_companion/simulations/__pycache__/run_beast.cpython-310.pyc,sha256=ByrndOcAAyCJ8vOCCSsISLPjGRMDzkDCsZAqMge2iAw,2635
56
+ bella_companion/simulations/__pycache__/summarize.cpython-310.pyc,sha256=bIi5Iwro1QlZ5iDtdoG_Ze4mW-2yWHglyeaRWpbUXdI,1340
57
+ bella_companion/simulations/__pycache__/summarize_logs.cpython-310.pyc,sha256=N3unUXsBHq5rrC4GHK6i0O0uzh71AIGdPFN3Lxb-el8,1359
58
+ bella_companion/simulations/beast_configs/epi-multitype/GLM.xml,sha256=VymAYsaZVuB3EPE0DCQSXpKepVq8pPjKaB5yhEpaVkE,4334
59
+ bella_companion/simulations/beast_configs/epi-multitype/MLP.xml,sha256=AoJyjvVcwKtut64d7sB2gnnenx5sXyuTTNCivykUyqU,4077
60
+ bella_companion/simulations/beast_configs/epi-multitype/Nonparametric.xml,sha256=DfCMcLM53b-XP9oIiQ9wJWOVTEP3GnoZaL5BMzLLfIQ,3208
61
+ bella_companion/simulations/beast_configs/epi-skyline/GLM.xml,sha256=7LtJhU7o7aQsnWK7ZIKj-mzmHgCn_RjxvKKbLIlp1Go,3619
62
+ bella_companion/simulations/beast_configs/epi-skyline/MLP.xml,sha256=ptoLM0FLDp54bUSxPm12qIvOYWyBkWR1e9VWVWjgU8E,3426
63
+ bella_companion/simulations/beast_configs/epi-skyline/Nonparametric.xml,sha256=LTiatqeAMiFfdD1leQ5TrGaJhsYwlkbMDpxqhVFOgUQ,2561
64
+ bella_companion/simulations/beast_configs/fbd-2traits/GLM.xml,sha256=Iff0eAShKLeOnlTmNu6044Wljtla3yckqo2LZ7mP6LY,5897
65
+ bella_companion/simulations/beast_configs/fbd-2traits/MLP.xml,sha256=RvF70fcnvoBcJxjyT4nELlFm94atSZpKm9d1aS-cJZ4,5428
66
+ bella_companion/simulations/beast_configs/fbd-2traits/Nonparametric.xml,sha256=ev6ZfMeCwMyK54G_4O8g-tbgoxoD3asxt71x91Cb1QY,3618
67
+ bella_companion/simulations/beast_configs/fbd-no-traits/GLM.xml,sha256=Caq7Gxqx-wYAu3_YkMikVqni3DjBv1Wt00sc1Upo1X8,4743
68
+ bella_companion/simulations/beast_configs/fbd-no-traits/MLP.xml,sha256=JE_cGh2DW5yPAXyXXr0D3DlovmV-aIbze7qrhENHK3w,4275
69
+ bella_companion/simulations/beast_configs/fbd-no-traits/Nonparametric.xml,sha256=m2xaHZwskCFInvVY1QH1fwQqH6p_fgESlPX2BbBeUhk,2822
70
+ bella_companion/simulations/figures/__init__.py,sha256=LeHPeBb4vxJo0pxLZi_9s6iRBKvWC32yhAZBByqK2_8,590
71
+ bella_companion/simulations/figures/epi_multitype.py,sha256=Ni-hqIiPw0XV_WlypVQD7M1wlpDVz089SqIHly6NsLM,2643
72
+ bella_companion/simulations/figures/epi_skyline.py,sha256=SyFOsb8dwLuoN5IOCiQbG-ZCPDS8Wua_LL-cOuLtu_s,1673
73
+ bella_companion/simulations/figures/fbd_2traits.py,sha256=eU302inVrFDFvKLqNb6t7Z69HLrG0tBrDqRp9AlIjac,2742
74
+ bella_companion/simulations/figures/fbd_no_traits.py,sha256=-_c-qnrFAYZ7vd4Ieeb-uYA3VUwURfrcP11BN9PG8JY,1907
75
+ bella_companion/simulations/figures/scenarios.py,sha256=gbMz1TUxxT2RSIq2kQlFioNdgSHk-gQY2OQuf6-7Fww,2817
76
+ bella_companion/simulations/figures/utils.py,sha256=0M5OrxaEuqcj9rR2uAc_O7utQvhEceZGH0sKrGRWaWs,3129
77
+ bella_companion/simulations/figures/__pycache__/__init__.cpython-310.pyc,sha256=hCtbzMhTC_u8-mCqttWA6ZIWKWxEMuqCZRBPcc2UJrg,693
78
+ bella_companion/simulations/figures/__pycache__/epi_multitype.cpython-310.pyc,sha256=67fkvg26_7BBIdGC9W9yw6xe46EXygCVgSkg8pSffOg,2716
79
+ bella_companion/simulations/figures/__pycache__/epi_skyline.cpython-310.pyc,sha256=zFWaeMyNQkynbJGZ--ya9YjviunoL5o8mlnjxxRHuRE,1705
80
+ bella_companion/simulations/figures/__pycache__/fbd_2traits.cpython-310.pyc,sha256=_URcHHm3IbMcDHDf3m_DWrwuhzArIQtESxJttcS71yc,2764
81
+ bella_companion/simulations/figures/__pycache__/fbd_no_traits.cpython-310.pyc,sha256=GUqMEJSVrtei5kAs-OEVwW6ETcY6RLXtYGqK-xue4c0,1781
82
+ bella_companion/simulations/figures/__pycache__/scenarios.cpython-310.pyc,sha256=Dlp6Dg5sMkwA5vScLd1TQH0v_q6k3JLeF8TyB7Oes5Y,2140
83
+ bella_companion/simulations/figures/__pycache__/utils.cpython-310.pyc,sha256=gr5wL9ASi0ZS34_rEeIxKrmE-Aw1nORq-DbEDCLnXfU,3979
84
+ bella_companion/simulations/figures/explain/__init__.py,sha256=DnmVIWO65nTT5VsWnbS7NyYgKEY_eo4oMCtCY_ML2Vk,260
85
+ bella_companion/simulations/figures/explain/pdp.py,sha256=3n3ssgufW_43pn2hO5V5J_jgcJH3Fpb8stIRtTnlQ8w,3801
86
+ bella_companion/simulations/figures/explain/shap.py,sha256=1PkbCgynbW-PXkkRpIcY7JoBYqOxqmu1OEOif_roFY8,2207
87
+ bella_companion/simulations/figures/explain/__pycache__/__init__.cpython-310.pyc,sha256=fTqKAgUlMz5E6IXn_bFMd2H5ZzUkF0RAkhZdmC1BOpg,407
88
+ bella_companion/simulations/figures/explain/__pycache__/pdp.cpython-310.pyc,sha256=_Np-khsYmnoISKlyt-5v-A6lTkqdqy5rQMV3VfqH81U,3474
89
+ bella_companion/simulations/figures/explain/__pycache__/shap.cpython-310.pyc,sha256=5IY_KT6WrAKbkbttaUVTBT-NrsuL5TrI6JDpqLubEHU,2756
90
+ bella_companion/simulations/scenarios/__init__.py,sha256=3Kl1lKcFpfb3vLX64DmSW4XCF5kXU1ZoHtstFH-ZIzU,876
91
+ bella_companion/simulations/scenarios/common.py,sha256=_ddaSuTvEVdttGkXB4HPc2B7IB1F_GBOCW3cVOPZ-ZM,807
92
+ bella_companion/simulations/scenarios/epi_multitype.py,sha256=fTkFeGHxyV_1f2nX3g_Oyr_e6wkorhXEicJjIAgeZKA,2439
93
+ bella_companion/simulations/scenarios/epi_skyline.py,sha256=JqnOVATECxBUqEbkR5lBlMI2O8k4hO6ipR8k9cHUsm0,2365
94
+ bella_companion/simulations/scenarios/fbd_2traits.py,sha256=-amB3NX0GsVgYbFuHH71t93FuXUEnRUyhWf2Qpcpia4,3541
95
+ bella_companion/simulations/scenarios/fbd_no_traits.py,sha256=R6CH0fVeQg-Iesl39pq2uY8ICVEO4VZbvUVUCGwauJU,2520
96
+ bella_companion/simulations/scenarios/scenario.py,sha256=_FRWAyOFbw94lAzd3zCD-1ek4TrssoiXfXRQPShLiIA,620
97
+ bella_companion/simulations/scenarios/__pycache__/__init__.cpython-310.pyc,sha256=u8Myq0Jl4dr5i0IzQoZiBxkGfEHQrLfhS2gRnPgFm-g,1081
98
+ bella_companion/simulations/scenarios/__pycache__/common.cpython-310.pyc,sha256=qLAVMzuY5Q2YGmeUlaLUqa_81dAdhKnX2FkYdC82GEw,1226
99
+ bella_companion/simulations/scenarios/__pycache__/epi_multitype.cpython-310.pyc,sha256=qyesYumfFnaXSenM1T0p1sjqDKUnzT_-aMWt0bPEJ9Q,2390
100
+ bella_companion/simulations/scenarios/__pycache__/epi_skyline.cpython-310.pyc,sha256=wg5eyiA3grtlNE0KzSr-xAQaYHdw2d5UjpFT_MSXoyM,2194
101
+ bella_companion/simulations/scenarios/__pycache__/fbd_2traits.cpython-310.pyc,sha256=gg15HCp0Q_oqOxXYrbM9uOPjw58HpRNVWexO5p6Jb14,3028
102
+ bella_companion/simulations/scenarios/__pycache__/fbd_no_traits.cpython-310.pyc,sha256=TMz7ljrkXDCwKlqKP1wSOfbxvqvkFfzzUwZSqQtaQMs,2637
103
+ bella_companion/simulations/scenarios/__pycache__/scenario.cpython-310.pyc,sha256=1cWwz_MoZopfAt9ErEbWZnLutFODPwkujkTkS2NHsQg,1147
104
+ bella_companion/utils/__init__.py,sha256=UtMwPK9dWf9NAl0ic8CSsgdW7aSm-5J49OqgvD7UpYw,480
105
+ bella_companion/utils/beast.py,sha256=TBa0cLklX1_tXqoQE4LRYvds7mLg_9fS2-6U6OHENHo,2184
106
+ bella_companion/utils/explain.py,sha256=uP7HPyn2YiykAI69BQV3RooDpC6qKoCLXfp3Uibp4zk,1475
107
+ bella_companion/utils/slurm.py,sha256=xEyf-Jxk8fy71t3fko_Ic9WtUFSdLFE3w4tR17gaBPw,1868
108
+ bella_companion/utils/__pycache__/__init__.cpython-310.pyc,sha256=QKECw9gSF8x3G4oXI06atZpaLDPSxm3k4qJ_-0nADbo,527
109
+ bella_companion/utils/__pycache__/beast.cpython-310.pyc,sha256=OeIB4XTx6zZnQG1Eikaf-qUfC5ONSGnMeDVbhdIyHSU,2537
110
+ bella_companion/utils/__pycache__/explain.cpython-310.pyc,sha256=K7YHxY520Q0nJtTVa-eEKw3B99MsrO_b-U50X_yihGQ,1819
111
+ bella_companion/utils/__pycache__/slurm.cpython-310.pyc,sha256=kKWmJwCTlotpPuXi4kzXNx2-zY9BXuzjhGi5ZrcN0oI,1785
112
+ bella_companion-0.0.46.dist-info/METADATA,sha256=-_A_T6Y-o0KCM_hhmcLx9qGsEADNzCJEa3Jxi8OxykU,392
113
+ bella_companion-0.0.46.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
114
+ bella_companion-0.0.46.dist-info/entry_points.txt,sha256=SVEYDBrkBWPrOGwnEH2aO5TSVIAvfKE37sqm-9ut9jg,51
115
+ bella_companion-0.0.46.dist-info/top_level.txt,sha256=q0loZYv4vf3zF_tOATyAJqeyLOEuPyLbObNqIGP7Fmc,16
116
+ bella_companion-0.0.46.dist-info/RECORD,,
@@ -1,78 +0,0 @@
1
- bella_companion/BELLA.jar,sha256=4mKDzPfz263rTqA9KS2f4Mc-UWGMuj8G48ZDonKSqVw,67408597
2
- bella_companion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- bella_companion/cli.py,sha256=2Xa49zHn85UfgsJ-hxsVfacfZDMTQZG0JatEtkFBO6k,2796
4
- bella_companion/version.xml,sha256=Gr3nsYqFhVNP0Mszl_IfilxefsPN8ZpQlGlB8OJSwnE,522
5
- bella_companion/eucovid/__init__.py,sha256=09Ld_G7fZvCDCgEWsmaOyLVQ8pFc9QHAGnXKJ9Zm2AM,81
6
- bella_companion/eucovid/run_beast.py,sha256=etaD_4SVdy_Pmz5s4jvDLzp2K_QV8leEY8Pe3xySBsk,3443
7
- bella_companion/eucovid/beast_configs/GLM.xml,sha256=b5rAeKVEam3u2AGSJsm7EHB6LcC0l9bp1SyZT2QyjpI,10892
8
- bella_companion/eucovid/beast_configs/MLP.xml,sha256=M0_B6t0bZpjCAQqAmjrFshW96pt9sNREcoLUjwchX6Q,10616
9
- bella_companion/eucovid/beast_configs/Nonparametric.xml,sha256=n-t4sUfDS9AzC02tbIk5mx_RDg2l62ELhdR3I3_jjHE,17783
10
- bella_companion/eucovid/data/case_data.tsv,sha256=XaSzZh5NcEMVt9d_XlQ19T8UuEkHGrjpSFXhe9IycNg,12412
11
- bella_companion/eucovid/data/change_dates.tsv,sha256=_pmVFYiL4X9Pd79uYVgyz3sKeRap7xVcXk0OjqVhuVQ,227
12
- bella_companion/eucovid/data/msa.fasta,sha256=sWaVSINSJDDLjmwlpl31JWM5VnKF7yViSpERI69glQc,4839354
13
- bella_companion/eucovid/data/osi.tsv,sha256=iTDWL_-PnVQPg_-hWROXWKNFakDq_S1fEig1A_MqMVI,9228
14
- bella_companion/eucovid/data/predictors/changetimes_all_7e.tsv,sha256=hH0xXD2lr_8RPQRqvENv6clPHauAXH22SGQHb3hlfzs,120
15
- bella_companion/eucovid/data/predictors/changetimes_flights_4e.tsv,sha256=XEepIXKRwcKknJq4-ovKlorvCypGi67B8znuQ5f1LTg,60
16
- bella_companion/eucovid/data/predictors/flight_pop_x_4e_ls.tsv,sha256=tMR9-tuGtC3rVABXUtNdV9irUX-9aCCVb_fwksHTn8U,1068
17
- bella_companion/eucovid/data/predictors/all/closedborders_7e_nt.tsv,sha256=5gP-cEzgKSCvlK0_PlkrimYGEwOaLPO0GiiM4PIKU-M,280
18
- bella_companion/eucovid/data/predictors/all/dist_7e_ls.tsv,sha256=rr71QPiJu35CYbySMJyH_GDX51D2iTIncZImwAXIvlo,1890
19
- bella_companion/eucovid/data/predictors/all/flight_7e_ls.tsv,sha256=5WztZpQrjK7puERA1oxsCn5t2G1w9NGTGKjr85gMQ54,1873
20
- bella_companion/eucovid/data/predictors/all/flight_pop_x_7e_ls.tsv,sha256=qfRTXyZItzEm8pxurhFYO-DvpJXD-J4lMH5eyZKF0aE,1862
21
- bella_companion/eucovid/data/predictors/all/osi_x_7e_ls.tsv,sha256=kke2eHlVuc84qMj1WBllhBG2BQt7JHUWDZeiVoAP8Lw,1900
22
- bella_companion/eucovid/data/predictors/all/osi_y_7e_ls.tsv,sha256=5YDXe4GstyyRKP15213cAAEm5lVFW_bC98R8ipc1XoE,1900
23
- bella_companion/eucovid/data/predictors/all/pop_x_7e_ls.tsv,sha256=3fVYRQ1ylwsa7YptMU8f_xELwwqIF3Ux8akL9UaXKis,1904
24
- bella_companion/eucovid/data/predictors/all/pop_y_7e_ls.tsv,sha256=Ku39Ts0HW9r5lThAZ01V7HJDi0aoRYs0aQs5EXlZCkQ,1904
25
- bella_companion/eucovid/data/predictors/all/sharedborders_7e_nt.tsv,sha256=pPVT5DIaZuc3B0mSs-B3kw3G2zja1LfmL_xLwlNtLDo,280
26
- bella_companion/platyrrhine/__init__.py,sha256=dIx6exNz-vuKiG5FZumvq74QUWcIEFd3L6ErqnOa83c,274
27
- bella_companion/platyrrhine/beast_config.xml,sha256=bLzavt-Zd8cmSgQQnlCBfZ9KyM7d1inOGx12VNjPFb4,7056
28
- bella_companion/platyrrhine/results.py,sha256=qosxqstTy7uadHARRt1WqmxZzxnQ3hiTjtw6V-YWKGA,2556
29
- bella_companion/platyrrhine/run_beast.py,sha256=_9Ex2B65zu6I68uY6s3_dohPYPaFP3E7u-uyWuDLAJc,2477
30
- bella_companion/platyrrhine/summarize_logs.py,sha256=zVM8YvdXd3eFP14armkgNUVFpNC3P-XXKYytmfgobjg,1351
31
- bella_companion/platyrrhine/data/change_times.csv,sha256=tedobHbaY7-6M3V6F6HSqGAU9dpeeajR5mu1XGJfp6w,68
32
- bella_companion/platyrrhine/data/traits.csv,sha256=N_mCnaM9Gy0Qot7-l_mK0vMvr7e_5BZ4bgUHpcoG9UM,3949
33
- bella_companion/platyrrhine/data/trees.nwk,sha256=lpSiGUG5s3zE--IKPOyWrJ5vpJb_xAPnfxychs3YNIs,488232
34
- bella_companion/simulations/__init__.py,sha256=ShYRdp1iSjnS_SzcsH-8jbqXz6P1nyRQZqAtPZJCMVE,454
35
- bella_companion/simulations/features.py,sha256=DZOBpJGlQ0UinqUZYbEtoemZ2eQGVLV_i-DfpW31qJI,104
36
- bella_companion/simulations/generate_data.py,sha256=edfhXrs76hl30i_xizup4z6qgzXZyaDzX_PVC62Ytpw,849
37
- bella_companion/simulations/generate_figures.py,sha256=layMgoj3Bfl78Ceb1oE7YirAQ8zhjDyD9IrxDRXf6go,657
38
- bella_companion/simulations/metrics.py,sha256=dg85Z5umewEzPXpfhQEEHtbQPCLT7LB0BEIPW8tAQYc,1934
39
- bella_companion/simulations/run_beast.py,sha256=qniy326i-vDCeHzzHpQRrSnY2ULqNNrO0z3GEsWx4Mc,3208
40
- bella_companion/simulations/summarize_logs.py,sha256=Shf3Dx9k4lTbmO__MSLw-aIA8a8kTCXhbctBcV6Izug,1216
41
- bella_companion/simulations/beast_configs/epi-multitype/GLM.xml,sha256=VymAYsaZVuB3EPE0DCQSXpKepVq8pPjKaB5yhEpaVkE,4334
42
- bella_companion/simulations/beast_configs/epi-multitype/MLP.xml,sha256=AoJyjvVcwKtut64d7sB2gnnenx5sXyuTTNCivykUyqU,4077
43
- bella_companion/simulations/beast_configs/epi-multitype/Nonparametric.xml,sha256=DfCMcLM53b-XP9oIiQ9wJWOVTEP3GnoZaL5BMzLLfIQ,3208
44
- bella_companion/simulations/beast_configs/epi-skyline/GLM.xml,sha256=7LtJhU7o7aQsnWK7ZIKj-mzmHgCn_RjxvKKbLIlp1Go,3619
45
- bella_companion/simulations/beast_configs/epi-skyline/MLP.xml,sha256=ptoLM0FLDp54bUSxPm12qIvOYWyBkWR1e9VWVWjgU8E,3426
46
- bella_companion/simulations/beast_configs/epi-skyline/Nonparametric.xml,sha256=LTiatqeAMiFfdD1leQ5TrGaJhsYwlkbMDpxqhVFOgUQ,2561
47
- bella_companion/simulations/beast_configs/fbd-2traits/GLM.xml,sha256=Iff0eAShKLeOnlTmNu6044Wljtla3yckqo2LZ7mP6LY,5897
48
- bella_companion/simulations/beast_configs/fbd-2traits/MLP.xml,sha256=RvF70fcnvoBcJxjyT4nELlFm94atSZpKm9d1aS-cJZ4,5428
49
- bella_companion/simulations/beast_configs/fbd-2traits/Nonparametric.xml,sha256=ev6ZfMeCwMyK54G_4O8g-tbgoxoD3asxt71x91Cb1QY,3618
50
- bella_companion/simulations/beast_configs/fbd-no-traits/GLM.xml,sha256=Caq7Gxqx-wYAu3_YkMikVqni3DjBv1Wt00sc1Upo1X8,4743
51
- bella_companion/simulations/beast_configs/fbd-no-traits/MLP.xml,sha256=JE_cGh2DW5yPAXyXXr0D3DlovmV-aIbze7qrhENHK3w,4275
52
- bella_companion/simulations/beast_configs/fbd-no-traits/Nonparametric.xml,sha256=m2xaHZwskCFInvVY1QH1fwQqH6p_fgESlPX2BbBeUhk,2822
53
- bella_companion/simulations/figures/__init__.py,sha256=LeHPeBb4vxJo0pxLZi_9s6iRBKvWC32yhAZBByqK2_8,590
54
- bella_companion/simulations/figures/epi_multitype.py,sha256=j85WgvN5AyAtX-CalMegr2lwlAZBmzyJxkikBPXRjCc,2629
55
- bella_companion/simulations/figures/epi_skyline.py,sha256=5wPGpQujxnSPasetM9lU07Or5ZC5j_h-LfVs6jdDzWc,1677
56
- bella_companion/simulations/figures/fbd_2traits.py,sha256=JiXrbYkH1HwdJQhTHXj6KhMEXYgQmQ6LmDboAIO1CPA,2728
57
- bella_companion/simulations/figures/fbd_no_traits.py,sha256=Hh2wDQFtk5nQTRSgApmtamn5xenWC5XhAlIk_xhOSII,1935
58
- bella_companion/simulations/figures/scenarios.py,sha256=gbMz1TUxxT2RSIq2kQlFioNdgSHk-gQY2OQuf6-7Fww,2817
59
- bella_companion/simulations/figures/utils.py,sha256=0M5OrxaEuqcj9rR2uAc_O7utQvhEceZGH0sKrGRWaWs,3129
60
- bella_companion/simulations/figures/explain/__init__.py,sha256=DnmVIWO65nTT5VsWnbS7NyYgKEY_eo4oMCtCY_ML2Vk,260
61
- bella_companion/simulations/figures/explain/pdp.py,sha256=3n3ssgufW_43pn2hO5V5J_jgcJH3Fpb8stIRtTnlQ8w,3801
62
- bella_companion/simulations/figures/explain/shap.py,sha256=1PkbCgynbW-PXkkRpIcY7JoBYqOxqmu1OEOif_roFY8,2207
63
- bella_companion/simulations/scenarios/__init__.py,sha256=3Kl1lKcFpfb3vLX64DmSW4XCF5kXU1ZoHtstFH-ZIzU,876
64
- bella_companion/simulations/scenarios/common.py,sha256=_ddaSuTvEVdttGkXB4HPc2B7IB1F_GBOCW3cVOPZ-ZM,807
65
- bella_companion/simulations/scenarios/epi_multitype.py,sha256=fTkFeGHxyV_1f2nX3g_Oyr_e6wkorhXEicJjIAgeZKA,2439
66
- bella_companion/simulations/scenarios/epi_skyline.py,sha256=JqnOVATECxBUqEbkR5lBlMI2O8k4hO6ipR8k9cHUsm0,2365
67
- bella_companion/simulations/scenarios/fbd_2traits.py,sha256=-amB3NX0GsVgYbFuHH71t93FuXUEnRUyhWf2Qpcpia4,3541
68
- bella_companion/simulations/scenarios/fbd_no_traits.py,sha256=R6CH0fVeQg-Iesl39pq2uY8ICVEO4VZbvUVUCGwauJU,2520
69
- bella_companion/simulations/scenarios/scenario.py,sha256=_FRWAyOFbw94lAzd3zCD-1ek4TrssoiXfXRQPShLiIA,620
70
- bella_companion/utils/__init__.py,sha256=UtMwPK9dWf9NAl0ic8CSsgdW7aSm-5J49OqgvD7UpYw,480
71
- bella_companion/utils/beast.py,sha256=TBa0cLklX1_tXqoQE4LRYvds7mLg_9fS2-6U6OHENHo,2184
72
- bella_companion/utils/explain.py,sha256=uP7HPyn2YiykAI69BQV3RooDpC6qKoCLXfp3Uibp4zk,1475
73
- bella_companion/utils/slurm.py,sha256=xEyf-Jxk8fy71t3fko_Ic9WtUFSdLFE3w4tR17gaBPw,1868
74
- bella_companion-0.0.44.dist-info/METADATA,sha256=yLCkFJaRBy303yaBpSoeoOOlzpPanoTybeG7PFr1sf0,347
75
- bella_companion-0.0.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
76
- bella_companion-0.0.44.dist-info/entry_points.txt,sha256=SVEYDBrkBWPrOGwnEH2aO5TSVIAvfKE37sqm-9ut9jg,51
77
- bella_companion-0.0.44.dist-info/top_level.txt,sha256=q0loZYv4vf3zF_tOATyAJqeyLOEuPyLbObNqIGP7Fmc,16
78
- bella_companion-0.0.44.dist-info/RECORD,,