gpp4  1.3.1
cmaplib.h
Go to the documentation of this file.
1 /*
2  cmaplib.h: C/C++ level API for accessing CCP4 map files
3  Copyright (C) 2001 CCLRC, Charles Ballard
4 
5  This library is free software: you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation, either
8  version 3 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with This library. If not, see
17  <http://www.gnu.org/licenses/>.
18 
19 */
20 
50 #ifndef __GUARD_MAPLIB
51 #define __GUARD_MAPLIB
52 
53 #include "ccp4_utils.h"
54 
55 #ifdef __cplusplus
56 namespace CMap_io {
57 typedef CCP4::CCP4File CCP4File;
58 extern "C" {
59 #endif
60 
61 typedef struct _CMMFile_Skew CMMFile_Skew;
62 typedef struct _CMMFile_Labels CMMFile_Labels;
63 typedef struct _CMMFile_Symop CMMFile_Symop;
64 typedef struct _CMMFile_Data CMMFile_Data;
65 typedef struct _CMMFile_Stats CMMFile_Stats;
66 typedef struct _CMMFile CMMFile;
67 
69  unsigned int number;
70  char *labels[10];
71 };
72 
76 struct _CMMFile_Skew {
77  float rotation[3][3];
78  float translation[3];
79 };
80 
85  unsigned int offset;
87  unsigned int size;
88  unsigned int number;
89 };
90 
94 struct _CMMFile_Data {
95  size_t offset;
96  size_t section_size;
97  size_t header_size;
98  size_t block_size;
99  unsigned int number;
100 };
101 
106  float offset;
107  float min;
108  float max;
109  double mean;
110  double rms;
111  int total;
112 };
113 
118 struct _CMMFile {
120  char *file_name;
121  unsigned int data_mode;
122  unsigned int close_mode;
123  float cell[6];
125  int map_dim[3];
127  int origin[3];
129  int cell_grid[3];
130  int axes_order[3];
131  CMMFile_Symop symop;
132  CMMFile_Data data;
133  CMMFile_Stats stats;
134  CMMFile_Labels labels;
135  CMMFile_Skew skew;
136  int reserved[8];
137  char user_access[28];
138 };
139 
140 /* open a file for read/write */
141 void *ccp4_cmap_open(const char *filename, int mode);
142 
143 /* close a file for read/write (dumping the header if write) */
144 void ccp4_cmap_close(CMMFile *mfile);
145 
146 /* set the close mode (calculation of map statistics) */
147 void ccp4_cmap_closemode(CMMFile *mfile, unsigned int closemode);
148 
149 /* seek to a section in the map (read mode only)*/
150 int ccp4_cmap_seek_section(CMMFile *mfile, int offset, unsigned int seek_mode);
151 
152 /* seek to a row in a section (read mode only)*/
153 int ccp4_cmap_seek_row(CMMFile *, int offset, unsigned int seek_mode);
154 
155 /* raw seek (read mode only)*/
156 int ccp4_cmap_seek_data(CMMFile *, int offset, unsigned int seek_mode);
157 
158 /* read a map section from file to memory */
159 int ccp4_cmap_read_section(CMMFile *mfile, void *section);
160 
161 /* read a row from file to memory */
162 int ccp4_cmap_read_row(CMMFile *mfile, void *row);
163 
164 /* read n_items from file to memory (item determined by data mode) */
165 int ccp4_cmap_read_data(const CMMFile *mfile, void *items, int n_items);
166 
167 /* write a map section from memory to file */
168 int ccp4_cmap_write_section(CMMFile *mfile, const void *section);
169 
170 /* write a map row from memory to file */
171 int ccp4_cmap_write_row(CMMFile *mfile, const void *row);
172 
173 /* write n_items from memory to file (item determined by data mode) */
174 int ccp4_cmap_write_data(CMMFile *mfile, const void *items, int n_items);
175 
176 /* read the section header corresponding to the current section */
177 int ccp4_cmap_read_section_header(const CMMFile *mfile, char *header);
178 
179 /* write the section header corresponding to the current section */
180 int ccp4_cmap_write_section_header(CMMFile *mfile, const char *header);
181 
182 /* get the header parameters */
183 void ccp4_cmap_get_cell(const CMMFile *mfile, float *cell);
184 void ccp4_cmap_get_grid(const CMMFile *mfile, int *grid);
185 void ccp4_cmap_get_origin(const CMMFile *mfile, int *origin);
186 void ccp4_cmap_get_order(const CMMFile *mfile, int *axes_order);
187 void ccp4_cmap_get_dim(const CMMFile *mfile, int *map_dim);
188 int ccp4_cmap_get_spacegroup(const CMMFile *mfile);
189 void ccp4_cmap_get_mapstats(const CMMFile *mfile, float *min, float* max,
190  double *mean, double *rms);
191 
192 /* set the header parameters */
193 void ccp4_cmap_set_cell(CMMFile *mfile, const float *cell);
194 void ccp4_cmap_set_grid(CMMFile *mfile, const int *grid);
195 void ccp4_cmap_set_origin(CMMFile *mfile, const int *origin);
196 void ccp4_cmap_set_order(CMMFile *mfile, const int *axes_order);
197 void ccp4_cmap_set_dim(CMMFile *mfile, const int *map_dim);
198 void ccp4_cmap_set_spacegroup(CMMFile *mfile, int spacegroup);
199 void ccp4_cmap_set_mapstats(CMMFile *mfile, const float min, const float max,
200  const double mean, const double rms);
201 
202 /* get map file datamode */
203 unsigned int ccp4_cmap_get_datamode(const CMMFile *mfile);
204 
205 /* set map file datamode */
206 void ccp4_cmap_set_datamode(CMMFile *mfile, unsigned int datamode);
207 
208 /* get the local header size */
209 size_t ccp4_cmap_get_local_header(CMMFile *mfile);
210 
211 /* set the local header size (before data writing begins) */
212 void ccp4_cmap_set_local_header(CMMFile *mfile, size_t size);
213 
214 /* get the number of symops in the file */
215 int ccp4_cmap_num_symop(const CMMFile *mfile);
216 
217 /* seek among the symops strings */
218 int ccp4_cmap_seek_symop(CMMFile *mfile, int isymop, unsigned int whence);
219 
220 /* read a symop string of 80 characters */
221 int ccp4_cmap_get_symop(CMMFile *mfile, char *buffer);
222 
223 /* write a symop string of 80 characters */
224 int ccp4_cmap_set_symop(CMMFile *mfile, const char *buffer);
225 
226 /* get the mask */
227 int ccp4_cmap_get_mask(const CMMFile *mfile, float *skew_mat, float *skew_trans);
228 
229 /* set the mask */
230 int ccp4_cmap_set_mask(CMMFile *mfile, const float *skew_mat, const float *skew_trans);
231 
232 /* the number of labels used */
233 int ccp4_cmap_number_label(const CMMFile *mfile);
234 
235 /* set label at posn from C-string */
236 int ccp4_cmap_set_label(CMMFile *mfile, const char *label, int posn);
237 
238 /* return label at posn as C-string */
239 char *ccp4_cmap_get_label(const CMMFile *mfile, int posn);
240 
241 /* set title (label=0) */
242 int ccp4_cmap_set_title(CMMFile *mfile, const char *label);
243 
244 /* get title (label=0) */
245 char *ccp4_cmap_get_title(const CMMFile *mfile);
246 
247 #ifdef __cplusplus
248 }
249 }
250 #endif
251 
252 #endif /* __GUARD_MAPLIB */
253 
254 /*
255  Local variables:
256  mode: font-lock
257  End:
258 */
Definition: cmaplib.h:68
int ccp4_cmap_seek_section(CMMFile *mfile, int offset, unsigned int seek_mode)
Definition: cmap_data.c:54
void ccp4_cmap_set_local_header(CMMFile *mfile, size_t size)
Definition: cmap_accessor.c:246
void ccp4_cmap_get_cell(const CMMFile *mfile, float *cell)
Definition: cmap_accessor.c:29
float max
Definition: cmaplib.h:108
Data structure describing an optional skew transformation of the map.
Definition: cmaplib.h:76
int spacegroup
Definition: cmaplib.h:124
int ccp4_cmap_read_section(CMMFile *mfile, void *section)
Definition: cmap_data.c:147
int ccp4_cmap_write_section(CMMFile *mfile, const void *section)
Definition: cmap_data.c:109
void ccp4_cmap_set_grid(CMMFile *mfile, const int *grid)
Definition: cmap_accessor.c:69
int ccp4_cmap_num_symop(const CMMFile *mfile)
Definition: cmap_symop.c:27
int ccp4_cmap_write_data(CMMFile *mfile, const void *items, int n_items)
Definition: cmap_data.c:441
void * ccp4_cmap_open(const char *filename, int mode)
Definition: cmap_open.c:82
double mean
Definition: cmaplib.h:109
int ccp4_cmap_get_spacegroup(const CMMFile *mfile)
Definition: cmap_accessor.c:158
void ccp4_cmap_set_cell(CMMFile *mfile, const float *cell)
Definition: cmap_accessor.c:43
unsigned int size
Definition: cmaplib.h:87
char * file_name
Definition: cmaplib.h:120
int ccp4_cmap_number_label(const CMMFile *mfile)
Definition: cmap_labels.c:155
void ccp4_cmap_get_order(const CMMFile *mfile, int *axes_order)
Definition: cmap_accessor.c:105
void ccp4_cmap_closemode(CMMFile *mfile, unsigned int closemode)
Definition: cmap_close.c:78
void ccp4_cmap_close(CMMFile *mfile)
Definition: cmap_close.c:35
int ccp4_cmap_write_row(CMMFile *mfile, const void *row)
Definition: cmap_data.c:339
int ccp4_cmap_get_mask(const CMMFile *mfile, float *skew_mat, float *skew_trans)
Definition: cmap_skew.c:66
int ccp4_cmap_set_symop(CMMFile *mfile, const char *buffer)
Definition: cmap_symop.c:124
CCP4File * stream
Definition: cmaplib.h:119
void ccp4_cmap_get_mapstats(const CMMFile *mfile, float *min, float *max, double *mean, double *rms)
Definition: cmap_accessor.c:206
int ccp4_cmap_set_title(CMMFile *mfile, const char *label)
Definition: cmap_labels.c:174
void ccp4_cmap_set_datamode(CMMFile *mfile, unsigned int datamode)
Definition: cmap_accessor.c:186
int ccp4_cmap_read_row(CMMFile *mfile, void *row)
Definition: cmap_data.c:374
int ccp4_cmap_set_mask(CMMFile *mfile, const float *skew_mat, const float *skew_trans)
Definition: cmap_skew.c:31
Data structure describing the blocks within the file holding the map array.
Definition: cmaplib.h:94
int ccp4_cmap_get_symop(CMMFile *mfile, char *buffer)
Definition: cmap_symop.c:89
void ccp4_cmap_set_spacegroup(CMMFile *mfile, int spacegroup)
Definition: cmap_accessor.c:167
Construct to hold the information about a map file.
Definition: cmaplib.h:118
int ccp4_cmap_seek_data(CMMFile *, int offset, unsigned int seek_mode)
Definition: cmap_data.c:419
size_t ccp4_cmap_get_local_header(CMMFile *mfile)
Definition: cmap_accessor.c:258
float min
Definition: cmaplib.h:107
void ccp4_cmap_set_order(CMMFile *mfile, const int *axes_order)
Definition: cmap_accessor.c:117
unsigned int number
Definition: cmaplib.h:88
int total
Definition: cmaplib.h:111
int ccp4_cmap_set_label(CMMFile *mfile, const char *label, int posn)
Definition: cmap_labels.c:84
void ccp4_cmap_set_origin(CMMFile *mfile, const int *origin)
Definition: cmap_accessor.c:92
int ccp4_cmap_seek_symop(CMMFile *mfile, int isymop, unsigned int whence)
Definition: cmap_symop.c:40
float offset
Definition: cmaplib.h:106
char * ccp4_cmap_get_label(const CMMFile *mfile, int posn)
Definition: cmap_labels.c:136
int ccp4_cmap_read_data(const CMMFile *mfile, void *items, int n_items)
Definition: cmap_data.c:469
void ccp4_cmap_get_dim(const CMMFile *mfile, int *map_dim)
Definition: cmap_accessor.c:129
int ccp4_cmap_write_section_header(CMMFile *mfile, const char *header)
Definition: cmap_data.c:243
Construct to hold various map statistics.
Definition: cmaplib.h:105
unsigned int ccp4_cmap_get_datamode(const CMMFile *mfile)
Definition: cmap_accessor.c:176
void ccp4_cmap_get_grid(const CMMFile *mfile, int *grid)
Definition: cmap_accessor.c:58
unsigned int offset
Definition: cmaplib.h:85
Definition: library_file.h:40
int ccp4_cmap_seek_row(CMMFile *, int offset, unsigned int seek_mode)
Definition: cmap_data.c:279
Data structure describing the block of symmetry data within the file.
Definition: cmaplib.h:84
void ccp4_cmap_set_dim(CMMFile *mfile, const int *map_dim)
Definition: cmap_accessor.c:142
int ccp4_cmap_read_section_header(const CMMFile *mfile, char *header)
Definition: cmap_data.c:198
struct _CFileStruct CCP4File
Definition: library_file.h:38
double rms
Definition: cmaplib.h:110
void ccp4_cmap_get_origin(const CMMFile *mfile, int *origin)
Definition: cmap_accessor.c:81
Utility functions.
char * ccp4_cmap_get_title(const CMMFile *mfile)
Definition: cmap_labels.c:164
void ccp4_cmap_set_mapstats(CMMFile *mfile, const float min, const float max, const double mean, const double rms)
Definition: cmap_accessor.c:232