fabio 0.1.1__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. Library/Python/2.7/site-packages/fabio/GEimage.py +334 -0
  2. Library/Python/2.7/site-packages/fabio/GEimage.pyc +0 -0
  3. Library/Python/2.7/site-packages/fabio/GEimage_old.py +501 -0
  4. Library/Python/2.7/site-packages/fabio/GEimage_old.pyc +0 -0
  5. Library/Python/2.7/site-packages/fabio/HiPiCimage.py +106 -0
  6. Library/Python/2.7/site-packages/fabio/HiPiCimage.pyc +0 -0
  7. Library/Python/2.7/site-packages/fabio/OXDimage.py +442 -0
  8. Library/Python/2.7/site-packages/fabio/OXDimage.pyc +0 -0
  9. Library/Python/2.7/site-packages/fabio/TiffIO.py +1197 -0
  10. Library/Python/2.7/site-packages/fabio/TiffIO.pyc +0 -0
  11. Library/Python/2.7/site-packages/fabio/__init__.py +10 -0
  12. Library/Python/2.7/site-packages/fabio/__init__.pyc +0 -0
  13. Library/Python/2.7/site-packages/fabio/adscimage.py +137 -0
  14. Library/Python/2.7/site-packages/fabio/adscimage.pyc +0 -0
  15. Library/Python/2.7/site-packages/fabio/binaryimage.py +87 -0
  16. Library/Python/2.7/site-packages/fabio/binaryimage.pyc +0 -0
  17. Library/Python/2.7/site-packages/fabio/bruker100image.py +96 -0
  18. Library/Python/2.7/site-packages/fabio/bruker100image.pyc +0 -0
  19. Library/Python/2.7/site-packages/fabio/brukerimage.py +195 -0
  20. Library/Python/2.7/site-packages/fabio/brukerimage.pyc +0 -0
  21. Library/Python/2.7/site-packages/fabio/byte_offset.so +0 -0
  22. Library/Python/2.7/site-packages/fabio/cbfimage.py +758 -0
  23. Library/Python/2.7/site-packages/fabio/cbfimage.pyc +0 -0
  24. Library/Python/2.7/site-packages/fabio/cf_io.so +0 -0
  25. Library/Python/2.7/site-packages/fabio/compression.py +388 -0
  26. Library/Python/2.7/site-packages/fabio/compression.pyc +0 -0
  27. Library/Python/2.7/site-packages/fabio/converters.py +54 -0
  28. Library/Python/2.7/site-packages/fabio/converters.pyc +0 -0
  29. Library/Python/2.7/site-packages/fabio/datIO.py +60 -0
  30. Library/Python/2.7/site-packages/fabio/datIO.pyc +0 -0
  31. Library/Python/2.7/site-packages/fabio/dm3image.py +219 -0
  32. Library/Python/2.7/site-packages/fabio/dm3image.pyc +0 -0
  33. Library/Python/2.7/site-packages/fabio/edfimage.py +924 -0
  34. Library/Python/2.7/site-packages/fabio/edfimage.pyc +0 -0
  35. Library/Python/2.7/site-packages/fabio/fabioimage.py +556 -0
  36. Library/Python/2.7/site-packages/fabio/fabioimage.pyc +0 -0
  37. Library/Python/2.7/site-packages/fabio/fabioutils.py +491 -0
  38. Library/Python/2.7/site-packages/fabio/fabioutils.pyc +0 -0
  39. Library/Python/2.7/site-packages/fabio/file_series.py +313 -0
  40. Library/Python/2.7/site-packages/fabio/file_series.pyc +0 -0
  41. Library/Python/2.7/site-packages/fabio/fit2dmaskimage.py +94 -0
  42. Library/Python/2.7/site-packages/fabio/fit2dmaskimage.pyc +0 -0
  43. Library/Python/2.7/site-packages/fabio/fit2dspreadsheetimage.py +85 -0
  44. Library/Python/2.7/site-packages/fabio/fit2dspreadsheetimage.pyc +0 -0
  45. Library/Python/2.7/site-packages/fabio/kcdimage.py +131 -0
  46. Library/Python/2.7/site-packages/fabio/kcdimage.pyc +0 -0
  47. Library/Python/2.7/site-packages/fabio/mar345_IO.so +0 -0
  48. Library/Python/2.7/site-packages/fabio/mar345image.py +320 -0
  49. Library/Python/2.7/site-packages/fabio/mar345image.pyc +0 -0
  50. Library/Python/2.7/site-packages/fabio/marccdimage.py +309 -0
  51. Library/Python/2.7/site-packages/fabio/marccdimage.pyc +0 -0
  52. Library/Python/2.7/site-packages/fabio/openimage.py +162 -0
  53. Library/Python/2.7/site-packages/fabio/openimage.pyc +0 -0
  54. Library/Python/2.7/site-packages/fabio/pilatusimage.py +81 -0
  55. Library/Python/2.7/site-packages/fabio/pilatusimage.pyc +0 -0
  56. Library/Python/2.7/site-packages/fabio/pnmimage.py +165 -0
  57. Library/Python/2.7/site-packages/fabio/pnmimage.pyc +0 -0
  58. Library/Python/2.7/site-packages/fabio/readbytestream.py +86 -0
  59. Library/Python/2.7/site-packages/fabio/readbytestream.pyc +0 -0
  60. Library/Python/2.7/site-packages/fabio/tifimage.py +283 -0
  61. Library/Python/2.7/site-packages/fabio/tifimage.pyc +0 -0
  62. Library/Python/2.7/site-packages/fabio/xsdimage.py +134 -0
  63. Library/Python/2.7/site-packages/fabio/xsdimage.pyc +0 -0
  64. Library/Python/2.7/site-packages/fabio-0.1.1-py2.7.egg-info/PKG-INFO +11 -0
  65. Library/Python/2.7/site-packages/fabio-0.1.1-py2.7.egg-info/SOURCES.txt +114 -0
  66. Library/Python/2.7/site-packages/fabio-0.1.1-py2.7.egg-info/dependency_links.txt +1 -0
  67. Library/Python/2.7/site-packages/fabio-0.1.1-py2.7.egg-info/top_level.txt +4 -0
