Files
Jungfraujoch/CBOR.html
2025-12-16 15:41:07 +00:00

1 line
66 KiB
HTML

<!DOCTYPE html> <html lang=en data-content_root="./"> <meta charset=utf-8 /> <meta name=viewport content="width=device-width, initial-scale=1.0" /><meta name=viewport content="width=device-width, initial-scale=1" /> <meta name=viewport content="width=device-width,initial-scale=1"> <meta http-equiv=x-ua-compatible content="ie=edge"> <meta name="lang:clipboard.copy" content="Copy to clipboard"> <meta name="lang:clipboard.copied" content="Copied to clipboard"> <meta name="lang:search.language" content=en > <meta name="lang:search.pipeline.stopwords" content=True > <meta name="lang:search.pipeline.trimmer" content=True > <meta name="lang:search.result.none" content="No matching documents"> <meta name="lang:search.result.one" content="1 matching document"> <meta name="lang:search.result.other" content="# matching documents"> <meta name="lang:search.tokenizer" content="[\s\-]+"> <link href="https://fonts.gstatic.com/" rel=preconnect crossorigin> <link href="https://fonts.googleapis.com/css?family=Roboto+Mono:400,500,700|Roboto:300,400,400i,700&display=fallback" rel=stylesheet > <style> body, input { font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif } code, kbd, pre { font-family: "Roboto Mono", "Courier New", Courier, monospace } </style> <link rel=stylesheet href="_static/stylesheets/application.css"/> <link rel=stylesheet href="_static/stylesheets/application-palette.css"/> <link rel=stylesheet href="_static/stylesheets/application-fixes.css"/> <link rel=stylesheet href="_static/fonts/material-icons.css"/> <meta name=theme-color content="#3f51b5"> <script src="_static/javascripts/modernizr.js"></script> <title>CBOR messages &#8212; Jungfraujoch 1.0.0-rc.122 documentation</title> <link rel=stylesheet type="text/css" href="_static/pygments.css?v=83e35b93" /> <link rel=stylesheet type="text/css" href="_static/material.css?v=79c92029" /> <script src="_static/documentation_options.js?v=7ebc78e1"></script> <script src="_static/doctools.js?v=9bcbadda"></script> <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <link rel=icon href="_static/jfjoch.png"/> <link rel=index title=Index href=genindex.html /> <link rel=search title=Search href=search.html /> <link rel=next title="ZeroMQ socket" href=ZEROMQ_STREAM.html /> <link rel=prev title="OpenAPI specification" href=OPENAPI_SPECS.html /> <body dir=ltr data-md-color-primary=indigo data-md-color-accent=lime> <svg class=md-svg > <defs data-children-count=0 > <svg xmlns="http://www.w3.org/2000/svg" width=500 height=500 viewBox="0 0 500 500" id=__gitlab ><path fill=currentColor d="M93.667 473.347l90.684-279.097H2.983l90.684 279.097z" transform="translate(156.198 1.16)"/><path fill=currentColor d="M221.333 473.345L130.649 194.25H3.557l217.776 279.095z" transform="translate(28.531 1.16)" opacity=.7 /><path fill=currentColor d="M32 195.155L4.441 279.97a18.773 18.773 0 0 0 6.821 20.99l238.514 173.29L32 195.155z" transform="translate(.089 .256)" opacity=.5 /><path fill=currentColor d="M2.667-84.844h127.092L75.14-252.942c-2.811-8.649-15.047-8.649-17.856 0L2.667-84.844z" transform="translate(29.422 280.256)"/><path fill=currentColor d="M2.667 473.345L93.351 194.25h127.092L2.667 473.345z" transform="translate(247.198 1.16)" opacity=.7 /><path fill=currentColor d="M221.334 195.155l27.559 84.815a18.772 18.772 0 0 1-6.821 20.99L3.557 474.25l217.777-279.095z" transform="translate(246.307 .256)" opacity=.5 /><path fill=currentColor d="M130.667-84.844H3.575l54.618-168.098c2.811-8.649 15.047-8.649 17.856 0l54.618 168.098z" transform="translate(336.974 280.256)"/></svg> </defs> </svg> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer > <input class=md-toggle data-md-toggle=search type=checkbox id=__search > <label class=md-overlay data-md-component=overlay for=__drawer ></label> <a href="#CBOR" tabindex=1 class=md-skip > Skip to content </a> <header class=md-header data-md-component=header > <nav class="md-header-nav md-grid"> <div class="md-flex navheader"> <div class="md-flex__cell md-flex__cell--shrink"> <a href=index.html title="Jungfraujoch 1.0.0-rc.122 documentation" class="md-header-nav__button md-logo"> <i class=md-icon >&#xe30d</i> </a> </div> <div class="md-flex__cell md-flex__cell--shrink"> <label class="md-icon md-icon--menu md-header-nav__button" for=__drawer ></label> </div> <div class="md-flex__cell md-flex__cell--stretch"> <div class="md-flex__ellipsis md-header-nav__title" data-md-component=title > <span class=md-header-nav__topic >PSI Jungfraujoch</span> <span class=md-header-nav__topic > CBOR messages </span> </div> </div> <div class="md-flex__cell md-flex__cell--shrink"> <label class="md-icon md-icon--search md-header-nav__button" for=__search ></label> <div class=md-search data-md-component=search role=dialog > <label class=md-search__overlay for=__search ></label> <div class=md-search__inner role=search > <form class=md-search__form action=search.html method=get name=search > <input type=text class=md-search__input name=q placeholder=""Search"" autocapitalize=off autocomplete=off spellcheck=false data-md-component=query data-md-state=active > <label class="md-icon md-search__icon" for=__search ></label> <button type=reset class="md-icon md-search__icon" data-md-component=reset tabindex=-1 > &#xE5CD; </button> </form> <div class=md-search__output > <div class=md-search__scrollwrap data-md-scrollfix> <div class=md-search-result data-md-component=result > <div class=md-search-result__meta > Type to start searching </div> <ol class=md-search-result__list ></ol> </div> </div> </div> </div> </div> </div> <div class="md-flex__cell md-flex__cell--shrink"> <div class=md-header-nav__source > <a href="https://gitea.psi.ch/mx/jungfraujoch" title="Go to repository" class=md-source data-md-source=github > <div class=md-source__icon > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" width=28 height=28 > <use xlink:href="#__gitlab" width=24 height=24 ></use> </svg> </div> <div class=md-source__repository > Jungfraujoch </div> </a> </div> </div> <script src="_static/javascripts/version_dropdown.js"></script> <script> var json_loc = ""versions.json"", target_loc = "../", text = "Versions"; $( document ).ready( add_version_dropdown(json_loc, target_loc, text)); </script> </div> </nav> </header> <div class=md-container > <nav class=md-tabs data-md-component=tabs > <div class="md-tabs__inner md-grid"> <ul class=md-tabs__list > <li class=md-tabs__item ><a href=index.html class=md-tabs__link >Jungfraujoch 1.0.0-rc.122 documentation</a> </ul> </div> </nav> <main class=md-main > <div class="md-main__inner md-grid" data-md-component=container > <div class="md-sidebar md-sidebar--primary" data-md-component=navigation > <div class=md-sidebar__scrollwrap > <div class=md-sidebar__inner > <nav class="md-nav md-nav--primary" data-md-level=0 > <label class="md-nav__title md-nav__title--site" for=__drawer > <a href=index.html title="Jungfraujoch 1.0.0-rc.122 documentation" class="md-nav__button md-logo"> <i class=md-icon >&#xe30d</i> </a> <a href=index.html title="Jungfraujoch 1.0.0-rc.122 documentation">PSI Jungfraujoch</a> </label> <div class=md-nav__source > <a href="https://gitea.psi.ch/mx/jungfraujoch" title="Go to repository" class=md-source data-md-source=github > <div class=md-source__icon > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" width=28 height=28 > <use xlink:href="#__gitlab" width=24 height=24 ></use> </svg> </div> <div class=md-source__repository > Jungfraujoch </div> </a> </div> <ul class=md-nav__list > <li class=md-nav__item > <span class="md-nav__link caption"><span class=caption-text >General</span></span> <li class=md-nav__item > <a href=ACKNOWLEDGEMENT.html class=md-nav__link >Acknowledgements</a> <li class=md-nav__item > <a href=LICENSE.html class=md-nav__link >License</a> <li class=md-nav__item > <a href=DETECTORS.html class=md-nav__link >Supported detectors</a> <li class=md-nav__item > <a href="DETECTORS.html#dectris-detectors" class=md-nav__link >DECTRIS detectors</a> <li class=md-nav__item > <a href=HARDWARE.html class=md-nav__link >Hardware requirements</a> <li class=md-nav__item > <a href=SOFTWARE.html class=md-nav__link >Software requirements</a> <li class=md-nav__item > <a href=VERSIONING.html class=md-nav__link >Semantic versioning</a> <li class=md-nav__item > <a href=DEPLOYMENT.html class=md-nav__link >Deployment</a> <li class=md-nav__item > <a href=CHANGELOG.html class=md-nav__link >Changelog</a> <li class=md-nav__item > <span class="md-nav__link caption"><span class=caption-text >Software</span></span> <li class=md-nav__item > <a href=JFJOCH_BROKER.html class=md-nav__link >jfjoch_broker</a> <li class=md-nav__item > <a href=JFJOCH_WRITER.html class=md-nav__link >jfjoch_writer</a> <li class=md-nav__item > <a href=TOOLS.html class=md-nav__link >Tools</a> <li class=md-nav__item > <span class="md-nav__link caption"><span class=caption-text >FPGA</span></span> <li class=md-nav__item > <a href=FPGA.html class=md-nav__link >FPGA smartNIC</a> <li class=md-nav__item > <a href=FPGA_LICENSE.html class=md-nav__link >FPGA license</a> <li class=md-nav__item > <a href=FPGA_DESIGN.html class=md-nav__link >FPGA data flow</a> <li class=md-nav__item > <a href=FPGA_NETWORK.html class=md-nav__link >FPGA network</a> <li class=md-nav__item > <a href=FPGA_PCIE_DRIVER.html class=md-nav__link >FPGA PCIe driver</a> <li class=md-nav__item > <a href=FPGA_SETTINGS.html class=md-nav__link >FPGA advanced reference</a> <li class=md-nav__item > <a href=FPGA_DATA_ANALYSIS.html class=md-nav__link >FPGA data analysis</a> <li class=md-nav__item > <span class="md-nav__link caption"><span class=caption-text >Reference</span></span> <li class=md-nav__item > <a href=DETECTOR_GEOMETRY.html class=md-nav__link >Detector geometry</a> <li class=md-nav__item > <a href=CPU_DATA_ANALYSIS.html class=md-nav__link >Algorithms for data analysis</a> <li class=md-nav__item > <a href=OPENAPI.html class=md-nav__link >OpenAPI</a> <li class=md-nav__item > <a href=OPENAPI_SPECS.html class=md-nav__link >OpenAPI specification</a> <li class=md-nav__item > <input class="md-toggle md-nav__toggle" data-md-toggle=toc type=checkbox id=__toc > <label class="md-nav__link md-nav__link--active" for=__toc > CBOR messages </label> <a href="#" class="md-nav__link md-nav__link--active">CBOR messages</a> <nav class="md-nav md-nav--secondary"> <ul class=md-nav__list data-md-scrollfix=""> </ul> </nav> <ul class=md-nav__list > <li class=md-nav__item > <a href="#start-message" class=md-nav__link >Start message</a> <li class=md-nav__item > <a href="#image-message" class=md-nav__link >Image message</a> <li class=md-nav__item > <a href="#metadata-message" class=md-nav__link >Metadata message</a> <li class=md-nav__item > <a href="#end-message" class=md-nav__link >End message</a> <li class=md-nav__item > <a href="#calibration-message" class=md-nav__link >Calibration message</a> <li class=md-nav__item > <a href="#user-data" class=md-nav__link >User data</a> </ul> <li class=md-nav__item > <a href=ZEROMQ_STREAM.html class=md-nav__link >ZeroMQ socket</a> <li class=md-nav__item > <a href=PIXEL_MASK.html class=md-nav__link >Pixel mask</a> <li class=md-nav__item > <a href=WEB_FRONTEND.html class=md-nav__link >Web frontend</a> <li class=md-nav__item > <a href=TESTS.html class=md-nav__link >Tests</a> <li class=md-nav__item > <span class="md-nav__link caption"><span class=caption-text >OpenAPI Python client</span></span> <li class=md-nav__item > <a href="python_client/README.html" class=md-nav__link >jfjoch-client</a> <li class=md-nav__item > <a href="python_client/README.html#license-clarification" class=md-nav__link >License Clarification</a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html" class=md-nav__link >jfjoch_client.DefaultApi</a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#cancel-post" class=md-nav__link ><strong>cancel_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-azim-int-get" class=md-nav__link ><strong>config_azim_int_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-azim-int-put" class=md-nav__link ><strong>config_azim_int_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-dark-mask-get" class=md-nav__link ><strong>config_dark_mask_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-dark-mask-put" class=md-nav__link ><strong>config_dark_mask_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-detector-get" class=md-nav__link ><strong>config_detector_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-detector-put" class=md-nav__link ><strong>config_detector_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-file-writer-get" class=md-nav__link ><strong>config_file_writer_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-file-writer-put" class=md-nav__link ><strong>config_file_writer_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-image-format-conversion-post" class=md-nav__link ><strong>config_image_format_conversion_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-image-format-get" class=md-nav__link ><strong>config_image_format_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-image-format-put" class=md-nav__link ><strong>config_image_format_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-image-format-raw-post" class=md-nav__link ><strong>config_image_format_raw_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-indexing-get" class=md-nav__link ><strong>config_indexing_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-indexing-put" class=md-nav__link ><strong>config_indexing_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-instrument-get" class=md-nav__link ><strong>config_instrument_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-instrument-put" class=md-nav__link ><strong>config_instrument_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-internal-generator-image-put" class=md-nav__link ><strong>config_internal_generator_image_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-internal-generator-image-tiff-put" class=md-nav__link ><strong>config_internal_generator_image_tiff_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-mask-get" class=md-nav__link ><strong>config_mask_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-mask-tiff-get" class=md-nav__link ><strong>config_mask_tiff_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-roi-get" class=md-nav__link ><strong>config_roi_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-roi-put" class=md-nav__link ><strong>config_roi_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-select-detector-get" class=md-nav__link ><strong>config_select_detector_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-select-detector-put" class=md-nav__link ><strong>config_select_detector_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-spot-finding-get" class=md-nav__link ><strong>config_spot_finding_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-spot-finding-put" class=md-nav__link ><strong>config_spot_finding_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-user-mask-get" class=md-nav__link ><strong>config_user_mask_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-user-mask-put" class=md-nav__link ><strong>config_user_mask_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-user-mask-tiff-get" class=md-nav__link ><strong>config_user_mask_tiff_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-user-mask-tiff-put" class=md-nav__link ><strong>config_user_mask_tiff_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-zeromq-metadata-get" class=md-nav__link ><strong>config_zeromq_metadata_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-zeromq-metadata-put" class=md-nav__link ><strong>config_zeromq_metadata_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-zeromq-preview-get" class=md-nav__link ><strong>config_zeromq_preview_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#config-zeromq-preview-put" class=md-nav__link ><strong>config_zeromq_preview_put</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#deactivate-post" class=md-nav__link ><strong>deactivate_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#detector-status-get" class=md-nav__link ><strong>detector_status_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#fpga-status-get" class=md-nav__link ><strong>fpga_status_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#image-buffer-clear-post" class=md-nav__link ><strong>image_buffer_clear_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#image-buffer-image-cbor-get" class=md-nav__link ><strong>image_buffer_image_cbor_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#image-buffer-image-jpeg-get" class=md-nav__link ><strong>image_buffer_image_jpeg_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#image-buffer-image-tiff-get" class=md-nav__link ><strong>image_buffer_image_tiff_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#image-buffer-start-cbor-get" class=md-nav__link ><strong>image_buffer_start_cbor_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#image-buffer-status-get" class=md-nav__link ><strong>image_buffer_status_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#initialize-post" class=md-nav__link ><strong>initialize_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#pedestal-post" class=md-nav__link ><strong>pedestal_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#preview-pedestal-tiff-get" class=md-nav__link ><strong>preview_pedestal_tiff_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#preview-plot-bin-get" class=md-nav__link ><strong>preview_plot_bin_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#preview-plot-get" class=md-nav__link ><strong>preview_plot_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#result-scan-get" class=md-nav__link ><strong>result_scan_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#start-post" class=md-nav__link ><strong>start_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#statistics-calibration-get" class=md-nav__link ><strong>statistics_calibration_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#statistics-data-collection-get" class=md-nav__link ><strong>statistics_data_collection_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#statistics-get" class=md-nav__link ><strong>statistics_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#status-get" class=md-nav__link ><strong>status_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#trigger-post" class=md-nav__link ><strong>trigger_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#version-get" class=md-nav__link ><strong>version_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#wait-till-done-post" class=md-nav__link ><strong>wait_till_done_post</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#xfel-event-code-get" class=md-nav__link ><strong>xfel_event_code_get</strong></a> <li class=md-nav__item > <a href="python_client/docs/DefaultApi.html#xfel-pulse-id-get" class=md-nav__link ><strong>xfel_pulse_id_get</strong></a> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=toc > <div class=md-sidebar__scrollwrap > <div class=md-sidebar__inner > <nav class="md-nav md-nav--secondary"> <ul class=md-nav__list data-md-scrollfix=""> </ul> </nav> </div> </div> </div> <div class=md-content > <article class="md-content__inner md-typeset" role=main > <section id=cbor-messages > <h1 id=cbor--page-root >CBOR messages<a class=headerlink href="#cbor--page-root" title="Link to this heading"></a></h1> <p>To communicate between FPGA-equipped receiver system and writers, Jungfraujoch is using binary CBOR encoding with tinycbor library (Intel). The protocol is based on and compatible with <a class="reference external" href="https://github.com/dectris/documentation/tree/main/stream_v2">DECTRIS Stream2</a>. There are minor differences at the moment:</p> <ul class=simple > <li><p>LZ4 alone is not allowed; Bitshuffle+LZ4 and Bitshuffle+Zstandard are allowed</p> <li><p>Few fields are currently absent</p> <li><p>Extra fields are present beyond DECTRIS standard</p> <li><p>There are calibration and metadata messages defined beyond DECTRIS specification</p> </ul> <section id=start-message > <h2 id=start-message >Start message<a class=headerlink href="#start-message" title="Link to this heading"></a></h2> <table> <thead> <tr class=row-odd ><th class=head ><p>Field name</p> <th class=head ><p>Type</p> <th class=head ><p>Description</p> <th class="head text-center"><p>Present in DECTRIS format</p> <tr class=row-even ><td><p>type</p> <td><p>String</p> <td><p>value “start”</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>magic_number</p> <td><p>uint64</p> <td><p>Number used to describe version of the Jungfraujoch data interface - to allow to detect inconsistency between sender and receiver</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>detector_distance</p> <td><p>float</p> <td><p>Detector distance [m]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>detector_translation</p> <td><p>Array(float)</p> <td><p>Detector translation vector [m]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>beam_center_x</p> <td><p>float</p> <td><p>Beam center in X direction [pixels]</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>beam_center_y</p> <td><p>float</p> <td><p>Beam center in Y direction [pixels]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>countrate_correction_enabled</p> <td><p>bool</p> <td><p>Countrate correction enabled</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>flatfield_enabled</p> <td><p>bool</p> <td><p>Flatfield enabled</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>number_of_images</p> <td><p>uint64</p> <td><p>Number of images in the series</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>image_size_x</p> <td><p>uint64</p> <td><p>Image width [pixels]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>image_size_y</p> <td><p>uint64</p> <td><p>Image height [pixels]</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>incident_energy</p> <td><p>float</p> <td><p>X-ray energy [eV]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>incident_wavelength</p> <td><p>float</p> <td><p>X-ray wavelength [Angstrom]</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>frame_time</p> <td><p>float</p> <td><p>Frame time, if multiple frames per trigger [s]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>count_time</p> <td><p>float</p> <td><p>Exposure time [s]</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>saturation_value</p> <td><p>int64</p> <td><p>Maximum valid sample value</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>error_value</p> <td><p>int64 (optional)</p> <td><p>Value used in images to describe pixels that are in error state or missing</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>pixel_size_x</p> <td><p>float</p> <td><p>Pixel width [m]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>pixel_size_y</p> <td><p>float</p> <td><p>Pixel height [m]</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>sensor_thickness</p> <td><p>float</p> <td><p>Sensor thickness [m]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>sensor_material</p> <td><p>string</p> <td><p>Sensor material</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>arm_date</p> <td><p>date</p> <td><p>Approximate date of arming</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>pixel_mask_enabled</p> <td><p>bool</p> <td><p>Pixel mask applied on images</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>detector_description</p> <td><p>string</p> <td><p>Name of the detector</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>detector_serial_number</p> <td><p>string</p> <td><p>Detector serial number</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>series_unique_id</p> <td><p>string</p> <td><p>Unique text ID of the series (run_name parameter)</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>series_id</p> <td><p>uint64</p> <td><p>Unique numeric ID of the series (run_number parameter)</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>fluorescence</p> <td><p>object (optional)</p> <td><p>X-ray fluorescence spectrum collected at start</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- energy</p> <td><p>Array(float)</p> <td><p>Energy of measuring point [eV]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- data</p> <td><p>Array(float)</p> <td><p>Fluorescence scan result <code class="docutils literal notranslate"><span class=pre >data</span></code> [arbitrary units]; must be strictly the same length as energy</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>goniometer</p> <td><p>Map</p> <td><p>Definition of rotation axis (optional)</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>- <code class="docutils literal notranslate"><span class=pre >AXIS</span></code></p> <td><p>string</p> <td><p>Rotation axis name (e.g. omega) - only one axis is supported in Jungfraujoch</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- - increment</p> <td><p>float</p> <td><p>Rotation axis increment (per image) in degree [deg]</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>- - start</p> <td><p>float</p> <td><p>Rotation axis start angle [deg]</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- - axis</p> <td><p>Array(float)</p> <td><p>Vector for the rotation axis</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- - helical_step</p> <td><p>Array(float)</p> <td><p>Translation for helical scan for 1 image [m]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- - screening_wedge</p> <td><p>Array(float)</p> <td><p>Wedge for screening [deg] (increment would correspond to difference between screening points)</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>grid_scan</p> <td><p>object</p> <td><p>Grid scan definition (optional and exclusive with rotation axis)</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- n_fast</p> <td><p>uint64</p> <td><p>Number of elements along fast axis</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- n_slow</p> <td><p>uint64</p> <td><p>Number of elements along slow axis</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- step_x_axis</p> <td><p>float</p> <td><p>Step along X axis, can be negative [m]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- step_y_axis</p> <td><p>float</p> <td><p>Step along Y axis, can be negative [m]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- snake_scan</p> <td><p>bool</p> <td><p>Snake scan (rows alternate direction)</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- vertical_scan</p> <td><p>bool</p> <td><p>Vertical scan (enabled: fast direction = Y, disabled: fast direction = X)</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>jungfrau_conversion_enabled</p> <td><p>bool (optional)</p> <td><p>Applying JUNGFRAU pixel conversion (to photons or keV)</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>jungfrau_conversion_factor</p> <td><p>float (optional)</p> <td><p>Factor used for JUNGFRAU conversion [eV]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>geometry_transformation_enabled</p> <td><p>bool (optional)</p> <td><p>Transformation from detector module geometry (512x1024) to full detector geometry</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>pixel_mask</p> <td><p>Map(string -&gt; Image)</p> <td><p>Pixel mask - multiple in case of storage cells</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>channels</p> <td><p>Array(string)</p> <td><p>List of image channels</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>max_spot_count</p> <td><p>uint64</p> <td><p>Maximum number of spots identified in spot finding</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>storage_cell_number</p> <td><p>uint64 (optional)</p> <td><p>Number of storage cells used by JUNGFRAU</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>storage_cell_delay</p> <td><p>Rational</p> <td><p>Delay of storage cells in JUNGFRAU</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>threshold_energy</p> <td><p>float</p> <td><p>Threshold energy for EIGER detector [eV]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>image_dtype</p> <td><p>string</p> <td><p>Pixel bit type (e.g. uint16)</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>unit_cell</p> <td><p>object (optional)</p> <td><p>Unit cell of the system: a, b, c [angstrom] and alpha, beta, gamma [degree]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>az_int_q_bin_count</p> <td><p>uint64</p> <td><p>Number of azimuthal integration bins in the radial direction</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>az_int_phi_bin_count</p> <td><p>uint64</p> <td><p>Number of azimuthal integration bins in the phi angle direction</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>az_int_bin_to_q</p> <td><p>Array(float)</p> <td><p>Q value for each azimuthal integration bin [angstrom^-1]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>az_int_bin_to_two_theta</p> <td><p>Array(float)</p> <td><p>Two theta angle value for each azimuthal integration bin [deg]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>az_int_bin_to_phi</p> <td><p>Array(float)</p> <td><p>Phi value for each azimuthal integration bin [deg]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>summation</p> <td><p>uint64</p> <td><p>Factor of frame summation</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>user_data</p> <td><p>string</p> <td><p>JSON serialized to string that can contain the following fields (all fields are optional):</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- file_prefix</p> <td><p>string</p> <td><p>File prefix</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- images_per_file</p> <td><p>uint64</p> <td><p>Number of images written per file</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- images_per_trigger</p> <td><p>uint64</p> <td><p>Number of images collected per trigger</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- source_name</p> <td><p>string</p> <td><p>Facility name</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- source_type</p> <td><p>string</p> <td><p>Type of X-ray source (use NXsource/type values, for example “Synchrotron X-ray Source” or “Free-Electron Laser”)</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- instrument_name</p> <td><p>string</p> <td><p>Instrument name</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- sample_name</p> <td><p>string</p> <td><p>Name of the sample</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- user</p> <td><p>any valid JSON</p> <td><p>Value of header_appendix provided at collection start to Jungfraujoch</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- attenuator_transmission</p> <td><p>float</p> <td><p>Attenuator transmission []</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- total_flux</p> <td><p>float</p> <td><p>Total flux [ph/s]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- space_group_number</p> <td><p>uint64</p> <td><p>Space group number</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- summation_mode</p> <td><p>string</p> <td><p>Summation mode (internal|fpga|cpu)</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- overwrite</p> <td><p>bool</p> <td><p>Overwrite existing HDF5 files</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- file_format</p> <td><p>int</p> <td><p>File writer format: 0 = no master file, 1 = soft links, 2 = virtual dataset, 3 = CBF, 4 = TIFF</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- roi</p> <td><p>Array(object)</p> <td><p>ROI configurations; each element is one of:</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p></p> <td><p></p> <td><p>type “box”: xmin, xmax, ymin, ymax (numbers)</p> <td class=text-center ><p></p> <tr class=row-even ><td><p></p> <td><p></p> <td><p>type “circle”: r, x, y (numbers)</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p></p> <td><p></p> <td><p>type “azim”: qmin, qmax (numbers)</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- gain_file_names</p> <td><p>Array(string)</p> <td><p>Names of JUNGFRAU gain files used for the current detector</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- write_master_file</p> <td><p>bool</p> <td><p>With multiple sockets, it selects which socket will provide master file</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- data_reduction_factor_serialmx</p> <td><p>uint64</p> <td><p>Data reduction factor for serial MX</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- experiment_group</p> <td><p>string</p> <td><p>ID of instrument user, e.g., p-group (SLS/SwissFEL) or proposal number</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- jfjoch_release</p> <td><p>string</p> <td><p>Jungfraujoch release number</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- socket_number</p> <td><p>uint64</p> <td><p>Number of ZeroMQ socket (on <code class="docutils literal notranslate"><span class=pre >jfjoch_broker</span></code> side) used for transmission</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- bit_depth_readout</p> <td><p>uint64</p> <td><p>Bit depth of the detector readout</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- writer_notification_zmq_addr</p> <td><p>string</p> <td><p>ZeroMQ address to inform <code class="docutils literal notranslate"><span class=pre >jfjoch_broker</span></code> about writers that finished operation</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- xfel_pulse_id</p> <td><p>uint64</p> <td><p>Pulse IDs are recorded for images</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- ring_current_mA</p> <td><p>float</p> <td><p>Ring current at the start of the measurement</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- sample_temperature_K</p> <td><p>float</p> <td><p>Sample temperature [K]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- detect_ice_rings</p> <td><p>bool</p> <td><p>Ice ring detection feature is enabled</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- indexing_algorithm</p> <td><p>string</p> <td><p>Indexing algorithm used on-the-fly; allowed values: ffbidx, fft, fftw, none</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- geom_refinement_algorithm</p> <td><p>string</p> <td><p>Post-indexing detector geometry refinement algorithm; allowed values: none, beam_center, beam_center_tetragonal</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- poni_rot1</p> <td><p>float</p> <td><p>Tilt of the detector rot1 according to PyFAI PONI convention [rad]</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- poni_rot2</p> <td><p>float</p> <td><p>Tilt of the detector rot2 according to PyFAI PONI convention [rad]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- poni_rot3</p> <td><p>float</p> <td><p>Tilt of the detector rot3 according to PyFAI PONI convention [rad]</p> <td class=text-center ><p></p> </table> <p>See <a class="reference external" href="https://github.com/dectris/documentation/tree/main/stream_v2">DECTRIS documentation</a> for definition of Image as MultiDimArray with optional compression.</p> </section> <section id=image-message > <h2 id=image-message >Image message<a class=headerlink href="#image-message" title="Link to this heading"></a></h2> <table> <thead> <tr class=row-odd ><th class=head ><p>Field name</p> <th class=head ><p>Type</p> <th class=head ><p>Description</p> <th class="head text-center"><p>Present in DECTRIS format</p> <th class="head text-center"><p>Optional</p> <tr class=row-even ><td><p>type</p> <td><p>String</p> <td><p>value “image”</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>magic_number</p> <td><p>uint64</p> <td><p>Number used to describe version of the Jungfraujoch data interface - to allow to detect inconsistency between sender and receiver</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>series_unique_id</p> <td><p>string</p> <td><p>Unique text ID of the series (run_name parameter)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>series_id</p> <td><p>uint64</p> <td><p>Unique numeric ID of the series (run_number parameter)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>image_id</p> <td><p>uint64</p> <td><p>Number of image within the series; for MX lossy compression this is sequential excluding removed frames</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>original_image_id</p> <td><p>uint64</p> <td><p>Number of image within the series; for MX lossy compression this includes removed frames in the count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>real_time</p> <td><p>Rational</p> <td><p>Exposure time</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>start_time</p> <td><p>Rational</p> <td><p>Exposure start time (highly approximate)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>end_time</p> <td><p>Rational</p> <td><p>Exposure end time (highly approximate)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>spots</p> <td><p>Array(object)</p> <td><p>Spots:</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- x</p> <td><p>float</p> <td><p>observed position in x (pixels)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- y</p> <td><p>float</p> <td><p>observed position in y (pixels)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- I</p> <td><p>float</p> <td><p>intensity (photons)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- maxc</p> <td><p>int64</p> <td><p>max count (photons)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- ice_ring</p> <td><p>bool</p> <td><p>spot in resolution range for ice rings</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- indexed</p> <td><p>bool</p> <td><p>indexed solution</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>reflections</p> <td><p>Array(object)</p> <td><p>Reflections:</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- h</p> <td><p>int64</p> <td><p>Miller index</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- k</p> <td><p>int64</p> <td><p>Miller index</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- l</p> <td><p>int64</p> <td><p>Miller index</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- x</p> <td><p>float</p> <td><p>position in x (pixels)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- y</p> <td><p>float</p> <td><p>position in y (pixels)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- d</p> <td><p>float</p> <td><p>resolution [Angstrom]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- I</p> <td><p>float</p> <td><p>integrated intensity (photons)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- bkg</p> <td><p>float</p> <td><p>mean background value (photons)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- sigma</p> <td><p>float</p> <td><p>standard deviation, estimated from counting statistics (photons)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- image</p> <td><p>float</p> <td><p>image number (present for each spot)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- dist_ewald</p> <td><p>float</p> <td><p>distance to Ewald sphere (present only for indexed spots)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>spot_count</p> <td><p>uint64</p> <td><p>Spot count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>spot_count_ice_rings</p> <td><p>uint64</p> <td><p>Number of spots within identified rings (experimental)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>spot_count_low_res</p> <td><p>uint64</p> <td><p>Number of spots in low resolution (prior to filtering)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>spot_count_indexed</p> <td><p>uint64</p> <td><p>Number of spots which fit indexing solution within a given tolerance</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>az_int_profile</p> <td><p>Array(float)</p> <td><p>Azimuthal integration results, use az_int_bin_to_q from start message for legend</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p></p> <td><p></p> <td><p>NaN is used for empty bins and has to be taken care by the receiver</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>indexing_result</p> <td><p>bool</p> <td><p>Indexing successful</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>indexing_lattice</p> <td><p>Array(9 * float)</p> <td><p>Indexing result real lattice; present only if indexed</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>indexing_unit_cell</p> <td><p>object</p> <td><p>Indexing result unit cell: a, b, c [angstrom] and alpha, beta, gamma [degree]; present only if indexed</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p></p> <td><p></p> <td><p>Unit cell is redundant to lattice - yet to simplify downstream programs to analyze results, both are provided</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>profile_radius</p> <td><p>float</p> <td><p>Profile radius of the image - describes distance of observed reflections from the Ewald sphere [Angstrom^-1]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>mosaicity</p> <td><p>float</p> <td><p>Angular range of spots in image from a rotation scan [degree]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>b_factor</p> <td><p>float</p> <td><p>Estimated B-factor (Angstrom^2)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>indexing_time</p> <td><p>float</p> <td><p>Time spent on indexing [s]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>processing_time</p> <td><p>float</p> <td><p>Total processing time [s]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>xfel_pulse_id</p> <td><p>uint64</p> <td><p>Bunch ID (for pulsed source, e.g., SwissFEL)</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>xfel_event_code</p> <td><p>uint64</p> <td><p>Event code (for pulsed source, e.g., SwissFEL)</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>lattice_type</p> <td><p>object</p> <td><p>Bravais lattice classification of the indexing result (present only if available)</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- centering</p> <td><p>string</p> <td><p>One-letter centering code: P, A, B, C, I, F, or R</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- niggli_class</p> <td><p>int64</p> <td><p>Integer identifier for the Niggli-reduced Bravais class</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- system</p> <td><p>string</p> <td><p>Crystal system: triclinic, monoclinic, orthorhombic, tetragonal, trigonal, hexagonal, cubic</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>jf_info</p> <td><p>uint64</p> <td><p>Detector info field</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>receiver_aq_dev_delay</p> <td><p>uint64</p> <td><p>Receiver internal delay</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>receiver_free_send_buf</p> <td><p>uint64</p> <td><p>Receiver internal number of available send buffers</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>storage_cell</p> <td><p>uint64</p> <td><p>Storage cell number</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>saturated_pixel_count</p> <td><p>uint64</p> <td><p>Saturated pixel count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>pixel_sum</p> <td><p>uint64</p> <td><p>Sum of all pixels, excl. error and saturation</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>error_pixel_count</p> <td><p>uint64</p> <td><p>Error pixel count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>strong_pixel_count</p> <td><p>uint64</p> <td><p>Strong pixel count (first stage of spot finding)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>min_viable_pixel_value</p> <td><p>int64</p> <td><p>Minimal pixel value, excl. error and saturation</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>max_viable_pixel_value</p> <td><p>int64</p> <td><p>Maximal pixel value, excl. error and saturation</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>resolution_estimate</p> <td><p>float</p> <td><p>Diffraction resolution estimation [Angstrom]</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>data_collection_efficiency</p> <td><p>float</p> <td><p>Image collection efficiency []</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>packets_expected</p> <td><p>uint64</p> <td><p>Number of packets expected per image (in units of 2 kB)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>packets_received</p> <td><p>uint64</p> <td><p>Number of packets received per image (in units of 2 kB)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>bkg_estimate</p> <td><p>float</p> <td><p>Mean value for pixels in resolution range from 3.0 to 5.0 A [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>beam_center_x</p> <td><p>float</p> <td><p>Beam center X from post-indexing refinement [pixel]</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>beam_center_y</p> <td><p>float</p> <td><p>Beam center Y from post-indexing refinement [pixel]</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>beam_corr_x</p> <td><p>float</p> <td><p>Beam center correction X applied during processing [pixel]</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>beam_corr_y</p> <td><p>float</p> <td><p>Beam center correction Y applied during processing [pixel]</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>adu_histogram</p> <td><p>Array(uint64)</p> <td><p>ADU histogram</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>roi_integrals</p> <td><p>object</p> <td><p>Results of ROI calculation</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- sum</p> <td><p>int64</p> <td><p>Sum of pixels in ROI area [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- sum_square</p> <td><p>int64</p> <td><p>Sum of squares of pixels in ROI area [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- pixels</p> <td><p>uint64</p> <td><p>Valid pixels in ROI area</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- max_count</p> <td><p>int64</p> <td><p>Highest count in ROI area [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- x_weighted_sum</p> <td><p>int64</p> <td><p>ROI pixel X position multiplied by photon count [photons * pixels]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- y_weighted_sum</p> <td><p>int64</p> <td><p>ROI pixel Y position multiplied by photon count [photons * pixels]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>user_data</p> <td><p>string</p> <td><p>Optional user defined text information - this is image_appendix serialized to JSON format</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>data</p> <td><p>Map(string -&gt; Image)</p> <td><p>Image</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> </table> </section> <section id=metadata-message > <h2 id=metadata-message >Metadata message<a class=headerlink href="#metadata-message" title="Link to this heading"></a></h2> <table> <thead> <tr class=row-odd ><th class=head ><p>Field name</p> <th class=head ><p>Type</p> <th class=head ><p>Description</p> <th class="head text-center"><p>Present in DECTRIS format</p> <th class="head text-center"><p>Optional</p> <tr class=row-even ><td><p>type</p> <td><p>String</p> <td><p>value “metadata”</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>magic_number</p> <td><p>uint64</p> <td><p>Number used to describe version of the Jungfraujoch data interface - to allow to detect inconsistency between sender and receiver</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>series_unique_id</p> <td><p>string</p> <td><p>Unique text ID of the series (run_name parameter)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>series_id</p> <td><p>uint64</p> <td><p>Unique numeric ID of the series (run_number parameter)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>images</p> <td><p>Array(object)</p> <td><p>Array of images (order and size of the array are not guaranteed)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- image_id</p> <td><p>uint64</p> <td><p>Number of image within the series; for MX lossy compression this is sequential excluding removed frames</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- original_image_id</p> <td><p>uint64</p> <td><p>Number of image within the series; for MX lossy compression this includes removed frames in the count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- real_time</p> <td><p>Rational</p> <td><p>Exposure time</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- start_time</p> <td><p>Rational</p> <td><p>Exposure start time (highly approximate)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- end_time</p> <td><p>Rational</p> <td><p>Exposure end time (highly approximate)</p> <td class=text-center ><p>X</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- spot_count</p> <td><p>uint64</p> <td><p>Spot count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- spot_count_ice_rings</p> <td><p>uint64</p> <td><p>Number of spots within identified rings (experimental)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- az_int_profile</p> <td><p>Array(float)</p> <td><p>Azimuthal integration results, use az_int_bin_to_q from start message for legend</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- indexing_result</p> <td><p>bool</p> <td><p>Indexing successful</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- indexing_lattice</p> <td><p>Array(9 * float)</p> <td><p>Indexing result real lattice; present only if indexed</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>- indexing_unit_cell</p> <td><p>object</p> <td><p>Indexing result unit cell: a, b, c [angstrom] and alpha, beta, gamma [degree]; present only if indexed</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p></p> <td><p></p> <td><p>Unit cell is redundant to lattice - yet to simplify downstream programs to analyze results, both are provided</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- xfel_pulse_id</p> <td><p>uint64</p> <td><p>Bunch ID (for pulsed source, e.g., SwissFEL)</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- xfel_event_code</p> <td><p>uint64</p> <td><p>Event code (for pulsed source, e.g., SwissFEL)</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>- jf_info</p> <td><p>uint64</p> <td><p>Detector info field</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- receiver_aq_dev_delay</p> <td><p>uint64</p> <td><p>Receiver internal delay</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- receiver_free_send_buf</p> <td><p>uint64</p> <td><p>Receiver internal number of available send buffers</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- storage_cell</p> <td><p>uint64</p> <td><p>Storage cell number</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- saturated_pixel_count</p> <td><p>uint64</p> <td><p>Saturated pixel count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- error_pixel_count</p> <td><p>uint64</p> <td><p>Error pixel count</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- strong_pixel_count</p> <td><p>uint64</p> <td><p>Strong pixel count (first stage of spot finding)</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- data_collection_efficiency</p> <td><p>float</p> <td><p>Image collection efficiency []</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- bkg_estimate</p> <td><p>float</p> <td><p>Mean value for pixels in resolution range from 3.0 to 5.0 A [photons] (with solid angle/polarization corrections, if applied)</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- resolution_estimate</p> <td><p>float</p> <td><p>Diffraction resolution estimation</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>- adu_histogram</p> <td><p>Array(uint64)</p> <td><p>ADU histogram</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>- roi_integrals</p> <td><p>object</p> <td><p>Results of ROI calculation</p> <td class=text-center ><p></p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>- - sum</p> <td><p>int64</p> <td><p>Sum of pixels in ROI area [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- - sum_square</p> <td><p>int64</p> <td><p>Sum of squares of pixels in ROI area [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- - pixels</p> <td><p>uint64</p> <td><p>Valid pixels in ROI area</p> <td class=text-center ><p></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- - max_count</p> <td><p>int64</p> <td><p>Highest count in ROI area [photons]</p> <td class=text-center ><p></p> <td class=text-center ><p></p> </table> </section> <section id=end-message > <h2 id=end-message >End message<a class=headerlink href="#end-message" title="Link to this heading"></a></h2> <table> <thead> <tr class=row-odd ><th class=head ><p>Field name</p> <th class=head ><p>Type</p> <th class=head ><p>Description</p> <th class="head text-center"><p>Present in DECTRIS format</p> <tr class=row-even ><td><p>type</p> <td><p>String</p> <td><p>value “end”</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>magic_number</p> <td><p>uint64</p> <td><p>Number used to describe version of the Jungfraujoch data interface - to allow to detect inconsistency between sender and receiver</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>series_unique_id</p> <td><p>string</p> <td><p>Unique text ID of the series (run_name parameter)</p> <td class=text-center ><p>X</p> <tr class=row-odd ><td><p>series_id</p> <td><p>uint64</p> <td><p>Unique numeric ID of the series (run_number parameter)</p> <td class=text-center ><p>X</p> <tr class=row-even ><td><p>end_date</p> <td><p>date</p> <td><p>Approximate end date</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>max_image_number</p> <td><p>uint64</p> <td><p>Number of image with the highest number (this is counted from 1 - to distinguish zero images and one image)</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>images_collected</p> <td><p>uint64</p> <td><p>Number of image collected</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>images_sent_to_write</p> <td><p>uint64</p> <td><p>Number of image sent to writer; if writer queues were full, it is possible this is less than images collected</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>data_collection_efficiency</p> <td><p>float</p> <td><p>Network packets collected / Network packets expected []</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>az_int_result</p> <td><p>Map(text-&gt;Array(float))</p> <td><p>Azimuthal integration results, use az_int_bin_to_q from start message for legend</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>adu_histogram</p> <td><p>Map(text-&gt;Array(uint64))</p> <td><p>ADU values histogram</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>adu_histogram_bin_width</p> <td><p>uint64</p> <td><p>Width of bins in the above histogram [ADU]</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>max_receiver_delay</p> <td><p>uint64</p> <td><p>Internal performance of Jungfraujoch</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>bkg_estimate</p> <td><p>float</p> <td><p>Mean background estimate for the whole run</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>indexing_rate</p> <td><p>float</p> <td><p>Mean indexing rate for the whole run</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>rotation_lattice_type</p> <td><p>object</p> <td><p>Bravais lattice classification of the total rotation solution over the run (if available); same schema as <code class="docutils literal notranslate"><span class=pre >lattice_type</span></code></p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- centering</p> <td><p>string</p> <td><p>One-letter centering code: P, A, B, C, I, F, or R</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>- niggli_class</p> <td><p>int64</p> <td><p>Integer identifier for the Niggli-reduced Bravais class</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>- system</p> <td><p>string</p> <td><p>Crystal system: triclinic, monoclinic, orthorhombic, tetragonal, trigonal, hexagonal, cubic</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>rotation_lattice</p> <td><p>Array(9 * float)</p> <td><p>Real-space lattice basis (flattened 3x3 in row-major), corresponding to the rotation indexing result</p> <td class=text-center ><p></p> </table> </section> <section id=calibration-message > <h2 id=calibration-message >Calibration message<a class=headerlink href="#calibration-message" title="Link to this heading"></a></h2> <table> <thead> <tr class=row-odd ><th class=head ><p>Field name</p> <th class=head ><p>Type</p> <th class=head ><p>Description</p> <th class="head text-center"><p>Present in DECTRIS format</p> <tr class=row-even ><td><p>type</p> <td><p>String</p> <td><p>value “calibration”</p> <td class=text-center ><p></p> <tr class=row-odd ><td><p>magic_number</p> <td><p>uint64</p> <td><p>Number used to describe version of the Jungfraujoch data interface - to allow to detect inconsistency between sender and receiver</p> <td class=text-center ><p></p> <tr class=row-even ><td><p>data</p> <td><p>Map(string -&gt; Image)</p> <td><p>Calibration map (only single pedestal array per message)</p> <td class=text-center ><p></p> </table> </section> <section id=user-data > <h2 id=user-data >User data<a class=headerlink href="#user-data" title="Link to this heading"></a></h2> <p>In many cases there is an interest from facilities to forward more metadata, than available explicitly in the Jungfraujoch. For this reason two fields can be provided: <code class="docutils literal notranslate"><span class=pre >header_appendix</span></code> (sent with start message) and <code class="docutils literal notranslate"><span class=pre >image_appendix</span></code> (send with image message). To increase flexibility, both appendices can contain any valid JSON message. These appendices are serialized into string and stored in CBOR messages as <code class="docutils literal notranslate"><span class=pre >user_data</span></code>.</p> <p>Notably for start message, <code class="docutils literal notranslate"><span class=pre >user_data</span></code> can contain more information (non-DECTRIS compliant metadata). Therefore <code class="docutils literal notranslate"><span class=pre >user_data</span></code> is serialized by Jungfraujoch as CBOR object. There is member <code class="docutils literal notranslate"><span class=pre >user</span></code> which contains <code class="docutils literal notranslate"><span class=pre >header_appendix</span></code> defined in OpenAPI of Jungfraujoch.</p> <section id=notes-on-images-and-compression > <h3 id=notes-on-images-and-compression >Notes on images and compression<a class=headerlink href="#notes-on-images-and-compression" title="Link to this heading"></a></h3> <ul class=simple > <li><p>Images are encoded as DECTRIS MultiDimArray with typed array tags:</p> <ul> <li><p>For RGB: shape [3, height, width], type: u8</p> <li><p>For grayscale: shape [height, width], type according to bit depth and sign (e.g., uint16 LE)</p> </ul> <li><p>Compression:</p> <ul> <li><p>Uncompressed: raw CBOR byte string</p> <li><p>Bitshuffle+LZ4: tag with [“bslz4”, elem_size, bytes]</p> <li><p>Bitshuffle+Zstandard: tag with [“bszstd”, elem_size, bytes]</p> </ul> </ul> </section> </section> </section> </article> </div> </div> </main> </div> <footer class=md-footer > <div class=md-footer-nav > <nav class="md-footer-nav__inner md-grid"> <a href=OPENAPI_SPECS.html title="OpenAPI specification" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel=prev > <div class="md-flex__cell md-flex__cell--shrink"> <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> </div> <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> <span class=md-flex__ellipsis > <span class=md-footer-nav__direction > "Previous" </span> OpenAPI specification </span> </div> </a> <a href=ZEROMQ_STREAM.html title="ZeroMQ socket" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel=next > <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class=md-flex__ellipsis > <span class=md-footer-nav__direction > "Next" </span> ZeroMQ socket </span> </div> <div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> </div> </a> </nav> </div> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-footer-copyright > <div class=md-footer-copyright__highlight > &#169; Copyright 2024, Paul Scherrer Institute. </div> Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 8.1.3. and <a href="https://github.com/bashtage/sphinx-material/">Material for Sphinx</a> </div> </div> </div> </footer> <script src="_static/javascripts/application.js"></script> <script>app.initialize({version: "1.0.4", url: {base: ".."}})</script>