annotate uniqprimer-0.5.0/primertools/excludefilemanager.py @ 2:05ae1ce478bc draft default tip

Uploaded
author dereeper
date Fri, 08 Jun 2018 10:49:07 -0400
parents cdd8f911ad91
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 16, 2011
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
3
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
4 @author: jlh
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
5 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
6 import utils
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
7 import fastaparser
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
8 from Bio import SeqIO
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
9 import os
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
10
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
11 class ExcludeFileManager( object ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
12 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
13 A class to manage fasta files to be excluded
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
14 '''
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
15
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
16 def __init__( self ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
17 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
18 Initialize the ExcludeFileManager
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
19 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
20 self.excludeFiles = [ ]
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
21 self.outputFile = ""
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
22
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
23 def getOutputFileName( self ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
24 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
25 get the name of the file combined-sequence fasta file
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
26 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
27 return self.outputFile
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
28
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
29 def addExcludeFile( self, excludeFile ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
30 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
31 add a file to be managed by the ExcludeFileManager
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
32 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
33
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
34 if os.path.exists( excludeFile ) == False:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
35 utils.logMessage( "ExcludeFileManager::addExcludeFile( )", "exclude file not found: {0}".format( excludeFile ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
36 raise utils.NoFileFoundException( excludeFile )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
37
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
38 utils.logMessage( "ExcludeFileManager::addExcludeFile( )", "adding exclude file {0}".format( excludeFile ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
39 self.excludeFiles.append( excludeFile )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
40
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
41 def buildOutputFileName( self ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
42 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
43 build a unique file name to store the combined output sequences to
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
44 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
45 self.outputFile = utils.getTemporaryDirectory( ) + "/combined_exlude.ffn"
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
46 utils.logMessage( "ExcludeFileManager::buildOutputFileName( )", " exclude file: {0}".format( self.outputFile ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
47
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
48 def exportSequences( self ):
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
49 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
50 combine all exclude files into a single exclude file
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
51 """
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
52
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
53 utils.logMessage( "ExcludeFileManager::exportSequences( )", "parsing exclude sequences")
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
54
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
55 #read all exclude file sequences into memory
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
56 sequences = [ ]
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
57 for excludeFile in self.excludeFiles:
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
58 sequences.extend( fastaparser.parseFastaFile( excludeFile ) )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
59
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
60 utils.logMessage( "ExcludeFileManager::exportSequences( )", "finished parsing, writing to a common file" )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
61
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
62 self.buildOutputFileName( )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
63 #combine the sequences and write them to a file
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
64
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
65 SeqIO.write( sequences, open( self.outputFile, "w" ), "fasta" )
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
66
cdd8f911ad91 Uploaded
dereeper
parents:
diff changeset
67 utils.logMessage( "ExcludeFileManager::exportSequences( )", "All sequences exported" )
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