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,334 @@
1
+ #!/usr/bin/env python
2
+
3
+ #
4
+ # Reads the header from a GE a-Si Angio Detector
5
+ # Using version 8001 of the header from file:
6
+ # c:\adept\core\DefaultImageInfoConfig.csv
7
+ #
8
+ # Antonino Miceli
9
+ # Thu Jan 4 13:46:31 CST 2007
10
+ #
11
+
12
+ # modifications by Jon Wright for style, pychecker and fabio
13
+ #
14
+
15
+ import numpy
16
+ import struct, logging
17
+ logger = logging.getLogger("GEimage")
18
+ from fabioimage import fabioimage
19
+ from fabioutils import next_filename, previous_filename
20
+
21
+ GE_HEADER_INFO = [
22
+ # Name, length in bytes, format for struct (None means string)
23
+ ('ImageFormat', 10, None),
24
+ ('VersionOfStandardHeader', 2, '=H'),
25
+ ('StandardHeaderSizeInBytes', 4, '=L'),
26
+ ('VersionOfUserHeader', 2, '=H'),
27
+ ('UserHeaderSizeInBytes', 4, '=L'),
28
+ ('NumberOfFrames', 2, '=H'),
29
+ ('NumberOfRowsInFrame', 2, '=H'),
30
+ ('NumberOfColsInFrame', 2, '=H'),
31
+ ('ImageDepthInBits', 2, '=H'),
32
+ ('AcquisitionDate', 20, None),
33
+ ('AcquisitionTime', 20, None),
34
+ ('DUTID', 20, None),
35
+ ('Operator', 50, None),
36
+ ('DetectorSignature', 20, None),
37
+ ('TestSystemName', 20, None),
38
+ ('TestStationRevision', 20, None),
39
+ ('CoreBundleRevision', 20, None),
40
+ ('AcquisitionName', 40, None),
41
+ ('AcquisitionParameterRevision', 20, None),
42
+ ('OriginalNumberOfRows', 2, '=H'),
43
+ ('OriginalNumberOfColumns', 2, '=H'),
44
+ ('RowNumberUpperLeftPointArchiveROI', 2, '=H'),
45
+ ('ColNumberUpperLeftPointArchiveROI', 2, '=H'),
46
+ ('Swapped', 2, '=H'),
47
+ ('Reordered', 2, '=H'),
48
+ ('HorizontalFlipped', 2, '=H'),
49
+ ('VerticalFlipped', 2, '=H'),
50
+ ('WindowValueDesired', 2, '=H'),
51
+ ('LevelValueDesired', 2, '=H'),
52
+ ('AcquisitionMode', 2, '=H'),
53
+ ('AcquisitionType', 2, '=H'),
54
+ ('UserAcquisitionCoffFileName1', 100, None),
55
+ ('UserAcquisitionCoffFileName2', 100, None),
56
+ ('FramesBeforeExpose', 2, '=H'),
57
+ ('FramesDuringExpose', 2, '=H'),
58
+ ('FramesAfterExpose', 2, '=H'),
59
+ ('IntervalBetweenFrames', 2, '=H'),
60
+ ('ExposeTimeDelayInMicrosecs', 8, '=d'),
61
+ ('TimeBetweenFramesInMicrosecs', 8, '=d'),
62
+ ('FramesToSkipExpose', 2, '=H'),
63
+ ('ExposureMode', 2, '=H'),
64
+ ('PrepPresetTimeInMicrosecs', 8, '=d'),
65
+ ('ExposePresetTimeInMicrosecs', 8, '=d'),
66
+ ('AcquisitionFrameRateInFps', 4, '=f'),
67
+ ('FOVSelect', 2, '=H'),
68
+ ('ExpertMode', 2, '=H'),
69
+ ('SetVCommon1', 8, '=d'),
70
+ ('SetVCommon2', 8, '=d'),
71
+ ('SetAREF', 8, '=d'),
72
+ ('SetAREFTrim', 4, '=L'),
73
+ ('SetSpareVoltageSource', 8, '=d'),
74
+ ('SetCompensationVoltageSource', 8, '=d'),
75
+ ('SetRowOffVoltage', 8, '=d'),
76
+ ('SetRowOnVoltage', 8, '=d'),
77
+ ('StoreCompensationVoltage', 4, '=L'),
78
+ ('RampSelection', 2, '=H'),
79
+ ('TimingMode', 2, '=H'),
80
+ ('Bandwidth', 2, '=H'),
81
+ ('ARCIntegrator', 2, '=H'),
82
+ ('ARCPostIntegrator', 2, '=H'),
83
+ ('NumberOfRows', 4, '=L'),
84
+ ('RowEnable', 2, '=H'),
85
+ ('EnableStretch', 2, '=H'),
86
+ ('CompEnable', 2, '=H'),
87
+ ('CompStretch', 2, '=H'),
88
+ ('LeftEvenTristate', 2, '=H'),
89
+ ('RightOddTristate', 2, '=H'),
90
+ ('TestModeSelect', 4, '=L'),
91
+ ('AnalogTestSource', 4, '=L'),
92
+ ('VCommonSelect', 4, '=L'),
93
+ ('DRCColumnSum', 4, '=L'),
94
+ ('TestPatternFrameDelta', 4, '=L'),
95
+ ('TestPatternRowDelta', 4, '=L'),
96
+ ('TestPatternColumnDelta', 4, '=L'),
97
+ ('DetectorHorizontalFlip', 2, '=H'),
98
+ ('DetectorVerticalFlip', 2, '=H'),
99
+ ('DFNAutoScrubOnOff', 2, '=H'),
100
+ ('FiberChannelTimeOutInMicrosecs', 4, '=L'),
101
+ ('DFNAutoScrubDelayInMicrosecs', 4, '=L'),
102
+ ('StoreAECROI', 2, '=H'),
103
+ ('TestPatternSaturationValue', 2, '=H'),
104
+ ('TestPatternSeed', 4, '=L'),
105
+ ('ExposureTimeInMillisecs', 4, '=f'),
106
+ ('FrameRateInFps', 4, '=f'),
107
+ ('kVp', 4, '=f'),
108
+ ('mA', 4, '=f'),
109
+ ('mAs', 4, '=f'),
110
+ ('FocalSpotInMM', 4, '=f'),
111
+ ('GeneratorType', 20, None),
112
+ ('StrobeIntensityInFtL', 4, '=f'),
113
+ ('NDFilterSelection', 2, '=H'),
114
+ ('RefRegTemp1', 8, '=d'),
115
+ ('RefRegTemp2', 8, '=d'),
116
+ ('RefRegTemp3', 8, '=d'),
117
+ ('Humidity1', 4, '=f'),
118
+ ('Humidity2', 4, '=f'),
119
+ ('DetectorControlTemp', 8, '=d'),
120
+ ('DoseValueInmR', 8, '=d'),
121
+ ('TargetLevelROIRow0', 2, '=H'),
122
+ ('TargetLevelROICol0', 2, '=H'),
123
+ ('TargetLevelROIRow1', 2, '=H'),
124
+ ('TargetLevelROICol1', 2, '=H'),
125
+ ('FrameNumberForTargetLevelROI', 2, '=H'),
126
+ ('PercentRangeForTargetLevel', 2, '=H'),
127
+ ('TargetValue', 2, '=H'),
128
+ ('ComputedMedianValue', 2, '=H'),
129
+ ('LoadZero', 2, '=H'),
130
+ ('MaxLUTOut', 2, '=H'),
131
+ ('MinLUTOut', 2, '=H'),
132
+ ('MaxLinear', 2, '=H'),
133
+ ('Reserved', 2, '=H'),
134
+ ('ElectronsPerCount', 2, '=H'),
135
+ ('ModeGain', 2, '=H'),
136
+ ('TemperatureInDegC', 8, '=d'),
137
+ ('LineRepaired', 2, '=H'),
138
+ ('LineRepairFileName', 100, None),
139
+ ('CurrentLongitudinalInMM', 4, '=f'),
140
+ ('CurrentTransverseInMM', 4, '=f'),
141
+ ('CurrentCircularInMM', 4, '=f'),
142
+ ('CurrentFilterSelection', 4, '=L'),
143
+ ('DisableScrubAck', 2, '=H'),
144
+ ('ScanModeSelect', 2, '=H'),
145
+ ('DetectorAppSwVersion', 20, None),
146
+ ('DetectorNIOSVersion', 20, None),
147
+ ('DetectorPeripheralSetVersion', 20, None),
148
+ ('DetectorPhysicalAddress', 20, None),
149
+ ('PowerDown', 2, '=H'),
150
+ ('InitialVoltageLevel_VCOMMON', 8, '=d'),
151
+ ('FinalVoltageLevel_VCOMMON', 8, '=d'),
152
+ ('DmrCollimatorSpotSize', 10, None),
153
+ ('DmrTrack', 5, None),
154
+ ('DmrFilter', 5, None),
155
+ ('FilterCarousel', 2, '=H'),
156
+ ('Phantom', 20, None),
157
+ ('SetEnableHighTime', 2, '=H'),
158
+ ('SetEnableLowTime', 2, '=H'),
159
+ ('SetCompHighTime', 2, '=H'),
160
+ ('SetCompLowTime', 2, '=H'),
161
+ ('SetSyncLowTime', 2, '=H'),
162
+ ('SetConvertLowTime', 2, '=H'),
163
+ ('SetSyncHighTime', 2, '=H'),
164
+ ('SetEOLTime', 2, '=H'),
165
+ ('SetRampOffsetTime', 2, '=H'),
166
+ ('FOVStartingValue', 2, '=H'),
167
+ ('ColumnBinning', 2, '=H'),
168
+ ('RowBinning', 2, '=H'),
169
+ ('BorderColumns64', 2, '=H'),
170
+ ('BorderRows64', 2, '=H'),
171
+ ('FETOffRows64', 2, '=H'),
172
+ ('FOVStartColumn128', 2, '=H'),
173
+ ('FOVStartRow128', 2, '=H'),
174
+ ('NumberOfColumns128', 2, '=H'),
175
+ ('NumberOfRows128', 2, '=H'),
176
+ ('VFPAquisition', 2000, None),
177
+ ('Comment', 200, None)
178
+ ]
179
+
180
+
181
+ class GEimage(fabioimage):
182
+
183
+ _need_a_seek_to_read = True
184
+
185
+ def _readheader(self, infile):
186
+ """ Read a GE image header """
187
+
188
+ infile.seek(0)
189
+
190
+ self.header = {}
191
+ for name, nbytes, format in GE_HEADER_INFO:
192
+ if format is None:
193
+ self.header[ name ] = infile.read(nbytes)
194
+ else:
195
+ self.header[ name ] = struct.unpack(format,
196
+ infile.read(nbytes))[0]
197
+
198
+ def read(self, fname, frame=None):
199
+ """
200
+ Read in header into self.header and
201
+ the data into self.data
202
+ """
203
+ if frame is None:
204
+ frame = 0
205
+ self.header = {}
206
+ self.resetvals()
207
+ infile = self._open(fname, "rb")
208
+ self.sequencefilename = fname
209
+ self._readheader(infile)
210
+ self.nframes = self.header['NumberOfFrames']
211
+ self._readframe(infile, frame)
212
+ infile.close()
213
+ return self
214
+
215
+ def _makeframename(self):
216
+ """ The thing to be printed for the user to represent a frame inside
217
+ a file """
218
+ self.filename = "%s$%04d" % (self.sequencefilename,
219
+ self.currentframe)
220
+
221
+ def _readframe(self, filepointer, img_num):
222
+ """
223
+ # Load only one image from the sequence
224
+ # Note: the first image in the sequence 0
225
+ # raises an exception if you give an invalid image
226
+ # otherwise fills in self.data
227
+ """
228
+ if(img_num > self.nframes or img_num < 0):
229
+ raise Exception("Bad image number")
230
+ imgstart = self.header['StandardHeaderSizeInBytes'] + \
231
+ self.header['UserHeaderSizeInBytes'] + \
232
+ img_num * self.header['NumberOfRowsInFrame'] * \
233
+ self.header['NumberOfColsInFrame'] * \
234
+ self.header['ImageDepthInBits'] / 8
235
+ # whence = 0 means seek from start of file
236
+ filepointer.seek(imgstart, 0)
237
+
238
+ self.bpp = self.header['ImageDepthInBits'] / 8 # hopefully 2
239
+ imglength = self.header['NumberOfRowsInFrame'] * \
240
+ self.header['NumberOfColsInFrame'] * self.bpp
241
+ if self.bpp != 2:
242
+ logging.warning("Using uint16 for GE but seems to be wrong")
243
+
244
+ # Guessing it is always unsigned int?
245
+ self.data = numpy.fromstring(filepointer.read(imglength), numpy.uint16)
246
+ self.data.shape = (self.header['NumberOfRowsInFrame'],
247
+ self.header['NumberOfColsInFrame'])
248
+ self.dim2 , self.dim1 = self.data.shape
249
+ self.currentframe = int(img_num)
250
+ self._makeframename()
251
+
252
+
253
+ def write(self, fname, force_type=numpy.uint16):
254
+ """ Not yet implemented"""
255
+ raise Exception("Write is not implemented")
256
+
257
+ def getframe(self, num):
258
+ """
259
+ Returns a frame as a new fabioimage object
260
+ """
261
+ if num < 0 or num > self.nframes:
262
+ raise Exception("Requested frame number is out of range")
263
+ # Do a deep copy of the header to make a new one
264
+ newheader = {}
265
+ for k in self.header.keys():
266
+ newheader[k] = self.header[k]
267
+ frame = GEimage(header=newheader)
268
+ frame.nframes = self.nframes
269
+ frame.sequencefilename = self.sequencefilename
270
+ infile = frame._open(self.sequencefilename, "rb")
271
+ frame._readframe(infile, num)
272
+ infile.close()
273
+ return frame
274
+
275
+ def next(self):
276
+ """
277
+ Get the next image in a series as a fabio image
278
+ """
279
+ if self.currentframe < (self.nframes - 1) and self.nframes > 1:
280
+ return self.getframe(self.currentframe + 1)
281
+ else:
282
+ newobj = GEimage()
283
+ newobj.read(next_filename(
284
+ self.sequencefilename))
285
+ return newobj
286
+
287
+ def previous(self):
288
+ """
289
+ Get the previous image in a series as a fabio image
290
+ """
291
+ if self.currentframe > 0:
292
+ return self.getframe(self.currentframe - 1)
293
+ else:
294
+ newobj = GEimage()
295
+ newobj.read(previous_filename(
296
+ self.sequencefilename))
297
+ return newobj
298
+
299
+
300
+ def demo():
301
+ import sys, time
302
+
303
+ if len(sys.argv) < 2:
304
+ print "USAGE: GE_script.py <GEaSi_raw_image_file>"
305
+ sys.exit()
306
+
307
+ image_file = sys.argv[1]
308
+
309
+ print "init read_GEaSi_data class and load header.."
310
+ sequence1 = GEimage()
311
+ sequence1.read(image_file)
312
+
313
+ print "TimeBetweenFramesInMicrosecs = ",
314
+ print sequence1.header['TimeBetweenFramesInMicrosecs']
315
+ print "AcquisitionTime = ",
316
+ print sequence1.header['AcquisitionTime']
317
+
318
+
319
+ print "Mean = ", sequence1.data.ravel().mean()
320
+
321
+ while 1:
322
+ start = time.time()
323
+ try:
324
+ sequence1 = sequence1.next()
325
+ print sequence1.currentframe, sequence1.data.ravel().mean(), \
326
+ time.time() - start
327
+ except Exception, ex:
328
+ raise ex
329
+
330
+
331
+
332
+
333
+ if __name__ == '__main__':
334
+ demo()