diff --git a/rugnux/rugnux_cli.cpp b/rugnux/rugnux_cli.cpp index 5b87e72c..3693c421 100644 --- a/rugnux/rugnux_cli.cpp +++ b/rugnux/rugnux_cli.cpp @@ -1742,8 +1742,20 @@ static int RunRugnux(int argc, char **argv) { if (result.space_group_number.has_value() && anything_indexed) { const gemmi::SpaceGroup *sg = gemmi::find_spacegroup_by_number( static_cast(result.space_group_number.value())); - std::cout << fmt::format("Space group: {} (No. {})", sg ? sg->short_name() : "?", - result.space_group_number.value()) << std::endl; + std::string line = fmt::format("Space group: {} (No. {})", sg ? sg->short_name() : "?", + result.space_group_number.value()); + // Name every group the data cannot separate, not just the representative. Some pairs share + // their whole absence pattern - an enantiomorphic pair (P4_1 vs P4_3), or I23 vs I2_13 and + // I222 vs I2_12_12_1, where the screw condition h00: h=2n is already implied by the + // I-centering - so the choice among them is a convention, not a measurement. The search + // reports the representative as the lowest space-group number; saying so here keeps the + // summary from claiming a decision the diffraction did not make. + if (result.space_group_search.has_value()) + for (const auto &alt : result.space_group_search->alternatives) + line += fmt::format(" or {} (No. {})", alt.short_name(), alt.number); + if (result.space_group_search.has_value() && !result.space_group_search->alternatives.empty()) + line += " - indistinguishable from these data"; + std::cout << line << std::endl; } if (result.consensus_cell.has_value() && anything_indexed) { const auto &c = result.consensus_cell.value();