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.
- {phykit-2.1.70 → phykit-2.1.72}/PKG-INFO +1 -1
- {phykit-2.1.70 → phykit-2.1.72}/phykit/cli_registry.py +4 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/phykit.py +190 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/service_factories.py +2 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/__init__.py +1 -0
- phykit-2.1.72/phykit/services/alignment/phylo_gwas.py +683 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/__init__.py +1 -0
- phykit-2.1.72/phykit/services/tree/phylo_impute.py +438 -0
- phykit-2.1.72/phykit/version.py +1 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/PKG-INFO +1 -1
- {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/SOURCES.txt +2 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/entry_points.txt +5 -0
- {phykit-2.1.70 → phykit-2.1.72}/setup.py +5 -0
- phykit-2.1.70/phykit/version.py +0 -1
- {phykit-2.1.70 → phykit-2.1.72}/LICENSE.md +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/README.md +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/__init__.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/__main__.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/errors.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/__init__.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/boolean_argument_parsing.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/caching.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/circular_layout.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/color_annotations.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/discrete_models.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/files.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/json_output.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/parallel.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/parsimony_utils.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/plot_config.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/quartet_utils.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/stats_summary.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/helpers/streaming.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/__init__.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_entropy.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_length.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_recoding.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/alignment_subsample.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/base.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/column_score.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/composition_per_taxon.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/dfoil.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/dna_threader.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/dstatistic.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/faidx.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/gc_content.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/identity_matrix.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/mask_alignment.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/pairwise_identity.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/plot_alignment_qc.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/rcv.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/rcvt.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/rename_fasta_entries.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/alignment/variable_sites.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/base.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ancestral_reconstruction.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/base.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/bipartition_support_stats.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/branch_length_multiplier.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/character_map.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/collapse_branches.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/concordance_asr.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/consensus_network.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/consensus_tree.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/cont_map.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/cophylo.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/density_map.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/discordance_asymmetry.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/dvmc.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/evo_tempo_map.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/evolutionary_rate.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/fit_continuous.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/fit_discrete.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/hidden_paralogy_check.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/independent_contrasts.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/internal_branch_stats.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/internode_labeler.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/kf_distance.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/lb_score.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ltt.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/monophyly_check.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/network_signal.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ou_shift_detection.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/ouwie.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/parsimony_score.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/patristic_distances.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phenogram.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylo_heatmap.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylo_logistic.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_glm.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_ordination.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_regression.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylogenetic_signal.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/phylomorphospace.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/polytomy_test.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/print_tree.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/prune_tree.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/quartet_network.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/quartet_pie.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/rate_heterogeneity.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/relative_rate_test.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/rename_tree_tips.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/rf_distance.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/root_tree.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/saturation.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/spectral_discordance.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/spurious_sequence.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/stochastic_character_map.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/terminal_branch_stats.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/threshold_model.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tip_labels.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tip_to_tip_distance.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/total_tree_length.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/trait_correlation.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/trait_rate_map.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/tree_space.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/treeness.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/treeness_over_rcv.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit/services/tree/vcv_utils.py +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/dependency_links.txt +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/requires.txt +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/phykit.egg-info/top_level.txt +0 -0
- {phykit-2.1.70 → phykit-2.1.72}/setup.cfg +0 -0
|
@@ -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")
|