@@ -0,0 +1,219 @@
1
+ """
2
+ Authors: Henning O. Sorensen & Erik Knudsen
3
+ Center for Fundamental Research: Metal Structures in Four Dimensions
4
+ Risoe National Laboratory
5
+ Frederiksborgvej 399
6
+ DK-4000 Roskilde
7
+ email:erik.knudsen@risoe.dk
8
+
9
+ + Jon Wright, ESRF
10
+ """
11
+ import logging
12
+ import numpy
13
+ from fabioimage import fabioimage
14
+ logger = logging.getLogger("dm3image")
15
+
16
+ DATA_TYPES = { 2 : numpy.int16,
17
+ 4 : numpy.uint16,
18
+ 3 : numpy.int32,
19
+ 5 : numpy.uint32,
20
+ 6 : numpy.float32,
21
+ 7 : numpy.float,
22
+ 8 : numpy.int8,
23
+ 9 : None,
24
+ 10 : None,
25
+ 15 : 'Struct',
26
+ 18 : None,
27
+ 20 : None
28
+ }
29
+
30
+ DATA_BYTES = { 2 : 2,
31
+ 4 : 2,
32
+ 3 : 4,
33
+ 5 : 4,
34
+ 6 : 4,
35
+ 7 : 8,
36
+ 8 : 1,
37
+ 9 : None,
38
+ 10 : None,
39
+ 15 : 'Struct',
40
+ 18 : None,
41
+ 20 : None
42
+ }
43
+
44
+
45
+
46
+ class dm3image(fabioimage):
47
+ """ Read and try to write the dm3 data format """
48
+ def __init__(self, *args, **kwargs):
49
+ fabioimage.__init__(self, *args, **kwargs)
50
+ self.encoded_datatype = None
51
+ self.no_data_elements = None
52
+ self.grouptag_is_sorted = None
53
+ self.grouptag_is_open = None
54
+ self.tag_encoded_type = None
55
+ self.tag_data_type = None
56
+ self.tag_is_data = None
57
+ self.grouptag_no_tags = None
58
+ self.bytes_in_file = None
59
+ self.tag_label_length = None
60
+ self.go_on = None
61
+
62
+ def _readheader(self):
63
+ self.infile.seek(0)
64
+ file_format = self.readbytes(4, numpy.uint32)[0] # should be 3
65
+ assert file_format == 3, 'Wrong file type '
66
+ self.bytes_in_file = self.readbytes(4, numpy.uint32)[0]
67
+ self.byte_order = self.readbytes(4, numpy.uint32)[0] # 0 = big, 1= little
68
+ print 'read dm3 file - file format ', file_format
69
+ print 'Bytes in file : ' , self.bytes_in_file
70
+ print 'Byte order :', self.byte_order, ' - 0 = bigEndian , 1 = littleEndian'
71
+
72
+ if self.byte_order == 0:
73
+ self.swap = True
74
+ elif self.byte_order == 1:
75
+ self.swap = False
76
+ else:
77
+ raise ValueError
78
+
79
+ def read(self, fname, frame=None):
80
+ self.header = {}
81
+ self.resetvals()
82
+ self.infile = self._open(fname, "rb")
83
+ self._readheader()
84
+ self.go_on = True
85
+ print self.go_on
86
+ while self.go_on:
87
+ self.read_tag_group()
88
+ self.read_tag_entry()
89
+ if self.infile.tell() > self.bytes_in_file: break
90
+
91
+ while self.tag_is_data == 21:
92
+ self.read_tag_entry()
93
+ if self.infile.tell() > self.bytes_in_file:
94
+ self.go_on = False
95
+
96
+ (dim1_raw, dim2_raw) = self.header['Active Size (pixels)'].split()
97
+ (dim1_raw, dim2_raw) = (eval(dim1_raw), eval(dim2_raw))
98
+ (dim1_binning, dim2_binning) = self.header['Binning'].split()
99
+ (dim1_binning, dim2_binning) = (eval(dim1_binning), eval(dim2_binning))
100
+ self.dim1 = dim1_raw / dim1_binning
101
+ self.dim2 = dim2_raw / dim2_binning
102
+ #print dim1,dim2
103
+ if self.header.has_key('Data'):
104
+ self.data = self.header['Data'].reshape(self.dim1, self.dim2)
105
+
106
+ def readbytes(self, bytes_to_read, format, swap=True):
107
+ raw = self.infile.read(bytes_to_read)
108
+ if format != None:
109
+ data = numpy.fromstring(raw, format)
110
+ else:
111
+ data = raw
112
+ if swap:
113
+ data = data.byteswap()
114
+ return data
115
+
116
+
117
+
118
+ def read_tag_group(self):
119
+
120
+ self.grouptag_is_sorted = self.readbytes(1, numpy.uint8)[0]
121
+ self.grouptag_is_open = self.readbytes(1, numpy.uint8)[0]
122
+ self.grouptag_no_tags = self.readbytes(4, numpy.uint32)[0]
123
+ logger.debug('TagGroup is sorted? %s', self.grouptag_is_sorted)
124
+ logger.debug('TagGroup is open? %s', self.grouptag_is_open)
125
+ logger.debug('no of tags in TagGroup %s', self.grouptag_no_tags)
126
+
127
+ def read_tag_entry(self):
128
+
129
+ self.tag_is_data = self.readbytes(1, numpy.uint8)[0]
130
+ self.tag_label_length = self.readbytes(2, numpy.uint16)[0]
131
+ logger.debug('does Tag have data ? %s - 20 = Tag group , 21 = data ', self.tag_is_data)
132
+ logger.debug('length of tag_label ', self.tag_label_length)
133
+ if self.tag_label_length != 0:
134
+ tag_label = self.infile.read(self.tag_label_length)
135
+ else:
136
+ tag_label = None
137
+
138
+ if self.tag_is_data == 21:
139
+ # This is data
140
+ self.header[tag_label] = self.read_tag_type()
141
+ logger.debug("%s: %s", tag_label, self.header[tag_label])
142
+
143
+
144
+ def read_tag_type(self):
145
+ if self.infile.read(4) != '%%%%':
146
+ raise IOError
147
+ self.tag_data_type = self.readbytes(4, numpy.uint32)[0]
148
+ logger.debug('data is of type : %s - 1 = simple, 2= string, 3 = array, >3 structs', self.tag_data_type)
149
+ self.tag_encoded_type = self.readbytes(4, numpy.uint32)[0]
150
+ logger.debug('encode type: %s %s', self.tag_encoded_type, DATA_TYPES[ self.tag_encoded_type])
151
+ if self.tag_data_type == 1:
152
+ # simple type
153
+ return self.readbytes(DATA_BYTES[ self.tag_encoded_type],
154
+ DATA_TYPES[ self.tag_encoded_type],
155
+ swap=self.swap)[0]
156
+ # are the data stored in a simple array?
157
+ if self.tag_encoded_type == 20 and self.tag_data_type == 3 :
158
+ self.data_type = self.readbytes(4, numpy.uint32)[0]
159
+ self.no_data_elements = self.readbytes(4, numpy.uint32)[0]
160
+ if self.data_type == 10:
161
+ logger.debug('skip bytes %s', self.no_data_elements)
162
+ dump = self.infile.read(self.no_data_elements)
163
+ return None
164
+
165
+ logger.debug('Data are stored as a simple a array -')
166
+ logger.debug('%s data elemets stored as %s', self.no_data_elements, self.data_type)
167
+ read_no_bytes = DATA_BYTES[self.data_type] * self.no_data_elements
168
+ format = DATA_TYPES[self.data_type]
169
+ return self.readbytes(read_no_bytes, format, swap=self.swap)
170
+
171
+ # are the data stored in a complex array ?
172
+ # print 'tag_type + data_type', self.tag_encoded_type,self.tag_data_type
173
+
174
+ #print self.tag_encoded_type , self.tag_data_type
175
+ if self.tag_encoded_type == 20 and self.tag_data_type > 3 :
176
+ self.tag_encoded_type = self.readbytes(4, numpy.uint32)[0]
177
+ logger.debug('found array - new tag_encoded_type %s', self.tag_encoded_type)
178
+ if self.tag_encoded_type == 15: # struct type
179
+ ###type = self.readbytes(4,numpy.int32)
180
+ struct_name_length = self.readbytes(4, numpy.int32)[0]
181
+ struct_number_fields = self.readbytes(4, numpy.int32)[0]
182
+ #print 'struct - name_length, number_field', struct_name_length,struct_number_fields
183
+ #print self.infile.read(struct_name_length)
184
+ field_info = []
185
+ for i in range(struct_number_fields):
186
+ field_info.append([self.readbytes(4, numpy.int32)[0], self.readbytes(4, numpy.int32)[0]])
187
+ #print field_info
188
+ self.no_data_elements = self.readbytes(4, numpy.int32)[0]
189
+ #print '%i data elemets stored as ' %self.no_data_elements
190
+ bytes_in_struct = 0
191
+ for i in range(struct_number_fields):
192
+ bytes_in_struct += DATA_BYTES[field_info[i][1]]
193
+ logger.debug('skip bytes %s', self.no_data_elements * bytes_in_struct)
194
+ dump = self.infile.read(self.no_data_elements * bytes_in_struct)
195
+ return None
196
+
197
+
198
+ if self.tag_encoded_type == 15: # struct type
199
+ ###type = self.readbytes(4,numpy.int32)
200
+ struct_name_length = self.readbytes(4, numpy.int32)[0]
201
+ struct_number_fields = self.readbytes(4, numpy.int32)[0]
202
+ #print 'struct - name_length, number_field', struct_name_length,struct_number_fields
203
+ #print self.infile.read(struct_name_length)
204
+ field_info = []
205
+ for i in range(struct_number_fields):
206
+ field_info.append([self.readbytes(4, numpy.int32)[0], self.readbytes(4, numpy.int32)[0]])
207
+ #print field_info
208
+ field_data = ''
209
+ for i in range(struct_number_fields):
210
+ #print type(i)
211
+ field_data = field_data + self.readbytes(field_info[i][0], None, swap=False) + ' '
212
+ field_data = field_data + '%i ' % self.readbytes(DATA_BYTES[field_info[i][1]],
213
+ DATA_TYPES[field_info[i][1]],
214
+ swap=self.swap)[0]
215
+ return field_data
216
+
217
+ def read_data(self):
218
+ self.encoded_datatype = numpy.fromstring(self.infile.read(4), numpy.uint32).byteswap()
219
+