DiffractionExperiment: Clean-up Compression and UnitCell

This commit is contained in:
2023-11-13 17:06:34 +01:00
parent 2f87b4c1b1
commit e85988dfa2
15 changed files with 172 additions and 164 deletions
+45 -23
View File
@@ -218,8 +218,21 @@ DiffractionExperiment &DiffractionExperiment::MaskModuleEdges(bool input) {
return *this;
}
DiffractionExperiment &DiffractionExperiment::Compression(JFJochProtoBuf::Compression input) {
dataset.set_compression(input);
DiffractionExperiment &DiffractionExperiment::Compression(CompressionAlgorithm input) {
switch (input) {
case CompressionAlgorithm::NO_COMPRESSION:
dataset.set_compression(JFJochProtoBuf::NO_COMPRESSION);
break;
case CompressionAlgorithm::BSHUF_LZ4:
dataset.set_compression(JFJochProtoBuf::BSHUF_LZ4);
break;
case CompressionAlgorithm::BSHUF_ZSTD:
dataset.set_compression(JFJochProtoBuf::BSHUF_ZSTD);
break;
case CompressionAlgorithm::BSHUF_ZSTD_RLE:
dataset.set_compression(JFJochProtoBuf::BSHUF_ZSTD_RLE);
break;
}
return *this;
}
@@ -262,11 +275,6 @@ DiffractionExperiment& DiffractionExperiment::QSpacingForRadialInt_recipA(float
return *this;
}
DiffractionExperiment &DiffractionExperiment::SetUnitCell(const JFJochProtoBuf::UnitCell &cell) {
*dataset.mutable_unit_cell() = cell;
return *this;
}
DiffractionExperiment &DiffractionExperiment::SetUnitCell(const UnitCell &cell) {
JFJochProtoBuf::UnitCell tmp;
tmp.set_a(cell.a);
@@ -275,7 +283,8 @@ DiffractionExperiment &DiffractionExperiment::SetUnitCell(const UnitCell &cell)
tmp.set_alpha(cell.alpha);
tmp.set_beta(cell.beta);
tmp.set_gamma(cell.gamma);
return SetUnitCell(tmp);
*dataset.mutable_unit_cell() = tmp;
return *this;
}
DiffractionExperiment &DiffractionExperiment::SetUnitCell() {
@@ -496,18 +505,12 @@ int64_t DiffractionExperiment::GetDataFileCount() const {
return dataset.data_file_count();
}
JFJochProtoBuf::Compression DiffractionExperiment::GetCompressionAlgorithm() const {
switch (GetDetectorMode()) {
case DetectorMode::Conversion:
return dataset.compression();
default:
// Compression not supported for raw data and pedestal
return JFJochProtoBuf::NO_COMPRESSION;
}
}
CompressionAlgorithm DiffractionExperiment::GetCompressionAlgorithm() const {
if (GetDetectorMode() != DetectorMode::Conversion)
// Compression not supported for raw data and pedestal
return CompressionAlgorithm::NO_COMPRESSION;
CompressionAlgorithm DiffractionExperiment::GetCompressionAlgorithmEnum() const {
switch (GetCompressionAlgorithm()) {
switch (dataset.compression()) {
case JFJochProtoBuf::BSHUF_LZ4:
return CompressionAlgorithm::BSHUF_LZ4;
case JFJochProtoBuf::BSHUF_ZSTD:
@@ -578,7 +581,7 @@ int64_t DiffractionExperiment::GetFirstModuleOfDataStream(uint16_t data_stream)
}
int64_t DiffractionExperiment::GetMaxCompressedSize() const {
return MaxCompressedSize(GetCompressionAlgorithmEnum(),GetPixelsNum(), GetPixelDepth());
return MaxCompressedSize(GetCompressionAlgorithm(), GetPixelsNum(), GetPixelDepth());
}
int64_t DiffractionExperiment::GetPixelsNum() const {
@@ -829,12 +832,31 @@ void DiffractionExperiment::LoadDatasetSettings(const JFJochProtoBuf::DatasetSet
FilePrefix(settings.file_prefix());
DataFileCount(settings.data_file_count());
if (settings.has_unit_cell())
SetUnitCell(settings.unit_cell());
SetUnitCell(UnitCell(settings.unit_cell().a(),
settings.unit_cell().b(),
settings.unit_cell().c(),
settings.unit_cell().alpha(),
settings.unit_cell().beta(),
settings.unit_cell().gamma()));
else
SetUnitCell();
SpaceGroupNumber(settings.space_group_number());
SampleName(settings.sample_name());
Compression(settings.compression());
switch (settings.compression()) {
case JFJochProtoBuf::BSHUF_LZ4:
Compression(CompressionAlgorithm::BSHUF_LZ4);
break;
case JFJochProtoBuf::BSHUF_ZSTD:
Compression(CompressionAlgorithm::BSHUF_ZSTD);
break;
case JFJochProtoBuf::BSHUF_ZSTD_RLE:
Compression(CompressionAlgorithm::BSHUF_ZSTD_RLE);
break;
default:
case JFJochProtoBuf::NO_COMPRESSION:
Compression(CompressionAlgorithm::NO_COMPRESSION);
break;
}
SaveCalibration(settings.save_calibration());
if (settings.summation() == 0)
Summation(1);
@@ -943,7 +965,7 @@ void DiffractionExperiment::FillMessage(StartMessage &message) const {
message.pixel_size_y = GetPixelSize_mm() * 1e-3f;
message.sensor_material = SENSOR_MATERIAL;
message.sensor_thickness = SENSOR_THICKNESS_IN_UM * 1e-6f;
message.compression_algorithm = GetCompressionAlgorithmEnum();
message.compression_algorithm = GetCompressionAlgorithm();
message.compression_block_size = JFJochBitShuffleCompressor::DefaultBlockSize;
message.pixel_bit_depth = GetPixelDepth() * 8;
message.storage_cell_number = GetStorageCellNumber();