AARE
Data analysis library for PSI hybrid detectors
Loading...
Searching...
No Matches
Public Member Functions | Data Fields | Private Member Functions | Private Attributes
aare::NumpyFile Class Reference

NumpyFile class to read and write numpy files. More...

#include <NumpyFile.hpp>

Inheritance diagram for aare::NumpyFile:
aare::FileInterface

Public Member Functions

 NumpyFile (const std::filesystem::path &fname, const std::string &mode="r", FileConfig cfg={})
 NumpyFile constructor.
 
void write (Frame &frame) override
 write a frame to the file
 
Frame read () override
 write a vector of frames to the file
 
std::vector< Frameread (size_t n_frames) override
 read n_frames from the file at the current position
 
void read_into (std::byte *image_buf) override
 read one frame from the file at the current position and store it in the provided buffer
 
void read_into (std::byte *image_buf, size_t n_frames) override
 read n_frames from the file at the current position and store them in the provided buffer
 
size_t frame_number (size_t frame_index) override
 get the frame number at the given frame index
 
size_t bytes_per_frame () override
 get the size of one frame in bytes
 
size_t pixels () override
 get the number of pixels in one frame
 
void seek (size_t frame_number) override
 seek to the given frame number
 
size_t tell () override
 get the current position of the file pointer
 
size_t total_frames () const override
 get the total number of frames in the file
 
ssize_t rows () const override
 get the number of rows in the file
 
ssize_t cols () const override
 get the number of columns in the file
 
ssize_t bitdepth () const override
 get the bitdepth of the file
 
DType dtype () const
 get the data type of the numpy file
 
std::vector< size_t > shape () const
 get the shape of the numpy file
 
template<typename T , size_t NDim>
NDArray< T, NDim > load ()
 load the numpy file into an NDArray
 
 ~NumpyFile ()
 
Frame iread (size_t frame_number)
 read one frame from the file at the given frame number
 
std::vector< Frameiread (size_t frame_number, size_t n_frames)
 read n_frames from the file starting at the given frame number
 

Data Fields

std::string m_mode
 
std::filesystem::path m_fname
 
std::filesystem::path m_base_path
 
std::string m_base_name
 
std::string m_ext
 
int m_findex
 
size_t m_total_frames {}
 
size_t max_frames_per_file {}
 
std::string version
 
DetectorType m_type
 
ssize_t m_rows {}
 
ssize_t m_cols {}
 
ssize_t m_bitdepth {}
 

Private Member Functions

void load_metadata ()
 
void get_frame_into (size_t, std::byte *)
 
Frame get_frame (size_t frame_number)
 

Private Attributes

FILE * fp = nullptr
 
size_t initial_header_len = 0
 
size_t current_frame {}
 
uint32_t header_len {}
 
uint8_t header_len_size {}
 
size_t header_size {}
 
NumpyHeader m_header
 
uint8_t major_ver_ {}
 
uint8_t minor_ver_ {}
 

Detailed Description

NumpyFile class to read and write numpy files.

Note
derived from FileInterface
implements all the pure virtual functions from FileInterface
documentation for the functions can also be found in the FileInterface class

Constructor & Destructor Documentation

◆ NumpyFile()

aare::NumpyFile::NumpyFile ( const std::filesystem::path &  fname,
const std::string &  mode = "r",
FileConfig  cfg = {} 
)

NumpyFile constructor.

Parameters
fnamepath to the numpy file
modefile mode (r, w)
cfgfile configuration

◆ ~NumpyFile()

aare::NumpyFile::~NumpyFile ( )

Member Function Documentation

◆ bitdepth()

ssize_t aare::NumpyFile::bitdepth ( ) const
inlineoverridevirtual

get the bitdepth of the file

Returns
bitdepth of the file

Implements aare::FileInterface.

◆ bytes_per_frame()

size_t aare::NumpyFile::bytes_per_frame ( )
overridevirtual

get the size of one frame in bytes

Returns
size of one frame

Implements aare::FileInterface.

◆ cols()

ssize_t aare::NumpyFile::cols ( ) const
inlineoverridevirtual

get the number of columns in the file

Returns
number of columns in the file

Implements aare::FileInterface.

◆ dtype()

DType aare::NumpyFile::dtype ( ) const
inline

get the data type of the numpy file

Returns
DType

◆ frame_number()

size_t aare::NumpyFile::frame_number ( size_t  frame_index)
inlineoverridevirtual

get the frame number at the given frame index

Parameters
frame_indexindex of the frame
Returns
frame number

Implements aare::FileInterface.

◆ get_frame()

Frame aare::NumpyFile::get_frame ( size_t  frame_number)
private

◆ get_frame_into()

void aare::NumpyFile::get_frame_into ( size_t  frame_number,
std::byte *  image_buf 
)
private

◆ iread() [1/2]

Frame aare::FileInterface::iread ( size_t  frame_number)
inlineinherited

read one frame from the file at the given frame number

Parameters
frame_numberframe number to read
Returns
frame

◆ iread() [2/2]

