From 8712538adc9fe16c01ccfbe46358e8114438cac2 Mon Sep 17 00:00:00 2001 From: Basheer Becerra Date: Mon, 29 Jan 2024 17:40:33 -0500 Subject: [PATCH] Handle NoneTypes for editing visualizations --- Dockerfile | 2 +- .../crispr_editing_visualization.py | 240 +++++++++--------- ...ambiguous_mapping-0.0.142-py3-none-any.whl | Bin 0 -> 35563 bytes .../crispr_ambiguous_mapping-0.0.142.tar.gz | Bin 0 -> 26019 bytes crispr-ambiguous-mapping/pyproject.toml | 2 +- 5 files changed, 127 insertions(+), 117 deletions(-) create mode 100644 crispr-ambiguous-mapping/dist/crispr_ambiguous_mapping-0.0.142-py3-none-any.whl create mode 100644 crispr-ambiguous-mapping/dist/crispr_ambiguous_mapping-0.0.142.tar.gz diff --git a/Dockerfile b/Dockerfile index 71a956e..a0c26c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,4 +15,4 @@ ENV PATH="${VENV}/bin:$PATH" # Install from PyPI RUN pip install --upgrade pip -RUN pip install crispr-ambiguous-mapping==0.0.141 +RUN pip install crispr-ambiguous-mapping==0.0.142 diff --git a/crispr-ambiguous-mapping/crispr_ambiguous_mapping/visualization/crispr_editing_visualization.py b/crispr-ambiguous-mapping/crispr_ambiguous_mapping/visualization/crispr_editing_visualization.py index 7adc473..f78f3f6 100644 --- a/crispr-ambiguous-mapping/crispr_ambiguous_mapping/visualization/crispr_editing_visualization.py +++ b/crispr-ambiguous-mapping/crispr_ambiguous_mapping/visualization/crispr_editing_visualization.py @@ -3,6 +3,8 @@ import seaborn as sns import pandas as pd +from ..models.editing_models import MatchSetWhitelistReporterObservedSequenceMutationProfiles + from typing import List, Tuple, Optional def plot_mutation_count_histogram(mutation_counter, title="Bar Plot of Counts Sorted by Index", filename: Optional[str] = None): @@ -30,131 +32,139 @@ def plot_mutation_count_histogram(mutation_counter, title="Bar Plot of Counts So -def plot_trinucleotide_mutational_signature(unlinked_mutations_df: pd.DataFrame, label: str, possible_refs: List[str] = ["A","C","G","T"], possible_alts: List[str] = ["A","C","G","T","X","N","-","X"], empty_context_character: str = "_", filename: Optional[str] = None): +def plot_trinucleotide_mutational_signature(mutations_results: MatchSetWhitelistReporterObservedSequenceMutationProfiles, label: str, count_attribute_name="ambiguous_accepted_umi_noncollapsed_mutations", unlinked_mutation_attribute_name = "all_observed_surrogate_unlinked_mutations_df", possible_refs: List[str] = ["A","C","G","T"], possible_alts: List[str] = ["A","C","G","T","X","N","-","X"], empty_context_character: str = "_", filename: Optional[str] = None): fig, ax = plt.subplots(1, figsize=(15, 5*1)) - if unlinked_mutations_df.shape[0] > 0: # If there are mutations - - ''' - Pre-processing mutation data - ''' - # Prepare unique trinucleotide contexts based on provided REF and ALT sequences - unique_trinucleotide_contexts_series_list: List[pd.Series] = [] - for ref_nt in possible_refs: - for alt_nt in possible_alts: - if ref_nt != alt_nt: - for preceding_ref_nt in possible_refs + [empty_context_character]: - for succeeding_ref_nt in possible_refs + [empty_context_character]: - unique_trinucleotide_contexts_series_list.append(pd.Series([preceding_ref_nt, ref_nt, alt_nt, succeeding_ref_nt], index=["preceding_nt_context", "ref_nt", "alt_nt", "succeeding_nt_context"])) - unique_trinucleotide_contexts_df = pd.DataFrame(unique_trinucleotide_contexts_series_list) - - # Calculate the counts for each trinucleotide context - unique_trinucleotide_contexts_counts_series_list: List[pd.Series] = [] - for mononucleotide_context_indices, mononucleotide_context_group in unique_trinucleotide_contexts_df.groupby(["ref_nt", "alt_nt"]): - for row_index, row in mononucleotide_context_group.iterrows(): - row["count"] = unlinked_mutations_df.loc[(unlinked_mutations_df["preceding_nt_context"] == row["preceding_nt_context"]) & (unlinked_mutations_df["ref_nt"] == row["ref_nt"]) & (unlinked_mutations_df["alt_nt"] == row["alt_nt"]) & (unlinked_mutations_df["succeeding_nt_context"] == row["succeeding_nt_context"]), "count"].sum() - unique_trinucleotide_contexts_counts_series_list.append(row) - unique_trinucleotide_contexts_counts_df = pd.DataFrame(unique_trinucleotide_contexts_counts_series_list) - - ''' - Prepare constants for plotting - ''' - # Define constants normalization and axis setting - unlinked_mutations_df_groupby_trinucleotide_context_summed = unlinked_mutations_df.groupby(["preceding_nt_context", "ref_nt", "alt_nt", "succeeding_nt_context"]).sum("count") - total_mutations = unlinked_mutations_df_groupby_trinucleotide_context_summed["count"].sum() - max_context_frequency = (np.round(max(unlinked_mutations_df_groupby_trinucleotide_context_summed["count"]/total_mutations) * 100)) + 1 # Get the max context frequency to set plot y-axis limit - - ''' - Generation annotations of each group and their positions. - ''' - current_position = 0 - variant_class_positions: List[Tuple[str, int]] = [] - - # TODO: Do I need to sort by preceeding and succeeding context to ensure order is correct? Check later by printing - - # Collect the variant position labels - unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context = unique_trinucleotide_contexts_counts_df.groupby(["ref_nt", "alt_nt"]) - for mononucleotide_context_indices, mononucleotide_context_group in unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context: - position = current_position + (mononucleotide_context_group.shape[0]/2) - current_position = current_position + mononucleotide_context_group.shape[0] - variant_class_positions.append((f"{mononucleotide_context_indices[0]}>{mononucleotide_context_indices[1]}", position)) # Add the label - - ''' - Perform plotting - ''' - color_palette = sns.color_palette("Set2",unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context.ngroups) - bar_colors = np.asarray([color_palette[group_index] for group_index, (_, mononucleotide_context_group) in enumerate(unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context) for _ in range(mononucleotide_context_group.shape[0])]) - variant_frequencies = pd.concat([(mononucleotide_context_group["count"]/total_mutations)*100 for mononucleotide_context_indices, mononucleotide_context_group in unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context]) - variant_frequencies.plot.bar(x='lab', y='val', rot=0, color = bar_colors, ax=ax) - ax.set_ylim(0, max_context_frequency) - ax.set_xticks([position for variant_class, position in variant_class_positions], [variant_class for variant_class, _ in variant_class_positions]) - ax.set_ylabel("Proportion of mutations (%)") - ax.set_xlabel("Variant Type") - ax.set_title(label) + mutation_results_typed = getattr(mutations_results, count_attribute_name) + if mutation_results_typed is not None: + unlinked_mutations_df: pd.DataFrame = getattr(mutation_results_typed, unlinked_mutation_attribute_name) + + if (unlinked_mutations_df is not None) and (unlinked_mutations_df.shape[0] > 0): # If there are mutations + + ''' + Pre-processing mutation data + ''' + # Prepare unique trinucleotide contexts based on provided REF and ALT sequences + unique_trinucleotide_contexts_series_list: List[pd.Series] = [] + for ref_nt in possible_refs: + for alt_nt in possible_alts: + if ref_nt != alt_nt: + for preceding_ref_nt in possible_refs + [empty_context_character]: + for succeeding_ref_nt in possible_refs + [empty_context_character]: + unique_trinucleotide_contexts_series_list.append(pd.Series([preceding_ref_nt, ref_nt, alt_nt, succeeding_ref_nt], index=["preceding_nt_context", "ref_nt", "alt_nt", "succeeding_nt_context"])) + unique_trinucleotide_contexts_df = pd.DataFrame(unique_trinucleotide_contexts_series_list) + + # Calculate the counts for each trinucleotide context + unique_trinucleotide_contexts_counts_series_list: List[pd.Series] = [] + for mononucleotide_context_indices, mononucleotide_context_group in unique_trinucleotide_contexts_df.groupby(["ref_nt", "alt_nt"]): + for row_index, row in mononucleotide_context_group.iterrows(): + row["count"] = unlinked_mutations_df.loc[(unlinked_mutations_df["preceding_nt_context"] == row["preceding_nt_context"]) & (unlinked_mutations_df["ref_nt"] == row["ref_nt"]) & (unlinked_mutations_df["alt_nt"] == row["alt_nt"]) & (unlinked_mutations_df["succeeding_nt_context"] == row["succeeding_nt_context"]), "count"].sum() + unique_trinucleotide_contexts_counts_series_list.append(row) + unique_trinucleotide_contexts_counts_df = pd.DataFrame(unique_trinucleotide_contexts_counts_series_list) + + ''' + Prepare constants for plotting + ''' + # Define constants normalization and axis setting + unlinked_mutations_df_groupby_trinucleotide_context_summed = unlinked_mutations_df.groupby(["preceding_nt_context", "ref_nt", "alt_nt", "succeeding_nt_context"]).sum("count") + total_mutations = unlinked_mutations_df_groupby_trinucleotide_context_summed["count"].sum() + max_context_frequency = (np.round(max(unlinked_mutations_df_groupby_trinucleotide_context_summed["count"]/total_mutations) * 100)) + 1 # Get the max context frequency to set plot y-axis limit + + ''' + Generation annotations of each group and their positions. + ''' + current_position = 0 + variant_class_positions: List[Tuple[str, int]] = [] + + # TODO: Do I need to sort by preceeding and succeeding context to ensure order is correct? Check later by printing + + # Collect the variant position labels + unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context = unique_trinucleotide_contexts_counts_df.groupby(["ref_nt", "alt_nt"]) + for mononucleotide_context_indices, mononucleotide_context_group in unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context: + position = current_position + (mononucleotide_context_group.shape[0]/2) + current_position = current_position + mononucleotide_context_group.shape[0] + variant_class_positions.append((f"{mononucleotide_context_indices[0]}>{mononucleotide_context_indices[1]}", position)) # Add the label + + ''' + Perform plotting + ''' + color_palette = sns.color_palette("Set2",unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context.ngroups) + bar_colors = np.asarray([color_palette[group_index] for group_index, (_, mononucleotide_context_group) in enumerate(unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context) for _ in range(mononucleotide_context_group.shape[0])]) + variant_frequencies = pd.concat([(mononucleotide_context_group["count"]/total_mutations)*100 for mononucleotide_context_indices, mononucleotide_context_group in unique_trinucleotide_contexts_counts_df_groupby_mononucleotide_context]) + variant_frequencies.plot.bar(x='lab', y='val', rot=0, color = bar_colors, ax=ax) + ax.set_ylim(0, max_context_frequency) + ax.set_xticks([position for variant_class, position in variant_class_positions], [variant_class for variant_class, _ in variant_class_positions]) + ax.set_ylabel("Proportion of mutations (%)") + ax.set_xlabel("Variant Type") + ax.set_title(label) if filename is None: plt.show() else: fig.savefig(filename) -def plot_positional_mutational_signature(unlinked_mutations_df: pd.DataFrame, label: str, possible_refs: List[str] = ["A","C","G","T"], possible_alts: List[str] = ["A","C","G","T","X","N","-","X"], empty_context_character: str = "_", min_position: int = 0, max_position: Optional[int] = None, filename: Optional[str] = None): +def plot_positional_mutational_signature(mutations_results: MatchSetWhitelistReporterObservedSequenceMutationProfiles, label: str, count_attribute_name="ambiguous_accepted_umi_noncollapsed_mutations", unlinked_mutation_attribute_name = "all_observed_surrogate_unlinked_mutations_df", possible_refs: List[str] = ["A","C","G","T"], possible_alts: List[str] = ["A","C","G","T","X","N","-","X"], empty_context_character: str = "_", min_position: int = 0, max_position: Optional[int] = None, filename: Optional[str] = None): fig, ax = plt.subplots(1, figsize=(15, 5*1)) - if unlinked_mutations_df.shape[0] > 0: # If there are mutations - ''' - Pre-processing mutation data - ''' - max_position = int(unlinked_mutations_df.position.quantile(q=0.95)) if max_position is None else max_position - unique_positional_contexts_series_list: List[pd.Series] = [] - for ref_nt in possible_refs: - for alt_nt in possible_alts: - if ref_nt != alt_nt: - for position in range(0, max_position): - unique_positional_contexts_series_list.append(pd.Series([ref_nt, alt_nt, position], index=["ref_nt", "alt_nt", "position"])) - unique_positional_contexts_df = pd.DataFrame(unique_positional_contexts_series_list) - - unique_positional_contexts_counts_series_list: List[pd.Series] = [] - for mononucleotide_context_indices, mononucleotide_context_group in unique_positional_contexts_df.groupby(["ref_nt", "alt_nt"]): - for row_index, row in mononucleotide_context_group.iterrows(): - row["count"] = unlinked_mutations_df.loc[(unlinked_mutations_df["ref_nt"] == row["ref_nt"]) & (unlinked_mutations_df["alt_nt"] == row["alt_nt"]) & (unlinked_mutations_df["position"] == row["position"]), "count"].sum() - unique_positional_contexts_counts_series_list.append(row) - unique_positional_contexts_counts_df = pd.DataFrame(unique_positional_contexts_counts_series_list) - - ''' - Prepare constants for plotting - ''' - # Define constants normalization and axis setting - unlinked_mutations_df_groupby_positional_context_summed = unlinked_mutations_df.groupby(["ref_nt", "alt_nt", "position"]).sum("count") - total_mutations = unlinked_mutations_df_groupby_positional_context_summed["count"].sum() - max_context_frequency = (np.round(max(unlinked_mutations_df_groupby_positional_context_summed["count"]/total_mutations) * 100)) + 1 # Get the max context frequency to set plot y-axis limit - - ''' - Generation annotations of each group and their positions. - ''' - current_position = 0 - variant_class_positions: List[Tuple[str, int]] = [] - - # TODO: Do I need to sort by preceeding and succeeding context to ensure order is correct? Check later by printing - - # Collect the variant position labels - unique_positional_contexts_counts_df_groupby_mononucleotide_context = unique_positional_contexts_counts_df.groupby(["ref_nt", "alt_nt"]) - for mononucleotide_context_indices, mononucleotide_context_group in unique_positional_contexts_counts_df_groupby_mononucleotide_context: - position = current_position + (mononucleotide_context_group.shape[0]/2) - current_position = current_position + mononucleotide_context_group.shape[0] - variant_class_positions.append((f"{mononucleotide_context_indices[0]}>{mononucleotide_context_indices[1]}", position)) # Add the label - - ''' - Perform plotting - ''' - color_palette = sns.color_palette("Set2",unique_positional_contexts_counts_df_groupby_mononucleotide_context.ngroups) - bar_colors = np.asarray([color_palette[group_index] for group_index, (_, mononucleotide_context_group) in enumerate(unique_positional_contexts_counts_df_groupby_mononucleotide_context) for _ in range(mononucleotide_context_group.shape[0])]) - variant_frequencies = pd.concat([(mononucleotide_context_group["count"]/total_mutations)*100 for mononucleotide_context_indices, mononucleotide_context_group in unique_positional_contexts_counts_df_groupby_mononucleotide_context]) - variant_frequencies.plot.bar(x='lab', y='val', rot=0, color = bar_colors, ax=ax) - ax.set_ylim(0, max_context_frequency) - ax.set_xticks([position for variant_class, position in variant_class_positions], [variant_class for variant_class, _ in variant_class_positions]) - ax.set_ylabel("Proportion of mutations (%)") - ax.set_xlabel("Variant Type") - ax.set_title(label) + mutation_results_typed = getattr(mutations_results, count_attribute_name) + if mutation_results_typed is not None: + unlinked_mutations_df: pd.DataFrame = getattr(mutation_results_typed, unlinked_mutation_attribute_name) + + if (unlinked_mutations_df is not None) and (unlinked_mutations_df.shape[0] > 0): # If there are mutations + ''' + Pre-processing mutation data + ''' + max_position = int(unlinked_mutations_df.position.quantile(q=0.95)) if max_position is None else max_position + unique_positional_contexts_series_list: List[pd.Series] = [] + for ref_nt in possible_refs: + for alt_nt in possible_alts: + if ref_nt != alt_nt: + for position in range(0, max_position): + unique_positional_contexts_series_list.append(pd.Series([ref_nt, alt_nt, position], index=["ref_nt", "alt_nt", "position"])) + unique_positional_contexts_df = pd.DataFrame(unique_positional_contexts_series_list) + + unique_positional_contexts_counts_series_list: List[pd.Series] = [] + for mononucleotide_context_indices, mononucleotide_context_group in unique_positional_contexts_df.groupby(["ref_nt", "alt_nt"]): + for row_index, row in mononucleotide_context_group.iterrows(): + row["count"] = unlinked_mutations_df.loc[(unlinked_mutations_df["ref_nt"] == row["ref_nt"]) & (unlinked_mutations_df["alt_nt"] == row["alt_nt"]) & (unlinked_mutations_df["position"] == row["position"]), "count"].sum() + unique_positional_contexts_counts_series_list.append(row) + unique_positional_contexts_counts_df = pd.DataFrame(unique_positional_contexts_counts_series_list) + + ''' + Prepare constants for plotting + ''' + # Define constants normalization and axis setting + unlinked_mutations_df_groupby_positional_context_summed = unlinked_mutations_df.groupby(["ref_nt", "alt_nt", "position"]).sum("count") + total_mutations = unlinked_mutations_df_groupby_positional_context_summed["count"].sum() + max_context_frequency = (np.round(max(unlinked_mutations_df_groupby_positional_context_summed["count"]/total_mutations) * 100)) + 1 # Get the max context frequency to set plot y-axis limit + + ''' + Generation annotations of each group and their positions. + ''' + current_position = 0 + variant_class_positions: List[Tuple[str, int]] = [] + + # TODO: Do I need to sort by preceeding and succeeding context to ensure order is correct? Check later by printing + + # Collect the variant position labels + unique_positional_contexts_counts_df_groupby_mononucleotide_context = unique_positional_contexts_counts_df.groupby(["ref_nt", "alt_nt"]) + for mononucleotide_context_indices, mononucleotide_context_group in unique_positional_contexts_counts_df_groupby_mononucleotide_context: + position = current_position + (mononucleotide_context_group.shape[0]/2) + current_position = current_position + mononucleotide_context_group.shape[0] + variant_class_positions.append((f"{mononucleotide_context_indices[0]}>{mononucleotide_context_indices[1]}", position)) # Add the label + + ''' + Perform plotting + ''' + color_palette = sns.color_palette("Set2",unique_positional_contexts_counts_df_groupby_mononucleotide_context.ngroups) + bar_colors = np.asarray([color_palette[group_index] for group_index, (_, mononucleotide_context_group) in enumerate(unique_positional_contexts_counts_df_groupby_mononucleotide_context) for _ in range(mononucleotide_context_group.shape[0])]) + variant_frequencies = pd.concat([(mononucleotide_context_group["count"]/total_mutations)*100 for mononucleotide_context_indices, mononucleotide_context_group in unique_positional_contexts_counts_df_groupby_mononucleotide_context]) + variant_frequencies.plot.bar(x='lab', y='val', rot=0, color = bar_colors, ax=ax) + ax.set_ylim(0, max_context_frequency) + ax.set_xticks([position for variant_class, position in variant_class_positions], [variant_class for variant_class, _ in variant_class_positions]) + ax.set_ylabel("Proportion of mutations (%)") + ax.set_xlabel("Variant Type") + ax.set_title(label) if filename is None: plt.show() diff --git a/crispr-ambiguous-mapping/dist/crispr_ambiguous_mapping-0.0.142-py3-none-any.whl b/crispr-ambiguous-mapping/dist/crispr_ambiguous_mapping-0.0.142-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..ce9395040cd103a624b57569561240956ad40f52 GIT binary patch literal 35563 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

a{GWAiEvvcw| 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

oWvZIy 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 KGq2yi`~Lu=>LStr literal 0 HcmV?d00001 diff --git a/crispr-ambiguous-mapping/dist/crispr_ambiguous_mapping-0.0.142.tar.gz b/crispr-ambiguous-mapping/dist/crispr_ambiguous_mapping-0.0.142.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc0d548108a676639a71a67004248a1cd7c77d35 GIT binary patch literal 26019 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 literal 0 HcmV?d00001 diff --git a/crispr-ambiguous-mapping/pyproject.toml b/crispr-ambiguous-mapping/pyproject.toml index f4b9682..255d5ee 100644 --- a/crispr-ambiguous-mapping/pyproject.toml +++ b/crispr-ambiguous-mapping/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "crispr-ambiguous-mapping" -version = "0.0.141" +version = "0.0.142" description = "" authors = ["Basheer Becerra "] readme = "README.md"