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 |