v1.0.0-rc.72

This commit is contained in:
2025-09-08 20:28:59 +02:00
parent 6c88c6902e
commit c67337cfe1
275 changed files with 7525 additions and 1039 deletions

View File

@@ -200,14 +200,35 @@ inline void CBOR_ENC_ADU_HIST(CborEncoder &encoder, const char* key,
inline void CBOR_ENC(CborEncoder &encoder, const SpotToSave& spot) {
CborEncoder mapEncoder;
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 7));
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, CborIndefiniteLength));
CBOR_ENC(mapEncoder, "x", spot.x);
CBOR_ENC(mapEncoder, "y", spot.y);
CBOR_ENC(mapEncoder, "I", spot.intensity);
CBOR_ENC(mapEncoder, "maxc", spot.maxc);
CBOR_ENC(mapEncoder, "ice_ring", spot.ice_ring);
CBOR_ENC(mapEncoder, "indexed", spot.indexed);
CBOR_ENC(mapEncoder, "angle", spot.angle_from_ewald_sphere);
if (spot.indexed) {
CBOR_ENC(mapEncoder, "h", spot.h);
CBOR_ENC(mapEncoder, "k", spot.k);
CBOR_ENC(mapEncoder, "l", spot.l);
CBOR_ENC(mapEncoder, "dist_ewald", spot.dist_ewald_sphere);
}
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
}
inline void CBOR_ENC(CborEncoder &encoder, const Reflection& r) {
CborEncoder mapEncoder;
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, CborIndefiniteLength));
CBOR_ENC(mapEncoder, "h", r.h);
CBOR_ENC(mapEncoder, "k", r.k);
CBOR_ENC(mapEncoder, "l", r.l);
CBOR_ENC(mapEncoder, "center_x_pxl", r.predicted_x);
CBOR_ENC(mapEncoder, "center_y_pxl", r.predicted_y);
CBOR_ENC(mapEncoder, "d", r.d);
CBOR_ENC(mapEncoder, "I", r.I);
CBOR_ENC(mapEncoder, "bkg", r.bkg);
CBOR_ENC(mapEncoder, "sigma", r.sigma);
CBOR_ENC(mapEncoder, "image", r.image_number);
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
}
@@ -233,6 +254,18 @@ inline void CBOR_ENC(CborEncoder &encoder, const char* key, const std::vector<Sp
cborErr(cbor_encoder_close_container(&encoder, &arrayEncoder));
}
inline void CBOR_ENC(CborEncoder &encoder, const char* key, const std::vector<Reflection>& refs) {
CborEncoder arrayEncoder, mapEncoder;
cborErr(cbor_encode_text_stringz(&encoder, key));
cborErr(cbor_encoder_create_array(&encoder, &arrayEncoder, refs.size()));
for (auto r: refs)
CBOR_ENC(arrayEncoder, r);
cborErr(cbor_encoder_close_container(&encoder, &arrayEncoder));
}
inline void CBOR_ENC(CborEncoder &encoder, const char* key, const CompressedImage& message) {
CborEncoder mapEncoder;
@@ -412,7 +445,8 @@ inline void CBOR_ENC_START_USER_DATA(CborEncoder& encoder, const char* key,
j["attenuator_transmission"] = message.attenuator_transmission.value();
if (message.total_flux)
j["total_flux"] = message.total_flux.value();
j["space_group_number"] = message.space_group_number;
if (message.space_group_number)
j["space_group_number"] = message.space_group_number.value();
j["roi"] = CBOR_ENC_ROI_CONFIG(message.rois);
@@ -465,7 +499,7 @@ inline void CBOR_ENC_START_USER_DATA(CborEncoder& encoder, const char* key,
case GeomRefinementAlgorithmEnum::BeamCenter:
j["geom_refinement_algorithm"] = "beam_center";
break;
case GeomRefinementAlgorithmEnum::BeamCenterTetragonal:
case GeomRefinementAlgorithmEnum::BeamCenterSymmetry:
j["geom_refinement_algorithm"] = "beam_center_tetragonal";
break;
default:
@@ -607,8 +641,6 @@ void CBORStream2Serializer::SerializeImageInternal(CborEncoder &mapEncoder, cons
CBOR_ENC_RATIONAL(mapEncoder, "start_time", message.timestamp, message.timestamp_base);
CBOR_ENC_RATIONAL(mapEncoder, "end_time", message.timestamp + message.exptime, message.timestamp_base);
if (!metadata_only)
CBOR_ENC(mapEncoder, "spots", message.spots);
CBOR_ENC(mapEncoder, "spot_count", message.spot_count);
CBOR_ENC(mapEncoder, "spot_count_ice_rings", message.spot_count_ice_rings);
CBOR_ENC(mapEncoder, "spot_count_low_res", message.spot_count_low_res);
@@ -617,7 +649,7 @@ void CBORStream2Serializer::SerializeImageInternal(CborEncoder &mapEncoder, cons
CBOR_ENC(mapEncoder, "indexing_result", message.indexing_result);
if (message.indexing_lattice)
CBOR_ENC(mapEncoder, "indexing_lattice", message.indexing_lattice->GetVector());
CBOR_ENC(mapEncoder, "mosaicity", message.mosaicity);
CBOR_ENC(mapEncoder, "profile_radius", message.profile_radius);
CBOR_ENC(mapEncoder, "b_factor", message.b_factor);
CBOR_ENC(mapEncoder, "indexing_time", message.indexing_time_s);
CBOR_ENC(mapEncoder, "processing_time", message.processing_time_s);
@@ -641,12 +673,15 @@ void CBORStream2Serializer::SerializeImageInternal(CborEncoder &mapEncoder, cons
CBOR_ENC(mapEncoder, "bkg_estimate", message.bkg_estimate);
CBOR_ENC(mapEncoder, "adu_histogram", message.adu_histogram);
CBOR_ENC(mapEncoder, "roi_integrals", message.roi);
CBOR_ENC(mapEncoder, "beam_center_x", message.beam_center_x);
CBOR_ENC(mapEncoder, "beam_center_y", message.beam_center_y);
CBOR_ENC(mapEncoder, "beam_corr_x", message.beam_corr_x);
CBOR_ENC(mapEncoder, "beam_corr_y", message.beam_corr_y);
CBOR_ENC(mapEncoder, "user_data", message.user_data.dump());
if (!metadata_only)
CBOR_ENC(mapEncoder, "data", message.image);
if (!metadata_only) {
CBOR_ENC(mapEncoder, "spots", message.spots);
CBOR_ENC(mapEncoder, "reflections", message.reflections);
CBOR_ENC(mapEncoder, "data", message.image);
}
}
void CBORStream2Serializer::SerializeImage(const DataMessage& message) {