view uniqprimer-0.5.0/primertools/primersearchutils.py @ 3:3249d78ecfc2 draft

Uploaded
author dereeper
date Mon, 03 Jan 2022 09:56:55 +0000
parents
children
line wrap: on
line source

'''
Created on Jan 1, 2011

@author: John L. Herndon
@contact: herndon@cs.colostate.edu
@organization: Colorado State University
@group: Computer Science Department, Asa Ben-Hur's laboratory 
'''

import utils

def writePrimerSearchInputFile( primerSets, outputFile ):
    '''
    A function to write primer pairs to a file formatted as primer search input.
    primerPairs - a list of utils.PrimerSet objects
    outputFile - a string containing the path to the output file
    '''
    
    file = open( outputFile, 'w' )
    i = 0
    for primerSet in primerSets:
        i += 1
        if primerSet.reversePrimer == "":
            print "Error - primer {0} has no reverse primer. {1} primers total".format( i, len( primerSets ) )
            continue
        file.write( primerSet.id + "\t" + primerSet.forwardPrimer + "\t" + primerSet.reversePrimer + "\n" )
        
    file.close( )
    
def parsePrimerSearchFile( primerSearchFileName ):
    '''
    return a list of primer ids that are associated with at least one amplimer in the primer search output file.
    '''
    found = [ ]
    
    amplimerFound = False
    currentId = -1;
    for line in open( primerSearchFileName ).readlines( ):
        
        if "Primer name" in line:
            #the id of the primer is found after the string "Primer name" in the file
            currentId = line.split( ' ' )[ 2: ][ 0 ].strip( )
        elif "Amplimer" in line and currentId not in found:
            found.append( currentId )
                
    if amplimerFound == True:
        found.append( currentId )   
    
    return found