IMP
2.0.0
The Integrative Modeling Platform
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
MRCReaderWriter.h
Go to the documentation of this file.
1
/**
2
* \file IMP/em/MRCReaderWriter.h
3
* \brief Classes to read or write MRC files.
4
*
5
* Copyright 2007-2013 IMP Inventors. All rights reserved.
6
*
7
*/
8
9
#ifndef IMPEM_MRC_READER_WRITER_H
10
#define IMPEM_MRC_READER_WRITER_H
11
12
#include <IMP/em/em_config.h>
13
#include "
MapReaderWriter.h
"
14
#include "internal/MRCHeader.h"
15
#include <string>
16
17
IMPEM_BEGIN_NAMESPACE
18
19
/** A class to read and write MRC files. */
20
class
IMPEMEXPORT
MRCReaderWriter
:
public
MapReaderWriter
21
{
22
public
:
23
//! Empty constructor
24
MRCReaderWriter
() {}
25
//! Constructor
26
/**
27
* param[in] fn name of the file to open or write
28
*/
29
MRCReaderWriter
(std::string fn) {
30
filename=fn;
31
}
32
#if !defined(DOXYGEN) && !defined(SWIG)
33
//! Reads an MRC file and translates the header to the general DensityHeader
34
void
read(
const
char
*fn_in,
float
**data,
DensityHeader
&head);
35
//! Writes an MRC file from the data and the general DensityHeader
36
void
write(
const
char
*fn_out,
const
float
*data,
const
DensityHeader
&head);
37
#endif
38
39
private
:
40
41
42
//! By default the data are read into the grid of the class, but an external
43
//! pointer to another grid can be specified
44
void
read() {
45
read(&grid);
46
}
47
48
void
read(
float
**pt);
49
//! reads the header
50
void
read_header();
51
//! reads the data
52
void
read_data(
float
*pt);
53
//! reads data of size 8-bit
54
void
read_8_data(
float
*pt);
55
//! reads data of size 32-bit
56
void
read_32_data(
float
*pt);
57
void
read_grid(
void
*pt,
size_t
size,
size_t
n);
58
void
seek_to_data();
59
//! Write function
60
/**
61
* param[in] fn name of the file to write
62
*/
63
void
write(
const
char
*fn) {
64
return
write(fn,grid);
65
}
66
67
//! Write function
68
/**
69
* param[in] fn name of the file to write
70
* param[in] pt pointer to the data to write
71
*/
72
void
write(
const
char
*fn,
const
float
*pt);
73
//! Writes the header
74
/**
75
* param[in] s stream to write the header
76
*/
77
void
write_header(std::ofstream &s);
78
//! Writes data
79
/**
80
* param[in] s stream to write the data
81
* param[in] pt pointer to the data
82
*/
83
void
write_data(std::ofstream &s,
const
float
*pt);
84
85
//! Name of the file
86
std::string filename;
87
//! file stream for the file read
88
std::fstream fs;
89
//! The header of the file
90
internal::MRCHeader header;
91
//! The grid of data. The data is stored in the grid with the convention
92
//! that the order of indexes is z,y,x
93
float
*grid;
94
95
IMP_OBJECT_METHODS
(MRCReaderWriter);
96
};
97
98
IMPEM_END_NAMESPACE
99
100
#endif
/* IMPEM_MRC_READER_WRITER_H */