phykit 2.1.47__tar.gz → 2.1.49__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.
- {phykit-2.1.47 → phykit-2.1.49}/PKG-INFO +18 -2
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/plot_config.py +3 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/quartet_utils.py +5 -4
- {phykit-2.1.47 → phykit-2.1.49}/phykit/phykit.py +116 -30
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/ancestral_reconstruction.py +6 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/concordance_asr.py +3 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/cont_map.py +3 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/cophylo.py +4 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/density_map.py +3 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/discordance_asymmetry.py +2 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phylo_heatmap.py +3 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/quartet_pie.py +6 -2
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/rate_heterogeneity.py +3 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/stochastic_character_map.py +3 -0
- phykit-2.1.49/phykit/version.py +1 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit.egg-info/PKG-INFO +18 -2
- phykit-2.1.47/phykit/version.py +0 -1
- {phykit-2.1.47 → phykit-2.1.49}/LICENSE.md +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/README.md +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/__main__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/cli_registry.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/errors.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/boolean_argument_parsing.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/caching.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/discrete_models.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/files.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/json_output.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/parallel.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/stats_summary.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/helpers/streaming.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/service_factories.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/alignment_entropy.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/alignment_length.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/alignment_recoding.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/base.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/column_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/composition_per_taxon.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/dna_threader.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/faidx.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/gc_content.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/mask_alignment.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/pairwise_identity.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/plot_alignment_qc.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/rcv.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/rcvt.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/rename_fasta_entries.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/alignment/variable_sites.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/base.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/base.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/bipartition_support_stats.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/branch_length_multiplier.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/collapse_branches.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/consensus_network.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/consensus_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/dvmc.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/evo_tempo_map.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/evolutionary_rate.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/fit_continuous.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/fit_discrete.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/hidden_paralogy_check.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/independent_contrasts.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/internal_branch_stats.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/internode_labeler.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/kf_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/lb_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/ltt.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/monophyly_check.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/network_signal.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/ou_shift_detection.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/ouwie.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/parsimony_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/patristic_distances.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phenogram.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phylogenetic_glm.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phylogenetic_ordination.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phylogenetic_regression.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phylogenetic_signal.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/phylomorphospace.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/polytomy_test.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/print_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/prune_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/quartet_network.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/relative_rate_test.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/rename_tree_tips.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/rf_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/root_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/saturation.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/spectral_discordance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/spurious_sequence.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/terminal_branch_stats.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/threshold_model.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/tip_labels.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/tip_to_tip_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/total_tree_length.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/treeness.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/treeness_over_rcv.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit/services/tree/vcv_utils.py +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit.egg-info/SOURCES.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit.egg-info/dependency_links.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit.egg-info/entry_points.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit.egg-info/requires.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/phykit.egg-info/top_level.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/setup.cfg +0 -0
- {phykit-2.1.47 → phykit-2.1.49}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: phykit
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.49
|
|
4
4
|
Home-page: https://github.com/jlsteenwyk/phykit
|
|
5
5
|
Author: Jacob L. Steenwyk
|
|
6
6
|
Author-email: jlsteenwyk@gmail.com
|
|
@@ -14,6 +14,22 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
14
14
|
Requires-Python: >=3.11
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE.md
|
|
17
|
+
Requires-Dist: biopython>=1.82
|
|
18
|
+
Requires-Dist: matplotlib>=3.7.0
|
|
19
|
+
Requires-Dist: numpy>=1.24.0
|
|
20
|
+
Requires-Dist: scipy>=1.11.3
|
|
21
|
+
Requires-Dist: scikit-learn>=1.4.2
|
|
22
|
+
Requires-Dist: umap-learn>=0.5.0
|
|
23
|
+
Requires-Dist: tqdm>=4.65.0
|
|
24
|
+
Dynamic: author
|
|
25
|
+
Dynamic: author-email
|
|
26
|
+
Dynamic: classifier
|
|
27
|
+
Dynamic: description
|
|
28
|
+
Dynamic: description-content-type
|
|
29
|
+
Dynamic: home-page
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: requires-dist
|
|
32
|
+
Dynamic: requires-python
|
|
17
33
|
|
|
18
34
|
<p align="center">
|
|
19
35
|
<a href="https://github.com/jlsteenwyk/phykit">
|
|
@@ -23,6 +23,7 @@ class PlotConfig:
|
|
|
23
23
|
title_fontsize: Optional[float] = None
|
|
24
24
|
axis_fontsize: Optional[float] = None
|
|
25
25
|
colors: Optional[List[str]] = None
|
|
26
|
+
ladderize: bool = False
|
|
26
27
|
|
|
27
28
|
def validate(self) -> None:
|
|
28
29
|
if self.fig_width is not None and self.fig_width <= 0:
|
|
@@ -187,6 +188,7 @@ class PlotConfig:
|
|
|
187
188
|
title_fontsize=getattr(args, "title_fontsize", None),
|
|
188
189
|
axis_fontsize=getattr(args, "axis_fontsize", None),
|
|
189
190
|
colors=colors,
|
|
191
|
+
ladderize=getattr(args, "ladderize", False),
|
|
190
192
|
)
|
|
191
193
|
config.validate()
|
|
192
194
|
return config
|
|
@@ -205,3 +207,4 @@ def add_plot_arguments(parser) -> None:
|
|
|
205
207
|
group.add_argument("--title-fontsize", type=float, default=None, help="Font size for the title")
|
|
206
208
|
group.add_argument("--axis-fontsize", type=float, default=None, help="Font size for axis labels")
|
|
207
209
|
group.add_argument("--colors", type=str, default=None, help="Comma-separated colors (hex or named)")
|
|
210
|
+
group.add_argument("--ladderize", action="store_true", default=False, help="Ladderize (sort) the tree before plotting")
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Shared utilities for quartet concordance factor computation and ASTRAL parsing.
|
|
3
3
|
|
|
4
4
|
Provides gene concordance factor (gCF/gDF1/gDF2) computation via the
|
|
5
|
-
four-group bipartition decomposition, and parsing of ASTRAL -t 2
|
|
6
|
-
q1/q2/q3 annotations from Newick node labels.
|
|
5
|
+
four-group bipartition decomposition, and parsing of ASTRAL -t 2 or
|
|
6
|
+
wASTRAL --support 3 q1/q2/q3 annotations from Newick node labels.
|
|
7
7
|
"""
|
|
8
8
|
from typing import Dict, List, Optional, Tuple
|
|
9
9
|
|
|
@@ -93,10 +93,11 @@ def compute_gcf_per_node(
|
|
|
93
93
|
def parse_astral_annotations(
|
|
94
94
|
tree,
|
|
95
95
|
) -> Dict[int, Tuple[float, float, float]]:
|
|
96
|
-
"""Parse q1/q2/q3 annotations from ASTRAL
|
|
96
|
+
"""Parse q1/q2/q3 annotations from ASTRAL/wASTRAL Newick node labels.
|
|
97
97
|
|
|
98
|
-
ASTRAL
|
|
98
|
+
Supports ASTRAL -t 2 and wASTRAL --support 3 output formats:
|
|
99
99
|
'[q1=0.5;q2=0.3;q3=0.2;f1=50;...]'
|
|
100
|
+
'[CULength=2.6;f1=108;...;q1=0.96;q2=0.03;q3=0.01]'
|
|
100
101
|
'q1=0.5;q2=0.3;q3=0.2'
|
|
101
102
|
|
|
102
103
|
Returns dict mapping clade id -> (q1, q2, q3).
|
|
@@ -464,7 +464,7 @@ class Phykit:
|
|
|
464
464
|
[--legend-position <str>]
|
|
465
465
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
466
466
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
467
|
-
[--colors <str>]
|
|
467
|
+
[--colors <str>] [--ladderize]
|
|
468
468
|
[--json]
|
|
469
469
|
|
|
470
470
|
Options
|
|
@@ -512,6 +512,9 @@ class Phykit:
|
|
|
512
512
|
(hex or named, e.g.,
|
|
513
513
|
"#ff0000,blue,#00ff00")
|
|
514
514
|
|
|
515
|
+
--ladderize ladderize (sort) the tree
|
|
516
|
+
before plotting
|
|
517
|
+
|
|
515
518
|
--json optional argument to output
|
|
516
519
|
results as JSON
|
|
517
520
|
"""
|
|
@@ -816,7 +819,7 @@ class Phykit:
|
|
|
816
819
|
[--legend-position <str>]
|
|
817
820
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
818
821
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
819
|
-
[--colors <str>]
|
|
822
|
+
[--colors <str>] [--ladderize]
|
|
820
823
|
[--json]
|
|
821
824
|
|
|
822
825
|
Options
|
|
@@ -862,6 +865,9 @@ class Phykit:
|
|
|
862
865
|
(hex or named, e.g.,
|
|
863
866
|
"#ff0000,blue,#00ff00")
|
|
864
867
|
|
|
868
|
+
--ladderize ladderize (sort) the tree
|
|
869
|
+
before plotting
|
|
870
|
+
|
|
865
871
|
--json optional argument to output
|
|
866
872
|
results as JSON
|
|
867
873
|
"""
|
|
@@ -947,7 +953,7 @@ class Phykit:
|
|
|
947
953
|
[--legend-position <str>]
|
|
948
954
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
949
955
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
950
|
-
[--colors <str>]
|
|
956
|
+
[--colors <str>] [--ladderize]
|
|
951
957
|
[--json]
|
|
952
958
|
|
|
953
959
|
Options
|
|
@@ -992,6 +998,9 @@ class Phykit:
|
|
|
992
998
|
(hex or named, e.g.,
|
|
993
999
|
"#ff0000,blue,#00ff00")
|
|
994
1000
|
|
|
1001
|
+
--ladderize ladderize (sort) the tree
|
|
1002
|
+
before plotting
|
|
1003
|
+
|
|
995
1004
|
--json optional argument to output
|
|
996
1005
|
results as JSON
|
|
997
1006
|
"""
|
|
@@ -1298,7 +1307,7 @@ class Phykit:
|
|
|
1298
1307
|
[--legend-position <str>]
|
|
1299
1308
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
1300
1309
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
1301
|
-
[--colors <str>]
|
|
1310
|
+
[--colors <str>] [--ladderize]
|
|
1302
1311
|
[--json]
|
|
1303
1312
|
|
|
1304
1313
|
Options
|
|
@@ -1348,6 +1357,9 @@ class Phykit:
|
|
|
1348
1357
|
(hex or named, e.g.,
|
|
1349
1358
|
"#ff0000,blue,#00ff00")
|
|
1350
1359
|
|
|
1360
|
+
--ladderize ladderize (sort) the tree
|
|
1361
|
+
before plotting
|
|
1362
|
+
|
|
1351
1363
|
--json optional argument to output
|
|
1352
1364
|
results as JSON
|
|
1353
1365
|
"""
|
|
@@ -1485,7 +1497,7 @@ class Phykit:
|
|
|
1485
1497
|
[--legend-position <str>]
|
|
1486
1498
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
1487
1499
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
1488
|
-
[--colors <str>]
|
|
1500
|
+
[--colors <str>] [--ladderize]
|
|
1489
1501
|
[--json]
|
|
1490
1502
|
|
|
1491
1503
|
Options
|
|
@@ -1530,6 +1542,9 @@ class Phykit:
|
|
|
1530
1542
|
(hex or named, e.g.,
|
|
1531
1543
|
"#ff0000,blue,#00ff00")
|
|
1532
1544
|
|
|
1545
|
+
--ladderize ladderize (sort) the tree
|
|
1546
|
+
before plotting
|
|
1547
|
+
|
|
1533
1548
|
--json optional argument to output
|
|
1534
1549
|
results as JSON
|
|
1535
1550
|
"""
|
|
@@ -1831,7 +1846,7 @@ class Phykit:
|
|
|
1831
1846
|
[--legend-position <str>]
|
|
1832
1847
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
1833
1848
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
1834
|
-
[--colors <str>]
|
|
1849
|
+
[--colors <str>] [--ladderize]
|
|
1835
1850
|
[--json]
|
|
1836
1851
|
|
|
1837
1852
|
Options
|
|
@@ -1888,6 +1903,9 @@ class Phykit:
|
|
|
1888
1903
|
(hex or named, e.g.,
|
|
1889
1904
|
"#ff0000,blue,#00ff00")
|
|
1890
1905
|
|
|
1906
|
+
--ladderize ladderize (sort) the tree
|
|
1907
|
+
before plotting
|
|
1908
|
+
|
|
1891
1909
|
--json output results as JSON
|
|
1892
1910
|
"""
|
|
1893
1911
|
),
|
|
@@ -1961,7 +1979,7 @@ class Phykit:
|
|
|
1961
1979
|
[--legend-position <str>]
|
|
1962
1980
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
1963
1981
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
1964
|
-
[--colors <str>]
|
|
1982
|
+
[--colors <str>] [--ladderize]
|
|
1965
1983
|
[--json]
|
|
1966
1984
|
|
|
1967
1985
|
Options
|
|
@@ -2019,6 +2037,9 @@ class Phykit:
|
|
|
2019
2037
|
(hex or named, e.g.,
|
|
2020
2038
|
"#ff0000,blue,#00ff00")
|
|
2021
2039
|
|
|
2040
|
+
--ladderize ladderize (sort) the tree
|
|
2041
|
+
before plotting
|
|
2042
|
+
|
|
2022
2043
|
--json output results as JSON
|
|
2023
2044
|
"""
|
|
2024
2045
|
),
|
|
@@ -2249,7 +2270,7 @@ class Phykit:
|
|
|
2249
2270
|
[--legend-position <str>]
|
|
2250
2271
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
2251
2272
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
2252
|
-
[--colors <str>]
|
|
2273
|
+
[--colors <str>] [--ladderize]
|
|
2253
2274
|
[--json]
|
|
2254
2275
|
|
|
2255
2276
|
Options
|
|
@@ -2307,6 +2328,9 @@ class Phykit:
|
|
|
2307
2328
|
(hex or named, e.g.,
|
|
2308
2329
|
"#ff0000,blue,#00ff00")
|
|
2309
2330
|
|
|
2331
|
+
--ladderize ladderize (sort) the tree
|
|
2332
|
+
before plotting
|
|
2333
|
+
|
|
2310
2334
|
--json optional argument to output
|
|
2311
2335
|
results as JSON
|
|
2312
2336
|
"""
|
|
@@ -2920,7 +2944,7 @@ class Phykit:
|
|
|
2920
2944
|
[--legend-position <str>]
|
|
2921
2945
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
2922
2946
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
2923
|
-
[--colors <str>]
|
|
2947
|
+
[--colors <str>] [--ladderize]
|
|
2924
2948
|
[--json]
|
|
2925
2949
|
|
|
2926
2950
|
Options
|
|
@@ -3006,6 +3030,9 @@ class Phykit:
|
|
|
3006
3030
|
(hex or named, e.g.,
|
|
3007
3031
|
"#ff0000,blue,#00ff00")
|
|
3008
3032
|
|
|
3033
|
+
--ladderize ladderize (sort) the tree
|
|
3034
|
+
before plotting
|
|
3035
|
+
|
|
3009
3036
|
--json optional argument to output
|
|
3010
3037
|
results as JSON
|
|
3011
3038
|
"""
|
|
@@ -3255,7 +3282,7 @@ class Phykit:
|
|
|
3255
3282
|
[--legend-position <str>]
|
|
3256
3283
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
3257
3284
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
3258
|
-
[--colors <str>]
|
|
3285
|
+
[--colors <str>] [--ladderize]
|
|
3259
3286
|
[--json]
|
|
3260
3287
|
|
|
3261
3288
|
Options
|
|
@@ -3307,6 +3334,9 @@ class Phykit:
|
|
|
3307
3334
|
(hex or named, e.g.,
|
|
3308
3335
|
"#ff0000,blue,#00ff00")
|
|
3309
3336
|
|
|
3337
|
+
--ladderize ladderize (sort) the tree
|
|
3338
|
+
before plotting
|
|
3339
|
+
|
|
3310
3340
|
--json optional argument to output
|
|
3311
3341
|
results as JSON
|
|
3312
3342
|
"""
|
|
@@ -3606,7 +3636,7 @@ class Phykit:
|
|
|
3606
3636
|
[--legend-position <str>]
|
|
3607
3637
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
3608
3638
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
3609
|
-
[--colors <str>]
|
|
3639
|
+
[--colors <str>] [--ladderize]
|
|
3610
3640
|
[--json]
|
|
3611
3641
|
|
|
3612
3642
|
Options
|
|
@@ -3661,6 +3691,9 @@ class Phykit:
|
|
|
3661
3691
|
(hex or named, e.g.,
|
|
3662
3692
|
"#ff0000,blue,#00ff00")
|
|
3663
3693
|
|
|
3694
|
+
--ladderize ladderize (sort) the tree
|
|
3695
|
+
before plotting
|
|
3696
|
+
|
|
3664
3697
|
--json optional argument to output
|
|
3665
3698
|
results as JSON
|
|
3666
3699
|
"""
|
|
@@ -3731,7 +3764,7 @@ class Phykit:
|
|
|
3731
3764
|
[--legend-position <str>]
|
|
3732
3765
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
3733
3766
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
3734
|
-
[--colors <str>]
|
|
3767
|
+
[--colors <str>] [--ladderize]
|
|
3735
3768
|
[--json]
|
|
3736
3769
|
|
|
3737
3770
|
Options
|
|
@@ -3774,6 +3807,9 @@ class Phykit:
|
|
|
3774
3807
|
(hex or named, e.g.,
|
|
3775
3808
|
"#ff0000,blue,#00ff00")
|
|
3776
3809
|
|
|
3810
|
+
--ladderize ladderize (sort) the tree
|
|
3811
|
+
before plotting
|
|
3812
|
+
|
|
3777
3813
|
--json optional argument to also
|
|
3778
3814
|
output results as JSON
|
|
3779
3815
|
"""
|
|
@@ -3823,7 +3859,7 @@ class Phykit:
|
|
|
3823
3859
|
[--legend-position <str>]
|
|
3824
3860
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
3825
3861
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
3826
|
-
[--colors <str>]
|
|
3862
|
+
[--colors <str>] [--ladderize]
|
|
3827
3863
|
[--json]
|
|
3828
3864
|
|
|
3829
3865
|
Options
|
|
@@ -3876,6 +3912,9 @@ class Phykit:
|
|
|
3876
3912
|
(hex or named, e.g.,
|
|
3877
3913
|
"#ff0000,blue,#00ff00")
|
|
3878
3914
|
|
|
3915
|
+
--ladderize ladderize (sort) the tree
|
|
3916
|
+
before plotting
|
|
3917
|
+
|
|
3879
3918
|
--json optional argument to also
|
|
3880
3919
|
output results as JSON
|
|
3881
3920
|
"""
|
|
@@ -3930,7 +3969,7 @@ class Phykit:
|
|
|
3930
3969
|
[--legend-position <str>]
|
|
3931
3970
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
3932
3971
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
3933
|
-
[--colors <str>]
|
|
3972
|
+
[--colors <str>] [--ladderize]
|
|
3934
3973
|
[--json]
|
|
3935
3974
|
|
|
3936
3975
|
Options
|
|
@@ -3973,6 +4012,9 @@ class Phykit:
|
|
|
3973
4012
|
(hex or named, e.g.,
|
|
3974
4013
|
"#ff0000,blue,#00ff00")
|
|
3975
4014
|
|
|
4015
|
+
--ladderize ladderize (sort) the tree
|
|
4016
|
+
before plotting
|
|
4017
|
+
|
|
3976
4018
|
--json optional argument to output
|
|
3977
4019
|
results as JSON
|
|
3978
4020
|
"""
|
|
@@ -4019,7 +4061,7 @@ class Phykit:
|
|
|
4019
4061
|
[--legend-position <str>]
|
|
4020
4062
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
4021
4063
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
4022
|
-
[--colors <str>]
|
|
4064
|
+
[--colors <str>] [--ladderize]
|
|
4023
4065
|
[--json]
|
|
4024
4066
|
|
|
4025
4067
|
Options
|
|
@@ -4065,6 +4107,9 @@ class Phykit:
|
|
|
4065
4107
|
(hex or named, e.g.,
|
|
4066
4108
|
"#ff0000,blue,#00ff00")
|
|
4067
4109
|
|
|
4110
|
+
--ladderize ladderize (sort) the tree
|
|
4111
|
+
before plotting
|
|
4112
|
+
|
|
4068
4113
|
--json optional argument to output
|
|
4069
4114
|
results as JSON
|
|
4070
4115
|
"""
|
|
@@ -4118,7 +4163,7 @@ class Phykit:
|
|
|
4118
4163
|
[--legend-position <str>]
|
|
4119
4164
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
4120
4165
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
4121
|
-
[--colors <str>]
|
|
4166
|
+
[--colors <str>] [--ladderize]
|
|
4122
4167
|
[--json]
|
|
4123
4168
|
|
|
4124
4169
|
Options
|
|
@@ -4170,6 +4215,9 @@ class Phykit:
|
|
|
4170
4215
|
(hex or named, e.g.,
|
|
4171
4216
|
"#ff0000,blue,#00ff00")
|
|
4172
4217
|
|
|
4218
|
+
--ladderize ladderize (sort) the tree
|
|
4219
|
+
before plotting
|
|
4220
|
+
|
|
4173
4221
|
--json optional argument to output
|
|
4174
4222
|
results as JSON
|
|
4175
4223
|
"""
|
|
@@ -4651,7 +4699,7 @@ class Phykit:
|
|
|
4651
4699
|
[--legend-position <str>]
|
|
4652
4700
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
4653
4701
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
4654
|
-
[--colors <str>]
|
|
4702
|
+
[--colors <str>] [--ladderize]
|
|
4655
4703
|
[--json]
|
|
4656
4704
|
|
|
4657
4705
|
Options
|
|
@@ -4702,6 +4750,9 @@ class Phykit:
|
|
|
4702
4750
|
(hex or named, e.g.,
|
|
4703
4751
|
"#ff0000,blue,#00ff00")
|
|
4704
4752
|
|
|
4753
|
+
--ladderize ladderize (sort) the tree
|
|
4754
|
+
before plotting
|
|
4755
|
+
|
|
4705
4756
|
--json optional argument to output
|
|
4706
4757
|
results as JSON
|
|
4707
4758
|
"""
|
|
@@ -4747,7 +4798,8 @@ class Phykit:
|
|
|
4747
4798
|
In native mode (-g provided), computes gene concordance
|
|
4748
4799
|
factors (gCF, gDF1, gDF2) from a species tree and gene
|
|
4749
4800
|
trees via bipartition matching. In ASTRAL mode (no -g),
|
|
4750
|
-
parses q1/q2/q3 annotations from ASTRAL -t 2 output
|
|
4801
|
+
parses q1/q2/q3 annotations from ASTRAL -t 2 output or
|
|
4802
|
+
wASTRAL --support 3 output.
|
|
4751
4803
|
|
|
4752
4804
|
Pie slices show: concordant (blue), discordant alt 1
|
|
4753
4805
|
(red), discordant alt 2 (gray).
|
|
@@ -4765,7 +4817,7 @@ class Phykit:
|
|
|
4765
4817
|
[--legend-position <str>]
|
|
4766
4818
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
4767
4819
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
4768
|
-
[--colors <str>]
|
|
4820
|
+
[--colors <str>] [--ladderize]
|
|
4769
4821
|
|
|
4770
4822
|
Options
|
|
4771
4823
|
=====================================================
|
|
@@ -4773,7 +4825,8 @@ class Phykit:
|
|
|
4773
4825
|
|
|
4774
4826
|
-g/--gene-trees gene trees file, one Newick
|
|
4775
4827
|
tree per line (optional;
|
|
4776
|
-
if omitted, ASTRAL -t 2
|
|
4828
|
+
if omitted, ASTRAL -t 2 or
|
|
4829
|
+
wASTRAL --support 3
|
|
4777
4830
|
annotations are parsed)
|
|
4778
4831
|
|
|
4779
4832
|
-o/--output output figure path (required;
|
|
@@ -4813,6 +4866,9 @@ class Phykit:
|
|
|
4813
4866
|
(default: "#2b8cbe,#d62728,
|
|
4814
4867
|
#969696")
|
|
4815
4868
|
|
|
4869
|
+
--ladderize ladderize (sort) the tree
|
|
4870
|
+
before plotting
|
|
4871
|
+
|
|
4816
4872
|
--json optional argument to output
|
|
4817
4873
|
per-node concordance as JSON
|
|
4818
4874
|
"""
|
|
@@ -4877,7 +4933,7 @@ class Phykit:
|
|
|
4877
4933
|
[--legend-position <str>]
|
|
4878
4934
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
4879
4935
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
4880
|
-
[--colors <str>]
|
|
4936
|
+
[--colors <str>] [--ladderize]
|
|
4881
4937
|
[--json]
|
|
4882
4938
|
|
|
4883
4939
|
Options
|
|
@@ -4934,6 +4990,9 @@ class Phykit:
|
|
|
4934
4990
|
(hex or named, e.g.,
|
|
4935
4991
|
"#ff0000,blue,#00ff00")
|
|
4936
4992
|
|
|
4993
|
+
--ladderize ladderize (sort) the tree
|
|
4994
|
+
before plotting
|
|
4995
|
+
|
|
4937
4996
|
--json optional argument to output
|
|
4938
4997
|
results as JSON
|
|
4939
4998
|
"""
|
|
@@ -5094,7 +5153,7 @@ class Phykit:
|
|
|
5094
5153
|
[--legend-position <str>]
|
|
5095
5154
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
5096
5155
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
5097
|
-
[--colors <str>]
|
|
5156
|
+
[--colors <str>] [--ladderize]
|
|
5098
5157
|
[--json]
|
|
5099
5158
|
|
|
5100
5159
|
Options
|
|
@@ -5140,6 +5199,9 @@ class Phykit:
|
|
|
5140
5199
|
(hex or named, e.g.,
|
|
5141
5200
|
"#ff0000,blue,#00ff00")
|
|
5142
5201
|
|
|
5202
|
+
--ladderize ladderize (sort) the tree
|
|
5203
|
+
before plotting
|
|
5204
|
+
|
|
5143
5205
|
--json optional argument to output
|
|
5144
5206
|
results as JSON
|
|
5145
5207
|
"""
|
|
@@ -5248,7 +5310,7 @@ class Phykit:
|
|
|
5248
5310
|
[--legend-position <str>]
|
|
5249
5311
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
5250
5312
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
5251
|
-
[--colors <str>]
|
|
5313
|
+
[--colors <str>] [--ladderize]
|
|
5252
5314
|
[--json]
|
|
5253
5315
|
|
|
5254
5316
|
Options
|
|
@@ -5296,6 +5358,9 @@ class Phykit:
|
|
|
5296
5358
|
(hex or named, e.g.,
|
|
5297
5359
|
"#ff0000,blue,#00ff00")
|
|
5298
5360
|
|
|
5361
|
+
--ladderize ladderize (sort) the tree
|
|
5362
|
+
before plotting
|
|
5363
|
+
|
|
5299
5364
|
--json optional argument to output
|
|
5300
5365
|
results as JSON
|
|
5301
5366
|
"""
|
|
@@ -5355,7 +5420,7 @@ class Phykit:
|
|
|
5355
5420
|
[--legend-position <str>]
|
|
5356
5421
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
5357
5422
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
5358
|
-
[--colors <str>]
|
|
5423
|
+
[--colors <str>] [--ladderize]
|
|
5359
5424
|
[--json]
|
|
5360
5425
|
|
|
5361
5426
|
Options
|
|
@@ -5419,6 +5484,9 @@ class Phykit:
|
|
|
5419
5484
|
(hex or named, e.g.,
|
|
5420
5485
|
"#ff0000,blue,#00ff00")
|
|
5421
5486
|
|
|
5487
|
+
--ladderize ladderize (sort) the tree
|
|
5488
|
+
before plotting
|
|
5489
|
+
|
|
5422
5490
|
--json optional argument to output
|
|
5423
5491
|
results as JSON
|
|
5424
5492
|
"""
|
|
@@ -5818,7 +5886,7 @@ class Phykit:
|
|
|
5818
5886
|
[--legend-position <str>]
|
|
5819
5887
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
5820
5888
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
5821
|
-
[--colors <str>]
|
|
5889
|
+
[--colors <str>] [--ladderize]
|
|
5822
5890
|
[--json]
|
|
5823
5891
|
|
|
5824
5892
|
Options
|
|
@@ -5875,6 +5943,9 @@ class Phykit:
|
|
|
5875
5943
|
(hex or named, e.g.,
|
|
5876
5944
|
"#ff0000,blue,#00ff00")
|
|
5877
5945
|
|
|
5946
|
+
--ladderize ladderize (sort) the tree
|
|
5947
|
+
before plotting
|
|
5948
|
+
|
|
5878
5949
|
--json optional argument to output
|
|
5879
5950
|
results as JSON
|
|
5880
5951
|
"""
|
|
@@ -6054,7 +6125,7 @@ class Phykit:
|
|
|
6054
6125
|
[--legend-position <str>]
|
|
6055
6126
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
6056
6127
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
6057
|
-
[--colors <str>]
|
|
6128
|
+
[--colors <str>] [--ladderize]
|
|
6058
6129
|
[--json]
|
|
6059
6130
|
|
|
6060
6131
|
Options
|
|
@@ -6105,6 +6176,9 @@ class Phykit:
|
|
|
6105
6176
|
(hex or named, e.g.,
|
|
6106
6177
|
"#ff0000,blue,#00ff00")
|
|
6107
6178
|
|
|
6179
|
+
--ladderize ladderize (sort) the tree
|
|
6180
|
+
before plotting
|
|
6181
|
+
|
|
6108
6182
|
--json optional argument to output
|
|
6109
6183
|
results as JSON
|
|
6110
6184
|
"""
|
|
@@ -6223,7 +6297,7 @@ class Phykit:
|
|
|
6223
6297
|
[--legend-position <str>]
|
|
6224
6298
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
6225
6299
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
6226
|
-
[--colors <str>]
|
|
6300
|
+
[--colors <str>] [--ladderize]
|
|
6227
6301
|
[--json]
|
|
6228
6302
|
|
|
6229
6303
|
Options
|
|
@@ -6268,6 +6342,9 @@ class Phykit:
|
|
|
6268
6342
|
(hex or named, e.g.,
|
|
6269
6343
|
"#ff0000,blue,#00ff00")
|
|
6270
6344
|
|
|
6345
|
+
--ladderize ladderize (sort) the tree
|
|
6346
|
+
before plotting
|
|
6347
|
+
|
|
6271
6348
|
--json optional argument to output
|
|
6272
6349
|
results as JSON
|
|
6273
6350
|
"""
|
|
@@ -6323,7 +6400,7 @@ class Phykit:
|
|
|
6323
6400
|
[--legend-position <str>]
|
|
6324
6401
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
6325
6402
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
6326
|
-
[--colors <str>]
|
|
6403
|
+
[--colors <str>] [--ladderize]
|
|
6327
6404
|
[--json]
|
|
6328
6405
|
|
|
6329
6406
|
Options
|
|
@@ -6367,6 +6444,9 @@ class Phykit:
|
|
|
6367
6444
|
(hex or named, e.g.,
|
|
6368
6445
|
"#ff0000,blue,#00ff00")
|
|
6369
6446
|
|
|
6447
|
+
--ladderize ladderize (sort) the tree
|
|
6448
|
+
before plotting
|
|
6449
|
+
|
|
6370
6450
|
--json optional argument to output
|
|
6371
6451
|
results as JSON
|
|
6372
6452
|
"""
|
|
@@ -6423,7 +6503,7 @@ class Phykit:
|
|
|
6423
6503
|
[--legend-position <str>]
|
|
6424
6504
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
6425
6505
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
6426
|
-
[--colors <str>]
|
|
6506
|
+
[--colors <str>] [--ladderize]
|
|
6427
6507
|
[--json]
|
|
6428
6508
|
|
|
6429
6509
|
Options
|
|
@@ -6481,6 +6561,9 @@ class Phykit:
|
|
|
6481
6561
|
(hex or named, e.g.,
|
|
6482
6562
|
"#ff0000,blue,#00ff00")
|
|
6483
6563
|
|
|
6564
|
+
--ladderize ladderize (sort) the tree
|
|
6565
|
+
before plotting
|
|
6566
|
+
|
|
6484
6567
|
--json output results as JSON
|
|
6485
6568
|
"""
|
|
6486
6569
|
),
|
|
@@ -6554,7 +6637,7 @@ class Phykit:
|
|
|
6554
6637
|
[--legend-position <str>]
|
|
6555
6638
|
[--ylabel-fontsize <float>] [--xlabel-fontsize <float>]
|
|
6556
6639
|
[--title-fontsize <float>] [--axis-fontsize <float>]
|
|
6557
|
-
[--colors <str>]
|
|
6640
|
+
[--colors <str>] [--ladderize]
|
|
6558
6641
|
|
|
6559
6642
|
Options
|
|
6560
6643
|
=====================================================
|
|
@@ -6614,6 +6697,9 @@ class Phykit:
|
|
|
6614
6697
|
(hex or named, e.g.,
|
|
6615
6698
|
"#ff0000,blue,#00ff00")
|
|
6616
6699
|
|
|
6700
|
+
--ladderize ladderize (sort) the tree
|
|
6701
|
+
before plotting
|
|
6702
|
+
|
|
6617
6703
|
--json optional argument to output
|
|
6618
6704
|
results as JSON
|
|
6619
6705
|
"""
|
|
@@ -66,6 +66,9 @@ class AncestralReconstruction(Tree):
|
|
|
66
66
|
if tips_to_prune:
|
|
67
67
|
tree_copy = self.prune_tree_using_taxa_list(tree_copy, tips_to_prune)
|
|
68
68
|
|
|
69
|
+
if self.plot_config.ladderize:
|
|
70
|
+
tree_copy.ladderize()
|
|
71
|
+
|
|
69
72
|
# Label internal nodes
|
|
70
73
|
node_labels = self._label_internal_nodes(tree_copy)
|
|
71
74
|
|
|
@@ -1206,6 +1209,9 @@ class AncestralReconstruction(Tree):
|
|
|
1206
1209
|
if tips_to_prune:
|
|
1207
1210
|
tree_copy = self.prune_tree_using_taxa_list(tree_copy, tips_to_prune)
|
|
1208
1211
|
|
|
1212
|
+
if self.plot_config.ladderize:
|
|
1213
|
+
tree_copy.ladderize()
|
|
1214
|
+
|
|
1209
1215
|
# Label internal nodes
|
|
1210
1216
|
node_labels = self._label_internal_nodes(tree_copy)
|
|
1211
1217
|
|
|
@@ -101,6 +101,9 @@ class ConcordanceAsr(Tree):
|
|
|
101
101
|
species_copy, tips_to_prune
|
|
102
102
|
)
|
|
103
103
|
|
|
104
|
+
if self.plot_config.ladderize:
|
|
105
|
+
species_copy.ladderize()
|
|
106
|
+
|
|
104
107
|
if self.method == "distribution":
|
|
105
108
|
result = self._run_distribution(
|
|
106
109
|
species_copy, gene_trees, trait_values, all_taxa
|
|
@@ -40,6 +40,9 @@ class ContMap(Tree):
|
|
|
40
40
|
if tips_to_prune:
|
|
41
41
|
tree_copy = self.prune_tree_using_taxa_list(tree_copy, tips_to_prune)
|
|
42
42
|
|
|
43
|
+
if self.plot_config.ladderize:
|
|
44
|
+
tree_copy.ladderize()
|
|
45
|
+
|
|
43
46
|
# Label internal nodes
|
|
44
47
|
node_labels = self._label_internal_nodes(tree_copy)
|
|
45
48
|
|
|
@@ -84,6 +84,10 @@ class Cophylo(Tree):
|
|
|
84
84
|
n_tips1 = len(tips1)
|
|
85
85
|
n_tips2 = len(tips2)
|
|
86
86
|
|
|
87
|
+
if self.plot_config.ladderize:
|
|
88
|
+
tree1.ladderize()
|
|
89
|
+
tree2.ladderize()
|
|
90
|
+
|
|
87
91
|
# Optimize tip ordering to reduce line crossings
|
|
88
92
|
tree1_order, tree2_order = self._optimize_tip_order(
|
|
89
93
|
tree1, tree2, mapping_valid
|
|
@@ -64,6 +64,9 @@ class DensityMap(Tree):
|
|
|
64
64
|
for tip_name in tips_to_prune:
|
|
65
65
|
tree.prune(tip_name)
|
|
66
66
|
|
|
67
|
+
if self.plot_config.ladderize:
|
|
68
|
+
tree.ladderize()
|
|
69
|
+
|
|
67
70
|
# Fit Q matrix using ER model
|
|
68
71
|
Q, loglik = scm._fit_q_matrix(tree, tip_states, states, "ER")
|
|
69
72
|
k = len(states)
|
|
@@ -85,6 +85,8 @@ class DiscordanceAsymmetry(Tree):
|
|
|
85
85
|
self._output_text(branch_results, summary)
|
|
86
86
|
|
|
87
87
|
if self.plot_output:
|
|
88
|
+
if self.plot_config.ladderize:
|
|
89
|
+
species_tree.ladderize()
|
|
88
90
|
self._plot(species_tree, branch_results, self.plot_output,
|
|
89
91
|
shared_taxa=shared_taxa)
|
|
90
92
|
|
|
@@ -43,6 +43,9 @@ class PhyloHeatmap(Tree):
|
|
|
43
43
|
if tips_to_prune:
|
|
44
44
|
tree = self.prune_tree_using_taxa_list(tree, tips_to_prune)
|
|
45
45
|
|
|
46
|
+
if self.plot_config.ladderize:
|
|
47
|
+
tree.ladderize()
|
|
48
|
+
|
|
46
49
|
# Get tip order from tree traversal
|
|
47
50
|
tip_order = [t.name for t in tree.get_terminals()]
|
|
48
51
|
|
|
@@ -5,7 +5,7 @@ Draws a phylogram with pie charts at internal nodes showing the
|
|
|
5
5
|
proportion of gene trees supporting the species tree topology (gCF)
|
|
6
6
|
versus the two NNI alternative topologies (gDF1, gDF2). Supports
|
|
7
7
|
both native computation from gene trees and parsing of ASTRAL -t 2
|
|
8
|
-
annotations.
|
|
8
|
+
or wASTRAL --support 3 annotations.
|
|
9
9
|
"""
|
|
10
10
|
import sys
|
|
11
11
|
from typing import Dict, List, Tuple
|
|
@@ -50,7 +50,8 @@ class QuartetPie(Tree):
|
|
|
50
50
|
[
|
|
51
51
|
"No ASTRAL q1/q2/q3 annotations found in the tree.",
|
|
52
52
|
"Either provide gene trees with -g, or use an ASTRAL",
|
|
53
|
-
"-t 2 output tree with quartet
|
|
53
|
+
"-t 2 or wASTRAL --support 3 output tree with quartet",
|
|
54
|
+
"annotations.",
|
|
54
55
|
],
|
|
55
56
|
code=2,
|
|
56
57
|
)
|
|
@@ -62,6 +63,9 @@ class QuartetPie(Tree):
|
|
|
62
63
|
input_mode = "astral"
|
|
63
64
|
n_gene_trees = 0
|
|
64
65
|
|
|
66
|
+
if self.plot_config.ladderize:
|
|
67
|
+
tree.ladderize()
|
|
68
|
+
|
|
65
69
|
self._plot_quartet_pie(tree, proportions, self.output_path)
|
|
66
70
|
|
|
67
71
|
if self.json_output:
|
|
@@ -108,6 +108,9 @@ class RateHeterogeneity(Tree):
|
|
|
108
108
|
|
|
109
109
|
# Plot
|
|
110
110
|
if self.plot_output:
|
|
111
|
+
if self.plot_config.ladderize:
|
|
112
|
+
tree_copy.ladderize()
|
|
113
|
+
parent_map = self._build_parent_map(tree_copy)
|
|
111
114
|
self._plot_regime_tree(
|
|
112
115
|
tree_copy, branch_regimes, regimes, parent_map, self.plot_output
|
|
113
116
|
)
|
|
@@ -67,6 +67,9 @@ class StochasticCharacterMap(Tree):
|
|
|
67
67
|
for tip_name in tips_to_prune:
|
|
68
68
|
tree.prune(tip_name)
|
|
69
69
|
|
|
70
|
+
if self.plot_config.ladderize:
|
|
71
|
+
tree.ladderize()
|
|
72
|
+
|
|
70
73
|
# Fit Q matrix
|
|
71
74
|
Q, loglik = self._fit_q_matrix(tree, tip_states, states, self.model)
|
|
72
75
|
k = len(states)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.1.49"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: phykit
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.49
|
|
4
4
|
Home-page: https://github.com/jlsteenwyk/phykit
|
|
5
5
|
Author: Jacob L. Steenwyk
|
|
6
6
|
Author-email: jlsteenwyk@gmail.com
|
|
@@ -14,6 +14,22 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
14
14
|
Requires-Python: >=3.11
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE.md
|
|
17
|
+
Requires-Dist: biopython>=1.82
|
|
18
|
+
Requires-Dist: matplotlib>=3.7.0
|
|
19
|
+
Requires-Dist: numpy>=1.24.0
|
|
20
|
+
Requires-Dist: scipy>=1.11.3
|
|
21
|
+
Requires-Dist: scikit-learn>=1.4.2
|
|
22
|
+
Requires-Dist: umap-learn>=0.5.0
|
|
23
|
+
Requires-Dist: tqdm>=4.65.0
|
|
24
|
+
Dynamic: author
|
|
25
|
+
Dynamic: author-email
|
|
26
|
+
Dynamic: classifier
|
|
27
|
+
Dynamic: description
|
|
28
|
+
Dynamic: description-content-type
|
|
29
|
+
Dynamic: home-page
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: requires-dist
|
|
32
|
+
Dynamic: requires-python
|
|
17
33
|
|
|
18
34
|
<p align="center">
|
|
19
35
|
<a href="https://github.com/jlsteenwyk/phykit">
|
phykit-2.1.47/phykit/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.1.47"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|