IMP
2.0.1
The Integrative Modeling Platform
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
SpiderHeader.h
Go to the documentation of this file.
1
/**
2
* \file IMP/em/SpiderHeader.h
3
* \brief Header for Spider and Xmipp formats
4
*
5
* Copyright 2007-2013 IMP Inventors. All rights reserved.
6
*/
7
8
#ifndef IMPEM_SPIDER_HEADER_H
9
#define IMPEM_SPIDER_HEADER_H
10
11
#include <ostream>
12
#include <IMP/em/em_config.h>
13
14
IMPEM_BEGIN_NAMESPACE
15
16
//! Header for Spider images. IMP-EM is designed to be compatible with it
17
struct
SpiderHeader
{
18
//! Number of slices (=1 for images)
19
float
fNslice
;
20
//! Number of rows
21
float
fNrow
;
22
//! Total number of records
23
float
fNrec
;
24
//! Auxiliary number used to compute the number of records
25
float
fNlabel
;
26
//! FILE TYPE SPECIFIER.
27
/**
28
* +3 FOR A 3-D FILE (FLOAT)
29
* +1 FOR A 2-D IMAGE (FLOAT)
30
* -1 FOR A 2-D FOURIER TRANSFORM
31
* -3 FOR A 3-D FOURIER TRANSFORM
32
* -5 FOR A NEW 2-D FOURIER TRANSFORM
33
* -7 FOR A NEW 3-D FOURIER TRANSFORM
34
* +8 FOR A 2-D EIGHT BIT IMAGE FILE
35
* +9 FOR A 2-D INT IMAGE FILE
36
* 10 FOR A 3-D INT IMAGE FILE
37
* 11 FOR A 2-D EIGHT BIT COLOR IMAGE FILE
38
**/
39
float
fIform
;
40
//! MAXIMUM/MINIMUM FLAG.
41
/** IS SET AT 0 WHEN THE FILE IS CREATED, AND AT 1 WHEN THE MAXIMUM AND
42
* MINIMUM HAVE BEEN COMPUTED, AND HAVE BEEN STORED
43
* INTO THIS LABEL RECORD (SEE FOLLOWING WORDS)
44
*/
45
float
fImami
;
46
//! maximum value in the image
47
float
fFmax
;
48
//! minimum value in the image
49
float
fFmin
;
50
//! average value
51
float
fAv
;
52
//! Standard deviation. If -1 it means that it has no been computed
53
float
fSig
;
54
//! FLAG INDICATING IF THE HISTOGRAM HAS BE COMPUTED. NOT USED IN 3D FILES!
55
float
fIhist
;
// It is obsolete in Spider
56
//! Number of columns
57
float
fNcol
;
58
//! number of records in file header (label)
59
float
fLabrec
;
60
//! flag that tilt angles are present.
61
float
fIangle
;
62
//! 1st Euler rotation angle (Rot) (ZYZ convention)
63
float
fPhi
;
64
//! 2nd Euler rotation angle (Tilt) (ZYZ convention)
65
float
fTheta
;
66
//! 3rd Euler rotation angle (Psi) (ZYZ convention)
67
float
fPsi
;
68
//! X TRANSLATION
69
float
fXoff
;
70
//! Y TRANSLATION
71
float
fYoff
;
72
//! Z TRANSLATION
73
float
fZoff
;
74
//! SCALE
75
float
fScale
;
76
//! Total number of bytes in the header
77
float
fLabbyt
;
78
//! RECORD LENGTH IN BYTES
79
float
fLenbyt
;
80
//! this is a Spider incongruence. 24 bytes without meaning
81
char
fNothing[24];
82
//! THAT ANGLES ARE SET.
83
/**
84
* 1 = ONE ADDITIONAL
85
* ROTATION IS PRESENT, 2 = ADDITIONAL ROTATION
86
* THAT PRECEEDS THE ROTATION THAT WAS STORED IN
87
* 15 FOR DETAILS SEE MANUAL CHAPTER VOCEUL.MAN
88
*/
89
float
fFlag
;
90
float
fPhi1;
91
float
fTheta1;
92
float
fPsi1;
93
float
fPhi2;
94
float
fTheta2;
95
float
fPsi2;
96
double
fGeo_matrix[3][3];
//! x9 = 72 bytes: Geometric info
97
float
fAngle1
;
//! angle info
98
float
fr1
;
99
float
fr2;
//! lift up cosine mask parameters
100
//! For Radon transforms
101
float
RTflag
;
//! 1=RT, 2=FFT(RT)
102
float
Astart
;
103
float
Aend;
104
float
Ainc;
105
float
Rsigma;
//! 4*7 = 28 bytes
106
float
Tstart
;
107
float
Tend;
108
float
Tinc;
//! 4*3 = 12, 12+28 = 40B
109
//! For Max-Likelihood refinement (Xmipp compatibility)
110
float
Weight
;
111
//! 0= no flipping , 1= flipping (Xmipp compatibility)
112
float
Flip
;
113
//! Empty field in the SPIDER header format.
114
/**
115
* Originally is 700 bytes long, but additional information has been added:
116
* empty 700-76-40=624-40-8= 576 bytes
117
*/
118
char
empty[576];
119
//! date
120
char
szIDat[12];
121
//! time of creation
122
char
szITim[8];
123
//! Title
124
char
szITit[160];
125
126
void
show
(std::ostream& out)
const
{ out <<
"SpiderHeader"
; }
127
};
128
129
130
IMPEM_END_NAMESPACE
131
132
#endif
/* IMPEM_SPIDER_HEADER_H */