Package bmrblib :: Package pystarlib :: Module Utils
[hide private]
[frames] | no frames]

Source Code for Module bmrblib.pystarlib.Utils

  1  """ 
  2  Just a few utilities that can be of more general use. 
  3  """ 
  4  import re 
  5   
  6  __author__    = "$Author: jurgenfd $" 
  7  ___revision__ = "$Revision: 10 $" 
  8  ___date__     = "$Date: 2007-01-23 19:08:11 +0100 (Tue, 23 Jan 2007) $" 
  9   
 10  """ 
 11  $Log$ 
 12  Revision 1.2  2007/01/23 18:08:11  jurgenfd 
 13  The below quoted value wasn't parsed correctly. 
 14  Occurs in the MR file for entry 2ihx. 
 15   
 16  '#It has very upfield-shifted H5', H5" @ 3.935,4.012 ppm' 
 17   
 18  Fixed with this update. 
 19   
 20  Revision 1.1.1.1  2007/01/09 22:10:15  jurgenfd 
 21  initial import 
 22   
 23  Revision 1.1  2007/01/08 20:49:41  jurgen 
 24  Merged improvements from Wim Vranken (EBI) back in. 
 25   
 26  Revision 1.1.1.1  2001/11/02 20:16:40  jurgen 
 27  Initial package capable of read/write access to STAR files without nested loops 
 28   
 29  """ 
 30   
31 -class Lister:
32 """Example from 'Learning Python from O'Reilly publisher'"""
33 - def __repr__(self):
34 return ("<Instance of %s, address %s:\n%s>" % 35 (self.__class__.__name__, id(self), self.attrnames()))
36
37 - def attrnames(self):
38 result='' 39 keys = sorted(self.__dict__.keys()) 40 for attr in keys: 41 if attr[:2] == "__": 42 result = result + "\tname %s=<built-in>\n" % attr 43 else: 44 result = result + "\tname %s=%s\n" % (attr, self.__dict__[attr]) 45 return result
46 47 48 """ 49 A fast transposing algorithm from the python mailing list 50 Used in TagTable. 51 52 This algorithm fails in Python 3, so has been replaced! 53 """
54 -def transpose ( matrix ):
55 if len( matrix ) < 1: 56 print('ERROR: trying to transpose an empty matrix') 57 return 1 58 elif len( matrix ) == 1: 59 if len(matrix[0]) == 0: 60 print('ERROR: trying to transpose an empty matrix, shape would be lost') 61 print('ERROR: [[]] would become []') 62 return 1 63 else: 64 return [(y,) for y in matrix[0]] 65 else: 66 # Init the transposed list of tuples (mxn) (the original matrix has dimensions nxm). 67 result = [] 68 69 # Find the maximum length of the original second dimension. 70 max_len = 0 71 for i in range(len(matrix)): 72 max_len = max(max_len, len(matrix[i])) 73 74 # Loop over the second dimension. 75 for j in range(max_len): 76 # Initialise a new list to be later converted to a tuple. 77 row = [] 78 79 # Loop over the first dimension. 80 for i in range(len(matrix)): 81 # Extend the row, padding with None. 82 if j > len(matrix[i]) - 1: 83 row.append(None) 84 else: 85 row.append(matrix[i][j]) 86 87 # Append the row as a tuple. 88 result.append(tuple(row)) 89 90 return result
91 92 93 """ 94 Collapses all whitespace to a single regular space 95 before comparing. Doesn't remove final eol space. 96 """
97 -def equalIgnoringWhiteSpace( a, b):
98 pattern = re.compile("\s+" ) 99 a = re.sub(pattern, ' ', a) 100 b = re.sub(pattern, ' ', b) 101 # print "a["+a+"]" 102 # print "b["+b+"]" 103 return a == b
104
105 -def dos2unix(text):
106 return re.sub('\r\n', '\n', text)
107 -def unix2dos(text):
108 return re.sub('([^\r])(\n)', '\1\r\n', text)
109 -def mac2unix(text):
110 return re.sub('\r', '\n', text)
111