std::vector< Frame > aare::FileInterface::iread ( size_t  frame_number,
size_t  n_frames 
)
inlineinherited

read n_frames from the file starting at the given frame number

Parameters
frame_numberframe number to start reading from
n_framesnumber of frames to read
Returns
vector of frames

◆ load()

template<typename T , size_t NDim>
NDArray< T, NDim > aare::NumpyFile::load ( )
inline

load the numpy file into an NDArray

Template Parameters
Tdata type of the NDArray
NDimnumber of dimensions of the NDArray
Returns
NDArray<T, NDim>

◆ load_metadata()

void aare::NumpyFile::load_metadata ( )
private

◆ pixels()

size_t aare::NumpyFile::pixels ( )
overridevirtual

get the number of pixels in one frame

Returns
number of pixels in one frame

Implements aare::FileInterface.

◆ read() [1/2]

Frame aare::NumpyFile::read ( )
inlineoverridevirtual

write a vector of frames to the file

Parameters
framesvector of frames to write
Returns
void

read one frame from the file at the current position

Returns
Frame

Implements aare::FileInterface.

◆ read() [2/2]

std::vector< Frame > aare::NumpyFile::read ( size_t  n_frames)
overridevirtual

read n_frames from the file at the current position

Parameters
n_framesnumber of frames to read
Returns
vector of frames

Implements aare::FileInterface.

◆ read_into() [1/2]

void aare::NumpyFile::read_into ( std::byte *  image_buf)
inlineoverridevirtual

read one frame from the file at the current position and store it in the provided buffer

Parameters
image_bufbuffer to store the frame
Returns
void

Implements aare::FileInterface.

◆ read_into() [2/2]

void aare::NumpyFile::read_into ( std::byte *  image_buf,
size_t  n_frames 
)
overridevirtual

read n_frames from the file at the current position and store them in the provided buffer

Parameters
image_bufbuffer to store the frames
n_framesnumber of frames to read
Returns
void

Implements aare::FileInterface.

◆ rows()

ssize_t aare::NumpyFile::rows ( ) const
inlineoverridevirtual

get the number of rows in the file

Returns
number of rows in the file

Implements aare::FileInterface.

◆ seek()

void aare::NumpyFile::seek ( size_t  frame_number)
inlineoverridevirtual

seek to the given frame number

Parameters
frame_numberframe number to seek to
Returns
void

Implements aare::FileInterface.

◆ shape()

std::vector< size_t > aare::NumpyFile::shape ( ) const
inline

get the shape of the numpy file

Returns
vector of type size_t

◆ tell()

size_t aare::NumpyFile::tell ( )
inlineoverridevirtual

get the current position of the file pointer

Returns
current position of the file pointer

Implements aare::FileInterface.

◆ total_frames()

size_t aare::NumpyFile::total_frames ( ) const
inlineoverridevirtual

get the total number of frames in the file

Returns
total number of frames in the file

Implements aare::FileInterface.

◆ write()

void aare::NumpyFile::write ( Frame frame)
overridevirtual

write a frame to the file

Parameters
frameframe to write
Returns
void
Exceptions
std::runtime_errorif the function is not implemented

Implements aare::FileInterface.

Field Documentation

◆ current_frame

size_t aare::NumpyFile::current_frame {}
private

◆ fp

FILE* aare::NumpyFile::fp = nullptr
private

◆ header_len

uint32_t aare::NumpyFile::header_len {}
private

◆ header_len_size

uint8_t aare::NumpyFile::header_len_size {}
private

◆ header_size

size_t aare::NumpyFile::header_size {}
private

◆ initial_header_len

size_t aare::NumpyFile::initial_header_len = 0
private

◆ m_base_name

std::string aare::FileInterface::m_base_name
inherited

◆ m_base_path

std::filesystem::path aare::FileInterface::m_base_path
inherited

◆ m_bitdepth

ssize_t aare::FileInterface::m_bitdepth {}
inherited

◆ m_cols

ssize_t aare::FileInterface::m_cols {}
inherited

◆ m_ext

std::string aare::FileInterface::m_ext
inherited

◆ m_findex

int aare::FileInterface::m_findex
inherited

◆ m_fname

std::filesystem::path aare::FileInterface::m_fname
inherited

◆ m_header

NumpyHeader aare::NumpyFile::m_header
private

◆ m_mode

std::string aare::FileInterface::m_mode
inherited

◆ m_rows

ssize_t aare::FileInterface::m_rows {}
inherited

◆ m_total_frames

size_t aare::FileInterface::m_total_frames {}
inherited

◆ m_type

DetectorType aare::FileInterface::m_type
inherited

◆ major_ver_

uint8_t aare::NumpyFile::major_ver_ {}
private

◆ max_frames_per_file

size_t aare::FileInterface::max_frames_per_file {}
inherited

◆ minor_ver_

uint8_t aare::NumpyFile::minor_ver_ {}
private

◆ version

std::string aare::FileInterface::version
inherited

The documentation for this class was generated from the following files: