From b064e536ec78448d509dc6f9125a56e5565555b6 Mon Sep 17 00:00:00 2001 From: Sanjay C Nagi Date: Fri, 27 Sep 2024 16:06:51 +0100 Subject: [PATCH] fixes --- AnoPrimer/evaluate.py | 30 ++++++++++++++++++++++++++++-- AnoPrimer/utils.py | 26 +------------------------- tests/run_ci_notebooks.sh | 6 +++--- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/AnoPrimer/evaluate.py b/AnoPrimer/evaluate.py index 547d34c..3e8a0e1 100644 --- a/AnoPrimer/evaluate.py +++ b/AnoPrimer/evaluate.py @@ -12,7 +12,6 @@ _plotly_primers, _retrieve_span, _return_oligo_list, - add_spans_to_df, retrieve_data_resource, round_floats_in_df, ) @@ -73,7 +72,6 @@ def __init__( self.assay_type = assay_type self.assay_name = assay_name - self.df = round_floats_in_df(add_spans_to_df(primer_df), decimal_places=2) self.seq_parameters = seq_parameters self.primer_parameters = primer_parameters @@ -81,6 +79,9 @@ def __init__( self.target_sequence = seq_parameters.get("SEQUENCE_TEMPLATE") self.gdna_pos = np.array(seq_parameters.get("GENOMIC_DNA_POSITIONS")) + self.df = primer_df + self.df = round_floats_in_df(self.add_spans_to_df(), decimal_places=2) + def evaluate_primers( self, sample_sets, @@ -122,6 +123,31 @@ def evaluate_primers( if out_dir is not None and blat_df is not None: blat_df.to_csv(f"{out_dir}/{self.assay_name}_blat_results.csv") + def add_spans_to_df(self): + df = self.df + oligos, _ = _return_oligo_list(assay_type=self.assay_type) + + oligo_spans = {} + for oligo in oligos: + spans = [] + for pair in df: + pos = _retrieve_span( + df, + gdna_pos=self.gdna_pos, + oligo=oligo, + assay_type=self.assay_type, + pair=pair, + ) + span = f"{self.contig}:{pos.min()}-{pos.max()}" + spans.append(span) + + oligo_spans[oligo] = pd.Series( + spans, name=f"primer_{oligo}_span", index=self.df.columns + ) + df = pd.concat([df, oligo_spans[oligo].to_frame().T]) + + return df + def summarise_metadata(self, sample_sets=None, sample_query=None): """ Retrieve a summary of metadata for samples in the ag3/af1 resource. diff --git a/AnoPrimer/utils.py b/AnoPrimer/utils.py index a2ef0cd..6b58c48 100644 --- a/AnoPrimer/utils.py +++ b/AnoPrimer/utils.py @@ -153,30 +153,6 @@ def _plotly_frequencies( #### utility functions #### -def add_spans_to_df(primers): - df = primers.df - oligos, _ = _return_oligo_list(assay_type=primers.assay_type) - - oligo_spans = {} - for oligo in oligos: - spans = [] - for pair in df: - pos = _retrieve_span( - df, - gdna_pos=primers.gdna_pos, - oligo=oligo, - assay_type=primers.assay_type, - pair=pair, - ) - span = f"{primers.contig}:{pos.min()}-{pos.max()}" - spans.append(span) - - oligo_spans[oligo] = pd.Series( - spans, name=f"primer_{oligo}_span", index=primers.df.columns - ) - df = pd.concat([df, oligo_spans[oligo].to_frame().T]) - - return df def round_floats_in_df(df, decimal_places=1): @@ -193,7 +169,7 @@ def round_if_float(val): except (ValueError, TypeError): return val - return df.map(round_if_float) + return df.applymap(round_if_float) def extract_trailing_digits(string): diff --git a/tests/run_ci_notebooks.sh b/tests/run_ci_notebooks.sh index b72f6e3..15cc2b0 100755 --- a/tests/run_ci_notebooks.sh +++ b/tests/run_ci_notebooks.sh @@ -1,9 +1,9 @@ -papermill notebooks/AnoPrimer-long.ipynb tests/qPCR_run.ipynb -k AnoPrimer -f tests/cDNA_Params_fun.json && -papermill notebooks/AnoPrimer-long.ipynb tests/qPCR2_run.ipynb -k AnoPrimer -f tests/cDNA_Params_2_fun.json && -papermill notebooks/AnoPrimer-long.ipynb tests/gDNA_run.ipynb -k AnoPrimer -f tests/gDNA_probe_Params_fun.json && papermill notebooks/AnoPrimer-long.ipynb tests/qPCR_run.ipynb -k AnoPrimer -f tests/cDNA_Params.json && papermill notebooks/AnoPrimer-long.ipynb tests/qPCR2_run.ipynb -k AnoPrimer -f tests/cDNA_Params_2.json && papermill notebooks/AnoPrimer-long.ipynb tests/gDNA_run.ipynb -k AnoPrimer -f tests/gDNA_probe_Params.json && papermill notebooks/AnoPrimer-long.ipynb tests/probe_run.ipynb -k AnoPrimer -f tests/probe_Params.json && +papermill notebooks/AnoPrimer-long.ipynb tests/qPCR_run.ipynb -k AnoPrimer -f tests/cDNA_Params_fun.json && +papermill notebooks/AnoPrimer-long.ipynb tests/qPCR2_run.ipynb -k AnoPrimer -f tests/cDNA_Params_2_fun.json && +papermill notebooks/AnoPrimer-long.ipynb tests/gDNA_run.ipynb -k AnoPrimer -f tests/gDNA_probe_Params_fun.json && papermill notebooks/AnoPrimer-short.ipynb tests/short_run.ipynb -k AnoPrimer