phykit 2.1.70__tar.gz → 2.1.72__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 (135) hide show
  1. {phykit-2.1.70 → phykit-2.1.72}/PKG-INFO +1 -1
  2. {phykit-2.1.70 → phykit-2.1.72}/phykit/cli_registry.py +4 -0
  3. {phykit-2.1.70 → phykit-2.1.72}/phykit/phykit.py +190 -0
  4. {phykit-2.1.70 → phykit-2.1.72}/phykit/service_factories.py +2 -0
  5. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/__init__.py +1 -0
  6. phykit-2.1.72/phykit/services/alignment/phylo_gwas.py +683 -0
  7. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/__init__.py +1 -0
  8. phykit-2.1.72/phykit/services/tree/phylo_impute.py +438 -0
  9. phykit-2.1.72/phykit/version.py +1 -0
  10. {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/PKG-INFO +1 -1
  11. {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/SOURCES.txt +2 -0
  12. {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/entry_points.txt +5 -0
  13. {phykit-2.1.70 → phykit-2.1.72}/setup.py +5 -0
  14. phykit-2.1.70/phykit/version.py +0 -1
  15. {phykit-2.1.70 → phykit-2.1.72}/LICENSE.md +0 -0
  16. {phykit-2.1.70 → phykit-2.1.72}/README.md +0 -0
  17. {phykit-2.1.70 → phykit-2.1.72}/phykit/__init__.py +0 -0
  18. {phykit-2.1.70 → phykit-2.1.72}/phykit/__main__.py +0 -0
  19. {phykit-2.1.70 → phykit-2.1.72}/phykit/errors.py +0 -0
  20. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/__init__.py +0 -0
  21. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/boolean_argument_parsing.py +0 -0
  22. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/caching.py +0 -0
  23. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/circular_layout.py +0 -0
  24. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/color_annotations.py +0 -0
  25. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/discrete_models.py +0 -0
  26. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/files.py +0 -0
  27. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/json_output.py +0 -0
  28. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/parallel.py +0 -0
  29. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/parsimony_utils.py +0 -0
  30. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/plot_config.py +0 -0
  31. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/quartet_utils.py +0 -0
  32. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/stats_summary.py +0 -0
  33. {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/streaming.py +0 -0
  34. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/__init__.py +0 -0
  35. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_entropy.py +0 -0
  36. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_length.py +0 -0
  37. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
  38. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
  39. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_recoding.py +0 -0
  40. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_subsample.py +0 -0
  41. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/base.py +0 -0
  42. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/column_score.py +0 -0
  43. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/composition_per_taxon.py +0 -0
  44. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
  45. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
  46. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/dfoil.py +0 -0
  47. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/dna_threader.py +0 -0
  48. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/dstatistic.py +0 -0
  49. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
  50. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/faidx.py +0 -0
  51. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/gc_content.py +0 -0
  52. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/identity_matrix.py +0 -0
  53. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/mask_alignment.py +0 -0
  54. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
  55. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/pairwise_identity.py +0 -0
  56. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
  57. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/plot_alignment_qc.py +0 -0
  58. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/rcv.py +0 -0
  59. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/rcvt.py +0 -0
  60. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/rename_fasta_entries.py +0 -0
  61. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
  62. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/variable_sites.py +0 -0
  63. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/base.py +0 -0
  64. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ancestral_reconstruction.py +0 -0
  65. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/base.py +0 -0
  66. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/bipartition_support_stats.py +0 -0
  67. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/branch_length_multiplier.py +0 -0
  68. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/character_map.py +0 -0
  69. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/collapse_branches.py +0 -0
  70. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/concordance_asr.py +0 -0
  71. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/consensus_network.py +0 -0
  72. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/consensus_tree.py +0 -0
  73. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/cont_map.py +0 -0
  74. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/cophylo.py +0 -0
  75. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
  76. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/density_map.py +0 -0
  77. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/discordance_asymmetry.py +0 -0
  78. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/dvmc.py +0 -0
  79. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/evo_tempo_map.py +0 -0
  80. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/evolutionary_rate.py +0 -0
  81. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/fit_continuous.py +0 -0
  82. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/fit_discrete.py +0 -0
  83. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/hidden_paralogy_check.py +0 -0
  84. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/independent_contrasts.py +0 -0
  85. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/internal_branch_stats.py +0 -0
  86. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/internode_labeler.py +0 -0
  87. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/kf_distance.py +0 -0
  88. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
  89. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/lb_score.py +0 -0
  90. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ltt.py +0 -0
  91. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/monophyly_check.py +0 -0
  92. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
  93. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/network_signal.py +0 -0
  94. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ou_shift_detection.py +0 -0
  95. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ouwie.py +0 -0
  96. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/parsimony_score.py +0 -0
  97. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/patristic_distances.py +0 -0
  98. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phenogram.py +0 -0
  99. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylo_heatmap.py +0 -0
  100. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylo_logistic.py +0 -0
  101. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_glm.py +0 -0
  102. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_ordination.py +0 -0
  103. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_regression.py +0 -0
  104. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_signal.py +0 -0
  105. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylomorphospace.py +0 -0
  106. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/polytomy_test.py +0 -0
  107. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/print_tree.py +0 -0
  108. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/prune_tree.py +0 -0
  109. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/quartet_network.py +0 -0
  110. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/quartet_pie.py +0 -0
  111. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/rate_heterogeneity.py +0 -0
  112. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/relative_rate_test.py +0 -0
  113. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/rename_tree_tips.py +0 -0
  114. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/rf_distance.py +0 -0
  115. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/root_tree.py +0 -0
  116. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/saturation.py +0 -0
  117. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/spectral_discordance.py +0 -0
  118. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/spurious_sequence.py +0 -0
  119. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/stochastic_character_map.py +0 -0
  120. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/terminal_branch_stats.py +0 -0
  121. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/threshold_model.py +0 -0
  122. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tip_labels.py +0 -0
  123. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tip_to_tip_distance.py +0 -0
  124. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
  125. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/total_tree_length.py +0 -0
  126. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/trait_correlation.py +0 -0
  127. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/trait_rate_map.py +0 -0
  128. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tree_space.py +0 -0
  129. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/treeness.py +0 -0
  130. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/treeness_over_rcv.py +0 -0
  131. {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/vcv_utils.py +0 -0
  132. {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/dependency_links.txt +0 -0
  133. {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/requires.txt +0 -0
  134. {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/top_level.txt +0 -0
  135. {phykit-2.1.70 → phykit-2.1.72}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phykit
3
- Version: 2.1.70
3
+ Version: 2.1.72
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,8 @@ 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_gwas": "phylo_gwas",
59
+ "pgwas": "phylo_gwas",
58
60
  "vs": "variable_sites",
59
61
  # Tree aliases
60
62
  "bss": "bipartition_support_stats",
@@ -186,6 +188,8 @@ ALIAS_TO_HANDLER: Dict[str, str] = {
186
188
  "da": "discordance_asymmetry",
187
189
  "spec_disc": "spectral_discordance",
188
190
  "sd": "spectral_discordance",
191
+ "impute": "phylo_impute",
192
+ "phylo_imp": "phylo_impute",
189
193
  "trait_correlation": "trait_correlation",
190
194
  "trait_corr": "trait_correlation",
191
195
  "phylo_corr": "trait_correlation",
@@ -167,6 +167,9 @@ class Phykit:
167
167
  - calculate sum-of-pairs score between a reference and query alignment
168
168
  thread_dna (alias: pal2nal; p2n)
169
169
  - thread dna sequences over a protein alignment
170
+ phylo_gwas (alias: pgwas)
171
+ - phylogenetic genome-wide association study
172
+ (Pease et al. 2016 approach)
170
173
  variable_sites (alias: vs)
171
174
  - calculates the number and percentage of variable sites
172
175
  in an alignment
@@ -224,6 +227,9 @@ class Phykit:
224
227
  trait_correlation (alias: trait_corr; phylo_corr)
225
228
  - compute phylogenetic correlations between all pairs
226
229
  of traits and display as a heatmap
230
+ phylo_impute (alias: impute; phylo_imp)
231
+ - impute missing trait values using phylogenetic
232
+ relationships and between-trait correlations
227
233
  phylogenetic_ordination (alias: phylo_ordination; ordination; ord;
228
234
  phylo_pca; phyl_pca; ppca; phylo_dimreduce; dimreduce; pdr)
229
235
  - phylogenetic ordination (PCA, t-SNE, or UMAP) on
@@ -1878,6 +1884,115 @@ class Phykit:
1878
1884
  _add_json_argument(parser)
1879
1885
  _run_service(parser, argv, VariableSites)
1880
1886
 
1887
+ @staticmethod
1888
+ def phylo_gwas(argv):
1889
+ parser = _new_parser(
1890
+ description=textwrap.dedent(
1891
+ f"""\
1892
+ {help_header}
1893
+
1894
+ Phylogenetic genome-wide association study following the
1895
+ Pease et al. (2016) approach.
1896
+
1897
+ Performs per-site association tests between alignment
1898
+ columns and a phenotype (categorical or continuous),
1899
+ applies Benjamini-Hochberg FDR correction, optionally
1900
+ classifies significant associations as monophyletic or
1901
+ polyphyletic using a phylogenetic tree, and produces a
1902
+ Manhattan plot.
1903
+
1904
+ Categorical phenotypes use Fisher's exact test (2 groups)
1905
+ or chi-squared test (>2 groups). Continuous phenotypes use
1906
+ point-biserial correlation. Only biallelic sites are tested.
1907
+
1908
+ Aliases:
1909
+ phylo_gwas, pgwas
1910
+ Command line interfaces:
1911
+ pk_phylo_gwas, pk_pgwas
1912
+
1913
+ Usage:
1914
+ phykit phylo_gwas -a <alignment> -d <phenotype> -o <output>
1915
+ [-t <tree>] [-p <partition>] [--alpha 0.05]
1916
+ [--exclude-monophyletic] [--csv <file>] [--json]
1917
+ [shared plot options]
1918
+
1919
+ Options
1920
+ =====================================================
1921
+ -a/--alignment FASTA alignment file
1922
+
1923
+ -d/--phenotype two-column TSV file:
1924
+ taxon<tab>phenotype
1925
+
1926
+ -o/--output output Manhattan plot path
1927
+
1928
+ -t/--tree optional Newick tree for
1929
+ monophyletic/polyphyletic
1930
+ classification
1931
+
1932
+ -p/--partition optional RAxML-style partition
1933
+ file for gene annotations
1934
+
1935
+ --alpha FDR significance threshold
1936
+ (default: 0.05)
1937
+
1938
+ --exclude-monophyletic exclude monophyletic
1939
+ associations from results
1940
+
1941
+ --dot-size scale factor for dot size
1942
+ in the Manhattan plot
1943
+ (default: 1.0; use 2.0
1944
+ for double, 0.5 for half)
1945
+
1946
+ --csv output per-site results as CSV
1947
+ to the specified file
1948
+
1949
+ --fig-width figure width in inches
1950
+ (auto-scaled if omitted)
1951
+
1952
+ --fig-height figure height in inches
1953
+ (auto-scaled if omitted)
1954
+
1955
+ --dpi resolution in DPI
1956
+ (default: 300)
1957
+
1958
+ --no-title hide the plot title
1959
+
1960
+ --title custom title text
1961
+
1962
+ --legend-position legend location (e.g.,
1963
+ "upper right", "none")
1964
+
1965
+ --ylabel-fontsize font size for y-axis labels;
1966
+ 0 to hide
1967
+
1968
+ --xlabel-fontsize font size for x-axis labels;
1969
+ 0 to hide
1970
+
1971
+ --title-fontsize font size for the title
1972
+
1973
+ --axis-fontsize font size for axis labels
1974
+
1975
+ --colors comma-separated colors
1976
+ (hex or named)
1977
+
1978
+ --json optional argument to output
1979
+ results as JSON
1980
+ """
1981
+ ),
1982
+ )
1983
+ parser.add_argument("-a", "--alignment", type=str, required=True, help=SUPPRESS, metavar="")
1984
+ parser.add_argument("-d", "--phenotype", type=str, required=True, help=SUPPRESS, metavar="")
1985
+ parser.add_argument("-o", "--output", type=str, required=True, help=SUPPRESS, metavar="")
1986
+ parser.add_argument("-t", "--tree", type=str, default=None, help=SUPPRESS, metavar="")
1987
+ parser.add_argument("-p", "--partition", type=str, default=None, help=SUPPRESS, metavar="")
1988
+ parser.add_argument("--alpha", type=float, default=0.05, help=SUPPRESS, metavar="")
1989
+ parser.add_argument("--exclude-monophyletic", action="store_true", default=False, help=SUPPRESS)
1990
+ parser.add_argument("--dot-size", type=float, default=1.0, help=SUPPRESS, metavar="")
1991
+ parser.add_argument("--csv", type=str, default=None, help=SUPPRESS, metavar="")
1992
+ add_plot_arguments(parser)
1993
+ _add_json_argument(parser)
1994
+ _run_service(parser, argv, PhyloGwas)
1995
+
1881
1996
  @staticmethod
1882
1997
  def alignment_subsample(argv):
1883
1998
  parser = _new_parser(
@@ -3569,6 +3684,73 @@ class Phykit:
3569
3684
  _add_json_argument(parser)
3570
3685
  _run_service(parser, argv, TraitCorrelation)
3571
3686
 
3687
+ @staticmethod
3688
+ def phylo_impute(argv):
3689
+ parser = _new_parser(
3690
+ description=textwrap.dedent(
3691
+ f"""\
3692
+ {help_header}
3693
+
3694
+ Phylogenetic imputation of missing trait values using
3695
+ conditional multivariate normal distributions.
3696
+
3697
+ Captures both phylogenetic relationships (via the
3698
+ tree's variance-covariance matrix) and between-trait
3699
+ correlations to predict missing values. Reports
3700
+ imputed values with standard errors and 95% CIs.
3701
+
3702
+ Missing values in the input trait file may be marked
3703
+ as NA, na, ?, or left empty.
3704
+
3705
+ Input is a phylogenetic tree and a tab-delimited
3706
+ multi-trait file with a header row:
3707
+ taxon<tab>trait1<tab>trait2<tab>...
3708
+
3709
+ Aliases:
3710
+ phylo_impute, impute, phylo_imp
3711
+ Command line interfaces:
3712
+ pk_phylo_impute, pk_impute, pk_phylo_imp
3713
+
3714
+ Usage:
3715
+ phykit phylo_impute -t <tree> -d <trait_data> -o <output>
3716
+ [-g <gene_trees>] [--json]
3717
+
3718
+ Options
3719
+ =====================================================
3720
+ -t/--tree tree file (required)
3721
+
3722
+ -d/--trait-data multi-trait TSV with header
3723
+ row; missing values marked
3724
+ as NA, ?, or empty
3725
+ (required)
3726
+
3727
+ -o/--output output TSV file with
3728
+ imputed values (required)
3729
+
3730
+ -g/--gene-trees optional multi-Newick file
3731
+ of gene trees for
3732
+ discordance-aware VCV
3733
+
3734
+ --json optional argument to output
3735
+ results as JSON
3736
+ """
3737
+ ),
3738
+ )
3739
+ parser.add_argument(
3740
+ "-t", "--tree", type=str, required=True, help=SUPPRESS, metavar=""
3741
+ )
3742
+ parser.add_argument(
3743
+ "-d", "--trait-data", type=str, required=True, help=SUPPRESS, metavar=""
3744
+ )
3745
+ parser.add_argument(
3746
+ "-o", "--output", type=str, required=True, help=SUPPRESS, metavar=""
3747
+ )
3748
+ parser.add_argument(
3749
+ "-g", "--gene-trees", type=str, default=None, help=SUPPRESS, metavar=""
3750
+ )
3751
+ _add_json_argument(parser)
3752
+ _run_service(parser, argv, PhyloImpute)
3753
+
3572
3754
  @staticmethod
3573
3755
  def phylogenetic_ordination(argv):
3574
3756
  parser = _new_parser(
@@ -8163,6 +8345,10 @@ def dstatistic(argv=None):
8163
8345
  Phykit.dstatistic(sys.argv[1:])
8164
8346
 
8165
8347
 
8348
+ def phylo_gwas(argv=None):
8349
+ Phykit.phylo_gwas(sys.argv[1:])
8350
+
8351
+
8166
8352
  def dfoil(argv=None):
8167
8353
  Phykit.dfoil(sys.argv[1:])
8168
8354
 
@@ -8446,5 +8632,9 @@ def tree_space(argv=None):
8446
8632
  Phykit.tree_space(sys.argv[1:])
8447
8633
 
8448
8634
 
8635
+ def phylo_impute(argv=None):
8636
+ Phykit.phylo_impute(sys.argv[1:])
8637
+
8638
+
8449
8639
  def trait_rate_map(argv=None):
8450
8640
  Phykit.trait_rate_map(sys.argv[1:])
@@ -44,6 +44,7 @@ RelativeCompositionVariability = _LazyServiceFactory("phykit.services.alignment.
44
44
  RelativeCompositionVariabilityTaxon = _LazyServiceFactory("phykit.services.alignment.rcvt", "RelativeCompositionVariabilityTaxon")
45
45
  RenameFastaEntries = _LazyServiceFactory("phykit.services.alignment.rename_fasta_entries", "RenameFastaEntries")
46
46
  SumOfPairsScore = _LazyServiceFactory("phykit.services.alignment.sum_of_pairs_score", "SumOfPairsScore")
47
+ PhyloGwas = _LazyServiceFactory("phykit.services.alignment.phylo_gwas", "PhyloGwas")
47
48
  VariableSites = _LazyServiceFactory("phykit.services.alignment.variable_sites", "VariableSites")
48
49
 
49
50
  AncestralReconstruction = _LazyServiceFactory("phykit.services.tree.ancestral_reconstruction", "AncestralReconstruction")
@@ -111,6 +112,7 @@ TreenessOverRCV = _LazyServiceFactory("phykit.services.tree.treeness_over_rcv",
111
112
  EvoTempoMap = _LazyServiceFactory("phykit.services.tree.evo_tempo_map", "EvoTempoMap")
112
113
  DiscordanceAsymmetry = _LazyServiceFactory("phykit.services.tree.discordance_asymmetry", "DiscordanceAsymmetry")
113
114
  SpectralDiscordance = _LazyServiceFactory("phykit.services.tree.spectral_discordance", "SpectralDiscordance")
115
+ PhyloImpute = _LazyServiceFactory("phykit.services.tree.phylo_impute", "PhyloImpute")
114
116
  TraitCorrelation = _LazyServiceFactory("phykit.services.tree.trait_correlation", "TraitCorrelation")
115
117
  TraitRateMap = _LazyServiceFactory("phykit.services.tree.trait_rate_map", "TraitRateMap")
116
118
  TreeSpace = _LazyServiceFactory("phykit.services.tree.tree_space", "TreeSpace")
@@ -26,6 +26,7 @@ _EXPORTS = {
26
26
  "RelativeCompositionVariabilityTaxon": "rcvt",
27
27
  "RenameFastaEntries": "rename_fasta_entries",
28
28
  "SumOfPairsScore": "sum_of_pairs_score",
29
+ "PhyloGwas": "phylo_gwas",
29
30
  "VariableSites": "variable_sites",
30
31
  }
31
32