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 */
ccp4_signal
void ccp4_signal(const int, const char *const, void(*)())
Definition: library_err.c:278
ccp4_cmap_read_section
int ccp4_cmap_read_section(CMMFile *mfile, void *section)
Definition: cmap_data.c:147
ccp4_cmap_write_section
int ccp4_cmap_write_section(CMMFile *mfile, const void *section)
Definition: cmap_data.c:109
ccp4_cmap_get_datamode
unsigned int ccp4_cmap_get_datamode(const CMMFile *mfile)
Definition: cmap_accessor.c:176
ccp4_cmap_get_grid
void ccp4_cmap_get_grid(const CMMFile *mfile, int *grid)
Definition: cmap_accessor.c:58
_CMMFile
Construct to hold the information about a map file.
Definition: cmaplib.h:118
ccp4_utils.h
Utility functions.
_CFileStruct
Definition: library_file.h:40
ccp4_cmap_get_title
char * ccp4_cmap_get_title(const CMMFile *mfile)
Definition: cmap_labels.c:164
_CMMFile_Stats::min
float min
Definition: cmaplib.h:107
ccp4_cmap_get_cell
void ccp4_cmap_get_cell(const CMMFile *mfile, float *cell)
Definition: cmap_accessor.c:29
ccp4_cmap_set_grid
void ccp4_cmap_set_grid(CMMFile *mfile, const int *grid)
Definition: cmap_accessor.c:69
ccp4_cmap_num_symop
int ccp4_cmap_num_symop(const CMMFile *mfile)
Definition: cmap_symop.c:27
_CMMFile_Stats::offset
float offset
Definition: cmaplib.h:106
ccp4_cmap_set_cell
void ccp4_cmap_set_cell(CMMFile *mfile, const float *cell)
Definition: cmap_accessor.c:43
ccp4_cmap_write_data
int ccp4_cmap_write_data(CMMFile *mfile, const void *items, int n_items)
Definition: cmap_data.c:441
_CMMFile_Stats::total
int total
Definition: cmaplib.h:111
ccp4_cmap_number_label
int ccp4_cmap_number_label(const CMMFile *mfile)
Definition: cmap_labels.c:155
ccp4_cmap_open
void * ccp4_cmap_open(const char *filename, int mode)
Definition: cmap_open.c:82
ccp4_cmap_get_mask
int ccp4_cmap_get_mask(const CMMFile *mfile, float *skew_mat, float *skew_trans)
Definition: cmap_skew.c:66
_CMMFile_Symop
Data structure describing the block of symmetry data within the file.
Definition: cmaplib.h:84
CCP4File
struct _CFileStruct CCP4File
Definition: library_file.h:38
ccp4_cmap_closemode
void ccp4_cmap_closemode(CMMFile *mfile, unsigned int closemode)
Definition: cmap_close.c:78
ccp4_cmap_get_mapstats
void ccp4_cmap_get_mapstats(const CMMFile *mfile, float *min, float *max, double *mean, double *rms)
Definition: cmap_accessor.c:206
ccp4_cmap_close
void ccp4_cmap_close(CMMFile *mfile)
Definition: cmap_close.c:35
ccp4_file_readchar
int ccp4_file_readchar(CCP4File *cfile, uint8 *buffer, size_t nitems)
Definition: library_file.c:1528
ccp4_cmap_get_order
void ccp4_cmap_get_order(const CMMFile *mfile, int *axes_order)
Definition: cmap_accessor.c:105
_CMMFile::spacegroup
int spacegroup
Definition: cmaplib.h:124
ccp4_cmap_get_spacegroup
int ccp4_cmap_get_spacegroup(const CMMFile *mfile)
Definition: cmap_accessor.c:158
_CMMFile_Stats::max
float max
Definition: cmaplib.h:108
ccp4_cmap_set_datamode
void ccp4_cmap_set_datamode(CMMFile *mfile, unsigned int datamode)
Definition: cmap_accessor.c:186
ccp4_file_is_read
int ccp4_file_is_read(const CCP4File *cfile)
Definition: library_file.c:554
ccp4_file_tell
long ccp4_file_tell(CCP4File *cfile)
Definition: library_file.c:2089
_CMMFile_Stats
Construct to hold various map statistics.
Definition: cmaplib.h:105
ccp4_cmap_write_row
int ccp4_cmap_write_row(CMMFile *mfile, const void *row)
Definition: cmap_data.c:339
ccp4_cmap_set_symop
int ccp4_cmap_set_symop(CMMFile *mfile, const char *buffer)
Definition: cmap_symop.c:124
ccp4_cmap_get_local_header
size_t ccp4_cmap_get_local_header(CMMFile *mfile)
Definition: cmap_accessor.c:258
ccp4_file_is_write
int ccp4_file_is_write(const CCP4File *cfile)
Definition: library_file.c:542
cmaplib.h
ccp4 map i/o user-level library header file
_CMMFile_Symop::size
unsigned int size
Definition: cmaplib.h:87
ccp4_cmap_set_spacegroup
void ccp4_cmap_set_spacegroup(CMMFile *mfile, int spacegroup)
Definition: cmap_accessor.c:167
_CMMFile_Stats::rms
double rms
Definition: cmaplib.h:110
ccp4_cmap_seek_data
int ccp4_cmap_seek_data(CMMFile *, int offset, unsigned int seek_mode)
Definition: cmap_data.c:419
ccp4_file_writechar
int ccp4_file_writechar(CCP4File *cfile, const uint8 *buffer, size_t nitems)
Definition: library_file.c:1972
ccp4_cmap_read_row
int ccp4_cmap_read_row(CMMFile *mfile, void *row)
Definition: cmap_data.c:374
ccp4_cmap_set_title
int ccp4_cmap_set_title(CMMFile *mfile, const char *label)
Definition: cmap_labels.c:174
_CMMFile::stream
CCP4File * stream
Definition: cmaplib.h:119
ccp4_cmap_set_origin
void ccp4_cmap_set_origin(CMMFile *mfile, const int *origin)
Definition: cmap_accessor.c:92
_CMMFile_Symop::offset
unsigned int offset
Definition: cmaplib.h:85
ccp4_cmap_get_label
char * ccp4_cmap_get_label(const CMMFile *mfile, int posn)
Definition: cmap_labels.c:136
_CMMFile_Data
Data structure describing the blocks within the file holding the map array.
Definition: cmaplib.h:94
_CMMFile::file_name
char * file_name
Definition: cmaplib.h:120
ccp4_cmap_set_mask
int ccp4_cmap_set_mask(CMMFile *mfile, const float *skew_mat, const float *skew_trans)
Definition: cmap_skew.c:31
ccp4_cmap_get_symop
int ccp4_cmap_get_symop(CMMFile *mfile, char *buffer)
Definition: cmap_symop.c:89
_CMMFile_Symop::number
unsigned int number
Definition: cmaplib.h:88
_CMMFile_Stats::mean
double mean
Definition: cmaplib.h:109
ccp4_file_raw_seek
int ccp4_file_raw_seek(CCP4File *cfile, long offset, int whence)
Definition: library_file.c:384
ccp4_cmap_read_data
int ccp4_cmap_read_data(const CMMFile *mfile, void *items, int n_items)
Definition: cmap_data.c:469
_CMMFile_Skew
Data structure describing an optional skew transformation of the map.
Definition: cmaplib.h:76
ccp4_cmap_set_order
void ccp4_cmap_set_order(CMMFile *mfile, const int *axes_order)
Definition: cmap_accessor.c:117
ccp4_cmap_seek_symop
int ccp4_cmap_seek_symop(CMMFile *mfile, int isymop, unsigned int whence)
Definition: cmap_symop.c:40
ccp4_cmap_set_mapstats
void ccp4_cmap_set_mapstats(CMMFile *mfile, const float min, const float max, const double mean, const double rms)
Definition: cmap_accessor.c:232
cmap_errno.h
Error codes for the library.
_CMMFile_Labels
Definition: cmaplib.h:68
ccp4_cmap_set_local_header
void ccp4_cmap_set_local_header(CMMFile *mfile, size_t size)
Definition: cmap_accessor.c:246
ccp4_cmap_seek_section
int ccp4_cmap_seek_section(CMMFile *mfile, int offset, unsigned int seek_mode)
Definition: cmap_data.c:54
ccp4_cmap_seek_row
int ccp4_cmap_seek_row(CMMFile *, int offset, unsigned int seek_mode)
Definition: cmap_data.c:279
ccp4_cmap_write_section_header
int ccp4_cmap_write_section_header(CMMFile *mfile, const char *header)
Definition: cmap_data.c:243
ccp4_cmap_set_label
int ccp4_cmap_set_label(CMMFile *mfile, const char *label, int posn)
Definition: cmap_labels.c:84
ccp4_cmap_read_section_header
int ccp4_cmap_read_section_header(const CMMFile *mfile, char *header)
Definition: cmap_data.c:198
ccp4_cmap_get_origin
void ccp4_cmap_get_origin(const CMMFile *mfile, int *origin)
Definition: cmap_accessor.c:81
ccp4_cmap_get_dim
void ccp4_cmap_get_dim(const CMMFile *mfile, int *map_dim)
Definition: cmap_accessor.c:129
ccp4_cmap_set_dim
void ccp4_cmap_set_dim(CMMFile *mfile, const int *map_dim)
Definition: cmap_accessor.c:142