Skip to content

Commit 7bf4c3f

Browse files
committed
MUL-155: Remove dependency on atlasIO, use eckit::codec instead
1 parent 9d06daf commit 7bf4c3f

17 files changed

+68
-64
lines changed

CMakeLists.txt

+10-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
2020
### dependencies
2121

2222
ecbuild_find_package( NAME eccodes VERSION 2.31.2 REQUIRED )
23-
ecbuild_find_package( NAME eckit VERSION 1.24 REQUIRED )
23+
ecbuild_find_package( NAME eckit VERSION 1.25 REQUIRED )
2424
ecbuild_find_package( NAME metkit VERSION 1.10 REQUIRED )
2525
ecbuild_find_package( NAME atlas VERSION 0.35 REQUIRED )
2626

@@ -35,12 +35,17 @@ ecbuild_add_option( FEATURE FDB5
3535
DESCRIPTION "Send data to FDB5"
3636
REQUIRED_PACKAGES "NAME fdb5 VERSION 5.11.20" )
3737

38-
### atlas-io plugin
38+
### eckit-codec plugin
3939

40-
ecbuild_add_option( FEATURE ATLAS_IO
40+
set( eckit_HAVE_ECKIT_CODEC 0 )
41+
if( TARGET eckit_codec )
42+
set( eckit_HAVE_ECKIT_CODEC 1 )
43+
endif()
44+
45+
ecbuild_add_option( FEATURE ECKIT_CODEC
4146
DEFAULT ON
42-
DESCRIPTION "Use atlasIO for the restart"
43-
REQUIRED_PACKAGES "NAME atlas_io VERSION 0.33" )
47+
DESCRIPTION "Use eckit codec for IO"
48+
CONDITION eckit_HAVE_ECKIT_CODEC )
4449

4550
### interpolate action
4651

src/multio/action/interpolate-fesom/CMakeLists.txt

+9-8
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ ecbuild_add_library(
1616
${ECKIT_INCLUDE_DIRS}
1717

1818
CONDITION
19-
HAVE_ATLAS_IO
19+
HAVE_ECKIT_CODEC
2020

2121
PUBLIC_LIBS
2222
multio
23-
atlas_io
23+
eckit
24+
eckit_codec
2425
)
2526

2627

@@ -38,12 +39,12 @@ ecbuild_add_executable(
3839
InterpolateFesom.h
3940

4041
CONDITION
41-
HAVE_ATLAS_IO AND HAVE_MULTIO_BUILD_TOOLS
42+
HAVE_ECKIT_CODEC AND HAVE_MULTIO_BUILD_TOOLS
4243

4344
LIBS
4445
multio
45-
atlas_io
4646
eckit
47+
eckit_codec
4748
)
4849

