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,501 @@
1
+
2
+ #!/usr/bin/env python
3
+
4
+ """
5
+ Reads the header from a GE a-Si Angio Detector
6
+
7
+ Authors: Henning O. Sorensen & Erik Knudsen
8
+ Center for Fundamental Research: Metal Structures in Four Dimensions
9
+ Risoe National Laboratory
10
+ Frederiksborgvej 399
11
+ DK-4000 Roskilde
12
+ email:erik.knudsen@risoe.dk
13
+
14
+ + Jon Wright, ESRF
15
+
16
+ The header information has been taken from the script read_GEaSi_data.py
17
+ by
18
+ Antonino Miceli
19
+ Thu Jan 4 13:46:31 CST 2007
20
+
21
+ """
22
+
23
+ import numpy
24
+ from fabioimage import fabioimage
25
+
26
+ class GEimage(fabioimage):
27
+
28
+
29
+ def _readheader(self, infile):
30
+
31
+ infile.seek(0)
32
+
33
+ # ADEPT
34
+ self.ImageFormat = infile.read(10)
35
+
36
+ # USHORT --> "=H"
37
+ # ULONG --> "=L"
38
+ # = means byte order is native
39
+
40
+ self.header['HeaderVersion'] = numpy.fromstring(infile.read(2), numpy.uint16)[0]
41
+ self.header['HeaderSizeInBytes'] = int(numpy.fromstring(infile.read(4), numpy.uint32)[0])
42
+ self.header['UserHeaderVersion'] = numpy.fromstring(infile.read(2), numpy.uint16)[0]
43
+ self.header['UserHeaderSizeInBytes'] = int(numpy.fromstring(infile.read(4), numpy.uint32)[0])
44
+
45
+ self.header['NumberOfFrames'] = numpy.fromstring(infile.read(2), numpy.uint16)[0]
46
+ self.header['NumberOfRowsInFrame'] = numpy.fromstring(infile.read(2), numpy.uint16)[0]
47
+ self.header['NumberOfColsInFrame'] = numpy.fromstring(infile.read(2), numpy.uint16)[0]
48
+ self.header['BitsPerPixel'] = numpy.fromstring(infile.read(2), numpy.uint16)[0]
49
+
50
+ self.header['AcquisitionDate'] = infile.read(20)
51
+ self.header['AcquisitionTime'] = infile.read(20)
52
+
53
+ self.DUTID = infile.read(20)
54
+
55
+ self.header['Operator'] = infile.read(50)
56
+
57
+ self.header['DetectorSignature'] = infile.read(20)
58
+ self.header['TestSystemName'] = infile.read(20)
59
+ self.header['TestStationRevision'] = infile.read(20)
60
+ self.header['CoreBundleRevision'] = infile.read(20)
61
+ self.header['AcquisitionName'] = infile.read(40)
62
+ self.header['AcquisitionParameterRevision'] = infile.read(20)
63
+
64
+ # self.OriginalNumberOfRows = infile.read(2)
65
+ # self.OriginalNumberOfRows = struct.unpack("=H",self.OriginalNumberOfRows)[0]
66
+
67
+ # self.OriginalNumberOfColumns = infile.read(2)
68
+ # self.OriginalNumberOfColumns = struct.unpack("=H",self.OriginalNumberOfColumns)[0]
69
+
70
+ # self.RowNumberUpperLeftPointArchiveROI = infile.read(2)
71
+ # self.RowNumberUpperLeftPointArchiveROI = struct.unpack("=H",self.RowNumberUpperLeftPointArchiveROI)[0]
72
+
73
+ # self.ColNumberUpperLeftPointArchiveROI = infile.read(2)
74
+ # self.ColNumberUpperLeftPointArchiveROI = struct.unpack("=H",self.ColNumberUpperLeftPointArchiveROI)[0]
75
+
76
+ # self.Swapped = infile.read(2)
77
+ # self.Swapped = struct.unpack("=H",self.Swapped)[0]
78
+
79
+ # self.Reordered = infile.read(2)
80
+ # self.Reordered = struct.unpack("=H",self.Reordered)[0]
81
+
82
+ # self.HorizontalFlipped = infile.read(2)
83
+ # self.HorizontalFlipped = struct.unpack("=H",self.HorizontalFlipped)[0]
84
+
85
+ # self.VerticalFlipped = infile.read(2)
86
+ # self.VerticalFlipped = struct.unpack("=H",self.VerticalFlipped)[0]
87
+
88
+ # self.WindowValueDesired = infile.read(2)
89
+ # self.WindowValueDesired = struct.unpack("=H",self.WindowValueDesired)[0]
90
+
91
+ # self.LevelValueDesired = infile.read(2)
92
+ # self.LevelValueDesired = struct.unpack("=H",self.LevelValueDesired)[0]
93
+
94
+ # self.AcquisitionMode = infile.read(2)
95
+ # self.AcquisitionMode = struct.unpack("=H",self.AcquisitionMode)[0]
96
+
97
+ # self.AcquisitionType = infile.read(2)
98
+ # self.AcquisitionType = struct.unpack("=H",self.AcquisitionType)[0]
99
+
100
+ # self.UserAcquisitionCoffFileName1 = infile.read(100)
101
+ # self.UserAcquisitionCoffFileName2 = infile.read(100)
102
+
103
+ # self.FramesBeforeExpose = infile.read(2)
104
+ # self.FramesBeforeExpose = struct.unpack("=H",self.FramesBeforeExpose)[0]
105
+
106
+ # self.FramesDuringExpose = infile.read(2)
107
+ # self.FramesDuringExpose = struct.unpack("=H",self.FramesDuringExpose)[0]
108
+
109
+ # self.FramesAfterExpose = infile.read(2)
110
+ # self.FramesAfterExpose = struct.unpack("=H",self.FramesAfterExpose)[0]
111
+
112
+ # self.IntervalBetweenFrames = infile.read(2)
113
+ # self.IntervalBetweenFrames = struct.unpack("=H",self.IntervalBetweenFrames)[0]
114
+
115
+ # self.ExposeTimeDelayInMicrosecs = infile.read(8)
116
+ # self.ExposeTimeDelayInMicrosecs = struct.unpack("=d",self.ExposeTimeDelayInMicrosecs)[0]
117
+
118
+ # self.TimeBetweenFramesInMicrosecs = infile.read(8)
119
+ # self.TimeBetweenFramesInMicrosecs = struct.unpack("=d",self.TimeBetweenFramesInMicrosecs)[0]
120
+
121
+ # self.FramesToSkipExpose = infile.read(2)
122
+ # self.FramesToSkipExpose = struct.unpack("=H",self.FramesToSkipExpose)[0]
123
+
124
+ # # Rad --> ExposureMode = 1
125
+ # self.ExposureMode = infile.read(2)
126
+ # self.ExposureMode = struct.unpack("=H",self.ExposureMode)[0]
127
+
128
+ # self.PrepPresetTimeInMicrosecs = infile.read(8)
129
+ # self.PrepPresetTimeInMicrosecs = struct.unpack("=d",self.PrepPresetTimeInMicrosecs)[0]
130
+
131
+ # self.ExposePresetTimeInMicrosecs = infile.read(8)
132
+ # self.ExposePresetTimeInMicrosecs = struct.unpack("=d",self.ExposePresetTimeInMicrosecs)[0]
133
+
134
+ # self.AcquisitionFrameRateInFps = infile.read(4)
135
+ # self.AcquisitionFrameRateInFps = struct.unpack("=f",self.AcquisitionFrameRateInFps)[0]
136
+
137
+ # self.FOVSelect = infile.read(2)
138
+ # self.FOVSelect = struct.unpack("=H",self.FOVSelect)[0]
139
+
140
+ # self.ExpertMode = infile.read(2)
141
+ # self.ExpertMode = struct.unpack("=H",self.ExpertMode)[0]
142
+
143
+ # self.SetVCommon1 = infile.read(8)
144
+ # self.SetVCommon1 = struct.unpack("=d",self.SetVCommon1)[0]
145
+
146
+ # self.SetVCommon2 = infile.read(8)
147
+ # self.SetVCommon2 = struct.unpack("=d",self.SetVCommon2)[0]
148
+
149
+ # self.SetAREF = infile.read(8)
150
+ # self.SetAREF = struct.unpack("=d",self.SetAREF)[0]
151
+
152
+ # self.SetAREFTrim = infile.read(4)
153
+ # self.SetAREFTrim = struct.unpack("=L",self.SetAREFTrim)[0]
154
+
155
+ # self.SetSpareVoltageSource = infile.read(8)
156
+ # self.SetSpareVoltageSource = struct.unpack("=d",self.SetSpareVoltageSource)[0]
157
+
158
+ # self.SetCompensationVoltageSource = infile.read(8)
159
+ # self.SetCompensationVoltageSource = struct.unpack("=d",self.SetCompensationVoltageSource)[0]
160
+
161
+ # self.SetRowOffVoltage = infile.read(8)
162
+ # self.SetRowOffVoltage = struct.unpack("=d",self.SetRowOffVoltage)[0]
163
+
164
+ # self.SetRowOnVoltage = infile.read(8)
165
+ # self.SetRowOnVoltage = struct.unpack("=d",self.SetRowOnVoltage)[0]
166
+
167
+ # self.StoreCompensationVoltage = infile.read(4)
168
+ # self.StoreCompensationVoltage = struct.unpack("=L",self.StoreCompensationVoltage)[0]
169
+
170
+ # self.RampSelection = infile.read(2)
171
+ # self.RampSelection = struct.unpack("=H",self.RampSelection)[0]
172
+
173
+ # self.TimingMode = infile.read(2)
174
+ # self.TimingMode = struct.unpack("=H",self.TimingMode)[0]
175
+
176
+ # self.Bandwidth = infile.read(2)
177
+ # self.Bandwidth = struct.unpack("=H",self.Bandwidth)[0]
178
+
179
+ # self.ARCIntegrator = infile.read(2)
180
+ # self.ARCIntegrator = struct.unpack("=H",self.ARCIntegrator)[0]
181
+
182
+ # self.ARCPostIntegrator = infile.read(2)
183
+ # self.ARCPostIntegrator = struct.unpack("=H",self.ARCPostIntegrator)[0]
184
+
185
+ # self.NumberOfRows = infile.read(4)
186
+ # self.NumberOfRows = struct.unpack("=L",self.NumberOfRows)[0]
187
+
188
+ # self.RowEnable = infile.read(2)
189
+ # self.RowEnable = struct.unpack("=H",self.RowEnable)[0]
190
+
191
+ # self.EnableStretch = infile.read(2)
192
+ # self.EnableStretch = struct.unpack("=H",self.EnableStretch)[0]
193
+
194
+ # self.CompEnable = infile.read(2)
195
+ # self.CompEnable = struct.unpack("=H",self.CompEnable)[0]
196
+
197
+ # self.CompStretch = infile.read(2)
198
+ # self.CompStretch = struct.unpack("=H",self.CompStretch)[0]
199
+
200
+ # self.LeftEvenTristate = infile.read(2)
201
+ # self.LeftEvenTristate = struct.unpack("=H",self.LeftEvenTristate)[0]
202
+
203
+ # self.RightOddTristate = infile.read(2)
204
+ # self.RightOddTristate = struct.unpack("=H",self.RightOddTristate)[0]
205
+
206
+ # self.TestModeSelect = infile.read(4)
207
+ # self.TestModeSelect = struct.unpack("=L",self.TestModeSelect)[0]
208
+
209
+ # self.AnalogTestSource = infile.read(4)
210
+ # self.AnalogTestSource = struct.unpack("=L",self.AnalogTestSource)[0]
211
+
212
+ # self.VCommonSelect = infile.read(4)
213
+ # self.VCommonSelect = struct.unpack("=L",self.VCommonSelect)[0]
214
+
215
+ # self.DRCColumnSum = infile.read(4)
216
+ # self.DRCColumnSum = struct.unpack("=L",self.DRCColumnSum)[0]
217
+
218
+ # self.TestPatternFrameDelta = infile.read(4)
219
+ # self.TestPatternFrameDelta = struct.unpack("=L",self.TestPatternFrameDelta)[0]
220
+
221
+ # self.TestPatternRowDelta = infile.read(4)
222
+ # self.TestPatternRowDelta = struct.unpack("=L",self.TestPatternRowDelta)[0]
223
+
224
+ # self.TestPatternColumnDelta = infile.read(4)
225
+ # self.TestPatternColumnDelta = struct.unpack("=L",self.TestPatternColumnDelta)[0]
226
+
227
+ # self.DetectorHorizontalFlip = infile.read(2)
228
+ # self.DetectorHorizontalFlip = struct.unpack("=H",self.DetectorHorizontalFlip)[0]
229
+
230
+ # self.DetectorVerticalFlip = infile.read(2)
231
+ # self.DetectorVerticalFlip = struct.unpack("=H",self.DetectorVerticalFlip)[0]
232
+
233
+ # self.DFNAutoScrubOnOff = infile.read(2)
234
+ # self.DFNAutoScrubOnOff = struct.unpack("=H",self.DFNAutoScrubOnOff)[0]
235
+
236
+ # self.FiberChannelTimeOutInMicrosecs = infile.read(4)
237
+ # self.FiberChannelTimeOutInMicrosecs = struct.unpack("=L",self.FiberChannelTimeOutInMicrosecs)[0]
238
+
239
+ # self.DFNAutoScrubDelayInMicrosecs = infile.read(4)
240
+ # self.DFNAutoScrubDelayInMicrosecs = struct.unpack("=L",self.DFNAutoScrubDelayInMicrosecs)[0]
241
+
242
+ # self.StoreAECROI = infile.read(2)
243
+ # self.StoreAECROI = struct.unpack("=H",self.StoreAECROI)[0]
244
+
245
+ # self.TestPatternSaturationValue = infile.read(2)
246
+ # self.TestPatternSaturationValue = struct.unpack("=H",self.TestPatternSaturationValue)[0]
247
+
248
+ # self.TestPatternSeed = infile.read(4)
249
+ # self.TestPatternSeed = struct.unpack("=L",self.TestPatternSeed)[0]
250
+
251
+ # self.ExposureTimeInMillisecs = infile.read(4)
252
+ # self.ExposureTimeInMillisecs = struct.unpack("=f",self.ExposureTimeInMillisecs)[0]
253
+
254
+ # self.FrameRateInFps = infile.read(4)
255
+ # self.FrameRateInFps = struct.unpack("=f",self.FrameRateInFps)[0]
256
+
257
+ # self.kVp = infile.read(4)
258
+ # self.kVp = struct.unpack("=f",self.kVp)[0]
259
+
260
+ # self.mA = infile.read(4)
261
+ # self.mA = struct.unpack("=f",self.mA)[0]
262
+
263
+ # self.mAs = infile.read(4)
264
+ # self.mAs = struct.unpack("=f",self.mAs)[0]
265
+
266
+ # self.FocalSpotInMM = infile.read(4)
267
+ # self.FocalSpotInMM = struct.unpack("=f",self.FocalSpotInMM)[0]
268
+
269
+ # self.GeneratorType = infile.read(20)
270
+
271
+ # self.StrobeIntensityInFtL = infile.read(4)
272
+ # self.StrobeIntensityInFtL = struct.unpack("=f",self.StrobeIntensityInFtL)[0]
273
+
274
+ # self.NDFilterSelection = infile.read(2)
275
+ # self.NDFilterSelection = struct.unpack("=H",self.NDFilterSelection)[0]
276
+
277
+ # self.RefRegTemp1 = infile.read(8)
278
+ # self.RefRegTemp1 = struct.unpack("=d",self.RefRegTemp1)[0]
279
+
280
+ # self.RefRegTemp2 = infile.read(8)
281
+ # self.RefRegTemp2 = struct.unpack("=d",self.RefRegTemp2)[0]
282
+
283
+ # self.RefRegTemp3 = infile.read(8)
284
+ # self.RefRegTemp3 = struct.unpack("=d",self.RefRegTemp3)[0]
285
+
286
+ # self.Humidity1 = infile.read(4)
287
+ # self.Humidity1 = struct.unpack("=f",self.Humidity1)[0]
288
+
289
+ # self.Humidity2 = infile.read(4)
290
+ # self.Humidity2 = struct.unpack("=f",self.Humidity2)[0]
291
+
292
+ # self.DetectorControlTemp = infile.read(8)
293
+ # self.DetectorControlTemp = struct.unpack("=d",self.DetectorControlTemp)[0]
294
+
295
+ # self.DoseValueInmR = infile.read(8)
296
+ # self.DoseValueInmR = struct.unpack("=d",self.DoseValueInmR)[0]
297
+
298
+ # self.TargetLevelROIRow0 = infile.read(2)
299
+ # self.TargetLevelROIRow0 = struct.unpack("=H",self.TargetLevelROIRow0)[0]
300
+
301
+ # self.TargetLevelROICol0 = infile.read(2)
302
+ # self.TargetLevelROICol0 = struct.unpack("=H",self.TargetLevelROICol0)[0]
303
+
304
+ # self.TargetLevelROIRow1 = infile.read(2)
305
+ # self.TargetLevelROIRow1 = struct.unpack("=H",self.TargetLevelROIRow1)[0]
306
+
307
+ # self.TargetLevelROICol1 = infile.read(2)
308
+ # self.TargetLevelROICol1 = struct.unpack("=H",self.TargetLevelROICol1)[0]
309
+
310
+ # self.FrameNumberForTargetLevelROI = infile.read(2)
311
+ # self.FrameNumberForTargetLevelROI = struct.unpack("=H",self.FrameNumberForTargetLevelROI)[0]
312
+
313
+ # self.PercentRangeForTargetLevel = infile.read(2)
314
+ # self.PercentRangeForTargetLevel = struct.unpack("=H",self.PercentRangeForTargetLevel)[0]
315
+
316
+ # self.TargetValue = infile.read(2)
317
+ # self.TargetValue = struct.unpack("=H",self.TargetValue)[0]
318
+
319
+ # self.ComputedMedianValue = infile.read(2)
320
+ # self.ComputedMedianValue = struct.unpack("=H",self.ComputedMedianValue)[0]
321
+
322
+ # self.LoadZero = infile.read(2)
323
+ # self.LoadZero = struct.unpack("=H",self.LoadZero)[0]
324
+
325
+ # self.MaxLUTOut = infile.read(2)
326
+ # self.MaxLUTOut = struct.unpack("=H",self.MaxLUTOut)[0]
327
+
328
+ # self.MinLUTOut = infile.read(2)
329
+ # self.MinLUTOut = struct.unpack("=H",self.MinLUTOut)[0]
330
+
331
+ # self.MaxLinear = infile.read(2)
332
+ # self.MaxLinear = struct.unpack("=H",self.MaxLinear)[0]
333
+
334
+ # self.Reserved = infile.read(2)
335
+ # self.Reserved = struct.unpack("=H",self.Reserved)[0]
336
+
337
+ # self.ElectronsPerCount = infile.read(2)
338
+ # self.ElectronsPerCount = struct.unpack("=H",self.ElectronsPerCount)[0]
339
+
340
+ # self.ModeGain = infile.read(2)
341
+ # self.ModeGain = struct.unpack("=H",self.ModeGain)[0]
342
+
343
+ # self.TemperatureInDegC = infile.read(8)
344
+ # self.TemperatureInDegC = struct.unpack("=d",self.TemperatureInDegC)[0]
345
+
346
+ # self.LineRepaired = infile.read(2)
347
+ # self.LineRepaired = struct.unpack("=H",self.LineRepaired)[0]
348
+
349
+ # self.LineRepairFileName = infile.read(100)
350
+
351
+ # self.CurrentLongitudinalInMM = infile.read(4)
352
+ # self.CurrentLongitudinalInMM = struct.unpack("=f",self.CurrentLongitudinalInMM)[0]
353
+
354
+ # self.CurrentTransverseInMM = infile.read(4)
355
+ # self.CurrentTransverseInMM = struct.unpack("=f",self.CurrentTransverseInMM)[0]
356
+
357
+ # self.CurrentCircularInMM = infile.read(4)
358
+ # self.CurrentCircularInMM = struct.unpack("=f",self.CurrentCircularInMM)[0]
359
+
360
+ # self.CurrentFilterSelection = infile.read(4)
361
+ # self.CurrentFilterSelection = struct.unpack("=L",self.CurrentFilterSelection)[0]
362
+
363
+ # self.DisableScrubAck = infile.read(2)
364
+ # self.DisableScrubAck = struct.unpack("=H",self.DisableScrubAck)[0]
365
+
366
+ # self.ScanModeSelect = infile.read(2)
367
+ # self.ScanModeSelect = struct.unpack("=H",self.ScanModeSelect)[0]
368
+
369
+ # self.DetectorAppSwVersion = infile.read(20)
370
+
371
+ # self.DetectorNIOSVersion = infile.read(20)
372
+
373
+ # self.DetectorPeripheralSetVersion = infile.read(20)
374
+
375
+ # self.DetectorPhysicalAddress = infile.read(20)
376
+
377
+ # self.PowerDown = infile.read(2)
378
+ # self.PowerDown = struct.unpack("=H",self.PowerDown)[0]
379
+
380
+ # self.InitialVoltageLevel_VCOMMON = infile.read(8)
381
+ # self.InitialVoltageLevel_VCOMMON = struct.unpack("=d",self.InitialVoltageLevel_VCOMMON)[0]
382
+
383
+ # self.FinalVoltageLevel_VCOMMON = infile.read(8)
384
+ # self.FinalVoltageLevel_VCOMMON = struct.unpack("=d",self.FinalVoltageLevel_VCOMMON)[0]
385
+
386
+ # self.DmrCollimatorSpotSize = infile.read(10)
387
+
388
+ # self.DmrTrack = infile.read(5)
389
+
390
+ # self.DmrFilter = infile.read(5)
391
+
392
+ # self.FilterCarousel = infile.read(2)
393
+ # self.FilterCarousel = struct.unpack("=H",self.FilterCarousel)[0]
394
+
395
+ # self.Phantom = infile.read(20)
396
+
397
+ # self.SetEnableHighTime = infile.read(2)
398
+ # self.SetEnableHighTime = struct.unpack("=H",self.SetEnableHighTime)[0]
399
+
400
+ # self.SetEnableLowTime = infile.read(2)
401
+ # self.SetEnableLowTime = struct.unpack("=H",self.SetEnableLowTime)[0]
402
+
403
+ # self.SetCompHighTime = infile.read(2)
404
+ # self.SetCompHighTime = struct.unpack("=H",self.SetCompHighTime)[0]
405
+
406
+ # self.SetCompLowTime = infile.read(2)
407
+ # self.SetCompLowTime = struct.unpack("=H",self.SetCompLowTime)[0]
408
+
409
+ # self.SetSyncLowTime = infile.read(2)
410
+ # self.SetSyncLowTime = struct.unpack("=H",self.SetSyncLowTime)[0]
411
+
412
+ # self.SetConvertLowTime = infile.read(2)
413
+ # self.SetConvertLowTime = struct.unpack("=H",self.SetConvertLowTime)[0]
414
+
415
+ # self.SetSyncHighTime = infile.read(2)
416
+ # self.SetSyncHighTime = struct.unpack("=H",self.SetSyncHighTime)[0]
417
+
418
+ # self.SetEOLTime = infile.read(2)
419
+ # self.SetEOLTime = struct.unpack("=H",self.SetEOLTime)[0]
420
+
421
+ # self.SetRampOffsetTime = infile.read(2)
422
+ # self.SetRampOffsetTime = struct.unpack("=H",self.SetRampOffsetTime)[0]
423
+
424
+ # self.FOVStartingValue = infile.read(2)
425
+ # self.FOVStartingValue = struct.unpack("=H",self.FOVStartingValue)[0]
426
+
427
+ # self.ColumnBinning = infile.read(2)
428
+ # self.ColumnBinning = struct.unpack("=H",self.ColumnBinning)[0]
429
+
430
+ # self.RowBinning = infile.read(2)
431
+ # self.RowBinning = struct.unpack("=H",self.RowBinning)[0]
432
+
433
+ # self.BorderColumns64 = infile.read(2)
434
+ # self.BorderColumns64 = struct.unpack("=H",self.BorderColumns64)[0]
435
+
436
+ # self.BorderRows64 = infile.read(2)
437
+ # self.BorderRows64 = struct.unpack("=H",self.BorderRows64)[0]
438
+
439
+ # self.FETOffRows64 = infile.read(2)
440
+ # self.FETOffRows64 = struct.unpack("=H",self.FETOffRows64)[0]
441
+
442
+ # self.FOVStartColumn128 = infile.read(2)
443
+ # self.FOVStartColumn128 = struct.unpack("=H",self.FOVStartColumn128)[0]
444
+
445
+ # self.FOVStartRow128 = infile.read(2)
446
+ # self.FOVStartRow128 = struct.unpack("=H",self.FOVStartRow128)[0]
447
+
448
+ # self.NumberOfColumns128 = infile.read(2)
449
+ # self.NumberOfColumns128 = struct.unpack("=H",self.NumberOfColumns128)[0]
450
+
451
+ # self.NumberOfRows128 = infile.read(2)
452
+ # self.NumberOfRows128 = struct.unpack("=H",self.NumberOfRows128)[0]
453
+
454
+ # self.VFPAquisition = infile.read(2000)
455
+
456
+ # self.Comment = infile.read(200)
457
+
458
+
459
+
460
+ def read(self, fname, frame=None):
461
+ """
462
+ Read in header into self.header and
463
+ the data into self.data
464
+ """
465
+ self.header = {}
466
+ self.resetvals()
467
+ infile = self._open(fname, "rb")
468
+ self._readheader(infile)
469
+ # Compute image size
470
+ try:
471
+ self.dim1 = int(self.header['NumberOfRowsInFrame'])
472
+ self.dim2 = int(self.header['NumberOfColsInFrame'])
473
+ self.bpp = int(self.header['BitsPerPixel'])
474
+ except:
475
+ raise Exception("GE file", str(fname) + \
476
+ "is corrupt, cannot read it")
477
+
478
+ # More than one image can be saved in a GE file
479
+ # Will only load the first one
480
+
481
+
482
+ # Go to the beginning of the file
483
+ infile.seek(0)
484
+ infile.seek(self.header['HeaderSizeInBytes'] + self.header['UserHeaderSizeInBytes'])
485
+
486
+ ReadBytes = self.dim1 * self.dim2 * (self.bpp / 8)
487
+ block = infile.read(ReadBytes)
488
+ block = numpy.fromstring(block, numpy.uint16)
489
+
490
+ infile.close()
491
+
492
+ try:
493
+ self.data = numpy.reshape(block, [self.dim2, self.dim1])
494
+ except:
495
+ print len(block), self.dim2, self.dim1
496
+ raise IOError, \
497
+ 'Size spec in GE-header does not match size of image data field'
498
+
499
+ self.bytecode = self.data.dtype.type
500
+ self.pilimage = None
501
+ return self
@@ -0,0 +1,106 @@
1
+
2
+ #!/usr/bin/env python
3
+ """
4
+ Authors: Henning O. Sorensen & Erik Knudsen
5
+ Center for Fundamental Research: Metal Structures in Four Dimensions
6
+ Risoe National Laboratory
7
+ Frederiksborgvej 399
8
+ DK-4000 Roskilde
9
+ email:erik.knudsen@risoe.dk
10
+
11
+ + Jon Wright, ESRF
12
+
13
+ Information about the file format from Masakatzu Kobayashi is highly appreciated
14
+ """
15
+
16
+ import numpy, logging
17
+ logger = logging.getLogger("HiPiCimage")
18
+ from fabioimage import fabioimage
19
+
20
+ class HiPiCimage(fabioimage):
21
+ """ Read HiPic images e.g. collected with a Hamamatsu CCD camera"""
22
+
23
+
24
+ def _readheader(self, infile):
25
+ """
26
+ Read in a header from an already open file
27
+
28
+ """
29
+ Image_tag = infile.read(2)
30
+ print Image_tag
31
+ Comment_len = numpy.fromstring(infile.read(2), numpy.uint16)
32
+ Dim_1 = numpy.fromstring(infile.read(2), numpy.uint16)[0]
33
+ Dim_2 = numpy.fromstring(infile.read(2), numpy.uint16)[0]
34
+ Dim_1_offset = numpy.fromstring(infile.read(2), numpy.uint16)[0]
35
+ Dim_2_offset = numpy.fromstring(infile.read(2), numpy.uint16)[0]
36
+ HeaderType = numpy.fromstring(infile.read(2), numpy.uint16)[0]
37
+ Dump = infile.read(50)
38
+ Comment = infile.read(Comment_len)
39
+ self.header['Image_tag'] = Image_tag
40
+ self.header['Dim_1'] = Dim_1
41
+ self.header['Dim_2'] = Dim_2
42
+ self.header['Dim_1_offset'] = Dim_1_offset
43
+ self.header['Dim_2_offset'] = Dim_2_offset
44
+ #self.header['Comment'] = Comment
45
+ if Image_tag != 'IM' :
46
+ # This does not look like an HiPic file
47
+ logging.warning("no opening. Corrupt header of HiPic file " + \
48
+ str(infile.name))
49
+ Comment_split = Comment[:Comment.find('\x00')].split('\r\n')
50
+
51
+ for topcomment in Comment_split:
52
+ topsplit = topcomment.split(',')
53
+ for line in topsplit:
54
+ if '=' in line:
55
+ key, val = line.split('=' , 1)
56
+ # Users cannot type in significant whitespace
57
+ key = key.rstrip().lstrip()
58
+ self.header_keys.append(key)
59
+ self.header[key] = val.lstrip().rstrip()
60
+ self.header[key] = val.lstrip('"').rstrip('"')
61
+
62
+ def read(self, fname, frame=None):
63
+ """
64
+ Read in header into self.header and
65
+ the data into self.data
66
+ """
67
+ self.header = {}
68
+ self.resetvals()
69
+ infile = self._open(fname, "rb")
70
+ self._readheader(infile)
71
+ # Compute image size
72
+ try:
73
+ self.dim1 = int(self.header['Dim_1'])
74
+ self.dim2 = int(self.header['Dim_2'])
75
+ except:
76
+ raise Exception("HiPic file", str(fname) + \
77
+ "is corrupt, cannot read it")
78
+ bytecode = numpy.uint16
79
+ self.bpp = len(numpy.array(0, bytecode).tostring())
80
+
81
+ # Read image data
82
+ block = infile.read(self.dim1 * self.dim2 * self.bpp)
83
+ infile.close()
84
+
85
+ #now read the data into the array
86
+ try:
87
+ self.data = numpy.reshape(
88
+ numpy.fromstring(block, bytecode),
89
+ [self.dim2, self.dim1])
90
+ except:
91
+ print len(block), bytecode, self.bpp, self.dim2, self.dim1
92
+ raise IOError, \
93
+ 'Size spec in HiPic-header does not match size of image data field'
94
+ self.bytecode = self.data.dtype.type
95
+
96
+ # Sometimes these files are not saved as 12 bit,
97
+ # But as 16 bit after bg subtraction - which results
98
+ # negative values saved as 16bit. Therefore values higher
99
+ # 4095 is really negative values
100
+ if self.data.max() > 4095:
101
+ gt12bit = self.data > 4095
102
+ self.data = self.data - gt12bit * (2 ** 16 - 1)
103
+
104
+ # ensure the PIL image is reset
105
+ self.pilimage = None
106
+ return self