From 6a80855825d65989e804c1beb4e337880d01f632 Mon Sep 17 00:00:00 2001 From: Blaise Li <blaise.li__git@nsup.org> Date: Wed, 2 Mar 2022 18:24:31 +0100 Subject: [PATCH] Counts table reformatting. --- libcodonusage/__init__.py | 5 ++++- libcodonusage/libcodonusage.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libcodonusage/__init__.py b/libcodonusage/__init__.py index 3eed697..12d8398 100644 --- a/libcodonusage/__init__.py +++ b/libcodonusage/__init__.py @@ -1,12 +1,15 @@ __copyright__ = "Copyright (C) 2022 Blaise Li" __licence__ = "GNU GPLv3" -__version__ = 0.3 +__version__ = 0.4 from .libcodonusage import ( aa2colour, + codon2aa, columns_by_aa, detect_fishy_genes, load_bias_table, load_counts_table, + make_aa_codon_columns, + make_counts_only, render_md, violin_usage, violin_usage_vertical, diff --git a/libcodonusage/libcodonusage.py b/libcodonusage/libcodonusage.py index c577e32..b8ee559 100644 --- a/libcodonusage/libcodonusage.py +++ b/libcodonusage/libcodonusage.py @@ -224,6 +224,27 @@ def detect_fishy_genes(codon_counts): return criteria +def make_counts_only(counts_table): + """ + Integrate "informative" columns of *counts_table* into the index. + """ + info_cols = [ + counts_table.index.name, + *counts_table.columns.difference(codon2aa)] + assert set(info_cols) == { + "old_locus_tag", "locus_tag", "length", "start_codon", "expected_start_aa", + "first_stop", "nb_stops", "start_upstream", "end_downstream"} + return counts_table.reset_index().set_index(info_cols) + + +def make_aa_codon_columns(counts_table): + """Transform column headers into a (aa, codon) MultiIndex.""" + counts_table.columns = pd.MultiIndex.from_tuples( + ((codon2aa[codon], codon) for codon in counts_table.columns), + names=("aa", "codon")) + return counts_table + + def load_bias_table(table_path, nb_cluster_series=2): """ Load a table containing by-amino-acid codon usage biases. -- GitLab