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