4950
ecbuild_add_executable(
@@ -59,12 +60,12 @@ ecbuild_add_executable(
5960
InterpolateFesom.h
6061

6162
CONDITION
62-
HAVE_ATLAS_IO AND HAVE_MULTIO_BUILD_TOOLS
63+
HAVE_ECKIT_CODEC AND HAVE_MULTIO_BUILD_TOOLS
6364

6465
LIBS
6566
multio
66-
atlas_io
6767
eckit
68+
eckit_codec
6869
)
6970

7071
ecbuild_add_executable(
@@ -80,10 +81,10 @@ ecbuild_add_executable(
8081
InterpolateFesom.h
8182

8283
CONDITION
83-
HAVE_ATLAS_IO AND HAVE_MULTIO_BUILD_TOOLS
84+
HAVE_ECKIT_CODEC AND HAVE_MULTIO_BUILD_TOOLS
8485

8586
LIBS
8687
multio
87-
atlas_io
8888
eckit
89+
eckit_codec
8990
)

src/multio/action/interpolate-fesom/FesomInterpolationWeights.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <vector>
88

99
#include "InterpolateFesom_debug.h"
10-
#include "atlas_io/atlas-io.h"
10+
#include "eckit/codec/codec.h"
1111
#include "eckit/exception/Exceptions.h"
1212
#include "multio/LibMultio.h"
1313

@@ -143,7 +143,7 @@ class FesomInterpolationWeights {
143143
level)
144144
<< ".atlas";
145145

146-
atlas::io::RecordWriter record;
146+
eckit::codec::RecordWriter record;
147147
record.compression("none");
148148
record.set("version", static_cast<size_t>(0));
149149
record.set("nside", static_cast<size_t>(NSide));
@@ -154,10 +154,10 @@ class FesomInterpolationWeights {
154154
record.set("nOutRows", static_cast<size_t>(nOutRows));
155155

156156
record.set("landSeaMask",
157-
atlas::io::ArrayReference(landSeaMask.data(), std::vector<size_t>{landSeaMask.size()}));
158-
record.set("rowPtr", atlas::io::ArrayReference(rowStart.data(), std::vector<size_t>{rowStart.size()}));
159-
record.set("colIdx", atlas::io::ArrayReference(colIdx.data(), std::vector<size_t>{colIdx.size()}));
160-
record.set("weights", atlas::io::ArrayReference(values.data(), std::vector<size_t>{values.size()}));
157+
eckit::codec::ArrayReference(landSeaMask.data(), std::vector<size_t>{landSeaMask.size()}));
158+
record.set("rowPtr", eckit::codec::ArrayReference(rowStart.data(), std::vector<size_t>{rowStart.size()}));
159+
record.set("colIdx", eckit::codec::ArrayReference(colIdx.data(), std::vector<size_t>{colIdx.size()}));
160+
record.set("weights", eckit::codec::ArrayReference(values.data(), std::vector<size_t>{values.size()}));
161161
record.write(os.str());
162162

163163
INTERPOLATE_FESOM_OUT_STREAM << " - FesomIntermopationWeights: exit dumpCache"

src/multio/action/interpolate-fesom/InterpolateFesom.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
#include "FesomInterpolationWeights.h"
2525
#include "InterpolateFesom_debug.h"
26-
#include "atlas_io/atlas-io.h"
26+
#include "eckit/codec/codec.h"
2727
#include "eckit/exception/Exceptions.h"
2828
#include "eckit/filesystem/PathName.h"
2929
#include "multio/LibMultio.h"
@@ -68,7 +68,7 @@ class Fesom2HEALPix {
6868
size_t version;
6969
size_t NSideR;
7070
size_t levelR;
71-
atlas::io::RecordReader reader(file);
71+
eckit::codec::RecordReader reader(file);
7272
// Read the objects needed for the interpolation
7373
reader.read("version", version);
7474
reader.wait();

src/multio/action/interpolate/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ ecbuild_add_executable(
3232
../../tools/MultioTool.cc
3333

3434
CONDITION
35-
HAVE_MIR AND HAVE_ATLAS_IO AND HAVE_MULTIO_BUILD_TOOLS
35+
HAVE_MIR AND HAVE_ECKIT_CODEC AND HAVE_MULTIO_BUILD_TOOLS
3636

3737
LIBS
3838
multio
39-
atlas_io
4039
eckit
40+
eckit_codec
4141
mir
4242
)

src/multio/action/renumber-healpix/CMakeLists.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ ecbuild_add_library(
1212

1313
PUBLIC_LIBS
1414
multio
15-
atlas_io
15+
eckit_codec
1616
)
1717

1818
# TODO: move this to the tools folder
1919
ecbuild_add_executable(
2020
TARGET multio-generate-healpix-cache
2121
SOURCES GenerateCache.cc ${PROJECT_SOURCE_DIR}/src/multio/tools/MultioTool.cc HEALPix.cc HEALPix.h
22-
CONDITION HAVE_ATLAS_IO AND HAVE_MULTIO_BUILD_TOOLS
23-
LIBS multio atlas_io eckit
22+
CONDITION HAVE_ECKIT_CODEC AND HAVE_MULTIO_BUILD_TOOLS
23+
LIBS multio eckit ECKIT_CODEC
2424
)

src/multio/action/renumber-healpix/GenerateCache.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "multio/ifsio/ifsio.h"
3434
#include "multio/tools/MultioTool.h"
3535

36-
#include "atlas_io/atlas-io.h"
36+
#include "eckit/codec/codec.h"
3737

3838
namespace multio::action {
3939

@@ -142,7 +142,7 @@ void CacheGenerator::init(const eckit::option::CmdArgs& args) {
142142

143143
void CacheGenerator::execute(const eckit::option::CmdArgs& args) {
144144
size_t ref = 1;
145-
atlas::io::RecordWriter record;
145+
eckit::codec::RecordWriter record;
146146
record.compression("none");
147147
// for ( size_t i=from_; i<=to_; ++i ){
148148
for (size_t i = 0; i < list_.size(); ++i) {

src/multio/action/renumber-healpix/HEALPix_ring2nest.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include "eckit/filesystem/PathName.h"
2424
#include "eckit/log/Log.h"
2525

26-
#include "atlas_io/atlas-io.h"
26+
#include "eckit/codec/codec.h"
2727

2828
#include "multio/LibMultio.h"
2929
#include "multio/util/PrecisionTag.h"
@@ -95,7 +95,7 @@ void checkMetadata(const message::Metadata& md) {
9595

9696
std::vector<size_t> makeMapping(size_t Nside, const std::string& cacheFileName) {
9797
std::vector<size_t> map;
98-
atlas::io::RecordReader reader(cacheFileName);
98+
eckit::codec::RecordReader reader(cacheFileName);
9999
std::ostringstream os;
100100
os << "H" << std::setfill('0') << std::setw(8) << Nside << "_ring2nest";
101101
reader.read(os.str(), map).wait();

src/multio/action/statistics/CMakeLists.txt

+4-6
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,15 @@ list( APPEND _statistics_libs
5151
multio
5252
)
5353

54-
if(HAVE_ATLAS_IO)
55-
56-
ecbuild_find_package( NAME atlas_io VERSION 0.33 REQUIRED )
54+
if(HAVE_ECKIT_CODEC)
5755

5856
list( APPEND _statistics_sources
59-
io/AtlasIO.cc
60-
io/AtlasIO.h
57+
io/EckitCodecIO.cc
58+
io/EckitCodecIO.h
6159
)
6260

6361
list( APPEND _statistics_libs
64-
atlas_io
62+
eckit_codec
6563
)
6664

6765
endif()

src/multio/action/statistics/io/AtlasIO.cc src/multio/action/statistics/io/EckitCodecIO.cc

+18-18
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11

2-
#include "AtlasIO.h"
2+
#include "EckitCodecIO.h"
33

44
#include <cstdio>
55
#include <cstring>
66
#include <iomanip>
77

8-
#include "atlas_io/atlas-io.h"
9-
8+
#include "eckit/codec/codec.h"
109
#include "eckit/exception/Exceptions.h"
1110
#include "eckit/filesystem/PathName.h"
1211

@@ -35,13 +34,13 @@ class SubVector {
3534
};
3635

3736
template <typename T>
38-
void interprete(const SubVector<T>& in, atlas::io::ArrayReference& out) {
39-
out = atlas::io::ArrayReference(in.data(), atlas::io::make_datatype<T>(), atlas::io::ArrayShape{in.size()});
37+
void interprete(const SubVector<T>& in, eckit::codec::ArrayReference& out) {
38+
out = eckit::codec::ArrayReference(in.data(), eckit::codec::make_datatype<T>(), eckit::codec::ArrayShape{in.size()});
4039
}
4140

4241
template <typename T>
43-
void decode(const atlas::io::Metadata& metadata, const atlas::io::Data& data, SubVector<T>& out) {
44-
atlas::io::ArrayMetadata array(metadata);
42+
void decode(const eckit::codec::Metadata& metadata, const eckit::codec::Data& data, SubVector<T>& out) {
43+
eckit::codec::ArrayMetadata array(metadata);
4544
if (out.checkSize(array.shape(0))) {
4645
::memcpy(out.data(), data, data.size());
4746
}
@@ -51,38 +50,38 @@ void decode(const atlas::io::Metadata& metadata, const atlas::io::Data& data, Su
5150
}
5251
} // namespace
5352

54-
AtlasIO::AtlasIO(const std::string& path, const std::string& prefix) : StatisticsIO{path, prefix, "atlasIO"} {};
53+
EckitCodecIO::EckitCodecIO(const std::string& path, const std::string& prefix) : StatisticsIO{path, prefix, "atlasIO"} {};
5554

56-
void AtlasIO::write(const std::string& name, std::size_t fieldSize, std::size_t writeSize) {
55+
void EckitCodecIO::write(const std::string& name, std::size_t fieldSize, std::size_t writeSize) {
5756
LOG_DEBUG_LIB(LibMultio) << " - The name of the window write file is :: " << generateCurrFileName(name)
5857
<< std::endl;
5958
const std::string fname = generateCurrFileName(name);
60-
atlas::io::RecordWriter record;
59+
eckit::codec::RecordWriter record;
6160
SubVector<std::uint64_t> dat{buffer_.data(), writeSize};
6261
record.set("size", fieldSize, no_compression);
63-
record.set(name, atlas::io::ref(dat), no_compression);
62+
record.set(name, eckit::codec::ref(dat), no_compression);
6463
record.write(fname);
6564
return;
6665
};
6766

68-
void AtlasIO::readSize(const std::string& name, std::size_t& readSize) {
67+
void EckitCodecIO::readSize(const std::string& name, std::size_t& readSize) {
6968
LOG_DEBUG_LIB(LibMultio) << " - The name of the operation read file is :: " << generateCurrFileName(name)
7069
<< std::endl;
7170
const std::string fname = generateCurrFileName(name);
7271
checkFileExist(fname);
7372
std::uint64_t sz;
74-
atlas::io::RecordReader record(fname);
73+
eckit::codec::RecordReader record(fname);
7574
record.read("size", sz).wait();
7675
readSize = static_cast<std::size_t>(sz);
7776
return;
7877
};
7978

80-
void AtlasIO::read(const std::string& name, std::size_t readSize) {
79+
void EckitCodecIO::read(const std::string& name, std::size_t readSize) {
8180
LOG_DEBUG_LIB(LibMultio) << " - The name of the operation read file is :: " << generateCurrFileName(name)
8281
<< std::endl;
8382
const std::string fname = generateCurrFileName(name);
8483
checkFileExist(fname);
85-
atlas::io::RecordReader record(fname);
84+
eckit::codec::RecordReader record(fname);
8685
SubVector<std::uint64_t> dat{buffer_.data(), readSize};
8786
record.read(name, dat).wait();
8887
if (!dat.good()) {
@@ -93,13 +92,13 @@ void AtlasIO::read(const std::string& name, std::size_t readSize) {
9392
return;
9493
};
9594

96-
void AtlasIO::flush() {
95+
void EckitCodecIO::flush() {
9796
// TODO: Decide what to do when flush is called. Flush partial statistics when the Tag::Flush is received is
9897
// probably okay
9998
return;
10099
};
101100

102-
void AtlasIO::checkFileExist(const std::string& name) const {
101+
void EckitCodecIO::checkFileExist(const std::string& name) const {
103102
eckit::PathName file{name};
104103
if (!file.exists()) {
105104
std::ostringstream os;
@@ -109,6 +108,7 @@ void AtlasIO::checkFileExist(const std::string& name) const {
109108
return;
110109
};
111110

112-
StatisticsIOBuilder<AtlasIO> AtalsIOBuilder("atlas_io");
111+
StatisticsIOBuilder<EckitCodecIO> EckitCodecIOBuilder("eckit_codec");
112+
StatisticsIOBuilder<EckitCodecIO> AtlasIOBuilder("atlas_io"); // Legacy name
113113

114114
} // namespace multio::action

src/multio/action/statistics/io/AtlasIO.h src/multio/action/statistics/io/EckitCodecIO.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ static eckit::LocalConfiguration no_compression = [] {
1717
}();
1818

1919

20-
class AtlasIO final : public StatisticsIO {
20+
class EckitCodecIO final : public StatisticsIO {
2121
public:
22-
AtlasIO(const std::string& path, const std::string& prefix);
22+
EckitCodecIO(const std::string& path, const std::string& prefix);
2323
void write(const std::string& name, std::size_t fieldSize, std::size_t writeSize) override;
2424
void readSize(const std::string& name, std::size_t& writeSize) override;
2525
void read(const std::string& name, std::size_t writeSize) override;

src/multio/api/c/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ if( HAVE_MIR )
2929
)
3030
endif()
3131

32-
if ( HAVE_ATLAS_IO )
32+
if ( HAVE_ECKIT_CODEC )
3333
list( APPEND multio_action_plugins
3434
multio-action-interpolate-fesom
3535
)

tests/multio/action/statistics/moving-mask/test-avg-moving-mask.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plans:
1212
read-restart: '{READ_RESTART}'
1313
write-restart: '{WRITE_RESTART}'
1414
debug-restart: true
15-
restart-lib: "atlas_io"
15+
restart-lib: "eckit_codec"
1616
restart-time: '{RESTART_ID}'
1717
step-frequency: 24
1818
time-step: 3600

tests/multio/action/statistics/moving-mask/test-max-moving-mask.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plans:
1212
read-restart: '{READ_RESTART}'
1313
write-restart: '{WRITE_RESTART}'
1414
debug-restart: true
15-
restart-lib: "atlas_io"
15+
restart-lib: "eckit_codec"
1616
restart-time: '{RESTART_ID}'
1717
step-frequency: 24
1818
time-step: 3600

tests/multio/action/statistics/moving-mask/test-min-moving-mask.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plans:
1212
read-restart: '{READ_RESTART}'
1313
write-restart: '{WRITE_RESTART}'
1414
debug-restart: true
15-
restart-lib: "atlas_io"
15+
restart-lib: "eckit_codec"
1616
restart-time: '{RESTART_ID}'
1717
step-frequency: 24
1818
time-step: 3600

0 commit comments

Comments
 (0)