def designPrimers(seq_args, global_args=None, reset_args=True,
                  misprime_lib=None, mishyb_lib=None, input_log=None, 
                  output_log=None, err_log=None):
    ''' Run the Primer3 design process, with the same interface as the bindings,
    using the wrapped subprocess of primer3_core to do the work. 

    If the global args have been previously set (either by a pervious
    `designPrimers` call or by a `setGlobals` call), `designPrimers` may be
    called with seqArgs alone (as a means of optimization).

    Args:
        seq_args (dict)     :   Primer3 sequence/design args as per Primer3 docs

    Kwargs:
        global_args (dict)  :   Primer3 global args as per Primer3 docs
        misprime_lib (dict) :   `Sequence name: sequence` dictionary for
                                mispriming checks.
        mishyb_lib (dict)   :   `Sequence name: sequence` dictionary for
                                mishybridization checks.

    Returns:
        A dictionary of Primer3 results (should be identical to the expected
        BoulderIO output from primer3_main)

    '''
    if reset_args:
        p3_args.clear()
    setGlobals(global_args, misprime_lib, mishyb_lib)
    setSeqArgs(seq_args)
    result = wrappers.designPrimers(p3_args,
                                    input_log=input_log,
                                    output_log=output_log,
                                    err_log=err_log)
    return convertResult(result)
Beispiel #2
0
def designPrimers(seq_args,
                  global_args=None,
                  reset_args=True,
                  misprime_lib=None,
                  mishyb_lib=None,
                  input_log=None,
                  output_log=None,
                  err_log=None):
    ''' Run the Primer3 design process, with the same interface as the bindings,
    using the wrapped subprocess of primer3_core to do the work. 

    If the global args have been previously set (either by a pervious
    `designPrimers` call or by a `setGlobals` call), `designPrimers` may be
    called with seqArgs alone (as a means of optimization).

    Args:
        seq_args (dict)     :   Primer3 sequence/design args as per Primer3 docs

    Kwargs:
        global_args (dict)  :   Primer3 global args as per Primer3 docs
        misprime_lib (dict) :   `Sequence name: sequence` dictionary for
                                mispriming checks.
        mishyb_lib (dict)   :   `Sequence name: sequence` dictionary for
                                mishybridization checks.

    Returns:
        A dictionary of Primer3 results (should be identical to the expected
        BoulderIO output from primer3_main)

    '''
    if reset_args:
        p3_args.clear()
    setGlobals(global_args, misprime_lib, mishyb_lib)
    setSeqArgs(seq_args)
    result = wrappers.designPrimers(p3_args,
                                    input_log=input_log,
                                    output_log=output_log,
                                    err_log=err_log)
    return convertResult(result)
