phykit 2.1.81__tar.gz → 2.1.83__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 (142) hide show
  1. {phykit-2.1.81 → phykit-2.1.83}/PKG-INFO +1 -1
  2. {phykit-2.1.81 → phykit-2.1.83}/phykit/cli_registry.py +6 -0
  3. {phykit-2.1.81 → phykit-2.1.83}/phykit/phykit.py +144 -0
  4. {phykit-2.1.81 → phykit-2.1.83}/phykit/service_factories.py +2 -0
  5. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/__init__.py +2 -0
  6. phykit-2.1.83/phykit/services/tree/phylo_path.py +821 -0
  7. phykit-2.1.83/phykit/services/tree/simmap_summary.py +604 -0
  8. phykit-2.1.83/phykit/version.py +1 -0
  9. {phykit-2.1.81 → phykit-2.1.83}/phykit.egg-info/PKG-INFO +1 -1
  10. {phykit-2.1.81 → phykit-2.1.83}/phykit.egg-info/SOURCES.txt +2 -0
  11. {phykit-2.1.81 → phykit-2.1.83}/phykit.egg-info/entry_points.txt +6 -0
  12. {phykit-2.1.81 → phykit-2.1.83}/setup.py +6 -0
  13. phykit-2.1.81/phykit/version.py +0 -1
  14. {phykit-2.1.81 → phykit-2.1.83}/LICENSE.md +0 -0
  15. {phykit-2.1.81 → phykit-2.1.83}/README.md +0 -0
  16. {phykit-2.1.81 → phykit-2.1.83}/phykit/__init__.py +0 -0
  17. {phykit-2.1.81 → phykit-2.1.83}/phykit/__main__.py +0 -0
  18. {phykit-2.1.81 → phykit-2.1.83}/phykit/errors.py +0 -0
  19. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/__init__.py +0 -0
  20. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/boolean_argument_parsing.py +0 -0
  21. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/caching.py +0 -0
  22. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/circular_layout.py +0 -0
  23. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/color_annotations.py +0 -0
  24. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/discrete_models.py +0 -0
  25. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/files.py +0 -0
  26. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/json_output.py +0 -0
  27. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/parallel.py +0 -0
  28. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/parsimony_utils.py +0 -0
  29. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/plot_config.py +0 -0
  30. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/quartet_utils.py +0 -0
  31. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/stats_summary.py +0 -0
  32. {phykit-2.1.81 → phykit-2.1.83}/phykit/helpers/streaming.py +0 -0
  33. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/__init__.py +0 -0
  34. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/__init__.py +0 -0
  35. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/alignment_entropy.py +0 -0
  36. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/alignment_length.py +0 -0
  37. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
  38. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
  39. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/alignment_recoding.py +0 -0
  40. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/alignment_subsample.py +0 -0
  41. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/base.py +0 -0
  42. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/column_score.py +0 -0
  43. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/composition_per_taxon.py +0 -0
  44. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
  45. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
  46. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/dfoil.py +0 -0
  47. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/dna_threader.py +0 -0
  48. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/dstatistic.py +0 -0
  49. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
  50. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/faidx.py +0 -0
  51. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/gc_content.py +0 -0
  52. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/identity_matrix.py +0 -0
  53. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/mask_alignment.py +0 -0
  54. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
  55. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/pairwise_identity.py +0 -0
  56. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
  57. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/phylo_gwas.py +0 -0
  58. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/plot_alignment_qc.py +0 -0
  59. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/rcv.py +0 -0
  60. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/rcvt.py +0 -0
  61. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/rename_fasta_entries.py +0 -0
  62. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
  63. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/taxon_groups.py +0 -0
  64. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/alignment/variable_sites.py +0 -0
  65. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/base.py +0 -0
  66. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/ancestral_reconstruction.py +0 -0
  67. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/base.py +0 -0
  68. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/bipartition_support_stats.py +0 -0
  69. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/branch_length_multiplier.py +0 -0
  70. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/character_map.py +0 -0
  71. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/collapse_branches.py +0 -0
  72. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/concordance_asr.py +0 -0
  73. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/consensus_network.py +0 -0
  74. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/consensus_tree.py +0 -0
  75. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/cont_map.py +0 -0
  76. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/cophylo.py +0 -0
  77. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
  78. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/density_map.py +0 -0
  79. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/discordance_asymmetry.py +0 -0
  80. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/dvmc.py +0 -0
  81. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/evo_tempo_map.py +0 -0
  82. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/evolutionary_rate.py +0 -0
  83. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/fit_continuous.py +0 -0
  84. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/fit_discrete.py +0 -0
  85. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/hidden_paralogy_check.py +0 -0
  86. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/hybridization.py +0 -0
  87. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/independent_contrasts.py +0 -0
  88. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/internal_branch_stats.py +0 -0
  89. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/internode_labeler.py +0 -0
  90. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/kf_distance.py +0 -0
  91. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
  92. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/lb_score.py +0 -0
  93. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/ltt.py +0 -0
  94. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/monophyly_check.py +0 -0
  95. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
  96. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/neighbor_net.py +0 -0
  97. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/network_signal.py +0 -0
  98. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/ou_shift_detection.py +0 -0
  99. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/ouwie.py +0 -0
  100. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/parsimony_score.py +0 -0
  101. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/patristic_distances.py +0 -0
  102. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phenogram.py +0 -0
  103. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylo_anova.py +0 -0
  104. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylo_heatmap.py +0 -0
  105. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylo_impute.py +0 -0
  106. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylo_logistic.py +0 -0
  107. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylogenetic_glm.py +0 -0
  108. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylogenetic_ordination.py +0 -0
  109. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylogenetic_regression.py +0 -0
  110. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylogenetic_signal.py +0 -0
  111. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/phylomorphospace.py +0 -0
  112. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/polytomy_test.py +0 -0
  113. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/print_tree.py +0 -0
  114. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/prune_tree.py +0 -0
  115. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/quartet_network.py +0 -0
  116. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/quartet_pie.py +0 -0
  117. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/rate_heterogeneity.py +0 -0
  118. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/relative_rate_test.py +0 -0
  119. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/rename_tree_tips.py +0 -0
  120. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/rf_distance.py +0 -0
  121. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/root_tree.py +0 -0
  122. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/saturation.py +0 -0
  123. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/spectral_discordance.py +0 -0
  124. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/spr.py +0 -0
  125. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/spurious_sequence.py +0 -0
  126. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/stochastic_character_map.py +0 -0
  127. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/terminal_branch_stats.py +0 -0
  128. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/threshold_model.py +0 -0
  129. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/tip_labels.py +0 -0
  130. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/tip_to_tip_distance.py +0 -0
  131. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
  132. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/total_tree_length.py +0 -0
  133. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/trait_correlation.py +0 -0
  134. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/trait_rate_map.py +0 -0
  135. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/tree_space.py +0 -0
  136. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/treeness.py +0 -0
  137. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/treeness_over_rcv.py +0 -0
  138. {phykit-2.1.81 → phykit-2.1.83}/phykit/services/tree/vcv_utils.py +0 -0
  139. {phykit-2.1.81 → phykit-2.1.83}/phykit.egg-info/dependency_links.txt +0 -0
  140. {phykit-2.1.81 → phykit-2.1.83}/phykit.egg-info/requires.txt +0 -0
  141. {phykit-2.1.81 → phykit-2.1.83}/phykit.egg-info/top_level.txt +0 -0
  142. {phykit-2.1.81 → phykit-2.1.83}/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.83
