phykit 2.1.81__tar.gz → 2.1.82__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.81 → phykit-2.1.82}/PKG-INFO +1 -1
- {phykit-2.1.81 → phykit-2.1.82}/phykit/cli_registry.py +3 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/phykit.py +79 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/service_factories.py +1 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/__init__.py +1 -0
- phykit-2.1.82/phykit/services/tree/simmap_summary.py +604 -0
- phykit-2.1.82/phykit/version.py +1 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/PKG-INFO +1 -1
- {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/SOURCES.txt +1 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/entry_points.txt +3 -0
- {phykit-2.1.81 → phykit-2.1.82}/setup.py +3 -0
- phykit-2.1.81/phykit/version.py +0 -1
- {phykit-2.1.81 → phykit-2.1.82}/LICENSE.md +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/README.md +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/__init__.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/__main__.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/errors.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/__init__.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/boolean_argument_parsing.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/caching.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/circular_layout.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/color_annotations.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/discrete_models.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/files.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/json_output.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/parallel.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/parsimony_utils.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/plot_config.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/quartet_utils.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/stats_summary.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/streaming.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/__init__.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/__init__.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_entropy.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_length.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_recoding.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_subsample.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/base.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/column_score.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/composition_per_taxon.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/dfoil.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/dna_threader.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/dstatistic.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/faidx.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/gc_content.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/identity_matrix.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/mask_alignment.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/pairwise_identity.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/phylo_gwas.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/plot_alignment_qc.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/rcv.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/rcvt.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/rename_fasta_entries.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/taxon_groups.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/variable_sites.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/base.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ancestral_reconstruction.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/base.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/bipartition_support_stats.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/branch_length_multiplier.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/character_map.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/collapse_branches.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/concordance_asr.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/consensus_network.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/consensus_tree.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/cont_map.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/cophylo.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/density_map.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/discordance_asymmetry.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/dvmc.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/evo_tempo_map.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/evolutionary_rate.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/fit_continuous.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/fit_discrete.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/hidden_paralogy_check.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/hybridization.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/independent_contrasts.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/internal_branch_stats.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/internode_labeler.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/kf_distance.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/lb_score.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ltt.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/monophyly_check.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/neighbor_net.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/network_signal.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ou_shift_detection.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ouwie.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/parsimony_score.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/patristic_distances.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phenogram.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_anova.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_heatmap.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_impute.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_logistic.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_glm.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_ordination.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_regression.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_signal.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylomorphospace.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/polytomy_test.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/print_tree.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/prune_tree.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/quartet_network.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/quartet_pie.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/rate_heterogeneity.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/relative_rate_test.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/rename_tree_tips.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/rf_distance.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/root_tree.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/saturation.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/spectral_discordance.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/spr.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/spurious_sequence.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/stochastic_character_map.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/terminal_branch_stats.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/threshold_model.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tip_labels.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tip_to_tip_distance.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/total_tree_length.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/trait_correlation.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/trait_rate_map.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tree_space.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/treeness.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/treeness_over_rcv.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/vcv_utils.py +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/dependency_links.txt +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/requires.txt +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/top_level.txt +0 -0
- {phykit-2.1.81 → phykit-2.1.82}/setup.cfg +0 -0
|
@@ -118,6 +118,9 @@ ALIAS_TO_HANDLER: Dict[str, str] = {
|
|
|
118
118
|
"casr": "concordance_asr",
|
|
119
119
|
"simmap": "stochastic_character_map",
|
|
120
120
|
"scm": "stochastic_character_map",
|
|
121
|
+
"simmap_summary": "simmap_summary",
|
|
122
|
+
"smsummary": "simmap_summary",
|
|
123
|
+
"describe_simmap": "simmap_summary",
|
|
121
124
|
"contmap": "cont_map",
|
|
122
125
|
"cmap": "cont_map",
|
|
123
126
|
"densitymap": "density_map",
|
|
@@ -254,6 +254,8 @@ class Phykit:
|
|
|
254
254
|
- fit phylogenetic logistic regression (Ives & Garland 2010)
|
|
255
255
|
stochastic_character_map (alias: simmap; scm)
|
|
256
256
|
- stochastic character mapping (SIMMAP) of discrete traits
|
|
257
|
+
simmap_summary (alias: smsummary; describe_simmap)
|
|
258
|
+
- per-branch SIMMAP summary with node posteriors
|
|
257
259
|
cont_map (alias: contmap; cmap)
|
|
258
260
|
- continuous trait map (contMap) visualization on a phylogeny
|
|
259
261
|
trait_rate_map (alias: rate_map; branch_rates)
|
|
@@ -4796,6 +4798,79 @@ class Phykit:
|
|
|
4796
4798
|
_add_json_argument(parser)
|
|
4797
4799
|
_run_service(parser, argv, StochasticCharacterMap)
|
|
4798
4800
|
|
|
4801
|
+
@staticmethod
|
|
4802
|
+
def simmap_summary(argv):
|
|
4803
|
+
parser = _new_parser(
|
|
4804
|
+
description=textwrap.dedent(
|
|
4805
|
+
f"""\
|
|
4806
|
+
{help_header}
|
|
4807
|
+
|
|
4808
|
+
Run N stochastic character maps and summarize per-branch
|
|
4809
|
+
dwelling time proportions, expected transitions, and
|
|
4810
|
+
posterior state probabilities at each node.
|
|
4811
|
+
|
|
4812
|
+
This extends stochastic_character_map by providing a
|
|
4813
|
+
detailed per-branch summary analogous to
|
|
4814
|
+
phytools::describe.simmap() in R.
|
|
4815
|
+
|
|
4816
|
+
Aliases:
|
|
4817
|
+
simmap_summary, smsummary, describe_simmap
|
|
4818
|
+
Command line interfaces:
|
|
4819
|
+
pk_simmap_summary, pk_smsummary, pk_describe_simmap
|
|
4820
|
+
|
|
4821
|
+
Usage:
|
|
4822
|
+
phykit simmap_summary -t <tree> -d <trait_data> -c <trait>
|
|
4823
|
+
[-m/--model ER|SYM|ARD] [-n/--nsim <int>]
|
|
4824
|
+
[--seed <int>] [--plot <file>] [--csv <file>] [--json]
|
|
4825
|
+
|
|
4826
|
+
Options
|
|
4827
|
+
=====================================================
|
|
4828
|
+
-t/--tree phylogenetic tree file
|
|
4829
|
+
(required)
|
|
4830
|
+
|
|
4831
|
+
-d/--trait_data tab-delimited trait file
|
|
4832
|
+
with header row (required)
|
|
4833
|
+
|
|
4834
|
+
-c/--trait column name for the
|
|
4835
|
+
discrete character trait
|
|
4836
|
+
(required)
|
|
4837
|
+
|
|
4838
|
+
-m/--model substitution model: ER
|
|
4839
|
+
(equal rates), SYM
|
|
4840
|
+
(symmetric), or ARD (all
|
|
4841
|
+
rates different). Default: ER
|
|
4842
|
+
|
|
4843
|
+
-n/--nsim number of stochastic maps
|
|
4844
|
+
to simulate (default: 100)
|
|
4845
|
+
|
|
4846
|
+
--seed random seed for
|
|
4847
|
+
reproducibility
|
|
4848
|
+
|
|
4849
|
+
--plot output plot file showing
|
|
4850
|
+
tree with posterior pie
|
|
4851
|
+
charts at nodes
|
|
4852
|
+
|
|
4853
|
+
--csv output CSV file with
|
|
4854
|
+
per-branch dwelling
|
|
4855
|
+
proportions and node
|
|
4856
|
+
posteriors
|
|
4857
|
+
|
|
4858
|
+
--json output results as JSON
|
|
4859
|
+
"""
|
|
4860
|
+
),
|
|
4861
|
+
)
|
|
4862
|
+
parser.add_argument("-t", "--tree", type=str, required=True, help=SUPPRESS, metavar="")
|
|
4863
|
+
parser.add_argument("-d", "--trait_data", type=str, required=True, help=SUPPRESS, metavar="")
|
|
4864
|
+
parser.add_argument("-c", "--trait", type=str, required=True, help=SUPPRESS, metavar="")
|
|
4865
|
+
parser.add_argument("-m", "--model", type=str, required=False, default="ER", help=SUPPRESS, metavar="")
|
|
4866
|
+
parser.add_argument("-n", "--nsim", type=int, required=False, default=100, help=SUPPRESS, metavar="")
|
|
4867
|
+
parser.add_argument("--seed", type=int, required=False, default=None, help=SUPPRESS, metavar="")
|
|
4868
|
+
parser.add_argument("--plot", type=str, required=False, default=None, help=SUPPRESS, metavar="")
|
|
4869
|
+
parser.add_argument("--csv", type=str, required=False, default=None, help=SUPPRESS, metavar="")
|
|
4870
|
+
add_plot_arguments(parser)
|
|
4871
|
+
_add_json_argument(parser)
|
|
4872
|
+
_run_service(parser, argv, SimmapSummary)
|
|
4873
|
+
|
|
4799
4874
|
@staticmethod
|
|
4800
4875
|
def cont_map(argv):
|
|
4801
4876
|
parser = _new_parser(
|
|
@@ -8897,6 +8972,10 @@ def stochastic_character_map(argv=None):
|
|
|
8897
8972
|
Phykit.stochastic_character_map(sys.argv[1:])
|
|
8898
8973
|
|
|
8899
8974
|
|
|
8975
|
+
def simmap_summary(argv=None):
|
|
8976
|
+
Phykit.simmap_summary(sys.argv[1:])
|
|
8977
|
+
|
|
8978
|
+
|
|
8900
8979
|
def cont_map(argv=None):
|
|
8901
8980
|
Phykit.cont_map(sys.argv[1:])
|
|
8902
8981
|
|
|
@@ -76,6 +76,7 @@ Phylomorphospace = _LazyServiceFactory("phykit.services.tree.phylomorphospace",
|
|
|
76
76
|
PhylogeneticRegression = _LazyServiceFactory("phykit.services.tree.phylogenetic_regression", "PhylogeneticRegression")
|
|
77
77
|
PhylogeneticGLM = _LazyServiceFactory("phykit.services.tree.phylogenetic_glm", "PhylogeneticGLM")
|
|
78
78
|
PhyloLogistic = _LazyServiceFactory("phykit.services.tree.phylo_logistic", "PhyloLogistic")
|
|
79
|
+
SimmapSummary = _LazyServiceFactory("phykit.services.tree.simmap_summary", "SimmapSummary")
|
|
79
80
|
StochasticCharacterMap = _LazyServiceFactory("phykit.services.tree.stochastic_character_map", "StochasticCharacterMap")
|
|
80
81
|
ContMap = _LazyServiceFactory("phykit.services.tree.cont_map", "ContMap")
|
|
81
82
|
DensityMap = _LazyServiceFactory("phykit.services.tree.density_map", "DensityMap")
|
|
@@ -40,6 +40,7 @@ _EXPORTS = {
|
|
|
40
40
|
"RobinsonFouldsDistance": "rf_distance",
|
|
41
41
|
"RootTree": "root_tree",
|
|
42
42
|
"Saturation": "saturation",
|
|
43
|
+
"SimmapSummary": "simmap_summary",
|
|
43
44
|
"Spr": "spr",
|
|
44
45
|
"SpuriousSequence": "spurious_sequence",
|
|
45
46
|
"TerminalBranchStats": "terminal_branch_stats",
|