Beispiel #3
0
 def testHuman(self):
     binding_res = bindings.designPrimers(
         {
             "SEQUENCE_ID": "MH1000",
             "SEQUENCE_TEMPLATE": "GCTTGCATGCCTGCAGGTCGACTCTAGAGGATCCCCCTACATTTTAGCATCAGTGAGTACAGCATGCTTACTGGAAGAGAGGGTCATGCAACAGATTAGGAGGTAAGTTTGCAAAGGCAGGCTAAGGAGGAGACGCACTGAATGCCATGGTAAGAACTCTGGACATAAAAATATTGGAAGTTGTTGAGCAAGTNAAAAAAATGTTTGGAAGTGTTACTTTAGCAATGGCAAGAATGATAGTATGGAATAGATTGGCAGAATGAAGGCAAAATGATTAGACATATTGCATTAAGGTAAAAAATGATAACTGAAGAATTATGTGCCACACTTATTAATAAGAAAGAATATGTGAACCTTGCAGATGTTTCCCTCTAGTAG",
             "SEQUENCE_INCLUDED_REGION": [36, 342],
         },
         {
             "PRIMER_OPT_SIZE": 20,
             "PRIMER_PICK_INTERNAL_OLIGO": 1,
             "PRIMER_INTERNAL_MAX_SELF_END": 8,
             "PRIMER_MIN_SIZE": 18,
             "PRIMER_MAX_SIZE": 25,
             "PRIMER_OPT_TM": 60.0,
             "PRIMER_MIN_TM": 57.0,
             "PRIMER_MAX_TM": 63.0,
             "PRIMER_MIN_GC": 20.0,
             "PRIMER_MAX_GC": 80.0,
             "PRIMER_MAX_POLY_X": 100,
             "PRIMER_INTERNAL_MAX_POLY_X": 100,
             "PRIMER_SALT_MONOVALENT": 50.0,
             "PRIMER_DNA_CONC": 50.0,
             "PRIMER_MAX_NS_ACCEPTED": 0,
             "PRIMER_MAX_SELF_ANY": 12,
             "PRIMER_MAX_SELF_END": 8,
             "PRIMER_PAIR_MAX_COMPL_ANY": 12,
             "PRIMER_PAIR_MAX_COMPL_END": 8,
             "PRIMER_PRODUCT_SIZE_RANGE": [[75, 100], [100, 125], [125, 150], [150, 175], [175, 200], [200, 225]],
         },
     )
     wrapper_res = wrappers.designPrimers(
         {
             "PRIMER_OPT_SIZE": 20,
             "PRIMER_PICK_INTERNAL_OLIGO": 1,
             "PRIMER_INTERNAL_MAX_SELF_END": 8,
             "PRIMER_MIN_SIZE": 18,
             "PRIMER_MAX_SIZE": 25,
             "PRIMER_OPT_TM": 60.0,
             "PRIMER_MIN_TM": 57.0,
             "PRIMER_MAX_TM": 63.0,
             "PRIMER_MIN_GC": 20.0,
             "PRIMER_MAX_GC": 80.0,
             "PRIMER_MAX_POLY_X": 100,
             "PRIMER_INTERNAL_MAX_POLY_X": 100,
             "PRIMER_SALT_MONOVALENT": 50.0,
             "PRIMER_DNA_CONC": 50.0,
             "PRIMER_MAX_NS_ACCEPTED": 0,
             "PRIMER_MAX_SELF_ANY": 12,
             "PRIMER_MAX_SELF_END": 8,
             "PRIMER_PAIR_MAX_COMPL_ANY": 12,
             "PRIMER_PAIR_MAX_COMPL_END": 8,
             "PRIMER_PRODUCT_SIZE_RANGE": "75-100 100-125 125-150 150-175 175-200 200-225",
             "SEQUENCE_ID": "MH1000",
             "SEQUENCE_TEMPLATE": "GCTTGCATGCCTGCAGGTCGACTCTAGAGGATCCCCCTACATTTTAGCATCAGTGAGTACAGCATGCTTACTGGAAGAGAGGGTCATGCAACAGATTAGGAGGTAAGTTTGCAAAGGCAGGCTAAGGAGGAGACGCACTGAATGCCATGGTAAGAACTCTGGACATAAAAATATTGGAAGTTGTTGAGCAAGTNAAAAAAATGTTTGGAAGTGTTACTTTAGCAATGGCAAGAATGATAGTATGGAATAGATTGGCAGAATGAAGGCAAAATGATTAGACATATTGCATTAAGGTAAAAAATGATAACTGAAGAATTATGTGCCACACTTATTAATAAGAAAGAATATGTGAACCTTGCAGATGTTTCCCTCTAGTAG",
             "SEQUENCE_INCLUDED_REGION": "36,342",
         }
     )
     print("\n\n\n{:<30} {:<25} {:<25}".format("Output Key", "Wrapper Result", "Binding Result"))
     print("-" * 80)
     for k, v in binding_res.items():
         print("{:<30} {:<25} {:<25}".format(k, repr(wrapper_res.get(k)), repr(v)))
