annotate uniqprimer-0.5.0/primertools/eprimerparser.py @ 0:cdd8f911ad91 draft

Uploaded
author dereeper
date Fri, 07 Oct 2016 04:18:11 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
1 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
2 Created on Jan 1, 2011
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
3
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
4 @author: John L. Herndon
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
5 @contact: herndon@cs.colostate.edu
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
6 @organization: Colorado State University
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
7 @group: Computer Science Department, Asa Ben-Hur's laboratory
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
8 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
9
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
10 import os
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
11 import utils
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
12 import re
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
13
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
14 def parsePrimerSequences( eprimerFile ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
15 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
16 parse an eprimer3 output file for all primers
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
17 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
18
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
19 utils.logMessage( "eprimerparser::parsePrimerSequences( )", "parsing for primer sequences" )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
20 if os.path.exists( eprimerFile ) == False:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
21 utils.logMessage( "eprimerparser::parsePrimerSequences( )", "ERROR - eprimer file was not found" )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
22 raise utils.NoFileFoundException( eprimerFile )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
23
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
24
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
25 primers = [ ]
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
26 primerFile = open( eprimerFile )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
27
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
28 currentPrimer = None
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
29
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
30 nextPrimerId = 0
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
31 for line in primerFile.readlines( ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
32
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
33 if line[ 0 ] == '# ':
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
34 continue
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
35
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
36 if line.find( "PRODUCT SIZE" ) != -1:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
37 if currentPrimer is not None:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
38 primers.append( currentPrimer )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
39 currentPrimer = utils.PrimerSet( str( nextPrimerId ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
40 nextPrimerId += 1
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
41 productSize = int( line.split( ':' )[ 1 ].strip( ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
42 currentPrimer.setProductSize( productSize )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
43 else:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
44 tokens = re.split( ' *', line.strip( ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
45 if len( tokens ) == 7:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
46
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
47 sequence = tokens[ 6 ]
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
48 temp = tokens[ 4 ]
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
49
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
50 if tokens[ 0 ] == "FORWARD":
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
51 currentPrimer.setForwardPrimerData( sequence, temp )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
52 elif tokens[ 0 ] == "REVERSE":
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
53 currentPrimer.setReversePrimerData( sequence, temp )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
54
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
55 if currentPrimer is not None:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
56 primers.append( currentPrimer )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
57
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
58 utils.logMessage( "eprimerparser::parsePrimerSequences( )", "finished parsing. found {0} primers".format( len( primers ) ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
59 return primers
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
60
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
61
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
62
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
63
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
64
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
65
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
66
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
67
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
68
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
69
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
70
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
71
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
72
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
73
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
74
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
75