Mercurial > repos > dereeper > uniqprimer
comparison uniqprimer-0.5.0/utils.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 | |
| 11 import exceptions | |
| 12 import time | |
| 13 import os.path | |
| 14 from os import pathsep | |
| 15 from string import split | |
| 16 import tempfile | |
| 17 import shutil | |
| 18 | |
| 19 def getTimeStamp( ): | |
| 20 return time.strftime('%d%m%Y-%H%M%S') | |
| 21 | |
| 22 | |
| 23 class Match( object ): | |
| 24 ''' | |
| 25 record where two genomes line up. stores only alignments for one part of the genome | |
| 26 ''' | |
| 27 def __init__( self, start, end, seqID ): | |
| 28 self.seqID = seqID | |
| 29 self.start = start | |
| 30 self.end = end | |
| 31 | |
| 32 def __repr__( self ): | |
| 33 return "Start: {0}, End:{1}, SeqID:{2}".format( self.start, self.end, self.seqID ) | |
| 34 | |
| 35 class PrimerSet( object ): | |
| 36 | |
| 37 def __init__( self, id ): | |
| 38 self.id = id | |
| 39 self.productSize = 0 | |
| 40 self.forwardPrimer = "" | |
| 41 self.forwardMeltTemp = "" | |
| 42 self.reversePrimer = "" | |
| 43 self.reverseMeltTemp = "" | |
| 44 | |
| 45 | |
| 46 def setProductSize( self, productSize): | |
| 47 self.productSize = productSize | |
| 48 | |
| 49 def setForwardPrimerData( self, sequence, temp ): | |
| 50 self.forwardPrimer = sequence | |
| 51 self.forwardMeltTemp = temp | |
| 52 | |
| 53 def setReversePrimerData( self, sequence, temp): | |
| 54 self.reversePrimer = sequence | |
| 55 self.reverseMeltTemp = temp | |
| 56 | |
| 57 | |
| 58 #search function from http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/ | |
| 59 def search_file( filename ): | |
| 60 """ find file | |
| 61 """ | |
| 62 search_path = os.getenv( 'PATH' ) | |
| 63 logMessage( "utils::search_file", "Path: {0}".format( search_path ) ) | |
| 64 file_found = 0 | |
| 65 paths = split( search_path, pathsep ) | |
| 66 for path in paths: | |
| 67 if os.path.exists( os.path.join( path, filename ) ): | |
| 68 file_found = 1 | |
| 69 break | |
| 70 if file_found: | |
| 71 return os.path.abspath( os.path.join( path, filename ) ) | |
| 72 else: | |
| 73 return None | |
| 74 | |
| 75 tempDir = "" | |
| 76 removeTemp = True | |
| 77 | |
| 78 verbose = False | |
| 79 | |
| 80 | |
| 81 def initialize( isVerbose, cleanup, lf): ##Mau: added lf | |
| 82 global removeTemp | |
| 83 global tempDir | |
| 84 global verbose | |
| 85 global logFile ##Mau: added logFile variable | |
| 86 | |
| 87 logFile = lf #:Mau add line | |
| 88 | |
| 89 verbose = isVerbose | |
| 90 tempDir = tempfile.mkdtemp( dir="" ) | |
| 91 initializeLogging() | |
| 92 removeTemp = cleanup | |
| 93 logMessage( "utils::Initialize( )", "Initialization complete. Temporary directory: {0}".format( tempDir ) ) | |
| 94 | |
| 95 logFile = None | |
| 96 | |
| 97 | |
| 98 def printProgressMessage( message ): | |
| 99 global verbose | |
| 100 if verbose == True: | |
| 101 print message | |
| 102 | |
| 103 def getTemporaryDirectory( ): | |
| 104 global tempDir | |
| 105 return tempDir | |
| 106 | |
| 107 def initializeLogging(): | |
| 108 global logFile | |
| 109 #logFileName = "uniqprimer_{0}.log".format( getTimeStamp( ) ) | |
| 110 #logFileName = "log_uniqprimer.txt" ##Mau: commented out | |
| 111 logFileName = logFile ##Mau: changed | |
| 112 logFile = open( logFileName, 'w' ) | |
| 113 | |
| 114 def shutdown( ): | |
| 115 global removeTemp | |
| 116 global tempDir | |
| 117 shutdownLogging( ) | |
| 118 if removeTemp == True: | |
| 119 print "*** Removing temporary directory ***" | |
| 120 shutil.rmtree( tempDir ) | |
| 121 | |
| 122 def shutdownLogging( ): | |
| 123 global logFile | |
| 124 if logFile != None: | |
| 125 logFile.close( ) | |
| 126 | |
| 127 def logList( method, list ): | |
| 128 | |
| 129 message = reduce( lambda x,y: str( x ) + " " + str( y ) , list ) | |
| 130 logMessage(method, message) | |
| 131 | |
| 132 | |
| 133 def logMessage( method, message ): | |
| 134 global logFile | |
| 135 if logFile == None: | |
| 136 return | |
| 137 log = "{0} - {1}".format( method, message ) | |
| 138 | |
| 139 logFile.write( log + "\n" ) | |
| 140 logFile.flush( ) | |
| 141 | |
| 142 class EPrimerOptions( object ): | |
| 143 | |
| 144 def __init__( self ): | |
| 145 | |
| 146 self.minPrimerSize = 18 | |
| 147 self.maxPrimerSize = 27 | |
| 148 self.primerSize = 20 | |
| 149 self.productRange = "200-250" | |
| 150 | |
| 151 def setPrimerSize( self, size ): | |
| 152 | |
| 153 size = int( size ) | |
| 154 if size > 35: | |
| 155 size = 35 | |
| 156 | |
| 157 self.primerSize = size | |
| 158 if self.primerSize < self.minPrimerSize: | |
| 159 self.maxPrimerSize = self.primerSize | |
| 160 elif self.primerSize > self.maxPrimerSize: | |
| 161 self.maxPrimerSize = self.primerSize | |
| 162 | |
| 163 def getPrimerSize( self ): | |
| 164 return self.primerSize | |
| 165 | |
| 166 def setMinPrimerSize( self, minSize): | |
| 167 self.minPrimerSize = minSize | |
| 168 | |
| 169 def getMinPrimerSize( self ): | |
| 170 return self.minPrimerSize | |
| 171 | |
| 172 def setMaxPrimerSize( self, size ): | |
| 173 self.maxPrimerSize = size | |
| 174 | |
| 175 def getMaxPrimerSize( self ): | |
| 176 return self.maxPrimerSize | |
| 177 | |
| 178 def setProductRange( self, range ): | |
| 179 self.productRange = range | |
| 180 | |
| 181 def getProductRange( self ): | |
| 182 return self.productRange | |
| 183 | |
| 184 class NoPrimersExistException( exceptions.BaseException ): | |
| 185 | |
| 186 def __init__( self ): | |
| 187 exceptions.BaseException( self ) | |
| 188 | |
| 189 class ProgramNotFoundException( exceptions.BaseException ): | |
| 190 | |
| 191 def __init__( self, programName, details ): | |
| 192 exceptions.BaseException.__init__(self) | |
| 193 self.programName = programName | |
| 194 self.details = details | |
| 195 | |
| 196 class NoFileFoundException( exceptions.BaseException ): | |
| 197 | |
| 198 def __init__( self, filename ): | |
| 199 exceptions.BaseException.__init__(self) | |
| 200 self.filename = filename | |
| 201 | |
| 202 | |
| 203 class ModuleNotInitializedException( exceptions.BaseException ): | |
| 204 | |
| 205 def __init__( self, moduleName, reason ): | |
| 206 self.moduleName = moduleName | |
| 207 self.reason = reason |