Beispiel #4
0
 def testHuman(self):
     binding_res = bindings.designPrimers(
         {
             'SEQUENCE_ID': 'MH1000',
             'SEQUENCE_TEMPLATE': 'GCTTGCATGCCTGCAGGTCGACTCTAGAGGATCCCCCTACATTTTAGCATCAGTGAGTACAGCATGCTTACTGGAAGAGAGGGTCATGCAACAGATTAGGAGGTAAGTTTGCAAAGGCAGGCTAAGGAGGAGACGCACTGAATGCCATGGTAAGAACTCTGGACATAAAAATATTGGAAGTTGTTGAGCAAGTNAAAAAAATGTTTGGAAGTGTTACTTTAGCAATGGCAAGAATGATAGTATGGAATAGATTGGCAGAATGAAGGCAAAATGATTAGACATATTGCATTAAGGTAAAAAATGATAACTGAAGAATTATGTGCCACACTTATTAATAAGAAAGAATATGTGAACCTTGCAGATGTTTCCCTCTAGTAG',
             'SEQUENCE_INCLUDED_REGION': [36,342]
         },
         {
             'PRIMER_OPT_SIZE': 20,
             'PRIMER_PICK_INTERNAL_OLIGO': 1,
             'PRIMER_INTERNAL_MAX_SELF_END': 8,
             'PRIMER_MIN_SIZE': 18,
             'PRIMER_MAX_SIZE': 25,
             'PRIMER_OPT_TM': 60.0,
             'PRIMER_MIN_TM': 57.0,
             'PRIMER_MAX_TM': 63.0,
             'PRIMER_MIN_GC': 20.0,
             'PRIMER_MAX_GC': 80.0,
             'PRIMER_MAX_POLY_X': 100,
             'PRIMER_INTERNAL_MAX_POLY_X': 100,
             'PRIMER_SALT_MONOVALENT': 50.0,
             'PRIMER_DNA_CONC': 50.0,
             'PRIMER_MAX_NS_ACCEPTED': 0,
             'PRIMER_MAX_SELF_ANY': 12,
             'PRIMER_MAX_SELF_END': 8,
             'PRIMER_PAIR_MAX_COMPL_ANY': 12,
             'PRIMER_PAIR_MAX_COMPL_END': 8,
             'PRIMER_PRODUCT_SIZE_RANGE': [[75,100],[100,125],[125,150],[150,175],[175,200],[200,225]],
         }
     )
     wrapper_res = wrappers.designPrimers(
         {
             'PRIMER_OPT_SIZE': 20,
             'PRIMER_PICK_INTERNAL_OLIGO': 1,
             'PRIMER_INTERNAL_MAX_SELF_END': 8,
             'PRIMER_MIN_SIZE': 18,
             'PRIMER_MAX_SIZE': 25,
             'PRIMER_OPT_TM': 60.0,
             'PRIMER_MIN_TM': 57.0,
             'PRIMER_MAX_TM': 63.0,
             'PRIMER_MIN_GC': 20.0,
             'PRIMER_MAX_GC': 80.0,
             'PRIMER_MAX_POLY_X': 100,
             'PRIMER_INTERNAL_MAX_POLY_X': 100,
             'PRIMER_SALT_MONOVALENT': 50.0,
             'PRIMER_DNA_CONC': 50.0,
             'PRIMER_MAX_NS_ACCEPTED': 0,
             'PRIMER_MAX_SELF_ANY': 12,
             'PRIMER_MAX_SELF_END': 8,
             'PRIMER_PAIR_MAX_COMPL_ANY': 12,
             'PRIMER_PAIR_MAX_COMPL_END': 8,
             'PRIMER_PRODUCT_SIZE_RANGE': '75-100 100-125 125-150 150-175 175-200 200-225',
             'SEQUENCE_ID': 'MH1000',
             'SEQUENCE_TEMPLATE': 'GCTTGCATGCCTGCAGGTCGACTCTAGAGGATCCCCCTACATTTTAGCATCAGTGAGTACAGCATGCTTACTGGAAGAGAGGGTCATGCAACAGATTAGGAGGTAAGTTTGCAAAGGCAGGCTAAGGAGGAGACGCACTGAATGCCATGGTAAGAACTCTGGACATAAAAATATTGGAAGTTGTTGAGCAAGTNAAAAAAATGTTTGGAAGTGTTACTTTAGCAATGGCAAGAATGATAGTATGGAATAGATTGGCAGAATGAAGGCAAAATGATTAGACATATTGCATTAAGGTAAAAAATGATAACTGAAGAATTATGTGCCACACTTATTAATAAGAAAGAATATGTGAACCTTGCAGATGTTTCCCTCTAGTAG',
             'SEQUENCE_INCLUDED_REGION': '36,342'
         }
     )
     print('\n\n\n{:<30} {:<25} {:<25}'.format('Output Key', 'Wrapper Result', 'Binding Result'))
     print('-'*80)
     for k, v in binding_res.items():
         print('{:<30} {:<25} {:<25}'.format(k, repr(wrapper_res.get(k)), repr(v)))