4
4
  Home-page: https://github.com/jlsteenwyk/phykit
5
5
  Author: Jacob L. Steenwyk
6
6
  Author-email: jlsteenwyk@gmail.com
@@ -55,6 +55,9 @@ ALIAS_TO_HANDLER: Dict[str, str] = {
55
55
  "sum_of_pairs_score": "sum_of_pairs_score",
56
56
  "sops": "sum_of_pairs_score",
57
57
  "sop": "sum_of_pairs_score",
58
+ "phylo_path": "phylo_path",
59
+ "ppath": "phylo_path",
60
+ "phylopath": "phylo_path",
58
61
  "phylo_anova": "phylo_anova",
59
62
  "panova": "phylo_anova",
60
63
  "phylo_manova": "phylo_anova",
@@ -118,6 +121,9 @@ ALIAS_TO_HANDLER: Dict[str, str] = {
118
121
  "casr": "concordance_asr",
119
122
  "simmap": "stochastic_character_map",
120
123
  "scm": "stochastic_character_map",
124
+ "simmap_summary": "simmap_summary",
125
+ "smsummary": "simmap_summary",
126
+ "describe_simmap": "simmap_summary",
121
127
  "contmap": "cont_map",
122
128
  "cmap": "cont_map",
123
129
  "densitymap": "density_map",
@@ -250,10 +250,14 @@ class Phykit:
250
250
  - fit phylogenetic GLM for binary (logistic) or count (Poisson) data
251
251
  phylo_anova (alias: panova; phylo_manova; pmanova)
252
252
  - phylogenetic ANOVA / MANOVA using RRPP (Adams & Collyer 2018)
253
+ phylo_path (alias: ppath; phylopath)
254
+ - phylogenetic path analysis (von Hardenberg & Gonzalez-Voyer 2013)
253
255
  phylo_logistic (alias: phylo_logreg; plogreg)
254
256
  - fit phylogenetic logistic regression (Ives & Garland 2010)
255
257
  stochastic_character_map (alias: simmap; scm)
256
258
  - stochastic character mapping (SIMMAP) of discrete traits
259
+ simmap_summary (alias: smsummary; describe_simmap)
260
+ - per-branch SIMMAP summary with node posteriors
257
261
  cont_map (alias: contmap; cmap)
258
262
  - continuous trait map (contMap) visualization on a phylogeny
259
263
  trait_rate_map (alias: rate_map; branch_rates)
@@ -2087,6 +2091,65 @@ class Phykit:
2087
2091
  _add_json_argument(parser)
2088
2092
  _run_service(parser, argv, PhyloAnova)
2089
2093
 
2094
+ @staticmethod
2095
+ def phylo_path(argv):
2096
+ parser = _new_parser(
2097
+ description=textwrap.dedent(
2098
+ f"""\
2099
+ {help_header}
2100
+
2101
+ Phylogenetic path analysis (von Hardenberg & Gonzalez-Voyer
2102
+ 2013). Compare competing causal DAGs using d-separation
2103
+ tests via PGLS with Pagel's lambda, rank models by CICc,
2104
+ and estimate model-averaged path coefficients.
2105
+
2106
+ Aliases:
2107
+ phylo_path, ppath, phylopath
2108
+ Command line interfaces:
2109
+ pk_phylo_path, pk_ppath, pk_phylopath
2110
+
2111
+ Usage:
2112
+ phykit phylo_path -t <tree> --traits <traits_file>
2113
+ --models <models_file> [--best-only]
2114
+ [--plot-output <file>] [--csv <file>] [--json]
2115
+
2116
+ Options
2117
+ =====================================================
2118
+ -t/--tree species tree (required)
2119
+
2120
+ --traits TSV file with taxon and
2121
+ continuous trait columns
2122
+ (required)
2123
+
2124
+ --models model definition file
2125
+ with candidate DAGs
2126
+ (required). Format:
2127
+ name: A->B, B->C, ...
2128
+
2129
+ --best-only report only best model
2130
+ coefficients (default:
2131
+ model averaging)
2132
+
2133
+ --plot-output output DAG plot file
2134
+
2135
+ --csv output CSV with model
2136
+ comparison and path
2137
+ coefficients
2138
+
2139
+ --json output results as JSON
2140
+ """
2141
+ ),
2142
+ )
2143
+ parser.add_argument("-t", "--tree", type=str, required=True, help=SUPPRESS, metavar="")
2144
+ parser.add_argument("--traits", type=str, required=True, help=SUPPRESS, metavar="")
2145
+ parser.add_argument("--models", type=str, required=True, help=SUPPRESS, metavar="")
2146
+ parser.add_argument("--best-only", action="store_true", help=SUPPRESS)
2147
+ parser.add_argument("--plot-output", type=str, default=None, help=SUPPRESS, metavar="")
2148
+ parser.add_argument("--csv", type=str, default=None, help=SUPPRESS, metavar="")
2149
+ add_plot_arguments(parser)
2150
+ _add_json_argument(parser)
2151
+ _run_service(parser, argv, PhyloPath)
2152
+
2090
2153
  @staticmethod
2091
2154
  def alignment_subsample(argv):
2092
2155
  parser = _new_parser(
@@ -4796,6 +4859,79 @@ class Phykit:
4796
4859
  _add_json_argument(parser)
4797
4860
  _run_service(parser, argv, StochasticCharacterMap)
4798
4861
 
4862
+ @staticmethod
4863
+ def simmap_summary(argv):
4864
+ parser = _new_parser(
4865
+ description=textwrap.dedent(
4866
+ f"""\
4867
+ {help_header}
4868
+
4869
+ Run N stochastic character maps and summarize per-branch
4870
+ dwelling time proportions, expected transitions, and
4871
+ posterior state probabilities at each node.
4872
+
4873
+ This extends stochastic_character_map by providing a
4874
+ detailed per-branch summary analogous to
4875
+ phytools::describe.simmap() in R.
4876
+
4877
+ Aliases:
4878
+ simmap_summary, smsummary, describe_simmap
4879
+ Command line interfaces:
4880
+ pk_simmap_summary, pk_smsummary, pk_describe_simmap
4881
+
4882
+ Usage:
4883
+ phykit simmap_summary -t <tree> -d <trait_data> -c <trait>
4884
+ [-m/--model ER|SYM|ARD] [-n/--nsim <int>]
4885
+ [--seed <int>] [--plot <file>] [--csv <file>] [--json]
4886
+
4887
+ Options
4888
+ =====================================================
4889
+ -t/--tree phylogenetic tree file
4890
+ (required)
4891
+
4892
+ -d/--trait_data tab-delimited trait file
4893
+ with header row (required)
4894
+
4895
+ -c/--trait column name for the
4896
+ discrete character trait
4897
+ (required)
4898
+
4899
+ -m/--model substitution model: ER
4900
+ (equal rates), SYM
4901
+ (symmetric), or ARD (all
4902
+ rates different). Default: ER
4903
+
4904
+ -n/--nsim number of stochastic maps
4905
+ to simulate (default: 100)
4906
+
4907
+ --seed random seed for
4908
+ reproducibility
4909
+
4910
+ --plot output plot file showing
4911
+ tree with posterior pie
4912
+ charts at nodes
4913
+
4914
+ --csv output CSV file with
4915
+ per-branch dwelling
4916
+ proportions and node
4917
+ posteriors
4918
+
4919
+ --json output results as JSON
4920
+ """
4921
+ ),
4922
+ )
4923
+ parser.add_argument("-t", "--tree", type=str, required=True, help=SUPPRESS, metavar="")
4924
+ parser.add_argument("-d", "--trait_data", type=str, required=True, help=SUPPRESS, metavar="")
4925
+ parser.add_argument("-c", "--trait", type=str, required=True, help=SUPPRESS, metavar="")
4926
+ parser.add_argument("-m", "--model", type=str, required=False, default="ER", help=SUPPRESS, metavar="")
4927
+ parser.add_argument("-n", "--nsim", type=int, required=False, default=100, help=SUPPRESS, metavar="")
4928
+ parser.add_argument("--seed", type=int, required=False, default=None, help=SUPPRESS, metavar="")
4929
+ parser.add_argument("--plot", type=str, required=False, default=None, help=SUPPRESS, metavar="")
4930
+ parser.add_argument("--csv", type=str, required=False, default=None, help=SUPPRESS, metavar="")
4931
+ add_plot_arguments(parser)
4932
+ _add_json_argument(parser)
4933
+ _run_service(parser, argv, SimmapSummary)
4934
+
4799
4935
  @staticmethod
4800
4936
  def cont_map(argv):
4801
4937
  parser = _new_parser(
@@ -8772,6 +8908,10 @@ def phylo_anova(argv=None):
8772
8908
  Phykit.phylo_anova(sys.argv[1:])
8773
8909
 
8774
8910
 
8911
+ def phylo_path(argv=None):
8912
+ Phykit.phylo_path(sys.argv[1:])
8913
+
8914
+
8775
8915
  def dfoil(argv=None):
8776
8916
  Phykit.dfoil(sys.argv[1:])
8777
8917
 
@@ -8897,6 +9037,10 @@ def stochastic_character_map(argv=None):
8897
9037
  Phykit.stochastic_character_map(sys.argv[1:])
8898
9038
 
8899
9039
 
9040
+ def simmap_summary(argv=None):
9041
+ Phykit.simmap_summary(sys.argv[1:])
9042
+
9043
+
8900
9044
  def cont_map(argv=None):
8901
9045
  Phykit.cont_map(sys.argv[1:])
8902
9046
 
@@ -45,6 +45,7 @@ RelativeCompositionVariabilityTaxon = _LazyServiceFactory("phykit.services.align
45
45
  RenameFastaEntries = _LazyServiceFactory("phykit.services.alignment.rename_fasta_entries", "RenameFastaEntries")
46
46
  SumOfPairsScore = _LazyServiceFactory("phykit.services.alignment.sum_of_pairs_score", "SumOfPairsScore")
47
47
  PhyloAnova = _LazyServiceFactory("phykit.services.tree.phylo_anova", "PhyloAnova")
48
+ PhyloPath = _LazyServiceFactory("phykit.services.tree.phylo_path", "PhyloPath")
48
49
  PhyloGwas = _LazyServiceFactory("phykit.services.alignment.phylo_gwas", "PhyloGwas")
49
50
  TaxonGroups = _LazyServiceFactory("phykit.services.alignment.taxon_groups", "TaxonGroups")
50
51
  VariableSites = _LazyServiceFactory("phykit.services.alignment.variable_sites", "VariableSites")
@@ -76,6 +77,7 @@ Phylomorphospace = _LazyServiceFactory("phykit.services.tree.phylomorphospace",
76
77
  PhylogeneticRegression = _LazyServiceFactory("phykit.services.tree.phylogenetic_regression", "PhylogeneticRegression")
77
78
  PhylogeneticGLM = _LazyServiceFactory("phykit.services.tree.phylogenetic_glm", "PhylogeneticGLM")
78
79
  PhyloLogistic = _LazyServiceFactory("phykit.services.tree.phylo_logistic", "PhyloLogistic")
80
+ SimmapSummary = _LazyServiceFactory("phykit.services.tree.simmap_summary", "SimmapSummary")
79
81
  StochasticCharacterMap = _LazyServiceFactory("phykit.services.tree.stochastic_character_map", "StochasticCharacterMap")
80
82
  ContMap = _LazyServiceFactory("phykit.services.tree.cont_map", "ContMap")
81
83
  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",
@@ -53,6 +54,7 @@ _EXPORTS = {
53
54
  "ConcordanceAsr": "concordance_asr",
54
55
  "PhyloLogistic": "phylo_logistic",
55
56
  "PhyloAnova": "phylo_anova",
57
+ "PhyloPath": "phylo_path",
56
58
  "PhyloImpute": "phylo_impute",
57
59
  "TraitCorrelation": "trait_correlation",
58
60
  "TraitRateMap": "trait_rate_map",