2016-02-12 36 views
0

我使用此模塊設計引物https://pypi.python.org/pypi/primer3-py,但我得到意想不到的結果。Python引物3 PCR引物設計

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獨立版給出的引物對輸出,所以我不確定如何解決此問題。

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 
+0

你的問題解決了嗎? –

+0

正如您指出的那樣,獨立版本會產生額外的錯誤消息。我正在根據錯誤信息循環引物構建座標,所以我仍然有一個問題,雖然你確實回答了原因。如果你想我可以接受你的答案。 – crysis405

+0

你目前的問題是什麼? –

回答

0

由於您使用了參數['PRIMER_PICK_INTERNAL_OLIGO':0],所以沒有設計內部寡核苷酸。空引物對的主要原因是輸入序列中的「Ns太多」,因此程序無法計算GC值並估計Tm。

+0

我不想要任何內部的寡頭。有6個好的左引物和5個好的右引物。從這我收集,我有引物對... – crysis405

1

隨着引物3獨立位置錯誤消息是有點更詳細:

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個鹼基和引物3的長度被告知獲得長度在5118和5318個鹼基之間的產物,考慮到序列中的許多N是相當困難的。

嘗試刪除PRIMER_PRODUCT_SIZE_RANGE,您應該會得到一些結果。