| 
3
 | 
     1 '''
 | 
| 
 | 
     2 Created on Jan 1, 2011
 | 
| 
 | 
     3 
 | 
| 
 | 
     4 @author: John L. Herndon
 | 
| 
 | 
     5 @contact: herndon@cs.colostate.edu
 | 
| 
 | 
     6 @organization: Colorado State University
 | 
| 
 | 
     7 @group: Computer Science Department, Asa Ben-Hur's laboratory 
 | 
| 
 | 
     8 '''
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 import utils
 | 
| 
 | 
    11 
 | 
| 
 | 
    12 def writePrimerSearchInputFile( primerSets, outputFile ):
 | 
| 
 | 
    13     '''
 | 
| 
 | 
    14     A function to write primer pairs to a file formatted as primer search input.
 | 
| 
 | 
    15     primerPairs - a list of utils.PrimerSet objects
 | 
| 
 | 
    16     outputFile - a string containing the path to the output file
 | 
| 
 | 
    17     '''
 | 
| 
 | 
    18     
 | 
| 
 | 
    19     file = open( outputFile, 'w' )
 | 
| 
 | 
    20     i = 0
 | 
| 
 | 
    21     for primerSet in primerSets:
 | 
| 
 | 
    22         i += 1
 | 
| 
 | 
    23         if primerSet.reversePrimer == "":
 | 
| 
 | 
    24             print "Error - primer {0} has no reverse primer. {1} primers total".format( i, len( primerSets ) )
 | 
| 
 | 
    25             continue
 | 
| 
 | 
    26         file.write( primerSet.id + "\t" + primerSet.forwardPrimer + "\t" + primerSet.reversePrimer + "\n" )
 | 
| 
 | 
    27         
 | 
| 
 | 
    28     file.close( )
 | 
| 
 | 
    29     
 | 
| 
 | 
    30 def parsePrimerSearchFile( primerSearchFileName ):
 | 
| 
 | 
    31     '''
 | 
| 
 | 
    32     return a list of primer ids that are associated with at least one amplimer in the primer search output file.
 | 
| 
 | 
    33     '''
 | 
| 
 | 
    34     found = [ ]
 | 
| 
 | 
    35     
 | 
| 
 | 
    36     amplimerFound = False
 | 
| 
 | 
    37     currentId = -1;
 | 
| 
 | 
    38     for line in open( primerSearchFileName ).readlines( ):
 | 
| 
 | 
    39         
 | 
| 
 | 
    40         if "Primer name" in line:
 | 
| 
 | 
    41             #the id of the primer is found after the string "Primer name" in the file
 | 
| 
 | 
    42             currentId = line.split( ' ' )[ 2: ][ 0 ].strip( )
 | 
| 
 | 
    43         elif "Amplimer" in line and currentId not in found:
 | 
| 
 | 
    44             found.append( currentId )
 | 
| 
 | 
    45                 
 | 
| 
 | 
    46     if amplimerFound == True:
 | 
| 
 | 
    47         found.append( currentId )   
 | 
| 
 | 
    48     
 | 
| 
 | 
    49     return found
 | 
| 
 | 
    50             
 | 
| 
 | 
    51             
 | 
| 
 | 
    52         
 | 
| 
 | 
    53         
 | 
| 
 | 
    54     
 | 
| 
 | 
    55      |