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.
Files changed (141) hide show
  1. {phykit-2.1.81 → phykit-2.1.82}/PKG-INFO +1 -1
  2. {phykit-2.1.81 → phykit-2.1.82}/phykit/cli_registry.py +3 -0
  3. {phykit-2.1.81 → phykit-2.1.82}/phykit/phykit.py +79 -0
  4. {phykit-2.1.81 → phykit-2.1.82}/phykit/service_factories.py +1 -0
  5. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/__init__.py +1 -0
  6. phykit-2.1.82/phykit/services/tree/simmap_summary.py +604 -0
  7. phykit-2.1.82/phykit/version.py +1 -0
  8. {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/PKG-INFO +1 -1
  9. {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/SOURCES.txt +1 -0
  10. {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/entry_points.txt +3 -0
  11. {phykit-2.1.81 → phykit-2.1.82}/setup.py +3 -0
  12. phykit-2.1.81/phykit/version.py +0 -1
  13. {phykit-2.1.81 → phykit-2.1.82}/LICENSE.md +0 -0
  14. {phykit-2.1.81 → phykit-2.1.82}/README.md +0 -0
  15. {phykit-2.1.81 → phykit-2.1.82}/phykit/__init__.py +0 -0
  16. {phykit-2.1.81 → phykit-2.1.82}/phykit/__main__.py +0 -0
  17. {phykit-2.1.81 → phykit-2.1.82}/phykit/errors.py +0 -0
  18. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/__init__.py +0 -0
  19. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/boolean_argument_parsing.py +0 -0
  20. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/caching.py +0 -0
  21. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/circular_layout.py +0 -0
  22. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/color_annotations.py +0 -0
  23. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/discrete_models.py +0 -0
  24. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/files.py +0 -0
  25. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/json_output.py +0 -0
  26. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/parallel.py +0 -0
  27. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/parsimony_utils.py +0 -0
  28. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/plot_config.py +0 -0
  29. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/quartet_utils.py +0 -0
  30. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/stats_summary.py +0 -0
  31. {phykit-2.1.81 → phykit-2.1.82}/phykit/helpers/streaming.py +0 -0
  32. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/__init__.py +0 -0
  33. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/__init__.py +0 -0
  34. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_entropy.py +0 -0
  35. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_length.py +0 -0
  36. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
  37. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
  38. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_recoding.py +0 -0
  39. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/alignment_subsample.py +0 -0
  40. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/base.py +0 -0
  41. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/column_score.py +0 -0
  42. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/composition_per_taxon.py +0 -0
  43. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
  44. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
  45. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/dfoil.py +0 -0
  46. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/dna_threader.py +0 -0
  47. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/dstatistic.py +0 -0
  48. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
  49. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/faidx.py +0 -0
  50. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/gc_content.py +0 -0
  51. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/identity_matrix.py +0 -0
  52. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/mask_alignment.py +0 -0
  53. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
  54. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/pairwise_identity.py +0 -0
  55. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
  56. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/phylo_gwas.py +0 -0
  57. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/plot_alignment_qc.py +0 -0
  58. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/rcv.py +0 -0
  59. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/rcvt.py +0 -0
  60. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/rename_fasta_entries.py +0 -0
  61. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
  62. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/taxon_groups.py +0 -0
  63. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/alignment/variable_sites.py +0 -0
  64. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/base.py +0 -0
  65. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ancestral_reconstruction.py +0 -0
  66. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/base.py +0 -0
  67. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/bipartition_support_stats.py +0 -0
  68. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/branch_length_multiplier.py +0 -0
  69. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/character_map.py +0 -0
  70. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/collapse_branches.py +0 -0
  71. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/concordance_asr.py +0 -0
  72. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/consensus_network.py +0 -0
  73. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/consensus_tree.py +0 -0
  74. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/cont_map.py +0 -0
  75. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/cophylo.py +0 -0
  76. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
  77. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/density_map.py +0 -0
  78. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/discordance_asymmetry.py +0 -0
  79. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/dvmc.py +0 -0
  80. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/evo_tempo_map.py +0 -0
  81. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/evolutionary_rate.py +0 -0
  82. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/fit_continuous.py +0 -0
  83. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/fit_discrete.py +0 -0
  84. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/hidden_paralogy_check.py +0 -0
  85. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/hybridization.py +0 -0
  86. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/independent_contrasts.py +0 -0
  87. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/internal_branch_stats.py +0 -0
  88. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/internode_labeler.py +0 -0
  89. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/kf_distance.py +0 -0
  90. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
  91. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/lb_score.py +0 -0
  92. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ltt.py +0 -0
  93. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/monophyly_check.py +0 -0
  94. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
  95. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/neighbor_net.py +0 -0
  96. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/network_signal.py +0 -0
  97. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ou_shift_detection.py +0 -0
  98. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/ouwie.py +0 -0
  99. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/parsimony_score.py +0 -0
  100. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/patristic_distances.py +0 -0
  101. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phenogram.py +0 -0
  102. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_anova.py +0 -0
  103. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_heatmap.py +0 -0
  104. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_impute.py +0 -0
  105. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylo_logistic.py +0 -0
  106. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_glm.py +0 -0
  107. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_ordination.py +0 -0
  108. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_regression.py +0 -0
  109. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylogenetic_signal.py +0 -0
  110. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/phylomorphospace.py +0 -0
  111. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/polytomy_test.py +0 -0
  112. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/print_tree.py +0 -0
  113. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/prune_tree.py +0 -0
  114. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/quartet_network.py +0 -0
  115. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/quartet_pie.py +0 -0
  116. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/rate_heterogeneity.py +0 -0
  117. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/relative_rate_test.py +0 -0
  118. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/rename_tree_tips.py +0 -0
  119. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/rf_distance.py +0 -0
  120. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/root_tree.py +0 -0
  121. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/saturation.py +0 -0
  122. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/spectral_discordance.py +0 -0
  123. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/spr.py +0 -0
  124. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/spurious_sequence.py +0 -0
  125. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/stochastic_character_map.py +0 -0
  126. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/terminal_branch_stats.py +0 -0
  127. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/threshold_model.py +0 -0
  128. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tip_labels.py +0 -0
  129. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tip_to_tip_distance.py +0 -0
  130. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
  131. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/total_tree_length.py +0 -0
  132. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/trait_correlation.py +0 -0
  133. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/trait_rate_map.py +0 -0
  134. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/tree_space.py +0 -0
  135. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/treeness.py +0 -0
  136. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/treeness_over_rcv.py +0 -0
  137. {phykit-2.1.81 → phykit-2.1.82}/phykit/services/tree/vcv_utils.py +0 -0
  138. {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/dependency_links.txt +0 -0
  139. {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/requires.txt +0 -0
  140. {phykit-2.1.81 → phykit-2.1.82}/phykit.egg-info/top_level.txt +0 -0
  141. {phykit-2.1.81 → phykit-2.1.82}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phykit
3
- Version: 2.1.81
3
+ Version: 2.1.82
4
4
  Home-page: https://github.com/jlsteenwyk/phykit
5
5
  Author: Jacob L. Steenwyk
6
6
  Author-email: jlsteenwyk@gmail.com
@@ -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",