From 90bbba33bc88d760e5a536088ac0c3344a3f8184 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Wed, 21 Oct 2026 19:53:32 +0200 Subject: [PATCH] writer: _model.cif from rugnux live keeps the input model's metadata, as the served model.cif does The placed-model END block lost everything but the atoms, so the writer's _model.cif had no sequence references, authors, software or secondary structure, and gemmi relabelled the subchains. The block now also carries label_asym_id, label_entity_id and label_seq_id per atom and the input model's metadata as the mmCIF categories gemmi writes without coordinates (metadata_mmcif), which the writer parses with gemmi and puts back. The writer's _model.cif is now the same text as the one rugnux writes itself and as /rugnux/model.cif serves. Older blocks without the new fields are read as before. Test: a predicted myoglobin model through END -> CBOR -> writer gives byte-identical _model.cif/_model.pdb to WritePlacedModel and to PlacedModelMmcif, with its _struct_ref, _entity_poly_seq, _audit_author, _software and _struct_conf. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu (cherry picked from commit 29d752e6a107e3b8bc71ad6e9af0d81064966537) --- broker/jfjoch_api.yaml | 6 +-- broker/redoc-static.html | 8 ++-- common/JFJochMessages.h | 7 ++++ docs/CBOR.md | 2 +- docs/python_client/docs/DefaultApi.md | 6 +-- frame_serialize/CBORStream2Deserializer.cpp | 4 ++ frame_serialize/CBORStream2Serializer.cpp | 4 ++ .../src/client/@tanstack/react-query.gen.ts | 6 +-- frontend/src/client/sdk.gen.ts | 6 +-- receiver/RugnuxStructure.h | 2 +- tests/RugnuxResultFilesTest.cpp | 37 +++++++++++++++++++ writer/RugnuxResultBlocks.cpp | 17 +++++++++ writer/WriteRugnuxFiles.cpp | 30 +++++++++++++++ 13 files changed, 117 insertions(+), 18 deletions(-) diff --git a/broker/jfjoch_api.yaml b/broker/jfjoch_api.yaml index c64ba89b7..416219559 100644 --- a/broker/jfjoch_api.yaml +++ b/broker/jfjoch_api.yaml @@ -3615,9 +3615,9 @@ paths: get: summary: Get the model as placed by the last rugnux live run description: | - The model placed against the data by molecular replacement or validation, as mmCIF: the coordinates, cell - and space group of the `_model.cif` file written beside the data, with the input model's own metadata - (entities, citation) kept. Kept as long as `/rugnux/status`. + The model placed against the data by molecular replacement or validation, as mmCIF - the same text as the + `_model.cif` file written beside the data: the data's cell and space group, with the input model's own + metadata (entities, sequences, references, authors, software) kept. Kept as long as `/rugnux/status`. security: - bearerAuth: [] responses: diff --git a/broker/redoc-static.html b/broker/redoc-static.html index da7f99e30..9e1fcf118 100644 --- a/broker/redoc-static.html +++ b/broker/redoc-static.html @@ -864,9 +864,9 @@ and validation of every following rugnux live collection, until it is removed wi
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "state": "Idle",
  • "placed_model": true,
  • "probe": "string",
  • "probe_s": 0.1,
  • "start_to_first_image_s": 0.1,
  • "message": "string",
  • "images_expected": 0,
  • "expected_collection_s": 0.1,
  • "images_received": 0,
  • "elapsed_s": 0.1,
  • "step_progress": 1,
  • "steps": [
    ],
  • "last_image_s": 0.1,
  • "cut": "string",
  • "cut_s": 0.1,
  • "last_image_to_written_s": 0.1,
  • "verdict": "string",
  • "verdict_text": "string",
  • "summary": [
    ],
  • "warnings": [
    ]
}

Get the model as placed by the last rugnux live run

The model placed against the data by molecular replacement or validation, as mmCIF: the coordinates, cell -and space group of the _model.cif file written beside the data, with the input model's own metadata -(entities, citation) kept. Kept as long as /rugnux/status.

+
http://localhost:5232/rugnux/status

Response samples

Content type
application/json
{
  • "state": "Idle",
  • "placed_model": true,
  • "probe": "string",
  • "probe_s": 0.1,
  • "start_to_first_image_s": 0.1,
  • "message": "string",
  • "images_expected": 0,
  • "expected_collection_s": 0.1,
  • "images_received": 0,
  • "elapsed_s": 0.1,
  • "step_progress": 1,
  • "steps": [
    ],
  • "last_image_s": 0.1,
  • "cut": "string",
  • "cut_s": 0.1,
  • "last_image_to_written_s": 0.1,
  • "verdict": "string",
  • "verdict_text": "string",
  • "summary": [
    ],
  • "warnings": [
    ]
}

Get the model as placed by the last rugnux live run

The model placed against the data by molecular replacement or validation, as mmCIF - the same text as the +_model.cif file written beside the data: the data's cell and space group, with the input model's own +metadata (entities, sequences, references, authors, software) kept. Kept as long as /rugnux/status.

Authorizations:
bearerAuth

Responses