source: trunk/sphinxdocs/build/html/_modules/ReadMarCCDFrame.html @ 957

Last change on this file since 957 was 957, checked in by toby, 12 years ago

redo docs

  • Property svn:mime-type set to text/html
File size: 120.1 KB
Line 
1
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6
7<html xmlns="http://www.w3.org/1999/xhtml">
8  <head>
9    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10   
11    <title>ReadMarCCDFrame &mdash; GSAS-II 0.2.0 documentation</title>
12   
13    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
14    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
15   
16    <script type="text/javascript">
17      var DOCUMENTATION_OPTIONS = {
18        URL_ROOT:    '../',
19        VERSION:     '0.2.0',
20        COLLAPSE_INDEX: false,
21        FILE_SUFFIX: '.html',
22        HAS_SOURCE:  true
23      };
24    </script>
25    <script type="text/javascript" src="../_static/jquery.js"></script>
26    <script type="text/javascript" src="../_static/underscore.js"></script>
27    <script type="text/javascript" src="../_static/doctools.js"></script>
28    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
29    <link rel="top" title="GSAS-II 0.2.0 documentation" href="../index.html" />
30    <link rel="up" title="Module code" href="index.html" /> 
31  </head>
32  <body>
33    <div class="related">
34      <h3>Navigation</h3>
35      <ul>
36        <li class="right" style="margin-right: 10px">
37          <a href="../genindex.html" title="General Index"
38             accesskey="I">index</a></li>
39        <li class="right" >
40          <a href="../py-modindex.html" title="Python Module Index"
41             >modules</a> |</li>
42        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
43          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
44      </ul>
45    </div> 
46
47    <div class="document">
48      <div class="documentwrapper">
49        <div class="bodywrapper">
50          <div class="body">
51           
52  <h1>Source code for ReadMarCCDFrame</h1><div class="highlight"><pre>
53<span class="c">#!/usr/bin/env python</span>
54<span class="sd">&#39;&#39;&#39;</span>
55<span class="sd">*ReadMarCCDFrame: Read Mar Files*</span>
56<span class="sd">---------------------------------</span>
57
58<span class="sd">&#39;&#39;&#39;</span>
59<span class="sd">&quot;&quot;&quot; </span>
60<span class="sd">  from /opt/marccd/documentation/header.txt</span>
61
62<span class="sd">   MarCCD Header Documentataion </span>
63
64<span class="sd">   from C code in frame.h  and types.h</span>
65
66<span class="sd">   Documentation updated by R. Doyle Mon Mar 22 15:04:00 CDT 2010</span>
67<span class="sd">   Documentation updated by M. Blum Tue Oct 11 11:49:20 CDT 2005</span>
68
69<span class="sd">   Description documents marccd v0.20.0</span>
70
71
72<span class="sd">   Summary of file structure:</span>
73<span class="sd">   |-- 1024 bytes TIFF HEADER -------------|</span>
74<span class="sd">   |-- 3072 byte frame_header structure ---|</span>
75<span class="sd">   |-- nfast*nslow*depth byte image -------|</span>
76
77<span class="sd">   The full header, as written to the file, is a TIFF header.</span>
78<span class="sd">   The initial 1024 bytes are a minimal TIFF header with a standard</span>
79<span class="sd">   TIFF TAG pointing to the image data and a private TIFF TAG</span>
80<span class="sd">   pointing to this header structure.  As written by mmx/marccd, the</span>
81<span class="sd">   frame_header structure always begins at byte 1024 and is 3072 bytes long</span>
82<span class="sd">   making the full header 4096 bytes.</span>
83
84<span class="sd">   immediately following the header is the image - it is of arbitrary size defined</span>
85<span class="sd">   by the header fields nfast, nslow and depth. The total size is</span>
86<span class="sd">   nfast * nslow * depth bytes.</span>
87
88<span class="sd">   The meanings of the data types should be self evident:</span>
89<span class="sd">   (example:  UINT32 is an unsigned 32 bit integer)</span>
90<span class="sd">   The exact C language definition is machine dependent but these</span>
91<span class="sd">   are the most common definitions on a 32bit architecture cpu.</span>
92<span class="sd">#define UINT16 unsigned short</span>
93<span class="sd">#define INT16  short</span>
94<span class="sd">#define UINT32 unsigned int</span>
95<span class="sd">#define INT32  int</span>
96
97<span class="sd">   Currently frames are always written as defined below:</span>
98<span class="sd">        origin=UPPER_LEFT</span>
99<span class="sd">        orientation=HFAST</span>
100<span class="sd">        view_direction=FROM_SOURCE</span>
101
102
103<span class="sd">/* This number is  written into the byte_order fields in the</span>
104<span class="sd">   native byte order of the machine writing the file */</span>
105<span class="sd">#define LITTLE_ENDIAN  1234</span>
106<span class="sd">#define BIG_ENDIAN     4321</span>
107
108<span class="sd">/* possible orientations of frame data (stored in orienation field) */</span>
109<span class="sd">#define HFAST                  0        /* Horizontal axis is fast */</span>
110<span class="sd">#define VFAST                  1        /* Vertical axis is fast */</span>
111
112<span class="sd">/* possible origins of frame data (stored in origin field) */</span>
113<span class="sd">#define UPPER_LEFT             0</span>
114<span class="sd">#define LOWER_LEFT             1</span>
115<span class="sd">#define UPPER_RIGHT            2</span>
116<span class="sd">#define LOWER_RIGHT            3</span>
117
118<span class="sd">/* possible view directions of frame data for</span>
119<span class="sd">   the given orientation and origin (stored in view_direction field) */</span>
120<span class="sd">#define FROM_SOURCE            0</span>
121<span class="sd">#define TOWARD_SOURCE          1</span>
122
123<span class="sd">/* possible types of data (in data_type field) */</span>
124<span class="sd">#define DATA_UNSIGNED_INTEGER   0</span>
125<span class="sd">#define DATA_SIGNED_INTEGER     1</span>
126<span class="sd">#define DATA_FLOAT              2</span>
127
128<span class="sd">#define MAXIMAGES 9</span>
129<span class="sd">#define MAXSUBIMAGES 4096</span>
130<span class="sd">#define MAXFRAMEDIMENSION       8192</span>
131
132<span class="sd">typedef struct frame_header_type {</span>
133<span class="sd">       /* File/header format parameters (256 bytes) */</span>
134<span class="sd">       UINT32        header_type;      /* flag for header type  (can be used as magic number) */</span>
135<span class="sd">       char header_name[16];           /* header name (MARCCD) */</span>
136<span class="sd">       UINT32        header_major_version;     /* header_major_version (n.) */</span>
137<span class="sd">       UINT32        header_minor_version;     /* header_minor_version (.n) */</span>
138<span class="sd">       UINT32        header_byte_order;/* BIG_ENDIAN (Motorola,MIPS); LITTLE_ENDIAN (DEC, Intel) */</span>
139<span class="sd">       UINT32        data_byte_order;  /* BIG_ENDIAN (Motorola,MIPS); LITTLE_ENDIAN (DEC, Intel) */</span>
140<span class="sd">       UINT32        header_size;      /* in bytes                     */</span>
141<span class="sd">       UINT32        frame_type;       /* flag for frame type */</span>
142<span class="sd">       UINT32        magic_number;     /* to be used as a flag - usually to indicate new file */</span>
143<span class="sd">       UINT32        compression_type; /* type of image compression    */</span>
144<span class="sd">       UINT32        compression1;     /* compression parameter 1 */</span>
145<span class="sd">       UINT32        compression2;     /* compression parameter 2 */</span>
146<span class="sd">       UINT32        compression3;     /* compression parameter 3 */</span>
147<span class="sd">       UINT32        compression4;     /* compression parameter 4 */</span>
148<span class="sd">       UINT32        compression5;     /* compression parameter 4 */</span>
149<span class="sd">       UINT32        compression6;     /* compression parameter 4 */</span>
150<span class="sd">       UINT32        nheaders;         /* total number of headers      */</span>
151<span class="sd">       UINT32        nfast;            /* number of pixels in one line */</span>
152<span class="sd">       UINT32        nslow;            /* number of lines in image     */</span>
153<span class="sd">       UINT32        depth;            /* number of bytes per pixel    */</span>
154<span class="sd">       UINT32        record_length;    /* number of pixels between succesive rows */</span>
155<span class="sd">       UINT32        signif_bits;      /* true depth of data, in bits  */</span>
156<span class="sd">       UINT32        data_type;        /* (signed,unsigned,float...) */</span>
157<span class="sd">       UINT32        saturated_value;  /* value marks pixel as saturated */</span>
158<span class="sd">       UINT32        sequence;         /* TRUE or FALSE */</span>
159<span class="sd">       UINT32        nimages;          /* total number of images - size of each is nfast*(nslow/nimages) */</span>
160<span class="sd">       UINT32        origin;           /* corner of origin             */</span>
161<span class="sd">       UINT32        orientation;      /* direction of fast axis       */</span>
162<span class="sd">        UINT32        view_direction;   /* direction to view frame      */</span>
163<span class="sd">       UINT32        overflow_location;/* FOLLOWING_HEADER, FOLLOWING_DATA */</span>
164<span class="sd">       UINT32        over_8_bits;      /* # of pixels with counts &gt; 255 */</span>
165<span class="sd">       UINT32        over_16_bits;     /* # of pixels with count &gt; 65535 */</span>
166<span class="sd">       UINT32        multiplexed;      /* multiplex flag */</span>
167<span class="sd">       UINT32        nfastimages;      /* # of images in fast direction */</span>
168<span class="sd">       UINT32        nslowimages;      /* # of images in slow direction */</span>
169<span class="sd">       UINT32        darkcurrent_applied; /* flags correction has been applied - hold magic number ? */</span>
170<span class="sd">       UINT32        bias_applied;       /* flags correction has been applied - hold magic number ? */</span>
171<span class="sd">       UINT32        flatfield_applied;  /* flags correction has been applied - hold magic number ? */</span>
172<span class="sd">       UINT32        distortion_applied; /* flags correction has been applied - hold magic number ? */</span>
173<span class="sd">       UINT32        original_header_type;     /* Header/frame type from file that frame is read from */</span>
174<span class="sd">       UINT32        file_saved;         /* Flag that file has been saved, should be zeroed if modified */</span>
175<span class="sd">       UINT32        n_valid_pixels;     /* Number of pixels holding valid data - first N pixels */</span>
176<span class="sd">       UINT32        defectmap_applied; /* flags correction has been applied - hold magic number ? */</span>
177<span class="sd">       UINT32        subimage_nfast;       /* when divided into subimages (eg. frameshifted) */</span>
178<span class="sd">       UINT32        subimage_nslow;       /* when divided into subimages (eg. frameshifted) */</span>
179<span class="sd">       UINT32        subimage_origin_fast; /* when divided into subimages (eg. frameshifted) */</span>
180<span class="sd">       UINT32        subimage_origin_slow; /* when divided into subimages (eg. frameshifted) */</span>
181<span class="sd">       UINT32        readout_pattern;      /* BIT Code - 1 = A, 2 = B, 4 = C, 8 = D */</span>
182<span class="sd">       UINT32        saturation_level;     /* at this value and above, data are not reliable */</span>
183<span class="sd">       UINT32        orientation_code;     /* Describes how this frame needs to be rotated to make it &quot;right&quot; */</span>
184<span class="sd">       UINT32        frameshift_multiplexed;  /* frameshift multiplex flag */</span>
185<span class="sd">       UINT32        prescan_nfast;            /* Number of non-image pixels preceeding imaging pixels - fast direction */</span>
186<span class="sd">       UINT32        prescan_nslow;            /* Number of non-image pixels preceeding imaging pixels - slow direction */</span>
187<span class="sd">       UINT32        postscan_nfast;           /* Number of non-image pixels followng imaging pixels - fast direction */</span>
188<span class="sd">       UINT32        postscan_nslow;           /* Number of non-image pixels followng imaging pixels - slow direction */</span>
189<span class="sd">       UINT32        prepost_trimmed;          /* trimmed==1 means pre and post scan pixels have been removed */</span>
190<span class="sd">       char reserve1[(64-55)*sizeof(INT32)-16];</span>
191
192<span class="sd">       /* Data statistics (128) */</span>
193<span class="sd">       UINT32        total_counts[2];  /* 64 bit integer range = 1.85E19*/</span>
194<span class="sd">       UINT32        special_counts1[2];</span>
195<span class="sd">       UINT32        special_counts2[2];</span>
196<span class="sd">       UINT32        min;</span>
197<span class="sd">       UINT32        max;</span>
198<span class="sd">       INT32        mean;                      /* mean * 1000 */</span>
199<span class="sd">       UINT32        rms;                      /* rms * 1000 */</span>
200<span class="sd">       UINT32        n_zeros;                  /* number of pixels with 0 value  - not included in stats in unsigned data */</span>
201<span class="sd">       UINT32        n_saturated;              /* number of pixels with saturated value - not included in stats */</span>
202<span class="sd">       UINT32        stats_uptodate;           /* Flag that stats OK - ie data not changed since last calculation */</span>
203<span class="sd">        UINT32        pixel_noise[MAXIMAGES];          /* 1000*base noise value (ADUs) */</span>
204<span class="sd">       char reserve2[(32-13-MAXIMAGES)*sizeof(INT32)];</span>
205
206<span class="sd">       /* Sample Changer info */</span>
207<span class="sd">       char          barcode[16];</span>
208<span class="sd">       UINT32        barcode_angle;</span>
209<span class="sd">       UINT32        barcode_status;</span>
210<span class="sd">       /* Pad to 256 bytes */</span>
211<span class="sd">       char reserve2a[(64-6)*sizeof(INT32)];</span>
212
213<span class="sd">       /* Goniostat parameters (128 bytes) */</span>
214<span class="sd">        INT32 xtal_to_detector;                /* 1000*distance in millimeters */</span>
215<span class="sd">        INT32 beam_x;                  /* 1000*x beam position (pixels) */</span>
216<span class="sd">        INT32 beam_y;                  /* 1000*y beam position (pixels) */</span>
217<span class="sd">        INT32 integration_time;                /* integration time in milliseconds */</span>
218<span class="sd">        INT32 exposure_time;           /* exposure time in milliseconds */</span>
219<span class="sd">        INT32 readout_time;            /* readout time in milliseconds */</span>
220<span class="sd">        INT32 nreads;                  /* number of readouts to get this image */</span>
221<span class="sd">        INT32 start_twotheta;          /* 1000*two_theta angle */</span>
222<span class="sd">        INT32 start_omega;             /* 1000*omega angle */</span>
223<span class="sd">        INT32 start_chi;                       /* 1000*chi angle */</span>
224<span class="sd">        INT32 start_kappa;             /* 1000*kappa angle */</span>
225<span class="sd">        INT32 start_phi;                       /* 1000*phi angle */</span>
226<span class="sd">        INT32 start_delta;             /* 1000*delta angle */</span>
227<span class="sd">        INT32 start_gamma;             /* 1000*gamma angle */</span>
228<span class="sd">        INT32 start_xtal_to_detector;  /* 1000*distance in mm (dist in um)*/</span>
229<span class="sd">        INT32 end_twotheta;            /* 1000*two_theta angle */</span>
230<span class="sd">        INT32 end_omega;                       /* 1000*omega angle */</span>
231<span class="sd">        INT32 end_chi;                 /* 1000*chi angle */</span>
232<span class="sd">        INT32 end_kappa;                       /* 1000*kappa angle */</span>
233<span class="sd">        INT32 end_phi;                 /* 1000*phi angle */</span>
234<span class="sd">        INT32 end_delta;                       /* 1000*delta angle */</span>
235<span class="sd">        INT32 end_gamma;                       /* 1000*gamma angle */</span>
236<span class="sd">        INT32 end_xtal_to_detector;    /* 1000*distance in mm (dist in um)*/</span>
237<span class="sd">        INT32 rotation_axis;           /* active rotation axis (index into above ie. 0=twotheta,1=omega...) */</span>
238<span class="sd">        INT32 rotation_range;          /* 1000*rotation angle */</span>
239<span class="sd">        INT32 detector_rotx;           /* 1000*rotation of detector around X */</span>
240<span class="sd">        INT32 detector_roty;           /* 1000*rotation of detector around Y */</span>
241<span class="sd">        INT32 detector_rotz;           /* 1000*rotation of detector around Z */</span>
242<span class="sd">        INT32 total_dose;              /* Hz-sec (counts) integrated over full exposure */</span>
243<span class="sd">       char reserve3[(32-29)*sizeof(INT32)]; /* Pad Gonisotat parameters to 128 bytes */</span>
244
245<span class="sd">       /* Detector parameters (128 bytes) */</span>
246<span class="sd">       INT32 detector_type;            /* detector type */</span>
247<span class="sd">       INT32 pixelsize_x;              /* pixel size (nanometers) */</span>
248<span class="sd">       INT32 pixelsize_y;              /* pixel size (nanometers) */</span>
249<span class="sd">        INT32 mean_bias;                       /* 1000*mean bias value */</span>
250<span class="sd">        INT32 photons_per_100adu;      /* photons / 100 ADUs */</span>
251<span class="sd">        INT32 measured_bias[MAXIMAGES];        /* 1000*mean bias value for each image*/</span>
252<span class="sd">        INT32 measured_temperature[MAXIMAGES]; /* Temperature of each detector in milliKelvins */</span>
253<span class="sd">        INT32 measured_pressure[MAXIMAGES];    /* Pressure of each chamber in microTorr */</span>
254<span class="sd">       /* Retired reserve4 when MAXIMAGES set to 9 from 16 and two fields removed, and temp and pressure added</span>
255<span class="sd">       char reserve4[(32-(5+3*MAXIMAGES))*sizeof(INT32)];</span>
256<span class="sd">       */</span>
257
258<span class="sd">       /* X-ray source and optics parameters (128 bytes) */</span>
259<span class="sd">       /* X-ray source parameters (14*4 bytes) */</span>
260<span class="sd">        INT32 source_type;             /* (code) - target, synch. etc */</span>
261<span class="sd">        INT32 source_dx;                       /* Optics param. - (size microns) */</span>
262<span class="sd">        INT32 source_dy;                       /* Optics param. - (size microns) */</span>
263<span class="sd">        INT32 source_wavelength;               /* wavelength (femtoMeters) */</span>
264<span class="sd">        INT32 source_power;            /* (Watts) */</span>
265<span class="sd">        INT32 source_voltage;          /* (Volts) */</span>
266<span class="sd">        INT32 source_current;          /* (microAmps) */</span>
267<span class="sd">        INT32 source_bias;             /* (Volts) */</span>
268<span class="sd">        INT32 source_polarization_x;   /* () */</span>
269<span class="sd">        INT32 source_polarization_y;   /* () */</span>
270<span class="sd">        INT32 source_intensity_0;      /* (arbitrary units) */</span>
271<span class="sd">        INT32 source_intensity_1;      /* (arbitrary units) */</span>
272<span class="sd">       char reserve_source[2*sizeof(INT32)];</span>
273
274<span class="sd">       /* X-ray optics_parameters (8*4 bytes) */</span>
275<span class="sd">        INT32 optics_type;             /* Optics type (code)*/</span>
276<span class="sd">        INT32 optics_dx;                       /* Optics param. - (size microns) */</span>
277<span class="sd">        INT32 optics_dy;                       /* Optics param. - (size microns) */</span>
278<span class="sd">        INT32 optics_wavelength;               /* Optics param. - (size microns) */</span>
279<span class="sd">        INT32 optics_dispersion;               /* Optics param. - (*10E6) */</span>
280<span class="sd">        INT32 optics_crossfire_x;      /* Optics param. - (microRadians) */</span>
281<span class="sd">        INT32 optics_crossfire_y;      /* Optics param. - (microRadians) */</span>
282<span class="sd">        INT32 optics_angle;            /* Optics param. - (monoch. 2theta - microradians) */</span>
283<span class="sd">        INT32 optics_polarization_x;   /* () */</span>
284<span class="sd">        INT32 optics_polarization_y;   /* () */</span>
285<span class="sd">       char reserve_optics[4*sizeof(INT32)];</span>
286
287<span class="sd">       char reserve5[((32-28)*sizeof(INT32))]; /* Pad X-ray parameters to 128 bytes */</span>
288
289<span class="sd">       /* File parameters (1024 bytes) */</span>
290<span class="sd">       char filetitle[128];            /* Title                                */</span>
291<span class="sd">       char filepath[128];             /* path name for data file              */</span>
292<span class="sd">       char filename[64];              /* name of data file                    */</span>
293<span class="sd">        char acquire_timestamp[32];    /* date and time of acquisition         */</span>
294<span class="sd">        char header_timestamp[32];     /* date and time of header update       */</span>
295<span class="sd">        char save_timestamp[32];       /* date and time file saved             */</span>
296<span class="sd">        char file_comment[512];        /* comments  - can be used as desired   */</span>
297<span class="sd">       char reserve6[1024-(128+128+64+(3*32)+512)]; /* Pad File parameters to 1024 bytes */</span>
298
299<span class="sd">       /* Dataset parameters (512 bytes) */</span>
300<span class="sd">        char dataset_comment[512];     /* comments  - can be used as desired   */</span>
301
302<span class="sd">       /* Reserved for user definable data - will not be used by Mar! */</span>
303<span class="sd">       char user_data[512];</span>
304
305<span class="sd">       /* char pad[----] USED UP! */     /* pad out to 3072 bytes */</span>
306
307<span class="sd">       } frame_header;</span>
308<span class="sd">&quot;&quot;&quot;</span>
309
310<span class="kn">import</span> <span class="nn">struct</span> <span class="kn">as</span> <span class="nn">st</span>
311<span class="kn">import</span> <span class="nn">array</span> <span class="kn">as</span> <span class="nn">ar</span>
312<span class="kn">import</span> <span class="nn">string</span><span class="o">,</span> <span class="nn">re</span>
313
314<span class="n">MAXIMAGES</span><span class="o">=</span><span class="mi">9</span>
315
316<div class="viewcode-block" id="marFrame"><a class="viewcode-back" href="../GSASIIGUIr.html#ReadMarCCDFrame.marFrame">[docs]</a><span class="k">class</span> <span class="nc">marFrame</span><span class="p">():</span>
317    <span class="sd">&#39;&#39;&#39;A class to extract correct mar header and image info from a MarCCD file</span>
318
319<span class="sd">    :param str File: file object [from open()]</span>
320<span class="sd">    :param byteOrd: &#39;&lt;&#39; (default) or &#39;&gt;&#39;  </span>
321<span class="sd">    :param dict IFD: ?</span>
322<span class="sd">    &#39;&#39;&#39;</span>
323    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">File</span><span class="p">,</span><span class="n">byteOrd</span><span class="o">=</span><span class="s">&#39;&lt;&#39;</span><span class="p">,</span><span class="n">IFD</span><span class="o">=</span><span class="p">{}):</span>
324        <span class="c"># simple TIFF header info</span>
325        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFsizeX</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">256</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
326        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFsizeY</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">257</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
327        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFbitDepth</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">258</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
328        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFcompression</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">259</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># 1 = no compression</span>
329        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFphotometricInterpretation</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">262</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># 1 = bilevel or grayscale where 0 is imaged as black</span>
330        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFstripOffsets</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">273</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># seems to be 4096 for marCCD</span>
331        <span class="bp">self</span><span class="o">.</span><span class="n">TIFForientation</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">274</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># 1 = 0th row it top, 0th column is left</span>
332        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFrowsPerStrip</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">278</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># varies based on image size</span>
333        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFstripByteCounts</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">279</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># number of bytes in a strip also varies based on size</span>
334        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFxResolution</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">282</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># pixels per resolutionUnit in X direction (ImageWidth direction)</span>
335        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFyResolution</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">283</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># pixels per resolutionUnit in Y direction (ImageLength direction</span>
336        <span class="bp">self</span><span class="o">.</span><span class="n">TIFFresolutionUnit</span> <span class="o">=</span> <span class="n">IFD</span><span class="p">[</span><span class="mi">296</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c"># 3 = centimeter</span>
337        <span class="bp">self</span><span class="o">.</span><span class="n">byteDepth</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIFFbitDepth</span><span class="o">/</span><span class="mi">8</span>
338        <span class="bp">self</span><span class="o">.</span><span class="n">arrayTypeCode</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="s">&#39;B&#39;</span><span class="p">,</span><span class="s">&#39;H&#39;</span><span class="p">,</span><span class="s">&#39;L&#39;</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">byteDepth</span><span class="p">]</span>
339        <span class="c"># MarCCD specific header info</span>
340        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
341        <span class="bp">self</span><span class="o">.</span><span class="n">headerType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flag for header type  (can be used as magic number) */</span>
342        <span class="bp">self</span><span class="o">.</span><span class="n">headerName</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="mi">16</span><span class="o">*</span><span class="s">&#39;c&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">16</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span>
343        <span class="bp">self</span><span class="o">.</span><span class="n">headerMajorVersion</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* header_major_version (n.) */</span>
344        <span class="bp">self</span><span class="o">.</span><span class="n">headerMinorVersion</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* header_minor_version (.n) */</span>
345        <span class="bp">self</span><span class="o">.</span><span class="n">headerByteOrder</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* BIG_ENDIAN (Motorola,MIPS); LITTLE_ENDIAN (DEC, Intel) */</span>
346        <span class="bp">self</span><span class="o">.</span><span class="n">dataByteOrder</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* BIG_ENDIAN (Motorola,MIPS); LITTLE_ENDIAN (DEC, Intel) */</span>
347        <span class="bp">self</span><span class="o">.</span><span class="n">headerSize</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* in bytes                    */</span>
348        <span class="bp">self</span><span class="o">.</span><span class="n">frameType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flag for frame type */</span>
349        <span class="bp">self</span><span class="o">.</span><span class="n">magicNumber</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* to be used as a flag - usually to indicate new file */</span>
350        <span class="bp">self</span><span class="o">.</span><span class="n">compressionType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* type of image compression    */</span>
351        <span class="bp">self</span><span class="o">.</span><span class="n">compression1</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* compression parameter 1 */</span>
352        <span class="bp">self</span><span class="o">.</span><span class="n">compression2</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* compression parameter 2 */</span>
353        <span class="bp">self</span><span class="o">.</span><span class="n">compression3</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* compression parameter 3 */</span>
354        <span class="bp">self</span><span class="o">.</span><span class="n">compression4</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* compression parameter 4 */</span>
355        <span class="bp">self</span><span class="o">.</span><span class="n">compression5</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* compression parameter 4 */</span>
356        <span class="bp">self</span><span class="o">.</span><span class="n">compression6</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* compression parameter 4 */</span>
357        <span class="bp">self</span><span class="o">.</span><span class="n">nheaders</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* total number of headers       */</span>
358        <span class="bp">self</span><span class="o">.</span><span class="n">nfast</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of pixels in one line */</span>
359        <span class="bp">self</span><span class="o">.</span><span class="n">nslow</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of lines in image     */</span>
360        <span class="bp">self</span><span class="o">.</span><span class="n">depth</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of bytes per pixel    */</span>
361        <span class="bp">self</span><span class="o">.</span><span class="n">recordLength</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of pixels between succesive rows */</span>
362        <span class="bp">self</span><span class="o">.</span><span class="n">signifBits</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* true depth of data, in bits  */</span>
363        <span class="bp">self</span><span class="o">.</span><span class="n">dataType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (signed,unsigned,float...) */</span>
364        <span class="bp">self</span><span class="o">.</span><span class="n">saturatedValue</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* value marks pixel as saturated */</span>
365        <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* TRUE or FALSE */</span>
366        <span class="bp">self</span><span class="o">.</span><span class="n">nimages</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* total number of images - size of each is nfast*(nslow/nimages) */</span>
367        <span class="bp">self</span><span class="o">.</span><span class="n">origin</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* corner of origin                */</span>
368        <span class="bp">self</span><span class="o">.</span><span class="n">orientation</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* direction of fast axis     */</span>
369        <span class="bp">self</span><span class="o">.</span><span class="n">viewDirection</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* direction to view frame      */</span>
370        <span class="bp">self</span><span class="o">.</span><span class="n">overflowLocation</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* FOLLOWING_HEADER, FOLLOWING_DATA */</span>
371        <span class="bp">self</span><span class="o">.</span><span class="n">over8Bits</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* # of pixels with counts &gt; 255 */</span>
372        <span class="bp">self</span><span class="o">.</span><span class="n">over16Bits</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* # of pixels with count &gt; 65535 */</span>
373        <span class="bp">self</span><span class="o">.</span><span class="n">multiplexed</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* multiplex flag */</span>
374        <span class="bp">self</span><span class="o">.</span><span class="n">nfastimages</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* # of images in fast direction */</span>
375        <span class="bp">self</span><span class="o">.</span><span class="n">nslowimages</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* # of images in slow direction */</span>
376        <span class="bp">self</span><span class="o">.</span><span class="n">darkcurrentApplied</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flags correction has been applied - hold magic number ? */</span>
377        <span class="bp">self</span><span class="o">.</span><span class="n">biasApplied</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flags correction has been applied - hold magic number ? */</span>
378        <span class="bp">self</span><span class="o">.</span><span class="n">flatfieldApplied</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flags correction has been applied - hold magic number ? */</span>
379        <span class="bp">self</span><span class="o">.</span><span class="n">distortionApplied</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flags correction has been applied - hold magic number ? */</span>
380        <span class="bp">self</span><span class="o">.</span><span class="n">originalHeaderType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Header/frame type from file that frame is read from */</span>
381        <span class="bp">self</span><span class="o">.</span><span class="n">fileSaved</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Flag that file has been saved, should be zeroed if modified */</span>
382        <span class="bp">self</span><span class="o">.</span><span class="n">nValidPixels</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Number of pixels holding valid data - first N pixels */</span>
383        <span class="bp">self</span><span class="o">.</span><span class="n">defectmapApplied</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* flags correction has been applied - hold magic number ? */</span>
384        <span class="bp">self</span><span class="o">.</span><span class="n">subimageNfast</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* when divided into subimages (eg. frameshifted) */</span>
385        <span class="bp">self</span><span class="o">.</span><span class="n">subimageNslow</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* when divided into subimages (eg. frameshifted) */</span>
386        <span class="bp">self</span><span class="o">.</span><span class="n">subimageOriginFast</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* when divided into subimages (eg. frameshifted) */</span>
387        <span class="bp">self</span><span class="o">.</span><span class="n">subimageOriginSlow</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* when divided into subimages (eg. frameshifted) */</span>
388        <span class="bp">self</span><span class="o">.</span><span class="n">readoutPattern</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* BIT Code - 1 = A, 2 = B, 4 = C, 8 = D */</span>
389        <span class="bp">self</span><span class="o">.</span><span class="n">saturationLevel</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* at this value and above, data are not reliable */</span>
390        <span class="bp">self</span><span class="o">.</span><span class="n">orientationCode</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Describes how this frame needs to be rotated to make it &quot;right&quot; */</span>
391        <span class="bp">self</span><span class="o">.</span><span class="n">frameshiftMultiplexed</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* frameshift multiplex flag */</span>
392        <span class="bp">self</span><span class="o">.</span><span class="n">prescanNfast</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Number of non-image pixels preceeding imaging pixels - fast direction */</span>
393        <span class="bp">self</span><span class="o">.</span><span class="n">prescanNslow</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Number of non-image pixels preceeding imaging pixels - slow direction */</span>
394        <span class="bp">self</span><span class="o">.</span><span class="n">postscanNfast</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Number of non-image pixels followng imaging pixels - fast direction */</span>
395        <span class="bp">self</span><span class="o">.</span><span class="n">postscanNslow</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Number of non-image pixels followng imaging pixels - slow direction */</span>
396        <span class="bp">self</span><span class="o">.</span><span class="n">prepostTrimmed</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* trimmed==1 means pre and post scan pixels have been removed */</span>
397
398        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="p">)</span>
399        <span class="c">#self.totalCounts = st.unpack(byteOrd+&#39;Q&#39;,File.read(8))[0] # /* 64 bit integer range = 1.85E19*/</span>
400        <span class="c">#self.specialCounts1 = st.unpack(byteOrd+&#39;Q&#39;,File.read(8))[0]</span>
401        <span class="c">#self.specialCounts2 = st.unpack(byteOrd+&#39;Q&#39;,File.read(8))[0]</span>
402        <span class="bp">self</span><span class="o">.</span><span class="n">totalCounts</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;II&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
403        <span class="bp">self</span><span class="o">.</span><span class="n">specialCounts1</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;II&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
404        <span class="bp">self</span><span class="o">.</span><span class="n">specialCounts2</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;II&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
405        <span class="bp">self</span><span class="o">.</span><span class="n">min</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
406        <span class="bp">self</span><span class="o">.</span><span class="n">max</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
407        <span class="bp">self</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c"># /* mean * 1000 */</span>
408        <span class="bp">self</span><span class="o">.</span><span class="n">rms</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* rms * 1000 */</span>
409        <span class="bp">self</span><span class="o">.</span><span class="n">nZeros</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of pixels with 0 value  - not included in stats in unsigned data */</span>
410        <span class="bp">self</span><span class="o">.</span><span class="n">nSaturated</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of pixels with saturated value - not included in stats */</span>
411        <span class="bp">self</span><span class="o">.</span><span class="n">statsUptodate</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Flag that stats OK - ie data not changed since last calculation */</span>
412        <span class="bp">self</span><span class="o">.</span><span class="n">pixelNoise</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">))</span> <span class="c"># /* 1000*base noise value (ADUs) */</span>
413
414        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span>
415        <span class="bp">self</span><span class="o">.</span><span class="n">barcode</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="mi">16</span><span class="o">*</span><span class="s">&#39;c&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">16</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span>
416        <span class="bp">self</span><span class="o">.</span><span class="n">barcodeAngle</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
417        <span class="bp">self</span><span class="o">.</span><span class="n">barcodeStatus</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;I&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
418
419        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">256</span><span class="p">)</span>
420        <span class="bp">self</span><span class="o">.</span><span class="n">xtalToDetector</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*distance in millimeters */</span>
421        <span class="bp">self</span><span class="o">.</span><span class="n">beamX</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*x beam position (pixels) */</span>
422        <span class="bp">self</span><span class="o">.</span><span class="n">beamY</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*y beam position (pixels) */</span>
423        <span class="bp">self</span><span class="o">.</span><span class="n">integrationTime</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* integration time in milliseconds */</span>
424        <span class="bp">self</span><span class="o">.</span><span class="n">exposureTime</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* exposure time in milliseconds */</span>
425        <span class="bp">self</span><span class="o">.</span><span class="n">readoutTime</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* readout time in milliseconds */</span>
426        <span class="bp">self</span><span class="o">.</span><span class="n">nreads</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* number of readouts to get this image */</span>
427        <span class="bp">self</span><span class="o">.</span><span class="n">startTwotheta</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*two_theta angle */</span>
428        <span class="bp">self</span><span class="o">.</span><span class="n">startOmega</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*omega angle */</span>
429        <span class="bp">self</span><span class="o">.</span><span class="n">startChi</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*chi angle */</span>
430        <span class="bp">self</span><span class="o">.</span><span class="n">startKappa</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*kappa angle */</span>
431        <span class="bp">self</span><span class="o">.</span><span class="n">startPhi</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*phi angle */</span>
432        <span class="bp">self</span><span class="o">.</span><span class="n">startDelta</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*delta angle */</span>
433        <span class="bp">self</span><span class="o">.</span><span class="n">startGamma</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*gamma angle */</span>
434        <span class="bp">self</span><span class="o">.</span><span class="n">startXtalToDetector</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*distance in mm (dist in um)*/</span>
435        <span class="bp">self</span><span class="o">.</span><span class="n">endTwotheta</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*two_theta angle */</span>
436        <span class="bp">self</span><span class="o">.</span><span class="n">endOmega</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*omega angle */</span>
437        <span class="bp">self</span><span class="o">.</span><span class="n">endChi</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*chi angle */</span>
438        <span class="bp">self</span><span class="o">.</span><span class="n">endKappa</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*kappa angle */</span>
439        <span class="bp">self</span><span class="o">.</span><span class="n">endPhi</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*phi angle */</span>
440        <span class="bp">self</span><span class="o">.</span><span class="n">endDelta</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*delta angle */</span>
441        <span class="bp">self</span><span class="o">.</span><span class="n">endGamma</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*gamma angle */</span>
442        <span class="bp">self</span><span class="o">.</span><span class="n">endXtalToDetector</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*distance in mm (dist in um)*/</span>
443        <span class="bp">self</span><span class="o">.</span><span class="n">rotationAxis</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* active rotation axis (index into above ie. 0=twotheta,1=omega...) */</span>
444        <span class="bp">self</span><span class="o">.</span><span class="n">rotationRange</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*rotation angle */</span>
445        <span class="bp">self</span><span class="o">.</span><span class="n">detectorRotx</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*rotation of detector around X */</span>
446        <span class="bp">self</span><span class="o">.</span><span class="n">detectorRoty</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*rotation of detector around Y */</span>
447        <span class="bp">self</span><span class="o">.</span><span class="n">detectorRotz</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*rotation of detector around Z */</span>
448        <span class="bp">self</span><span class="o">.</span><span class="n">totalDose</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Hz-sec (counts) integrated over full exposure */</span>
449
450        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span>
451        <span class="bp">self</span><span class="o">.</span><span class="n">detectorType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* detector type */</span>
452        <span class="bp">self</span><span class="o">.</span><span class="n">pixelsizeX</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* pixel size (nanometers) */</span>
453        <span class="bp">self</span><span class="o">.</span><span class="n">pixelsizeY</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* pixel size (nanometers) */</span>
454        <span class="bp">self</span><span class="o">.</span><span class="n">meanBias</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* 1000*mean bias value */</span>
455        <span class="bp">self</span><span class="o">.</span><span class="n">photonsPer100adu</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* photons / 100 ADUs */</span>
456        <span class="bp">self</span><span class="o">.</span><span class="n">measuredBias</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">))</span> <span class="c"># /* 1000*mean bias value for each image*/</span>
457        <span class="bp">self</span><span class="o">.</span><span class="n">measuredTemperature</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">))</span> <span class="c"># /* Temperature of each detector in milliKelvins */</span>
458        <span class="bp">self</span><span class="o">.</span><span class="n">measuredPressure</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAXIMAGES</span><span class="p">))</span> <span class="c"># /* Pressure of each chamber in microTorr */</span>
459
460        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span>
461        <span class="bp">self</span><span class="o">.</span><span class="n">sourceType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (code) - target, synch. etc */</span>
462        <span class="bp">self</span><span class="o">.</span><span class="n">sourceDx</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (size microns) */</span>
463        <span class="bp">self</span><span class="o">.</span><span class="n">sourceDy</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (size microns) */</span>
464        <span class="bp">self</span><span class="o">.</span><span class="n">sourceWavelength</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* wavelength (femtoMeters) */</span>
465        <span class="bp">self</span><span class="o">.</span><span class="n">sourcePower</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (Watts) */</span>
466        <span class="bp">self</span><span class="o">.</span><span class="n">sourceVoltage</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (Volts) */</span>
467        <span class="bp">self</span><span class="o">.</span><span class="n">sourceCurrent</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (microAmps) */</span>
468        <span class="bp">self</span><span class="o">.</span><span class="n">sourceBias</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (Volts) */</span>
469        <span class="bp">self</span><span class="o">.</span><span class="n">sourcePolarizationX</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* () */</span>
470        <span class="bp">self</span><span class="o">.</span><span class="n">sourcePolarizationY</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* () */</span>
471        <span class="bp">self</span><span class="o">.</span><span class="n">sourceIntensity0</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (arbitrary units) */</span>
472        <span class="bp">self</span><span class="o">.</span><span class="n">sourceIntensity1</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* (arbitrary units) */</span>
473
474        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">14</span><span class="o">*</span><span class="mi">4</span><span class="p">)</span>
475        <span class="bp">self</span><span class="o">.</span><span class="n">opticsType</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics type (code)*/</span>
476        <span class="bp">self</span><span class="o">.</span><span class="n">opticsDx</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (size microns) */</span>
477        <span class="bp">self</span><span class="o">.</span><span class="n">opticsDy</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (size microns) */</span>
478        <span class="bp">self</span><span class="o">.</span><span class="n">opticsWavelength</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (size microns) */</span>
479        <span class="bp">self</span><span class="o">.</span><span class="n">opticsDispersion</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (*10E6) */</span>
480        <span class="bp">self</span><span class="o">.</span><span class="n">opticsCrossfireX</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (microRadians) */</span>
481        <span class="bp">self</span><span class="o">.</span><span class="n">opticsCrossfireY</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (microRadians) */</span>
482        <span class="bp">self</span><span class="o">.</span><span class="n">opticsAngle</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* Optics param. - (monoch. 2theta - microradians) */</span>
483        <span class="bp">self</span><span class="o">.</span><span class="n">opticsPolarizationX</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* () */</span>
484        <span class="bp">self</span><span class="o">.</span><span class="n">opticsPolarizationY</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;i&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="c">#/* () */</span>
485
486        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">IFD</span><span class="p">[</span><span class="mi">34710</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">256</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">128</span><span class="o">+</span><span class="mi">128</span><span class="p">)</span>
487        <span class="bp">self</span><span class="o">.</span><span class="n">filetitle</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="mi">128</span><span class="o">*</span><span class="s">&#39;c&#39;</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">128</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span>
488        <span class="bp">self</span><span class="o">.</span><span class="n">filepath</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">128</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">128</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* path name for data file*/</span>
489        <span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">64</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">64</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* name of data file*/</span>
490        <span class="bp">self</span><span class="o">.</span><span class="n">acquireTimestamp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">32</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">32</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* date and time of acquisition*/</span>
491        <span class="bp">self</span><span class="o">.</span><span class="n">headerTimestamp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">32</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">32</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* date and time of header update*/</span>
492        <span class="bp">self</span><span class="o">.</span><span class="n">saveTimestamp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">32</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">32</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* date and time file saved */</span>
493        <span class="bp">self</span><span class="o">.</span><span class="n">fileComment</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">512</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">512</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* comments  - can be used as desired */</span>
494        <span class="bp">self</span><span class="o">.</span><span class="n">datasetComment</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">512</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">512</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span> <span class="c">#/* comments  - can be used as desired */</span>
495
496        <span class="bp">self</span><span class="o">.</span><span class="n">userData</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r&#39;\x00&#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">string</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">st</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">byteOrd</span><span class="o">+</span><span class="s">&#39;c&#39;</span><span class="o">*</span><span class="mi">512</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">512</span><span class="p">)),</span><span class="s">&#39;&#39;</span><span class="p">))</span>
497
498        <span class="n">File</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">4096</span><span class="p">)</span>
499        <span class="bp">self</span><span class="o">.</span><span class="n">image</span> <span class="o">=</span> <span class="n">ar</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arrayTypeCode</span><span class="p">,</span><span class="n">File</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">byteDepth</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">TIFFsizeX</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">TIFFsizeY</span><span class="p">))</span>
500    <span class="c"># reverse the array so if can have the same view as is read in marccd</span>
501    <span class="c"># also switch the view direction </span>
502        <span class="bp">self</span><span class="o">.</span><span class="n">image</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span>
503        <span class="bp">self</span><span class="o">.</span><span class="n">viewDirection</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">viewDirection</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
504
505    <span class="k">def</span> <span class="nf">outputHead</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
506        <span class="n">myHead</span> <span class="o">=</span> <span class="p">[]</span>
507        <span class="k">for</span> <span class="n">curAttr</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
508            <span class="k">if</span> <span class="p">(</span> <span class="n">curAttr</span> <span class="o">!=</span> <span class="s">&#39;__doc__&#39;</span> <span class="ow">and</span> \
509                 <span class="n">curAttr</span> <span class="o">!=</span> <span class="s">&#39;__init__&#39;</span> <span class="ow">and</span> \
510                 <span class="n">curAttr</span> <span class="o">!=</span> <span class="s">&#39;__module__&#39;</span> <span class="ow">and</span> \
511                 <span class="n">curAttr</span> <span class="o">!=</span> <span class="s">&#39;outputHead&#39;</span> <span class="ow">and</span> \
512                 <span class="n">curAttr</span> <span class="o">!=</span> <span class="s">&#39;image&#39;</span> <span class="p">):</span>
513                <span class="n">myHead</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot; </span><span class="si">%s</span><span class="s"> = </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">curAttr</span><span class="p">,</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">curAttr</span><span class="p">)))</span>
514        <span class="k">return</span> <span class="n">myHead</span></div>
515</pre></div>
516
517          </div>
518        </div>
519      </div>
520      <div class="sphinxsidebar">
521        <div class="sphinxsidebarwrapper">
522            <p class="logo"><a href="../index.html">
523              <img class="logo" src="../_static/G2_html_logo.png" alt="Logo"/>
524            </a></p>
525<div id="searchbox" style="display: none">
526  <h3>Quick search</h3>
527    <form class="search" action="../search.html" method="get">
528      <input type="text" name="q" />
529      <input type="submit" value="Go" />
530      <input type="hidden" name="check_keywords" value="yes" />
531      <input type="hidden" name="area" value="default" />
532    </form>
533    <p class="searchtip" style="font-size: 90%">
534    Enter search terms or a module, class or function name.
535    </p>
536</div>
537<script type="text/javascript">$('#searchbox').show(0);</script>
538        </div>
539      </div>
540      <div class="clearer"></div>
541    </div>
542    <div class="related">
543      <h3>Navigation</h3>
544      <ul>
545        <li class="right" style="margin-right: 10px">
546          <a href="../genindex.html" title="General Index"
547             >index</a></li>
548        <li class="right" >
549          <a href="../py-modindex.html" title="Python Module Index"
550             >modules</a> |</li>
551        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
552          <li><a href="index.html" >Module code</a> &raquo;</li> 
553      </ul>
554    </div>
555    <div class="footer">
556        &copy; Copyright 2013, Von Dreele and Toby for Argonne National Laboratory.
557      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
558    </div>
559  </body>
560</html>
Note: See TracBrowser for help on using the repository browser.