Files
Jungfraujoch/ACKNOWLEDGEMENT.html
T
2026-10-06 20:38:39 +00:00

1 line
62 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>Acknowledgements &#8212; Jungfraujoch 1.0.0-rc.174 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=3dccfb20"></script> <script src="_static/doctools.js?v=9bcbadda"></script> <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <script>window.MathJax = {"tex": {"tags": "ams", "inlineMath": [["\\(", "\\)"], ["$", "$"]], "displayMath": [["\\[", "\\]"], ["$$", "$$"]], "processEscapes": true}, "options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> <script defer=defer src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></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="External test data" href=EXTERNAL_TEST_DATA.html /> <link rel=prev title=Tests href=TESTS.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="#ACKNOWLEDGEMENT" 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.174 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 > Acknowledgements </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.174 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.174 documentation" class="md-nav__button md-logo"> <i class=md-icon >&#xe30d</i> </a> <a href=index.html title="Jungfraujoch 1.0.0-rc.174 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 >rugnux — data processing</span></span> <li class=md-nav__item > <a href=RUGNUX.html class=md-nav__link >Rugnux</a> <li class=md-nav__item > <a href=RUGNUX_OVERVIEW.html class=md-nav__link >What Rugnux does</a> <li class=md-nav__item > <a href=RUGNUX_INSTALL.html class=md-nav__link >Installing Rugnux</a> <li class=md-nav__item > <a href=RUGNUX_FORMATS.html class=md-nav__link >What Rugnux reads</a> <li class=md-nav__item > <a href=RUGNUX_TUTORIAL.html class=md-nav__link >Running Rugnux</a> <li class=md-nav__item > <a href=RUGNUX_INTEGRATION.html class=md-nav__link >Rugnux with other programs</a> <li class=md-nav__item > <a href=RUGNUX_REPORT.html class=md-nav__link >The results report</a> <li class=md-nav__item > <a href=RUGNUX_ADVANCED.html class=md-nav__link >Advanced Rugnux</a> <li class=md-nav__item > <a href=RUGNUX_CALIBRATION.html class=md-nav__link >Detector calibration from powder rings (<code class="docutils literal notranslate"><span class=pre >rugnux</span> <span class=pre >--mode</span> <span class=pre >calibration</span></code>)</a> <li class=md-nav__item > <a href=CPU_DATA_ANALYSIS.html class=md-nav__link >CPU-side crystallographic data analysis (Jungfraujoch)</a> <li class=md-nav__item > <a href=CPU_DATA_ANALYSIS_IMAGE.html class=md-nav__link >Data analysis: from images to spots (§0–§3)</a> <li class=md-nav__item > <a href=CPU_DATA_ANALYSIS_INDEXING.html class=md-nav__link >Data analysis: indexing and geometry (§4–§7)</a> <li class=md-nav__item > <a href=CPU_DATA_ANALYSIS_INTEGRATION.html class=md-nav__link >Data analysis: integration, scaling and merging (§8–§12)</a> <li class=md-nav__item > <a href=CPU_DATA_ANALYSIS_DECISIONS.html class=md-nav__link >Data analysis: space group and validation (§13–§14)</a> <li class=md-nav__item > <span class="md-nav__link caption"><span class=caption-text >Jungfraujoch — acquisition</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=JFJOCH_VIEWER.html class=md-nav__link >jfjoch_viewer</a> <li class=md-nav__item > <a href=SOFTWARE_INTEGRATION.html class=md-nav__link >Integration with MX data processing software</a> <li class=md-nav__item > <a href=TOOLS.html class=md-nav__link >Tools</a> <li class=md-nav__item > <a href=DEPLOYMENT.html class=md-nav__link >Deployment</a> <li class=md-nav__item > <a href=DETECTORS.html class=md-nav__link >Supported 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 > <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=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 > <a href=PYTHON_CLIENT.html class=md-nav__link >OpenAPI Python client</a> <li class=md-nav__item > <a href=CBOR.html class=md-nav__link >CBOR messages</a> <li class=md-nav__item > <a href=HDF5.html class=md-nav__link >HDF5 / NeXus data format</a> <li class=md-nav__item > <a href=IMAGE_STREAM.html class=md-nav__link >Data streams</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 >Project</span></span> <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 > Acknowledgements </label> <a href="#" class="md-nav__link md-nav__link--active">Acknowledgements</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="#funding-and-support" class=md-nav__link >Funding and support</a> <li class=md-nav__item > <a href="#crystallographic-methods-adopted-from-other-packages" class=md-nav__link >Crystallographic methods adopted from other packages</a> <li class=md-nav__item > <a href="#software-and-computing-methods" class=md-nav__link >Software and computing methods</a> <li class=md-nav__item > <a href="#file-formats-read-from-a-published-specification" class=md-nav__link >File formats read from a published specification</a> <li class=md-nav__item > <a href="#public-diffraction-data-used-for-testing" class=md-nav__link >Public diffraction data used for testing</a> <li class=md-nav__item > <a href="#generative-ai-usage-declaration" class=md-nav__link >Generative AI usage declaration</a> </ul> <li class=md-nav__item > <a href=EXTERNAL_TEST_DATA.html class=md-nav__link >External test data</a> <li class=md-nav__item > <a href=LICENSE.html class=md-nav__link >License</a> <li class=md-nav__item > <a href=THIRD_PARTY_NOTICES.html class=md-nav__link >Third-party software notices</a> <li class=md-nav__item > <a href=VERSIONING.html class=md-nav__link >Semantic versioning</a> <li class=md-nav__item > <a href=SECURITY.html class=md-nav__link >Security</a> <li class=md-nav__item > <a href=RELEASE_CONTENTS.html class=md-nav__link >Release contents</a> <li class=md-nav__item > <a href=REPOSITORIES.html class=md-nav__link >Linux package repositories</a> <li class=md-nav__item > <a href=NAMING.html class=md-nav__link >Naming</a> <li class=md-nav__item > <a href=CHANGELOG.html class=md-nav__link >Changelog</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 class="tex2jax_ignore mathjax_ignore" id=acknowledgements > <h1 id=acknowledgement--page-root >Acknowledgements<a class=headerlink href="#acknowledgement--page-root" title="Link to this heading"></a></h1> <p>Citation: F. Leonarski, M. Bruckner, C. Lopez-Cuenca, A. Mozzanica, H.-C. Stadler, Z. Matej, A. Castellane, B. Mesnet, J. Wojdyla, B. Schmitt and M. Wang, “Jungfraujoch: hardware-accelerated data-acquisition system for kilohertz pixel-array X-ray detectors” (2023), J. Synchrotron Rad., 30, 227-234 <a class="reference external" href="https://doi.org/10.1107/S1600577522010268">doi:10.1107/S1600577522010268</a>.</p> <section id=funding-and-support > <h2 id=funding-and-support >Funding and support<a class=headerlink href="#funding-and-support" title="Link to this heading"></a></h2> <p>The project is supported by:</p> <ul class=simple > <li><p>Innosuisse via Innovation Project “NextGenDCU high data rate acquisition system for X-ray detectors in structural biology applications” (101.535.1 IP-ENG; Apr 2023 - Sep 2025).</p> <li><p>ETH Domain via Open Research Data Contribute project (Jan - Dec 2023).</p> <li><p>AMD University Program with donation of licenses of Ethernet IP cores and Vivado software.</p> </ul> </section> <section id=crystallographic-methods-adopted-from-other-packages > <h2 id=crystallographic-methods-adopted-from-other-packages >Crystallographic methods adopted from other packages<a class=headerlink href="#crystallographic-methods-adopted-from-other-packages" title="Link to this heading"></a></h2> <p>The analysis pipeline reimplements methods first published, and in most cases first implemented, by other crystallographic software. The code below is Jungfraujoch’s own; the methods are theirs, and are acknowledged here. Where a package’s source was consulted this is said explicitly. Most of these packages are neither linked nor vendored; the three that are - GEMMI, traccc and fast-feedback-indexer - also carry a licence obligation, recorded in <a class="reference internal" href=THIRD_PARTY_NOTICES.html ><span class="std std-doc">THIRD_PARTY_NOTICES.md</span></a>.</p> <section id=spot-finding > <h3 id=spot-finding >Spot finding<a class=headerlink href="#spot-finding" title="Link to this heading"></a></h3> <p><strong><a class="reference external" href="https://www.desy.de/~twhite/crystfel/">CrystFEL</a></strong> — spot finding, the three-ring integration region, the serial/stills processing model, and the per-frame indexing acceptance test (<code class="docutils literal notranslate"><span class=pre >indexing_peak_check()</span></code> in <code class="docutils literal notranslate"><span class=pre >peaks.c</span></code>). T. A. White, R. A. Kirian, A. V. Martin, A. Aquila, K. Nass, A. Barty and H. N. Chapman, “CrystFEL: a software suite for snapshot serial crystallography” (2012), J. Appl. Cryst. 45, 335-341 <a class="reference external" href="https://doi.org/10.1107/S0021889812002312">doi:10.1107/S0021889812002312</a>. The self-calibrating spot finder’s per-resolution-ring background statistics, with the Bragg peaks excluded by iterated clipping, follow Cheetah’s peakfinder8: A. Barty, R. A. Kirian, F. R. N. C. Maia, M. Hantke, C. H. Yoon, T. A. White and H. N. Chapman, “Cheetah: software for high-throughput reduction and analysis of serial femtosecond X-ray diffraction data” (2014), J. Appl. Cryst. 47, 1118-1131 <a class="reference external" href="https://doi.org/10.1107/S1600576714007626">doi:10.1107/S1600576714007626</a>.</p> <p>Spot extraction groups strong pixels into spots with the sparse connected-component labelling of the ACTS traccc project: P. Gessinger, H. M. Gray, A. Krasznahorkay, C. Leggett, J. Niermann, A. Salzburger, S. N. Swatman and B. Yeo, “traccc: GPU track reconstruction library for HEP experiments” (2025), <a class="reference external" href="https://arxiv.org/abs/2505.22822">arXiv:2505.22822</a>; <a class="reference external" href="https://github.com/acts-project/traccc">traccc</a>. The CPU spot extractor adapts its SparseCCL source, and the CUDA spot extractor follows the design of its GPU counterpart - a backward-neighbour graph over a sorted hit list, resolved by a parallel union-find. traccc is MPL-2.0; see <a class="reference internal" href=THIRD_PARTY_NOTICES.html ><span class="std std-doc">THIRD_PARTY_NOTICES.md</span></a>. The SparseCCL algorithm itself is A. Hennequin, B. Couturier, V. V. Gligorov and L. Lacassagne, “SparseCCL: Connected Components Labeling and Analysis for sparse images” (2019), DASIP 2019, 65-70 <a class="reference external" href="https://doi.org/10.1109/DASIP48288.2019.9049184">doi:10.1109/DASIP48288.2019.9049184</a>.</p> </section> <section id=indexing > <h3 id=indexing >Indexing<a class=headerlink href="#indexing" title="Link to this heading"></a></h3> <p><strong><a class="reference external" href="https://www.mrc-lmb.cam.ac.uk/mosflm/">MOSFLM</a></strong> — the Rossmann FFT autoindexing algorithm and post-refinement practice, including which parameters are safe to refine per image and which must be refined over a wedge. The autoindexing algorithm itself — projecting the reciprocal-space points onto many directions and Fourier-transforming the 1D projection histograms — is I. Steller, R. Bolotovsky and M. G. Rossmann, “An algorithm for automatic indexing of oscillation images using Fourier analysis” (1997), J. Appl. Cryst. 30, 1036-1040 <a class="reference external" href="https://doi.org/10.1107/S0021889897008777">doi:10.1107/S0021889897008777</a>; MOSFLM is the implementation whose practice is followed. A. G. W. Leslie and H. R. Powell, “Processing diffraction data with MOSFLM” (2007), in <em>Evolving Methods for Macromolecular Crystallography</em>, NATO Science Series II, vol. 245, 41-51 <a class="reference external" href="https://doi.org/10.1007/978-1-4020-6316-9_4">doi:10.1007/978-1-4020-6316-9_4</a>; T. G. G. Battye, L. Kontogiannis, O. Johnson, H. R. Powell and A. G. W. Leslie, “iMOSFLM: a new graphical interface for diffraction-image processing with MOSFLM” (2011), Acta Cryst. D67, 271-281 <a class="reference external" href="https://doi.org/10.1107/S0907444910048675">doi:10.1107/S0907444910048675</a>; H. R. Powell, T. G. G. Battye, L. Kontogiannis, O. Johnson and A. G. W. Leslie, “Integrating macromolecular X-ray diffraction data with the graphical user interface iMosflm” (2017), Nat. Protoc. 12, 1310-1325 <a class="reference external" href="https://doi.org/10.1038/nprot.2017.037">doi:10.1038/nprot.2017.037</a>.</p> <p><strong><a class="reference external" href="https://github.com/paulscherrerinstitute/fast-feedback-indexer">fast-feedback-indexer</a></strong> — the known-cell indexer for serial stills (<code class="docutils literal notranslate"><span class=pre >-X</span> <span class=pre >ffbidx</span></code>) is PSI’s fast-feedback-indexer library, linked at build time (BSD-3-Clause; see <a class="reference internal" href=THIRD_PARTY_NOTICES.html ><span class="std std-doc">THIRD_PARTY_NOTICES.md</span></a>), which implements the TORO algorithm: P. Gasparotto, L. Barba, H.-C. Stadler, G. Assmann, H. Mendonça, A. W. Ashton, M. Janousch, F. Leonarski and B. Béjar, “TORO Indexer: a PyTorch-based indexing algorithm for kilohertz serial crystallography” (2024), J. Appl. Cryst. 57, 931-944 <a class="reference external" href="https://doi.org/10.1107/S1600576724003182">doi:10.1107/S1600576724003182</a>.</p> </section> <section id=cell-reduction-and-lattice-symmetry > <h3 id=cell-reduction-and-lattice-symmetry >Cell reduction and lattice symmetry<a class=headerlink href="#cell-reduction-and-lattice-symmetry" title="Link to this heading"></a></h3> <p><strong><a class="reference external" href="https://github.com/project-gemmi/gemmi">GEMMI</a></strong> — symmetry operations, unit-cell and structure-factor machinery, and MTZ / XDS_ASCII I/O. Vendored in <code class="docutils literal notranslate"><span class=pre >gemmi_gph/</span></code>, so it also carries a licence obligation. M. Wojdyr, “GEMMI: A library for structural biology” (2022), J. Open Source Softw. 7, 4200 <a class="reference external" href="https://doi.org/10.21105/joss.04200">doi:10.21105/joss.04200</a>.</p> <p><strong>Křivý &amp; Gruber’s Niggli reduction, and the lattice-character table</strong> — the reduction that puts every candidate cell in a comparable form is I. Křivý and B. Gruber, “A unified algorithm for determining the reduced (Niggli) cell” (1976), Acta Cryst. A32, 297-298 <a class="reference external" href="https://doi.org/10.1107/S0567739476000636">doi:10.1107/S0567739476000636</a>, used through GEMMI’s implementation; the table of lattice characters that maps a reduced cell to Bravais lattices and centrings follows International Tables for Crystallography Vol. A, Table 9.2.5.1.</p> <p><strong>Grosse-Kunstleve, Sauter &amp; Adams’s numerically stable cell reduction</strong> - the magnitude-scaled tolerance that decides the sign of a structurally-zero scalar product, and with it the Niggli type a reduced cell is presented in. R. W. Grosse-Kunstleve, N. K. Sauter and P. D. Adams, “Numerically stable algorithms for the computation of reduced unit cells” (2004), Acta Cryst. A60, 1-6 <a class="reference external" href="https://doi.org/10.1107/S010876730302186X">doi:10.1107/S010876730302186X</a>.</p> <p><strong>Le Page’s metric-symmetry search</strong> - the obliquity of each of the 81 candidate two-folds of a reduced cell, which is what tells a run that its lattice metric hosts more rotational symmetry than the group its intensities supported, and the derivation of the conventional axes from that rotation group, which is what the run then offers to the space-group search as a second lattice candidate. The two-fold search is used through GEMMI’s implementation of it. Y. Le Page, “The derivation of the axes of the conventional unit cell from the dimensions of the Buerger-reduced cell” (1982), J. Appl. Cryst. 15, 255-259 <a class="reference external" href="https://doi.org/10.1107/S0021889882011959">doi:10.1107/S0021889882011959</a>.</p> </section> <section id=integration-and-rotation-geometry > <h3 id=integration-and-rotation-geometry >Integration and rotation geometry<a class=headerlink href="#integration-and-rotation-geometry" title="Link to this heading"></a></h3> <p><strong><a class="reference external" href="https://xds.mr.mpg.de/">XDS</a></strong> — rotation geometry and notation, the reciprocal Lorentz and partiality treatment, the maximum-likelihood mosaicity estimate, the <code class="docutils literal notranslate"><span class=pre >MINPK</span></code> criterion for rejecting a reflection whose predicted profile is not cleanly its own, the intensity-based test for a centred lattice, the recognition of shaded detector regions by comparing a pixel’s background against the background at its own resolution (<code class="docutils literal notranslate"><span class=pre >DEFPIX</span></code>), and the scaling correction surfaces indexed by image number and detector region. W. Kabsch, “XDS” (2010), Acta Cryst. D66, 125-132 <a class="reference external" href="https://doi.org/10.1107/S0907444909047337">doi:10.1107/S0907444909047337</a>; W. Kabsch, “Integration, scaling, space-group assignment and post-refinement” (2010), Acta Cryst. D66, 133-144 <a class="reference external" href="https://doi.org/10.1107/S0907444909047374">doi:10.1107/S0907444909047374</a>.</p> <p><strong>Profile fitting</strong> with reweighted, de-biased variances is the Kabsch/Otwinowski iteration, from the second XDS paper above and from Z. Otwinowski and W. Minor, “Processing of X-ray diffraction data collected in oscillation mode” (1997), Methods Enzymol. 276, 307-326 <a class="reference external" href="https://doi.org/10.1016/S0076-6879%2897%2976066-X">doi:10.1016/S0076-6879(97)76066-X</a>.</p> <p><strong>The two-dimensional integration architecture</strong> — integrating each image in the detector plane and only afterwards assembling a reflection’s partials into a full across images, as against three-dimensional profile fitting through the image stack — is the architecture of DENZO/SCALEPACK and MOSFLM, and it is the one Rugnux’s rotation pipeline follows (per-image profile-fitted integration, then partials combined into fulls; §9 and §10.6 of the <a class="reference internal" href=CPU_DATA_ANALYSIS.html ><span class="std std-doc">data-analysis reference</span></a>). The Otwinowski &amp; Minor citation above and the MOSFLM citations below carry the credit for the paradigm as well as for the specifics taken from each.</p> </section> <section id=space-group-twinning-and-pseudo-symmetry > <h3 id=space-group-twinning-and-pseudo-symmetry >Space group, twinning and pseudo-symmetry<a class=headerlink href="#space-group-twinning-and-pseudo-symmetry" title="Link to this heading"></a></h3> <p><strong><a class="reference external" href="https://www.ccp4.ac.uk/">POINTLESS</a></strong> (CCP4) — the space-group search. Stage A scores each candidate rotation operator by the correlation of I(h) with I(Rh) on <strong>resolution-normalised</strong> intensities (E²), as POINTLESS does — both arms of a symmetry pair sit at the same |s|, so on raw intensities the resolution fall-off is variance shared between them and lifts a false operator’s correlation as much as a true one’s; the screw-axis test scores a predicted-absent class against the rest of its own axial row rather than against a global mean or a fixed cut, and lets confidence fall away with the number of axial reflections instead of refusing below a count; the glide-plane test is that same test applied to a zone, scoring the extinguished class against the rest of its own plane, as POINTLESS scores zonal absences. P. Evans, “Scaling and assessment of data quality” (2006), Acta Cryst. D62, 72-82 <a class="reference external" href="https://doi.org/10.1107/S0907444905036693">doi:10.1107/S0907444905036693</a>; P. R. Evans, “An introduction to data reduction: space-group determination, scaling and intensity statistics” (2011), Acta Cryst. D67, 282-292 <a class="reference external" href="https://doi.org/10.1107/S090744491003982X">doi:10.1107/S090744491003982X</a>; P. R. Evans and G. N. Murshudov, “How good are my data and what is the resolution?” (2013), Acta Cryst. D69, 1204-1214 <a class="reference external" href="https://doi.org/10.1107/S0907444913000061">doi:10.1107/S0907444913000061</a>; J. Agirre, M. Atanasova, H. Bagdonas et al., “The CCP4 suite: integrative software for macromolecular crystallography” (2023), Acta Cryst. D79, 449-461 <a class="reference external" href="https://doi.org/10.1107/S2059798323003595">doi:10.1107/S2059798323003595</a>.</p> <p><strong>Baur and Kassner</strong> — the convention for which of two absence-equivalent glide groups the space-group search writes (P2/c over Pc, C2/c over Cc): the centrosymmetric one, because a missed inversion centre is the common error among published small-molecule space-group assignments. W. H. Baur and D. Kassner, “The perils of Cc: comparing the frequencies of falsely assigned space groups with their general population” (1992), Acta Cryst. B48, 356-369 <a class="reference external" href="https://doi.org/10.1107/S0108768191014726">doi:10.1107/S0108768191014726</a>.</p> <p><strong>The centre-of-symmetry statistics</strong> are Wilson’s and Howells, Phillips &amp; Rogers’s: the intensity distributions of acentric and centric structures and the cumulative N(z) test built on them, read here on the general reflections of the Laue class beside &lt;|E^2-1|&gt; and Padilla and Yeates’s L test (taken at its centric value, 2/pi). A. J. C. Wilson, “The probability distribution of X-ray intensities” (1949), Acta Cryst. 2, 318-321 <a class="reference external" href="https://doi.org/10.1107/S0365110X49000813">doi:10.1107/S0365110X49000813</a>; E. R. Howells, D. C. Phillips and D. Rogers, “The probability distribution of X-ray intensities. II. Experimental investigation and the X-ray detection of centres of symmetry” (1950), Acta Cryst. 3, 210-214 <a class="reference external" href="https://doi.org/10.1107/S0365110X50000513">doi:10.1107/S0365110X50000513</a>.</p> <p><strong>The twinning L test</strong> is Padilla and Yeates’s: pairing each acentric reflection with a symmetry-independent neighbour and reading the first and second moments of L = (I1−I2)/(I1+I2) against their untwinned and perfect-twin values. J. E. Padilla and T. O. Yeates, “A statistic for local intensity differences: robustness to anisotropy and pseudo-centering and utility for detecting twinning” (2003), Acta Cryst. D59, 1124-1130 <a class="reference external" href="https://doi.org/10.1107/S0907444903007947">doi:10.1107/S0907444903007947</a>. Their title claims robustness to pseudo-centering, and this program’s partner steps deliver it: a step of 2 along an axis preserves the class of a half-integer pseudo-translation, which is what a pseudo-centering is. That robustness does not extend to a pseudo-translation which is not half-integer, and the partner steps are restricted when one is detected - see the translational-pseudo-symmetry note below.</p> <p><strong>Translational pseudo-symmetry</strong> is detected from the native Patterson computed from the merged intensities, and the interpretation of an off-origin peak as a pseudo-translation between copies of the contents of the asymmetric unit - together with the modulation it puts on the intensities, which is the second half of the test here - is Read, Adams and McCoy’s. Their fitted peak-height table is not used: the peak is scored against a per-dataset within-shell permutation null instead, because the noise floor of the statistic depends strongly on how many reflections a dataset has. The same modulation is what the axial systematic-absence test scores against, so that a reflection class a pseudo-translation merely suppresses is not read as extinct and does not buy a screw axis; the estimate of its depth there is our own, measured per axial row from the merged intensities rather than from the Patterson vector. R. J. Read, P. D. Adams and A. J. McCoy, “Intensity statistics in the presence of translational noncrystallographic symmetry” (2013), Acta Cryst. D69, 176-183 <a class="reference external" href="https://doi.org/10.1107/S0907444912045374">doi:10.1107/S0907444912045374</a>.</p> </section> <section id=scaling-merging-and-data-quality > <h3 id=scaling-merging-and-data-quality >Scaling, merging and data quality<a class=headerlink href="#scaling-merging-and-data-quality" title="Link to this heading"></a></h3> <p><strong><a class="reference external" href="https://dials.github.io/">DIALS</a></strong> — the resolution cutoff from the CC1/2 fall-off, per-observation outlier rejection at merge, the scaling error model, and the treatment of a reflection whose background is contaminated. Its published behaviour, and in places its source, settled several choices here. G. Winter, D. G. Waterman, J. M. Parkhurst et al., “DIALS: implementation and evaluation of a new integration package” (2018), Acta Cryst. D74, 85-97 <a class="reference external" href="https://doi.org/10.1107/S2059798317017235">doi:10.1107/S2059798317017235</a>; D. G. Waterman, G. Winter, R. J. Gildea et al., “Diffraction-geometry refinement in the DIALS framework” (2016), Acta Cryst. D72, 558-575 <a class="reference external" href="https://doi.org/10.1107/S2059798316002187">doi:10.1107/S2059798316002187</a>; J. Beilsten-Edmands, G. Winter, R. Gildea et al., “Scaling diffraction data in the DIALS software package: algorithms and new approaches for multi-crystal scaling” (2020), Acta Cryst. D76, 385-399 <a class="reference external" href="https://doi.org/10.1107/S2059798320003198">doi:10.1107/S2059798320003198</a>; J. M. Parkhurst, G. Winter, D. G. Waterman et al., “Robust background modelling in DIALS” (2016), J. Appl. Cryst. 49, 1912-1921 <a class="reference external" href="https://doi.org/10.1107/S1600576716013595">doi:10.1107/S1600576716013595</a>.</p> <p><strong>Wilson outlier test</strong> — judging an observation that has no symmetry mates against the acentric and centric intensity distributions of its resolution shell, with the symmetry enhancement factor, is Wilson’s statistics; rejecting only observations that are also significant, and keeping a reflection whose observations are all large, follows AIMLESS’s EMAX test. A. J. C. Wilson, “The probability distribution of X-ray intensities” (1949), Acta Cryst. 2, 318-321 <a class="reference external" href="https://doi.org/10.1107/S0365110X49000813">doi:10.1107/S0365110X49000813</a>; P. Evans, “Scaling and assessment of data quality” (2006), Acta Cryst. D62, 72-82 <a class="reference external" href="https://doi.org/10.1107/S0907444905036693">doi:10.1107/S0907444905036693</a>.</p> <p><strong>Amplitudes from intensities</strong> — the posterior-mean amplitude of each merged intensity under the acentric and centric Wilson priors is French and Wilson’s; giving no amplitude to an intensity more than 3.7 sigma below zero, and leaving such intensities out of the prior, follows CCP4’s <a class="reference external" href="https://www.ccp4.ac.uk/">ctruncate</a> (C. Ballard and N. Stein). So does scaling each reflection’s Wilson prior by the anisotropy tensor along its direction, which ctruncate has done by default since its version 1.7 (“use anisotropy in prior for truncate procedure”); rugnux uses its own tensor for it (see Diffraction anisotropy below). S. French and K. Wilson, “On the treatment of negative intensity observations” (1978), Acta Cryst. A34, 517-525 <a class="reference external" href="https://doi.org/10.1107/S0567739478001114">doi:10.1107/S0567739478001114</a>; ctruncate is cited through the CCP4 suite: M. D. Winn, C. C. Ballard, K. D. Cowtan et al., “Overview of the CCP4 suite and current developments” (2011), Acta Cryst. D67, 235-242 <a class="reference external" href="https://doi.org/10.1107/S0907444910045749">doi:10.1107/S0907444910045749</a>.</p> <p><strong>Absorption as spherical harmonics</strong> — describing an empirical absorption correction as a series of real spherical harmonics of the beam directions in the crystal frame is Blessing’s; its use as a restrained scaling surface of the diffracted-beam direction follows SCALA and AIMLESS. R. H. Blessing, “An empirical correction for absorption anisotropy” (1995), Acta Cryst. A51, 33-38 <a class="reference external" href="https://doi.org/10.1107/S0108767394005726">doi:10.1107/S0108767394005726</a>; P. Evans, “Scaling and assessment of data quality” (2006), Acta Cryst. D62, 72-82 <a class="reference external" href="https://doi.org/10.1107/S0907444905036693">doi:10.1107/S0907444905036693</a>.</p> <p><strong>Diffraction anisotropy</strong> — the description of the overall fall-off by a single anisotropic displacement tensor, its symmetry constraints, and the fact that only its deviatoric part is determined (the isotropic part being degenerate with the overall scale) are Sheriff and Hendrickson’s. The estimator fits that tensor to the observed intensity distribution, taking sigma(I) into account, in the sense of Popov and Bourenkov. The directional diffraction limits - &lt;I/sigma(I)&gt; in a cone about each principal direction, and the reporting of the anisotropic deltaB as the range of the principal components - follow AIMLESS. Rugnux reports these; it corrects no intensity and removes no reflection on a directional criterion. S. Sheriff and W. A. Hendrickson, “Description of overall anisotropy in diffraction from macromolecular crystals” (1987), Acta Cryst. A43, 118-121 <a class="reference external" href="https://doi.org/10.1107/S010876738709977X">doi:10.1107/S010876738709977X</a>; A. N. Popov and G. P. Bourenkov, “Choice of data-collection parameters based on statistic modelling” (2003), Acta Cryst. D59, 1145-1153 <a class="reference external" href="https://doi.org/10.1107/S0907444903008163">doi:10.1107/S0907444903008163</a>; P. R. Evans and G. N. Murshudov, “How good are my data and what is the resolution?” (2013), Acta Cryst. D69, 1204-1214 <a class="reference external" href="https://doi.org/10.1107/S0907444913000061">doi:10.1107/S0907444913000061</a>.</p> <p><strong>Data-quality statistics</strong> follow the established conventions rather than any one program: R_meas and R_pim, CC1/2 and CC*, the per-shell CC(model, data) between F^2_calc and F^2_obs, and the reporting of I/sigma(I). K. Diederichs and P. A. Karplus, “Improved R-factors for diffraction data analysis in macromolecular crystallography” (1997), Nat. Struct. Biol. 4, 269-275 <a class="reference external" href="https://doi.org/10.1038/nsb0497-269">doi:10.1038/nsb0497-269</a>; P. A. Karplus and K. Diederichs, “Linking crystallographic model and data quality” (2012), Science 336, 1030-1033 <a class="reference external" href="https://doi.org/10.1126/science.1218231">doi:10.1126/science.1218231</a>; K. Diederichs and P. A. Karplus, “Better models by discarding data?” (2013), Acta Cryst. D69, 1215-1222 <a class="reference external" href="https://doi.org/10.1107/S0907444913001121">doi:10.1107/S0907444913001121</a>.</p> <p><strong>The Whittaker smoother</strong> — the per-frame scale of the rotation fulls is a penalised least-squares curve (a second-difference penalty, the smoothness chosen by cross-validation) in the form P. H. C. Eilers gave Whittaker’s graduation: P. H. C. Eilers, “A perfect smoother” (2003), Anal. Chem. 75, 3631-3636 <a class="reference external" href="https://doi.org/10.1021/ac034173t">doi:10.1021/ac034173t</a>; E. T. Whittaker, “On a new method of graduation” (1923), Proc. Edinburgh Math. Soc. 41, 63-75 <a class="reference external" href="https://doi.org/10.1017/S0013091500077853">doi:10.1017/S0013091500077853</a>.</p> <p><strong>Fisher’s z-transformation</strong> — the cross-validation of the scaling correction surfaces averages the change of the half-set CC1/2 over resolution shells on atanh(CC), so that the shells near CC = 1, where a multiplicative error shows, are not outweighed by the noise of the shells without signal. R. A. Fisher, “Frequency distribution of the values of the correlation coefficient in samples from an indefinitely large population” (1915), Biometrika 10, 507-521 <a class="reference external" href="https://doi.org/10.2307/2331838">doi:10.2307/2331838</a>.</p> <p><strong>The frame disposition</strong> - which stretches of a rotation sweep are kept, carried at reduced weight or dropped from the merge - decides every exclusion on delta-CC1/2, the change in the overall CC1/2 when a group of images is left out, measured in the sigma-tau form so that no random half-dataset split is involved. The statistic, the Fisher transformation used to compare it across CC1/2 values, its standard error going as the inverse square root of the reflection count, and the rejection discipline (never remove a group whose delta-CC1/2 is positive or near zero; remove a little, re-form the reference and repeat) are all taken from its authors, whose XDSCC12 is the reference implementation. G. Assmann, W. Brehm and K. Diederichs, “Identification of rogue datasets in serial crystallography” (2016), J. Appl. Cryst. 49, 1021-1028 <a class="reference external" href="https://doi.org/10.1107/S1600576716005471">doi:10.1107/S1600576716005471</a>; G. M. Assmann, M. Wang and K. Diederichs, “Making a difference in multi-data-set crystallography: simple and deterministic data-scaling/selection methods” (2020), Acta Cryst. D76, 636-652 <a class="reference external" href="https://doi.org/10.1107/S2059798320006348">doi:10.1107/S2059798320006348</a>. That the same statistic belongs at scaling, applied to groups of images rather than to whole datasets, follows <a class="reference external" href="https://dials.github.io/">DIALS</a> (<code class="docutils literal notranslate"><span class=pre >dials.scale</span></code>, delta-CC1/2 image-group filtering): J. Beilsten-Edmands, G. Winter, R. Gildea et al., “Scaling diffraction data in the DIALS software package: algorithms and new approaches for multi-crystal scaling” (2020), Acta Cryst. D76, 385-399 <a class="reference external" href="https://doi.org/10.1107/S2059798320003198">doi:10.1107/S2059798320003198</a>.</p> <p><strong>Uncertainty conventions</strong> follow the IUCr Commission on Crystallographic Nomenclature: D. Schwarzenbach, S. C. Abrahams, H. D. Flack et al., “Statistical descriptors in crystallography: Report of the IUCr Subcommittee on Statistical Descriptors” (1989), Acta Cryst. A45, 63-75 <a class="reference external" href="https://doi.org/10.1107/S0108767388009596">doi:10.1107/S0108767388009596</a>; D. Schwarzenbach, S. C. Abrahams, H. D. Flack, E. Prince and A. J. C. Wilson, “Statistical descriptors in crystallography. II. Report of a Working Group on Expression of Uncertainty in Measurement” (1995), Acta Cryst. A51, 565-569 <a class="reference external" href="https://doi.org/10.1107/S0108767395002340">doi:10.1107/S0108767395002340</a>.</p> </section> <section id=physical-corrections-and-calibration > <h3 id=physical-corrections-and-calibration >Physical corrections and calibration<a class=headerlink href="#physical-corrections-and-calibration" title="Link to this heading"></a></h3> <p><strong>Sensor absorption at oblique incidence, and the flight path</strong> — the angle-dependent quantum efficiency of a flat sensor, the radial parallax variance that comes from the same integral, and the attenuation of a reflection in the air between the sample and its pixel are all the Beer-Lambert law taken along a ray that crosses t/cos(alpha) of sensor, or D/cos(alpha) of air, and converts at a random depth. The attenuation coefficients, for silicon, CdTe, dry air and helium alike, are the NIST tabulation: J. H. Hubbell and S. M. Seltzer, “Tables of X-Ray Mass Attenuation Coefficients and Mass Energy-Absorption Coefficients from 1 keV to 20 MeV for Elements Z = 1 to 92 and 48 Additional Substances of Dosimetric Interest” (1995, data updated 2004), NIST Standard Reference Database 126 <a class="reference external" href="https://doi.org/10.18434/T4D01F">doi:10.18434/T4D01F</a>.</p> <p><strong>Polarization correction</strong> — the azimuthal polarization factor applied to the azimuthally integrated profile, to the integrated Bragg intensities and to the ring background the beam-stop shadow test compares a pixel against is the one derived for a partially polarized synchrotron source by R. Kahn, R. Fourme, A. Gadet, J. Janin, C. Dumas and D. Andre, “Macromolecular crystallography with synchrotron radiation: photographic data collection and polarization correction” (1982), J. Appl. Cryst. 15, 330-337 <a class="reference external" href="https://doi.org/10.1107/S0021889882012060">doi:10.1107/S0021889882012060</a>.</p> <p><strong>Hexagonal-ice ring positions</strong> — the eleven ring <span class="math notranslate nohighlight">\(d\)</span> spacings from 3.895 to 1.522 Å that the ice-ring score, the ice-ring flagging and the ice calibrant are all built on are taken from the measurements of Moreau and co-workers, not enumerated from a cell. D. W. Moreau, H. Atakisi and R. E. Thorne, “Ice in biomolecular cryocrystallography” (2021), Acta Cryst. D77, 540-554 <a class="reference external" href="https://doi.org/10.1107/S2059798321001170">doi:10.1107/S2059798321001170</a>.</p> <p>That list ends at 1.522 Å by its own scope, so the eight bands below it are calculated here rather than taken from anyone: ice Ih structure factors on the oxygen sublattice, kept where they reach 3% of the strongest line, which reproduces the eleven measured positions exactly. The lattice constants are Röttger and co-workers’. K. Röttger, A. Endriss, J. Ihringer, S. Doyle and W. F. Kuhs, “Lattice constants and thermal expansion of H2O and D2O ice Ih between 10 and 265 K” (1994), Acta Cryst. B50, 644-648 <a class="reference external" href="https://doi.org/10.1107/S0108768194004933">doi:10.1107/S0108768194004933</a>.</p> </section> <section id=model-based-analysis-and-maps > <h3 id=model-based-analysis-and-maps >Model-based analysis and maps<a class=headerlink href="#model-based-analysis-and-maps" title="Link to this heading"></a></h3> <p><strong>Bulk-solvent correction and overall scaling</strong> — the model’s structure factors are put on the observed scale with an overall factor, an anisotropic B and a flat bulk-solvent term, the flat-mask model of A. Fokine and A. Urzhumtsev, “Flat bulk-solvent model: obtaining optimal parameters” (2002), Acta Cryst. D58, 1387-1392 <a class="reference external" href="https://doi.org/10.1107/S0907444902010284">doi:10.1107/S0907444902010284</a>, which is also the source of the starting values and of the range those two parameters are physically meaningful over. The procedure that fits them — a grid search over that range for the solvent pair, with the overall scale and the anisotropic B refitted at every grid point — follows P. V. Afonine, R. W. Grosse-Kunstleve and P. D. Adams, “A robust bulk-solvent correction and anisotropic scaling procedure” (2005), Acta Cryst. D61, 850-855 <a class="reference external" href="https://doi.org/10.1107/S0907444905007894">doi:10.1107/S0907444905007894</a>. The fit is unweighted, as in both that procedure and REFMAC5: G. N. Murshudov, P. Skubak, A. A. Lebedev, N. S. Pannu, R. A. Steiner, R. A. Nicholls, M. D. Winn, F. Long and A. A. Vagin, “REFMAC5 for the refinement of macromolecular crystal structures” (2011), Acta Cryst. D67, 355-367 <a class="reference external" href="https://doi.org/10.1107/S0907444911001314">doi:10.1107/S0907444911001314</a>.</p> <p><strong>sigma_A map coefficients</strong> — the maps written by <code class="docutils literal notranslate"><span class=pre >--model</span></code> are weighted by a maximum-likelihood sigma_A estimated per resolution shell, giving 2mFo-DFc and mFo-DFc rather than 2Fo-Fc and Fo-Fc. What is taken is the formalism itself: the Rice and Woolfson likelihoods of |Fo| given |Fc| and sigma_A, the figure of merit m and the scale D that follow from it, and the result that the bias-corrected coefficient is 2mFo-DFc for an acentric reflection and mFo for a centric one. R. J. Read, “Improved Fourier coefficients for maps using phases from partial structures with errors” (1986), Acta Cryst. A42, 140-149 <a class="reference external" href="https://doi.org/10.1107/S0108767386099622">doi:10.1107/S0108767386099622</a>.</p> <p><strong><a class="reference external" href="https://doi.org/10.1107/S0021889811041768">ANODE</a></strong> — reading the anomalous difference map at the atoms of a supplied model and reporting the strongest sites by name, instead of searching the map for blobs. The map itself is the textbook anomalous difference Fourier; what is taken from ANODE is that reading: A. Thorn and G. M. Sheldrick, “ANODE: anomalous and heavy-atom density calculation” (2011), J. Appl. Cryst. 44, 1285-1287 <a class="reference external" href="https://doi.org/10.1107/S0021889811041768">doi:10.1107/S0021889811041768</a>.</p> <p><strong>Uniform random rotations</strong> — the null a supplied model is scored against re-orients that model at random about its own centroid, and the rotations are drawn uniformly from SO(3) through a uniform random unit quaternion. K. Shoemake, “Uniform Random Rotations”, in <em>Graphics Gems III</em>, ed. D. Kirk, Academic Press (1992), 124-132 (no DOI).</p> <p><strong>Variable projection</strong> — the rigid-body placement of a supplied model re-fits the overall scale at every step, and its Jacobian folds that re-fit in by projecting the scale’s own derivatives out of the placement’s, in Kaufman’s simplified form of Golub and Pereyra’s derivative of the reduced problem. G. H. Golub and V. Pereyra, “The Differentiation of Pseudo-Inverses and Nonlinear Least Squares Problems Whose Variables Separate” (1973), SIAM J. Numer. Anal. 10, 413-432 <a class="reference external" href="https://doi.org/10.1137/0710036">doi:10.1137/0710036</a>. L. Kaufman, “A variable projection method for solving separable nonlinear least squares problems” (1975), BIT 15, 49-57 <a class="reference external" href="https://doi.org/10.1007/BF01932995">doi:10.1007/BF01932995</a>.</p> </section> </section> <section id=software-and-computing-methods > <h2 id=software-and-computing-methods >Software and computing methods<a class=headerlink href="#software-and-computing-methods" title="Link to this heading"></a></h2> <p>Decoding bitshuffle+LZ4 images on the GPU, rather than decompressing them on the host and uploading the result, follows Jon Wright (ESRF): “Experiences with GPU decompression for bitshuffle + LZ4 data”, HDF5 User Group meeting (2021), and <a class="reference external" href="https://github.com/jonwright/bslz4decoders">bslz4decoders</a>. The CUDA kernels in Jungfraujoch are its own, but the approach is his.</p> <p>Removing the small islands of solvent from the bulk-solvent mask on the GPU labels the connected components with a parallel union-find, following D. P. Playne and K. Hawick, “A New Algorithm for Parallel Connected-Component Labelling on GPUs” (2018), IEEE Trans. Parallel Distrib. Syst. 29, 1217-1230 <a class="reference external" href="https://doi.org/10.1109/TPDS.2018.2799216">doi:10.1109/TPDS.2018.2799216</a>.</p> <p>This software uses the Viridis, Magma and Inferno colormaps from Matplotlib under its BSD-compatible license. J. D. Hunter, “Matplotlib: A 2D graphics environment” (2007), Comput. Sci. Eng. 9, 90-95 <a class="reference external" href="https://doi.org/10.1109/MCSE.2007.55">doi:10.1109/MCSE.2007.55</a>.</p> </section> <section id=file-formats-read-from-a-published-specification > <h2 id=file-formats-read-from-a-published-specification >File formats read from a published specification<a class=headerlink href="#file-formats-read-from-a-published-specification" title="Link to this heading"></a></h2> <p><strong>CBF / imgCIF</strong> - the native miniCBF reader implements the <code class="docutils literal notranslate"><span class=pre >x-CBF_BYTE_OFFSET</span></code> compression scheme and reads the imgCIF <code class="docutils literal notranslate"><span class=pre >_axis</span></code> table (the laboratory directions of the image’s fast and slow pixel directions, of the goniometer axes and of a 2theta arm) from the specification alone; no CBFlib or other CBF code is used, so there is no licence obligation, only this credit. H. J. Bernstein and A. P. Hammersley, “Specification of the Crystallographic Binary File (CBF/imgCIF)” (2006), International Tables for Crystallography Vol. G, 37-43 <a class="reference external" href="https://doi.org/10.1107/97809553602060000729">doi:10.1107/97809553602060000729</a>; A. P. Hammersley, H. J. Bernstein and J. D. Westbrook, “Image dictionary (imgCIF)” (2006), International Tables for Crystallography Vol. G, 444-458 <a class="reference external" href="https://doi.org/10.1107/97809553602060000746">doi:10.1107/97809553602060000746</a>.</p> <p><strong>d*TREK SMV</strong> - the SMV reader reads the d*TREK header vocabulary written by Rigaku’s CrystalClear (Saturn and R-AXIS detectors: detector and spatial-distortion vectors, detector circles, 2theta arm, encoded overflows) from the headers themselves, interpreting the detector vectors as dxtbx does for these detectors; no d*TREK or dxtbx code is used. J. W. Pflugrath, “The finer things in X-ray diffraction data collection” (1999), Acta Cryst. D55, 1718-1725 <a class="reference external" href="https://doi.org/10.1107/S090744499900935X">doi:10.1107/S090744499900935X</a>; <a class="reference external" href="https://github.com/cctbx/dxtbx">dxtbx</a>: J. M. Parkhurst, A. S. Brewster, L. Fuentes-Montero, D. G. Waterman et al., “dxtbx: the diffraction experiment toolbox” (2014), J. Appl. Cryst. 47, 1459-1465 <a class="reference external" href="https://doi.org/10.1107/S1600576714011996">doi:10.1107/S1600576714011996</a>.</p> </section> <section id=public-diffraction-data-used-for-testing > <h2 id=public-diffraction-data-used-for-testing >Public diffraction data used for testing<a class=headerlink href="#public-diffraction-data-used-for-testing" title="Link to this heading"></a></h2> <p>In addition to in-house datasets collected at SLS 2.0, Jungfraujoch is tested against public diffraction data collected on other people’s beamlines, on detectors and in file formats we do not produce ourselves - most of it at other facilities, a few sets at the Swiss Light Source but not by this system. That data was collected and published by other people. Every dataset used, the DOI to cite for it, and the deposition it belongs to are listed in <a class="reference internal" href=EXTERNAL_TEST_DATA.html ><span class="std std-doc">EXTERNAL_TEST_DATA</span></a>; we thank the depositors, and the repositories that make the data findable and citable.</p> <p><strong><a class="reference external" href="https://proteindiffraction.org/">IRRMC</a></strong>, the Integrated Resource for Reproducibility in Macromolecular Crystallography (Minor lab, University of Virginia), is the source of most of them. IRRMC releases its data under CC0 and asks that the DOI of the dataset be cited. M. Grabowski, K. M. Langner, M. Cymborowski, P. J. Porebski, P. Sroka, H. Zheng, D. R. Cooper, M. D. Zimmerman, M.-A. Elsliger, S. K. Burley and W. Minor, “A public database of macromolecular diffraction experiments” (2016), Acta Cryst. D72, 1181-1193 <a class="reference external" href="https://doi.org/10.1107/S2059798316014716">doi:10.1107/S2059798316014716</a>; M. Grabowski, M. Cymborowski, P. J. Porebski, T. Osinski, I. G. Shabalin, D. R. Cooper and W. Minor, “The Integrated Resource for Reproducibility in Macromolecular Crystallography: Experiences of the first four years” (2019), Struct. Dyn. 6, 064301 <a class="reference external" href="https://doi.org/10.1063/1.5128672">doi:10.1063/1.5128672</a>.</p> <p><strong><a class="reference external" href="https://data.sbgrid.org/">SBGrid Data Bank</a></strong>, the structural biology community’s data publication service (SBGrid Consortium, Harvard Medical School). P. A. Meyer, S. Socias, J. Key, E. Ransey, E. C. Tjon, A. Buschiazzo et al., “Data publication with the structural biology data grid supports live analysis” (2016), Nat. Commun. 7, 10882 <a class="reference external" href="https://doi.org/10.1038/ncomms10882">doi:10.1038/ncomms10882</a>.</p> <p><strong><a class="reference external" href="https://zenodo.org/">Zenodo</a></strong>, CERN’s open repository, hosts datasets deposited there directly by the groups that collected them. European Organization for Nuclear Research and OpenAIRE, “Zenodo” (2013), CERN <a class="reference external" href="https://doi.org/10.25495/7GXK-RD71">doi:10.25495/7GXK-RD71</a>. Some of those deposits are described in IUCrData Raw Data Letters; the letters are cited on the <a class="reference internal" href=EXTERNAL_TEST_DATA.html ><span class="std std-doc">EXTERNAL_TEST_DATA</span></a> page, beside the datasets they describe.</p> <p><strong><a class="reference external" href="https://mxrdr.icm.edu.pl/">MXRDR</a></strong>, the Macromolecular Xtallography Raw Data Repository (ICM, University of Warsaw), releases its data under CC0 and asks that the DOI of the dataset be cited.</p> <p><strong><a class="reference external" href="https://xrda.pdbj.org/">XRDa</a></strong>, the Xtal Raw Data Archive (Protein Data Bank Japan), which publishes raw diffraction images - X-ray, electron and neutron - and mints a DOI for each; it asks that the DOI of the dataset be cited. It has no canonical citation paper.</p> <p><strong>The <a class="reference external" href="https://data.esrf.fr/">ESRF data portal</a></strong>, through which the European Synchrotron publishes raw data under its data policy (CC BY 4.0, with the dataset DOI to be cited). R. Dimper, A. Götz, A. De Maria, V. A. Solé, M. Chaillet and B. Lebayle, “ESRF Data Policy, Storage, and Services” (2019), Synchrotron Rad. News 32, 7-12 <a class="reference external" href="https://doi.org/10.1080/08940886.2019.1608119">doi:10.1080/08940886.2019.1608119</a>.</p> <p><strong>The <a class="reference external" href="https://researchdata.keele.ac.uk/">Keele University research data repository</a></strong> and <strong><a class="reference external" href="https://espace.library.uq.edu.au/">UQ eSpace</a></strong> (The University of Queensland), which host the raw images of datasets deposited there by the groups that collected them; the dataset DOIs are cited on the <a class="reference internal" href=EXTERNAL_TEST_DATA.html ><span class="std std-doc">EXTERNAL_TEST_DATA</span></a> page.</p> <p>The beamline, resolution, space group and unit cell quoted for each dataset are the values deposited with the corresponding PDB entry, read from the RCSB PDB data API. H. M. Berman, J. Westbrook, Z. Feng, G. Gilliland, T. N. Bhat, H. Weissig, I. N. Shindyalov and P. E. Bourne, “The Protein Data Bank” (2000), Nucleic Acids Res. 28, 235-242 <a class="reference external" href="https://doi.org/10.1093/nar/28.1.235">doi:10.1093/nar/28.1.235</a>.</p> </section> <section id=generative-ai-usage-declaration > <h2 id=generative-ai-usage-declaration >Generative AI usage declaration<a class=headerlink href="#generative-ai-usage-declaration" title="Link to this heading"></a></h2> <p>Large language models were used extensively in developing this code. Jungfraujoch development was supported with JetBrains AI (mostly GPT models) to refactor and verify particular code fragments. Rugnux was developed with the assistance of Claude Code (mostly the Opus model). This documentation was written with the assistance of Claude Opus and Fable models.</p> </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=TESTS.html title=Tests 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> Tests </span> </div> </a> <a href=EXTERNAL_TEST_DATA.html title="External test data" 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> External test data </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>