phykit 2.1.47__tar.gz → 2.1.48__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.48}/PKG-INFO +1 -1
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/quartet_utils.py +5 -4
- {phykit-2.1.47 → phykit-2.1.48}/phykit/phykit.py +4 -2
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/quartet_pie.py +3 -2
- phykit-2.1.48/phykit/version.py +1 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit.egg-info/PKG-INFO +1 -1
- phykit-2.1.47/phykit/version.py +0 -1
- {phykit-2.1.47 → phykit-2.1.48}/LICENSE.md +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/README.md +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/__main__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/cli_registry.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/errors.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/boolean_argument_parsing.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/caching.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/discrete_models.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/files.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/json_output.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/parallel.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/plot_config.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/stats_summary.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/helpers/streaming.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/service_factories.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/alignment_entropy.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/alignment_length.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/alignment_recoding.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/base.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/column_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/composition_per_taxon.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/dna_threader.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/faidx.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/gc_content.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/mask_alignment.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/pairwise_identity.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/plot_alignment_qc.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/rcv.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/rcvt.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/rename_fasta_entries.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/alignment/variable_sites.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/base.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/__init__.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/ancestral_reconstruction.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/base.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/bipartition_support_stats.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/branch_length_multiplier.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/collapse_branches.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/concordance_asr.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/consensus_network.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/consensus_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/cont_map.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/cophylo.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/density_map.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/discordance_asymmetry.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/dvmc.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/evo_tempo_map.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/evolutionary_rate.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/fit_continuous.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/fit_discrete.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/hidden_paralogy_check.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/independent_contrasts.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/internal_branch_stats.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/internode_labeler.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/kf_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/lb_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/ltt.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/monophyly_check.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/network_signal.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/ou_shift_detection.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/ouwie.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/parsimony_score.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/patristic_distances.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phenogram.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phylo_heatmap.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phylogenetic_glm.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phylogenetic_ordination.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phylogenetic_regression.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phylogenetic_signal.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/phylomorphospace.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/polytomy_test.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/print_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/prune_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/quartet_network.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/rate_heterogeneity.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/relative_rate_test.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/rename_tree_tips.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/rf_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/root_tree.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/saturation.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/spectral_discordance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/spurious_sequence.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/stochastic_character_map.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/terminal_branch_stats.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/threshold_model.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/tip_labels.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/tip_to_tip_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/total_tree_length.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/treeness.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/treeness_over_rcv.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit/services/tree/vcv_utils.py +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit.egg-info/SOURCES.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit.egg-info/dependency_links.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit.egg-info/entry_points.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit.egg-info/requires.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/phykit.egg-info/top_level.txt +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/setup.cfg +0 -0
- {phykit-2.1.47 → phykit-2.1.48}/setup.py +0 -0
|
@@ -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).
|
|
@@ -4747,7 +4747,8 @@ class Phykit:
|
|
|
4747
4747
|
In native mode (-g provided), computes gene concordance
|
|
4748
4748
|
factors (gCF, gDF1, gDF2) from a species tree and gene
|
|
4749
4749
|
trees via bipartition matching. In ASTRAL mode (no -g),
|
|
4750
|
-
parses q1/q2/q3 annotations from ASTRAL -t 2 output
|
|
4750
|
+
parses q1/q2/q3 annotations from ASTRAL -t 2 output or
|
|
4751
|
+
wASTRAL --support 3 output.
|
|
4751
4752
|
|
|
4752
4753
|
Pie slices show: concordant (blue), discordant alt 1
|
|
4753
4754
|
(red), discordant alt 2 (gray).
|
|
@@ -4773,7 +4774,8 @@ class Phykit:
|
|
|
4773
4774
|
|
|
4774
4775
|
-g/--gene-trees gene trees file, one Newick
|
|
4775
4776
|
tree per line (optional;
|
|
4776
|
-
if omitted, ASTRAL -t 2
|
|
4777
|
+
if omitted, ASTRAL -t 2 or
|
|
4778
|
+
wASTRAL --support 3
|
|
4777
4779
|
annotations are parsed)
|
|
4778
4780
|
|
|
4779
4781
|
-o/--output output figure path (required;
|
|
@@ -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
|
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.1.48"
|
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
|
|
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
|