Mercurial > repos > dereeper > uniqprimer
comparison uniqprimer-0.5.0/primertools/eprimerparser.py @ 3:3249d78ecfc2 draft
Uploaded
| author | dereeper |
|---|---|
| date | Mon, 03 Jan 2022 09:56:55 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 2:7e0438dad4e9 | 3:3249d78ecfc2 |
|---|---|
| 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 os | |
| 11 import utils | |
| 12 import re | |
| 13 | |
| 14 def parsePrimerSequences( eprimerFile ): | |
| 15 ''' | |
| 16 parse an eprimer3 output file for all primers | |
| 17 ''' | |
| 18 | |
| 19 utils.logMessage( "eprimerparser::parsePrimerSequences( )", "parsing for primer sequences" ) | |
| 20 if os.path.exists( eprimerFile ) == False: | |
| 21 utils.logMessage( "eprimerparser::parsePrimerSequences( )", "ERROR - eprimer file was not found" ) | |
| 22 raise utils.NoFileFoundException( eprimerFile ) | |
| 23 | |
| 24 | |
| 25 primers = [ ] | |
| 26 primerFile = open( eprimerFile ) | |
| 27 | |
| 28 currentPrimer = None | |
| 29 | |
| 30 nextPrimerId = 0 | |
| 31 for line in primerFile.readlines( ): | |
| 32 | |
| 33 if line[ 0 ] == '# ': | |
| 34 continue | |
| 35 | |
| 36 if line.find( "PRODUCT SIZE" ) != -1: | |
| 37 if currentPrimer is not None: | |
| 38 primers.append( currentPrimer ) | |
| 39 currentPrimer = utils.PrimerSet( str( nextPrimerId ) ) | |
| 40 nextPrimerId += 1 | |
| 41 productSize = int( line.split( ':' )[ 1 ].strip( ) ) | |
| 42 currentPrimer.setProductSize( productSize ) | |
| 43 else: | |
| 44 tokens = re.split( ' *', line.strip( ) ) | |
| 45 if len( tokens ) == 7: | |
| 46 | |
| 47 sequence = tokens[ 6 ] | |
| 48 temp = tokens[ 4 ] | |
| 49 | |
| 50 if tokens[ 0 ] == "FORWARD": | |
| 51 currentPrimer.setForwardPrimerData( sequence, temp ) | |
| 52 elif tokens[ 0 ] == "REVERSE": | |
| 53 currentPrimer.setReversePrimerData( sequence, temp ) | |
| 54 | |
| 55 if currentPrimer is not None: | |
| 56 primers.append( currentPrimer ) | |
| 57 | |
| 58 utils.logMessage( "eprimerparser::parsePrimerSequences( )", "finished parsing. found {0} primers".format( len( primers ) ) ) | |
| 59 return primers | |
| 60 | |
| 61 | |
| 62 | |
| 63 | |
| 64 | |
| 65 | |
| 66 | |
| 67 | |
| 68 | |
| 69 | |
| 70 | |
| 71 | |
| 72 | |
| 73 | |
| 74 | |
| 75 |
