phykit 2.1.68__tar.gz → 2.1.69__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.68 → phykit-2.1.69}/PKG-INFO +1 -1
- {phykit-2.1.68 → phykit-2.1.69}/phykit/cli_registry.py +3 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/phykit.py +84 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/service_factories.py +1 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/__init__.py +1 -0
- phykit-2.1.69/phykit/services/tree/phylo_logistic.py +607 -0
- phykit-2.1.69/phykit/version.py +1 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit.egg-info/PKG-INFO +1 -1
- {phykit-2.1.68 → phykit-2.1.69}/phykit.egg-info/SOURCES.txt +1 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit.egg-info/entry_points.txt +3 -0
- {phykit-2.1.68 → phykit-2.1.69}/setup.py +3 -0
- phykit-2.1.68/phykit/version.py +0 -1
- {phykit-2.1.68 → phykit-2.1.69}/LICENSE.md +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/README.md +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/__init__.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/__main__.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/errors.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/__init__.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/boolean_argument_parsing.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/caching.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/circular_layout.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/color_annotations.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/discrete_models.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/files.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/json_output.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/parallel.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/parsimony_utils.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/plot_config.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/quartet_utils.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/stats_summary.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/helpers/streaming.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/__init__.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/__init__.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/alignment_entropy.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/alignment_length.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/alignment_length_no_gaps.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/alignment_outlier_taxa.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/alignment_recoding.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/alignment_subsample.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/base.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/column_score.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/composition_per_taxon.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/compositional_bias_per_site.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/create_concatenation_matrix.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/dfoil.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/dna_threader.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/dstatistic.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/evolutionary_rate_per_site.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/faidx.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/gc_content.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/identity_matrix.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/mask_alignment.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/occupancy_per_taxon.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/pairwise_identity.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/parsimony_informative_sites.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/plot_alignment_qc.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/rcv.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/rcvt.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/rename_fasta_entries.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/sum_of_pairs_score.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/alignment/variable_sites.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/base.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/ancestral_reconstruction.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/base.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/bipartition_support_stats.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/branch_length_multiplier.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/character_map.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/collapse_branches.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/concordance_asr.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/consensus_network.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/consensus_tree.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/cont_map.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/cophylo.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/covarying_evolutionary_rates.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/density_map.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/discordance_asymmetry.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/dvmc.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/evo_tempo_map.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/evolutionary_rate.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/fit_continuous.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/fit_discrete.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/hidden_paralogy_check.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/independent_contrasts.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/internal_branch_stats.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/internode_labeler.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/kf_distance.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/last_common_ancestor_subtree.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/lb_score.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/ltt.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/monophyly_check.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/nearest_neighbor_interchange.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/network_signal.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/ou_shift_detection.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/ouwie.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/parsimony_score.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/patristic_distances.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phenogram.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phylo_heatmap.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phylogenetic_glm.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phylogenetic_ordination.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phylogenetic_regression.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phylogenetic_signal.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/phylomorphospace.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/polytomy_test.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/print_tree.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/prune_tree.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/quartet_network.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/quartet_pie.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/rate_heterogeneity.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/relative_rate_test.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/rename_tree_tips.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/rf_distance.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/root_tree.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/saturation.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/spectral_discordance.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/spurious_sequence.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/stochastic_character_map.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/terminal_branch_stats.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/threshold_model.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/tip_labels.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/tip_to_tip_distance.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/tip_to_tip_node_distance.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/total_tree_length.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/trait_correlation.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/trait_rate_map.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/tree_space.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/treeness.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/treeness_over_rcv.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit/services/tree/vcv_utils.py +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit.egg-info/dependency_links.txt +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit.egg-info/requires.txt +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/phykit.egg-info/top_level.txt +0 -0
- {phykit-2.1.68 → phykit-2.1.69}/setup.cfg +0 -0
|
@@ -97,6 +97,9 @@ ALIAS_TO_HANDLER: Dict[str, str] = {
|
|
|
97
97
|
"pgls": "phylogenetic_regression",
|
|
98
98
|
"phylo_glm": "phylogenetic_glm",
|
|
99
99
|
"pglm": "phylogenetic_glm",
|
|
100
|
+
"phylo_logistic": "phylo_logistic",
|
|
101
|
+
"phylo_logreg": "phylo_logistic",
|
|
102
|
+
"plogreg": "phylo_logistic",
|
|
100
103
|
"parsimony": "parsimony_score",
|
|
101
104
|
"pars": "parsimony_score",
|
|
102
105
|
"charmap": "character_map",
|
|
@@ -237,6 +237,8 @@ class Phykit:
|
|
|
237
237
|
- fit phylogenetic generalized least squares (PGLS) regression
|
|
238
238
|
phylogenetic_glm (alias: phylo_glm; pglm)
|
|
239
239
|
- fit phylogenetic GLM for binary (logistic) or count (Poisson) data
|
|
240
|
+
phylo_logistic (alias: phylo_logreg; plogreg)
|
|
241
|
+
- fit phylogenetic logistic regression (Ives & Garland 2010)
|
|
240
242
|
stochastic_character_map (alias: simmap; scm)
|
|
241
243
|
- stochastic character mapping (SIMMAP) of discrete traits
|
|
242
244
|
cont_map (alias: contmap; cmap)
|
|
@@ -4287,6 +4289,84 @@ class Phykit:
|
|
|
4287
4289
|
_add_json_argument(parser)
|
|
4288
4290
|
_run_service(parser, argv, PhylogeneticGLM)
|
|
4289
4291
|
|
|
4292
|
+
@staticmethod
|
|
4293
|
+
def phylo_logistic(argv):
|
|
4294
|
+
parser = _new_parser(
|
|
4295
|
+
description=textwrap.dedent(
|
|
4296
|
+
f"""\
|
|
4297
|
+
{help_header}
|
|
4298
|
+
|
|
4299
|
+
Fit a Phylogenetic Logistic Regression for binary (0/1)
|
|
4300
|
+
response data while accounting for phylogenetic
|
|
4301
|
+
non-independence among species (Ives & Garland 2010).
|
|
4302
|
+
|
|
4303
|
+
Uses Maximum Penalized Likelihood Estimation (logistic_MPLE)
|
|
4304
|
+
with Firth's bias-correction penalty and jointly estimates
|
|
4305
|
+
the phylogenetic signal parameter alpha via the
|
|
4306
|
+
OU-transformed variance-covariance matrix.
|
|
4307
|
+
|
|
4308
|
+
Input is a phylogenetic tree and a tab-delimited multi-trait
|
|
4309
|
+
file with a header row:
|
|
4310
|
+
taxon<tab>trait1<tab>trait2<tab>...
|
|
4311
|
+
|
|
4312
|
+
Output includes coefficient estimates, standard errors,
|
|
4313
|
+
z-values, p-values, alpha, log-likelihood, penalized
|
|
4314
|
+
log-likelihood, and AIC.
|
|
4315
|
+
|
|
4316
|
+
Aliases:
|
|
4317
|
+
phylo_logistic, phylo_logreg, plogreg
|
|
4318
|
+
Command line interfaces:
|
|
4319
|
+
pk_phylo_logistic, pk_phylo_logreg, pk_plogreg
|
|
4320
|
+
|
|
4321
|
+
Usage:
|
|
4322
|
+
phykit phylo_logistic -t <tree> -d <trait_data> --response <column> --predictor <column> [--method logistic_MPLE|logistic_IG10] [--json]
|
|
4323
|
+
|
|
4324
|
+
Options
|
|
4325
|
+
=====================================================
|
|
4326
|
+
-t/--tree a tree file
|
|
4327
|
+
|
|
4328
|
+
-d/--trait-data tab-delimited multi-trait file
|
|
4329
|
+
with header row
|
|
4330
|
+
|
|
4331
|
+
--response binary response column name
|
|
4332
|
+
(must contain only 0 and 1)
|
|
4333
|
+
|
|
4334
|
+
--predictor predictor column name(s),
|
|
4335
|
+
comma-separated for multiple
|
|
4336
|
+
|
|
4337
|
+
--method estimation method: logistic_MPLE
|
|
4338
|
+
or logistic_IG10
|
|
4339
|
+
(default: logistic_MPLE)
|
|
4340
|
+
|
|
4341
|
+
--json optional argument to output
|
|
4342
|
+
results as JSON
|
|
4343
|
+
"""
|
|
4344
|
+
),
|
|
4345
|
+
)
|
|
4346
|
+
parser.add_argument(
|
|
4347
|
+
"-t", "--tree", type=str, required=True, help=SUPPRESS, metavar=""
|
|
4348
|
+
)
|
|
4349
|
+
parser.add_argument(
|
|
4350
|
+
"-d", "--trait-data", type=str, required=True, help=SUPPRESS, metavar=""
|
|
4351
|
+
)
|
|
4352
|
+
parser.add_argument(
|
|
4353
|
+
"--response", type=str, required=True, help=SUPPRESS, metavar=""
|
|
4354
|
+
)
|
|
4355
|
+
parser.add_argument(
|
|
4356
|
+
"--predictor", type=str, required=True, help=SUPPRESS, metavar=""
|
|
4357
|
+
)
|
|
4358
|
+
parser.add_argument(
|
|
4359
|
+
"--method",
|
|
4360
|
+
type=str,
|
|
4361
|
+
required=False,
|
|
4362
|
+
default="logistic_MPLE",
|
|
4363
|
+
choices=["logistic_MPLE", "logistic_IG10"],
|
|
4364
|
+
help=SUPPRESS,
|
|
4365
|
+
metavar="",
|
|
4366
|
+
)
|
|
4367
|
+
_add_json_argument(parser)
|
|
4368
|
+
_run_service(parser, argv, PhyloLogistic)
|
|
4369
|
+
|
|
4290
4370
|
@staticmethod
|
|
4291
4371
|
def stochastic_character_map(argv):
|
|
4292
4372
|
parser = _new_parser(
|
|
@@ -8192,6 +8272,10 @@ def phylogenetic_glm(argv=None):
|
|
|
8192
8272
|
Phykit.phylogenetic_glm(sys.argv[1:])
|
|
8193
8273
|
|
|
8194
8274
|
|
|
8275
|
+
def phylo_logistic(argv=None):
|
|
8276
|
+
Phykit.phylo_logistic(sys.argv[1:])
|
|
8277
|
+
|
|
8278
|
+
|
|
8195
8279
|
def stochastic_character_map(argv=None):
|
|
8196
8280
|
Phykit.stochastic_character_map(sys.argv[1:])
|
|
8197
8281
|
|
|
@@ -71,6 +71,7 @@ PhylogeneticOrdination = _LazyServiceFactory("phykit.services.tree.phylogenetic_
|
|
|
71
71
|
Phylomorphospace = _LazyServiceFactory("phykit.services.tree.phylomorphospace", "Phylomorphospace")
|
|
72
72
|
PhylogeneticRegression = _LazyServiceFactory("phykit.services.tree.phylogenetic_regression", "PhylogeneticRegression")
|
|
73
73
|
PhylogeneticGLM = _LazyServiceFactory("phykit.services.tree.phylogenetic_glm", "PhylogeneticGLM")
|
|
74
|
+
PhyloLogistic = _LazyServiceFactory("phykit.services.tree.phylo_logistic", "PhyloLogistic")
|
|
74
75
|
StochasticCharacterMap = _LazyServiceFactory("phykit.services.tree.stochastic_character_map", "StochasticCharacterMap")
|
|
75
76
|
ContMap = _LazyServiceFactory("phykit.services.tree.cont_map", "ContMap")
|
|
76
77
|
DensityMap = _LazyServiceFactory("phykit.services.tree.density_map", "DensityMap")
|
|
@@ -48,6 +48,7 @@ _EXPORTS = {
|
|
|
48
48
|
"ThresholdModel": "threshold_model",
|
|
49
49
|
"TreenessOverRCV": "treeness_over_rcv",
|
|
50
50
|
"ConcordanceAsr": "concordance_asr",
|
|
51
|
+
"PhyloLogistic": "phylo_logistic",
|
|
51
52
|
"TraitCorrelation": "trait_correlation",
|
|
52
53
|
"TraitRateMap": "trait_rate_map",
|
|
53
54
|
"TreeSpace": "tree_space",
|