diff --git a/file_io/include/aare/file_io/File.hpp b/file_io/include/aare/file_io/File.hpp
index ee00714..b51c5c7 100644
--- a/file_io/include/aare/file_io/File.hpp
+++ b/file_io/include/aare/file_io/File.hpp
@@ -26,6 +26,7 @@ class File {
void write(Frame &frame);
Frame read();
Frame iread(size_t frame_number);
+ std::vector iread(size_t frame_number, size_t n_frames);
std::vector read(size_t n_frames);
void read_into(std::byte *image_buf);
void read_into(std::byte *image_buf, size_t n_frames);
diff --git a/file_io/include/aare/file_io/FileInterface.hpp b/file_io/include/aare/file_io/FileInterface.hpp
index 123fa72..631eeaf 100644
--- a/file_io/include/aare/file_io/FileInterface.hpp
+++ b/file_io/include/aare/file_io/FileInterface.hpp
@@ -134,28 +134,14 @@ class FileInterface {
* @param frame_number frame number to read
* @return frame
*/
- Frame iread(size_t frame_number) {
- auto old_pos = tell();
- seek(frame_number);
- Frame tmp = read();
- seek(old_pos);
- return tmp;
- };
-
+ virtual Frame iread(size_t frame_number)=0;
/**
* @brief read n_frames from the file starting at the given frame number
* @param frame_number frame number to start reading from
* @param n_frames number of frames to read
* @return vector of frames
*/
- std::vector iread(size_t frame_number, size_t n_frames) {
- auto old_pos = tell();
- seek(frame_number);
- std::vector tmp = read(n_frames);
- seek(old_pos);
- return tmp;
- }
-
+ virtual std::vector iread(size_t frame_number, size_t n_frames)=0;
// function to query the data type of the file
/*virtual DataType dtype = 0; */
diff --git a/file_io/include/aare/file_io/NumpyFile.hpp b/file_io/include/aare/file_io/NumpyFile.hpp
index 5a72179..969a597 100644
--- a/file_io/include/aare/file_io/NumpyFile.hpp
+++ b/file_io/include/aare/file_io/NumpyFile.hpp
@@ -72,6 +72,21 @@ class NumpyFile : public FileInterface {
}
return arr;
}
+ Frame iread(size_t frame_number) {
+ auto old_pos = tell();
+ seek(frame_number);
+ Frame tmp = read();
+ seek(old_pos);
+ return tmp;
+ };
+
+ std::vector iread(size_t frame_number, size_t n_frames) {
+ auto old_pos = tell();
+ seek(frame_number);
+ std::vector tmp = read(n_frames);
+ seek(old_pos);
+ return tmp;
+ }
~NumpyFile() noexcept override;
diff --git a/file_io/include/aare/file_io/RawFile.hpp b/file_io/include/aare/file_io/RawFile.hpp
index 4cfe77d..31a3c12 100644
--- a/file_io/include/aare/file_io/RawFile.hpp
+++ b/file_io/include/aare/file_io/RawFile.hpp
@@ -26,8 +26,8 @@ class RawFile : public FileInterface {
*/
void write([[maybe_unused]] Frame &frame) override { throw std::runtime_error("Not implemented"); };
Frame read() override {
- return get_frame(frame_number(this->current_frame++));
- };
+ std::cout << "Reading frame " << this->current_frame << std::endl;
+ return get_frame(frame_number(this->current_frame++)); };
std::vector read(size_t n_frames) override;
void read_into(std::byte *image_buf) override {
return get_frame_into(frame_number(this->current_frame++), image_buf);
@@ -48,10 +48,13 @@ class RawFile : public FileInterface {
size_t pixels_per_frame() override { return m_rows * m_cols; }
// goto frame number
- void seek(size_t frame_number) override { this->current_frame = frame_number; };
+ void seek(size_t frame_number) override { this->current_frame = frame_number + m_starting_frame;
+ std::cout<<"Seeking to frame "<current_frame<current_frame; };
+ size_t tell() override { return this->current_frame - m_starting_frame; };
/**
* @brief check if the file is a master file
@@ -98,6 +101,21 @@ class RawFile : public FileInterface {
size_t rows() const override { return m_rows; }
size_t cols() const override { return m_cols; }
size_t bitdepth() const override { return m_bitdepth; }
+ Frame iread(size_t frame_number) override {
+ auto old_pos = tell();
+ seek(frame_number);
+ Frame tmp = read();
+ seek(old_pos);
+ return tmp;
+ }
+
+ std::vector iread(size_t frame_number, size_t n_frames) override {
+ auto old_pos = tell();
+ seek(frame_number);
+ std::vector tmp = read(n_frames);
+ seek(old_pos);
+ return tmp;
+ }
private:
/**
diff --git a/file_io/include/aare/file_io/SubFile.hpp b/file_io/include/aare/file_io/SubFile.hpp
index f82af39..b286a8a 100644
--- a/file_io/include/aare/file_io/SubFile.hpp
+++ b/file_io/include/aare/file_io/SubFile.hpp
@@ -45,7 +45,8 @@ class SubFile {
* @param bitdepth bitdepth of the subfile
* @throws std::invalid_argument if the detector,type pair is not supported
*/
- SubFile(const std::filesystem::path &fname, DetectorType detector, size_t rows, size_t cols, size_t bitdepth,int subfile_id);
+ SubFile(const std::filesystem::path &fname, DetectorType detector, size_t rows, size_t cols, size_t bitdepth,
+ int subfile_id);
/**
* @brief read the subfile into a buffer
diff --git a/file_io/src/File.cpp b/file_io/src/File.cpp
index 8848be8..ca3b811 100644
--- a/file_io/src/File.cpp
+++ b/file_io/src/File.cpp
@@ -45,6 +45,9 @@ size_t File::bitdepth() const { return file_impl->bitdepth(); }
File::~File() { delete file_impl; }
Frame File::iread(size_t frame_number) { return file_impl->iread(frame_number); }
+std::vector File::iread(size_t frame_number, size_t n_frames) {
+ return file_impl->iread(frame_number, n_frames);
+}
File::File(File &&other) noexcept : file_impl(other.file_impl) { other.file_impl = nullptr; }
diff --git a/file_io/src/RawFile.cpp b/file_io/src/RawFile.cpp
index 543c9b7..5f85cab 100644
--- a/file_io/src/RawFile.cpp
+++ b/file_io/src/RawFile.cpp
@@ -24,7 +24,9 @@ RawFile::RawFile(const std::filesystem::path &fname, const std::string &mode, co
} else {
throw std::runtime_error(LOCATION + "Unsupported mode");
}
+ aare::logger::error("axxxsdasda", m_starting_frame);
m_starting_frame = this->frame_number(0);
+ aare::logger::error("asdasda", m_starting_frame);
}
void RawFile::open_subfiles() {