【问题标题】:Python primer3 PCR primer designPython Primer3 PCR 引物设计
【发布时间】:2016-05-23 14:06:07
【问题描述】:

我正在使用这个模块来设计引物https://pypi.python.org/pypi/primer3-py,但我得到了意想不到的结果。

import primer3
input_seq = 'TAGTTTATGACTATATGGGGAGGTAAATAATGTATGTACTTCAAGAAAATAGGACAGTAGACTGACTCTAAATAATANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTCTTTTTTTTTTTAANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCATTTCTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGATGGGTGATTTTCAAAGAACAAGCATGGGCATATATTATAATGTCATATCACACCACTTGTTGGCTCTTCAAAAAGCAGTGGGGGTTAAGAATAATGGAGGTTTTCAACTCAAGATAAATGTGCATAACCAGAAATAGGAATAGAATATAATGCCACAGGTTAATTTTTGGTATTAACAATGATGAGATACTGAGAAGTTTCAGAAAATACCTTTTAGCCTGAAGCACTCCTAAATGTTAGGTAGAAAGTCATGTTTTAAATTTACACATAAGTCAATGCCCAAAAATTCAAATATAATGTGGAAACAAATACATATGATTTTTTGATTAAGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNACTTATTTGTTGCATTGATAAGTCTATATGAATATTAACTTGTGGAATTAGAAGGACATTCATGCATTTCCAATTCAAAAATAGAATCCATCGACTGATCTTCAGGGACATTAATAGAAGAATCATTGAAATATAAAGTCACTAGTAAGTGATAAGTAATTTTGTTGACTAGAAAACTGTAAAATGTTGGTAGAAATAAAGTAGAAAACATTAGAGTGTTGGTGAAGGGACTCTAGGAAAGGTTGGTTGAGAAAAGCAAACGTCACCAGTCGTGCCCTGGTTTGTAAGTGTACATGTAACTACTGTTTTAAAAAGTAGATATGAAATCATTTCATGTGCTATTAGTCATGTCAAGAGGAGCTTTCAATGTATTTCACAGTATGTATACATATATTATGTTCAATTAGCAGACTCTGACTCAGATACAAAAGGCTCTTTGTCCATATGTGGAAATACTGATACTGTTTTAATTAATATTCTTTTATGTTTTGTACCAATGAGGATTATTTTAGAGTTCGAGTCATGAATTCTTTACGTGGAGGCATGACTGGAGCATGTTTAAATGAAACAAGTAGTATAAAGACATGTAGATATTGGCACTATGAATGAGAATAAAAAGATATTCTCAAAATTTATGTAAGAAGTTGTCTTAAACTTGGGTAATGATCCCTTAGGTCTTTTCCTAATTGAATGTGTCAGTTATGAAAATTGTGACTAGCGCACTTAATATNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTAGTAATACCGAACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCTGAACTTCCTCATAAAATTANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAATCTTCTTTAGCAAGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTCCANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTACTTTACTTTGATGGTGAATAAGGGGGACACTTATCAGGCTAAACACTGTAGACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAGA'
primer = (primer3.bindings.designPrimers(
            {
                'SEQUENCE_ID': 'hmhm',
                'SEQUENCE_TEMPLATE': input_seq,
                'SEQUENCE_EXCLUDED_REGION': [0, 0] 
            },
            {
                'PRIMER_TASK': 'generic',
                'PRIMER_PICK_LEFT_PRIMER': 1,
                'PRIMER_PICK_INTERNAL_OLIGO': 0,
                'PRIMER_PICK_RIGHT_PRIMER': 1,
                'PRIMER_NUM_RETURN': 5,
                'PRIMER_OPT_SIZE': 20,
                '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': 5,
                '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': [[len(input_seq)-200,len(input_seq)]],}))
print primer

我想设计 PCR 引物,但由于某种原因它似乎失败了,因为没有设计内部寡核苷酸(据我所知)。它确实说有 5 个好的右引物和 6 个好的左引物。为什么不直接输出?

{'PRIMER_INTERNAL_NUM_RETURNED': 0L, 'PRIMER_RIGHT_EXPLAIN': 'considered 229, too many Ns 205, low tm 19, ok 5', 
 'PRIMER_INTERNAL_EXPLAIN': 'considered 1, unacceptable product size 1, ok 0',
 'PRIMER_PAIR_NUM_RETURNED': 0L, 'PRIMER_RIGHT_NUM_RETURNED': 0L, 'PRIMER_LEFT_NUM_RETURNED': 0L, 
'PRIMER_LEFT_EXPLAIN': 'considered 600, too many Ns 148, GC content failed 2, low tm 444, ok 6'}

编辑: 如果目标区域没有引物,我会使用 while 循环继续设计引物。为了确定要扩展的那一侧,即哪一侧未能制作引物,我使用来自'PRIMER_LEFT_EXPLAIN''PRIMER_RIGHT_EXPLAIN' 的值。这不适用于我发布的示例,并且由于我没有得到primer3 Standalone 为您提供的引物对输出,我不知道如何解决这个问题。

 while len(primer.keys())/20 == 0:

        if int(primer['PRIMER_LEFT_EXPLAIN'].split(' ')[-1]) == 0:
            print 'Expanding Left', primer['PRIMER_LEFT_EXPLAIN'].split(' ')[-1]
            start += -50

        elif int(primer['PRIMER_RIGHT_EXPLAIN'].split(' ')[-1]) == 0:
            print 'Expanding Right', primer['PRIMER_RIGHT_EXPLAIN'].split(' ')[-1]
            end += 50

        else:
            print primer
            raise Warning('Both sides have primers')

        input_primer3 = str(mm10_chr14_rec.seq[start:end].upper())
        primer = (primer3.bindings.designPrimers(
            {
                'SEQUENCE_ID': 'hmhm',
                'SEQUENCE_TEMPLATE': input_primer3,
                'SEQUENCE_EXCLUDED_REGION': [excl_start, excl_length] #start, length; might want to extend region?
            },
            {
                'PRIMER_OPT_SIZE': 20,
                'PRIMER_PICK_INTERNAL_OLIGO': 0,
                '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_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': [[len(input_primer3)-200,len(input_primer3)]],}))

        if end-start > 8000:
            print 'PCR fragment is bigger than 8000 bp after extending bounds'
#         raise Exception('PCR fragment is bigger than 8000 bp after extending bounds')
    if end-start > 8000:
        print input_primer3
    print 'size', end-start

【问题讨论】:

  • 你的问题解决了吗?
  • 正如您所指出的,独立版本会产生额外的错误消息。我正在根据错误消息循环引物构造坐标,所以我仍然遇到问题,尽管您确实回答了原因。如果你愿意,我可以接受你的回答。
  • 您目前的问题是什么?
  • @Ashafix 请参阅编辑。
  • 关于您的编辑的几个问题:len(primer.keys())/20 == 0: 的目的是什么?是否要检查是否返回了引物对?而int(primer['PRIMER_PAIR_NUM_RETURNED']) == 0:?如果您使用input_primer3 = str(mm10_chr14_rec.seq[start:end].upper()) 更改输入序列,'SEQUENCE_EXCLUDED_REGION' 是否也应该更改?我仍然认为主要问题是:[[len(input_primer3)-200,len(input_primer3)]] 只接受非常长的扩增子。

标签: python primer3


【解决方案1】:

使用primer3 独立的错误消息有点冗长:

PRIMER_LEFT_EXPLAIN=considered 600, too many Ns 148, GC content failed 2, low tm 444, ok 6
PRIMER_RIGHT_EXPLAIN=considered 229, too many Ns 205, low tm 19, ok 5
PRIMER_PAIR_EXPLAIN=considered 1, unacceptable product size 1, ok 0

问题似乎是你的功能:

'PRIMER_PRODUCT_SIZE_RANGE': [[len(input_seq)-200,len(input_seq)]]

您的序列长度为 5318 个碱基,而primer3 被告知要得到一个长度在 5118 和 5318 个碱基之间的产物,考虑到序列中的许多 N,这是相当困难的。

尝试删除 PRIMER_PRODUCT_SIZE_RANGE,您应该会得到一些结果。

【讨论】:

    【解决方案2】:

    没有设计内部寡核苷酸,因为您使用了参数 ['PRIMER_PICK_INTERNAL_OLIGO': 0]。空引物对的主要原因是输入序列中的“Ns 太多”,导致程序无法计算 GC 值和估计 Tm。

    【讨论】:

    • 我不想要任何内部寡核苷酸。有 6 个 ok 左引物和 5 个 ok 右引物。由此我得知我有引物对......
    猜你喜欢
    • 2016-10-09
    • 2016-08-21
    • 2017-07-31
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多