v1.0.0-rc.91
This commit is contained in:
@@ -461,6 +461,8 @@ namespace {
|
||||
r.sigma = GetCBORFloat(map_value);
|
||||
else if (key == "image")
|
||||
r.image_number = GetCBORFloat(map_value);
|
||||
else if (key == "rp")
|
||||
r.dist_ewald = GetCBORFloat(map_value);
|
||||
else
|
||||
cbor_value_advance(&map_value);
|
||||
}
|
||||
@@ -478,6 +480,59 @@ namespace {
|
||||
cborErr(cbor_value_leave_container(&value, &array_value));
|
||||
}
|
||||
|
||||
LatticeMessage GetCBORLatticeMessage(CborValue &value) {
|
||||
LatticeMessage lm{};
|
||||
lm.centering = 'P';
|
||||
lm.niggli_class = 0;
|
||||
lm.crystal_system = gemmi::CrystalSystem::Triclinic;
|
||||
|
||||
CborValue map_value;
|
||||
cborErr(cbor_value_enter_container(&value, &map_value));
|
||||
while (!cbor_value_at_end(&map_value)) {
|
||||
auto key = GetCBORString(map_value);
|
||||
if (key == "centering") {
|
||||
auto s = GetCBORString(map_value);
|
||||
char c = s.empty() ? 'P' : s[0];
|
||||
switch (c) {
|
||||
case 'P':
|
||||
case 'A':
|
||||
case 'B':
|
||||
case 'C':
|
||||
case 'I':
|
||||
case 'F':
|
||||
case 'R':
|
||||
lm.centering = c;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (key == "niggli_class") {
|
||||
lm.niggli_class = GetCBORInt(map_value);
|
||||
} else if (key == "system") {
|
||||
auto sys = GetCBORString(map_value);
|
||||
// map known strings to enum
|
||||
if (sys == "triclinic") lm.crystal_system = gemmi::CrystalSystem::Triclinic;
|
||||
else if (sys == "monoclinic") lm.crystal_system = gemmi::CrystalSystem::Monoclinic;
|
||||
else if (sys == "orthorhombic") lm.crystal_system = gemmi::CrystalSystem::Orthorhombic;
|
||||
else if (sys == "tetragonal") lm.crystal_system = gemmi::CrystalSystem::Tetragonal;
|
||||
else if (sys == "trigonal") lm.crystal_system = gemmi::CrystalSystem::Trigonal;
|
||||
else if (sys == "hexagonal") lm.crystal_system = gemmi::CrystalSystem::Hexagonal;
|
||||
else if (sys == "cubic") lm.crystal_system = gemmi::CrystalSystem::Cubic;
|
||||
else {
|
||||
// unknown string, keep default
|
||||
}
|
||||
} else if (key == "primitive_lattice") {
|
||||
std::vector<float> tmp;
|
||||
GetCBORFloatArray(map_value, tmp);
|
||||
lm.primitive = CrystalLattice(tmp);
|
||||
} else {
|
||||
cbor_value_advance(&map_value);
|
||||
}
|
||||
}
|
||||
cborErr(cbor_value_leave_container(&value, &map_value));
|
||||
return lm;
|
||||
}
|
||||
|
||||
XrayFluorescenceSpectrum GetCBORFluorescenceSpectrum(CborValue &value) {
|
||||
std::vector<float> data, energy;
|
||||
CborValue map_value;
|
||||
@@ -624,6 +679,8 @@ namespace {
|
||||
message.b_factor = GetCBORFloat(value);
|
||||
else if (key == "indexing_unit_cell")
|
||||
message.indexing_unit_cell = ProcessUnitCellElement(value);
|
||||
else if (key == "lattice_type")
|
||||
message.lattice_type = GetCBORLatticeMessage(value);
|
||||
else if (key == "jf_info")
|
||||
message.jf_info = GetCBORUInt(value) & UINT32_MAX;
|
||||
else if (key == "receiver_aq_dev_delay")
|
||||
@@ -972,8 +1029,6 @@ namespace {
|
||||
if (j.contains("geom_refinement_algorithm")) {
|
||||
if (j["geom_refinement_algorithm"] == "beam_center")
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::BeamCenter;
|
||||
else if (j["geom_refinement_algorithm"] == "beam_center_tetragonal")
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::BeamCenterSymmetry;
|
||||
else
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::None;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user