Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix _ThermoAnalysis._set_globals_and_seq_args for improper checks on misprime_lib and mishyb_lib #135

Conversation

grinner
Copy link
Contributor

@grinner grinner commented Feb 15, 2024

Fix _ThermoAnalysis._set_globals_and_seq_args for improper checks on misprime_lib and mishyb_lib leading to incorrect initialization of mp_lib and mh_lib and extensive run delays. See #133

Test code:

import time

from primer3 import __version__
from primer3.bindings import design_primers

# FASTA file from https://www.ncbi.nlm.nih.gov/nuccore/NC_004547.2
ref_fasta = 'NC_004547.2.fa'

seq = '''\
GATTGATTGAAGTCCAGGCACCGATTCTCAGCCGTATCGGCGATGGCACACAGGATAACTTGTCTGGTAC
AGAAAAAGCGGTGCAGGTTAAGGTAAAAGCCTTACCGGATGCCACATTTGAAGTGGTGCACTCACTGGCA
AAATGGAAACGCAAAACGCTGGGCGCGTATGATTTTAGCTTCGGTGAAGGCATTTATACTCACATGAAGG
CGCTGCGTCCGGACGAAGATCGCCTGAGCCCGATCCACTCGGTTTATGTCGATCAGTGGGATTGGGAGCG
CGTGATGGAGGATGGCGAGCGCAATGCTGAATATCTGAAATCGACGGTCACGCGTATTTATCAAGGCATT
AAAGCGACTGAGGCTGCGGTACATCAGGCGTTTGGCATTCAGCCTTTCCTGCCAGAGCAGATTCATTTTG
TGCATACCGAAACCTTGCTGAAGCGTTATCCCGATCTGGACGCCAAAGGGCGTGAGCGAGCTATAGCTAA
AGAGCTGGGTGCGGTCTTCCTGATTGGGATTGGCGGTAAGCTGTCCAGCGGACACTCTCACGATGTGCGT
GCACCGGATTATGATGACTGGACGACACCAGGCGAGCAGGAATTGGCGGGTTTGAACGGCGATATCGTCG
TCTGGAACCCAGTCCTGAACGATGCGTTTGAGATTTCATCCATGGGTATCCGCGTGGACGCAGAGGCGCT
AACACGCCAACTGGCACTGACGCAGGATGAGGAACGTCTGAAGCTTGAATGGCATCAGGCGCTGCTGCGC
'''.replace('\n', '')

GLOBALS = {
    'PRIMER_OPT_SIZE': 20,
    'PRIMER_MIN_SIZE': 18,
    'PRIMER_MAX_SIZE': 25,
    'PRIMER_PRODUCT_SIZE_RANGE': [
        [200, 250], [250, 300],
        [150, 200], [100, 150],
        [70, 100],
    ],
    'PRIMER_NUM_RETURN': 50,
    'PRIMER_MISPRIMING_LIBRARY': ref_fasta,
    'PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS': 0,
}

seq_args = {
    'SEQUENCE_ID': 'XXX',
    'SEQUENCE_TEMPLATE': seq,
}

print('Using empty dicts for misprime_lib and mishyb_lib')
start = time.time()
candidates = design_primers(
    seq_args,
    GLOBALS,
    misprime_lib={},
    mishyb_lib={},
)
taken = time.time() - start
print(
    f'primer3 {__version__} with empty dicts gave {len(candidates)} in '
    f'{round(taken, 2)} seconds'
)

print("\nUsing None for misprime_lib and mishyb_lib")
start = time.time()
candidates = design_primers(
    seq_args,
    GLOBALS,
    misprime_lib=None,
    mishyb_lib=None,
)

taken = time.time() - start
print(
    f'primer3 {__version__} with None gave {len(candidates)} in '
    f'{round(taken, 2)} seconds\n',
)

Before:

Using empty dicts for misprime_lib and mishyb_lib
primer3 2.0.2 with empty dicts gave 1161 in 0.67 seconds

Using None for misprime_lib and mishyb_lib
primer3 2.0.2 with None gave 12 in 56.61 seconds

After

Using empty dicts for misprime_lib and mishyb_lib
primer3 2.0.3 with empty dicts gave 1161 in 0.66 seconds

Using None for misprime_lib and mishyb_lib
primer3 2.0.3 with None gave 1161 in 0.66 seconds

@grinner grinner force-pushed the grinner_fix__set_globals_and_seq_args_misprime_lib_mishyb_lib branch from 7eb5e3d to b347027 Compare February 16, 2024 00:30
primer3/thermoanalysis.pyx Outdated Show resolved Hide resolved
primer3/thermoanalysis.pyx Outdated Show resolved Hide resolved
…n `misprime_lib` and

`mishyb_lib` leading to incorrect initialization of `mp_lib` and `mh_lib`

Test added in `test_primerdesign.py` to verify the timing of the fix.
@grinner grinner force-pushed the grinner_fix__set_globals_and_seq_args_misprime_lib_mishyb_lib branch from b347027 to 5795692 Compare February 16, 2024 01:31
Copy link
Contributor

@benpruitt benpruitt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@grinner grinner merged commit aba8960 into libnano:2.0.3-staging Feb 16, 2024
1 check passed
@benpruitt benpruitt mentioned this pull request Feb 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants