You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I just wanted to start using z5 library in my C++ project. I copied a code from example:
#include"json.hpp"
#include"xtensor/xarray.hpp"// factory functions to create files, groups and datasets
#include"z5/factory.hxx"// handles for z5 filesystem objects
#include"z5/filesystem/handle.hxx"// io for xtensor multi-arrays
#include"z5/multiarray/xtensor_access.hxx"// attribute functionality
#include"z5/attributes.hxx"intmain() {
// get handle to a File on the filesystem
z5::filesystem::handle::File f("data.zr");
// if you wanted to use a different backend, for example AWS, you// would need to use this instead:// z5::s3::handle::File f;// create the file in zarr formatconstbool createAsZarr = true;
z5::createFile(f, createAsZarr);
// create a new zarr datasetconst std::string dsName = "data";
std::vector<size_t> shape = { 1000, 1000, 1000 };
std::vector<size_t> chunks = { 100, 100, 100 };
auto ds = z5::createDataset(f, dsName, "float32", shape, chunks);
// write array to roi
z5::types::ShapeType offset1 = { 50, 100, 150 };
xt::xarray<float>::shape_type shape1 = { 150, 200, 100 };
xt::xarray<float> array1(shape1, 42.0);
z5::multiarray::writeSubarray<float>(ds, array1, offset1.begin());
// read array from roi (values that were not written before are filled with a fill-value)
z5::types::ShapeType offset2 = { 100, 100, 100 };
xt::xarray<float>::shape_type shape2 = { 300, 200, 75 };
xt::xarray<float> array2(shape2);
z5::multiarray::readSubarray<float>(ds, array2, offset2.begin());
// get handle for the datasetconstauto dsHandle = z5::filesystem::handle::Dataset(f, dsName);
// read and write json attributes
nlohmann::json attributesIn;
attributesIn["bar"] = "foo";
attributesIn["pi"] = 3.141593;
z5::writeAttributes(dsHandle, attributesIn);
nlohmann::json attributesOut;
z5::readAttributes(dsHandle, attributesOut);
return0;
}
and unfortunately I get std::bad_alloc and Signal: SIGABRT (Aborted) in a line z5::multiarray::writeSubarray<float>(ds, array1, offset1.begin());.
As I debugged the code, it is a line 366 in xtensor_access.hxx:
// could also implement smart view for this,// but this would be kind of hard and premature optimization
bufView = view;
I use xtensor-0.24.2, xtensor-blas-0.20.0 and xtl-0.7.4 in my project. The z5 is in version z5-2.0.16. g++ (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0.
I tried slightly change a main code, as createAsZarr = false or put more threads in writeSubarray. The outcome remains the same.
I have not linked against the compression codecs, but I believe it is not a problem here.
Could you please help me or give any guidance what is the nature of this problem?
The text was updated successfully, but these errors were encountered:
Hello,
I just wanted to start using
z5
library in my C++ project. I copied a code from example:and unfortunately I get
std::bad_alloc
andSignal: SIGABRT (Aborted)
in a linez5::multiarray::writeSubarray<float>(ds, array1, offset1.begin());
.As I debugged the code, it is a line 366 in
xtensor_access.hxx
:I use
xtensor-0.24.2
,xtensor-blas-0.20.0
andxtl-0.7.4
in my project. Thez5
is in versionz5-2.0.16
.g++ (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
.I tried slightly change a
main
code, ascreateAsZarr = false
or put more threads inwriteSubarray
. The outcome remains the same.I have not linked against the compression codecs, but I believe it is not a problem here.
Could you please help me or give any guidance what is the nature of this problem?
The text was updated successfully, but these errors were encountered: