Files
Jungfraujoch/docs/landing/index.html
T
leonarski_f f960bd7a80 Docs landing page: a real diffraction frame in the hero, and the command with a model
The generated spot-and-ring drawing is replaced by one 0.2 deg rotation frame of the in-house
lysozyme standard (EIGER2 16M, SLS X10SA): Bragg spots on their lunes, the beam stop and its arm,
the module gaps. docs/landing/hero_frame.py makes the 920 px WebP (67 KB) from the master
file - crop about the beam centre, log tone map from the frame's own background, block mean+max
downsampling - and is run by hand; the WebP is committed and copied by the landing-page step.
The dark theme shows it inverted through a CSS filter.

The hero's command line drops its explanatory sentence and gains the second form,
rugnux <diffraction image file> <CIF/PDB model file>.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu
(cherry picked from commit ff26000bfe7446cb4fda739c3b72596f8a8b7047)
2026-10-26 10:53:25 +01:00

154 lines
9.0 KiB
HTML

<!doctype html>
<!-- The front page of the documentation site. docs/_ext/jfjoch_downloads.py renders this template
at the end of a Sphinx build (the {{...}} placeholders) into the output root as index.html,
next to the Sphinx pages, so it is served wherever the documentation is: Read the Docs, the
gitea-pages branch and the broker's frontend bundle. The Sphinx home page is documentation.html. -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Jungfraujoch and Rugnux: X-ray diffraction data, from the detector to the merged reflections</title>
<meta name="description" content="Open-source software from the Paul Scherrer Institute: Rugnux processes macromolecular diffraction data with one command, the Jungfraujoch Viewer shows it, and Jungfraujoch acquires it from JUNGFRAU and EIGER detectors at full speed.">
<link rel="icon" href="_static/jfjoch.png">
<link rel="stylesheet" href="landing.css">
<script>
// Apply the saved theme before the first paint, so a dark page does not flash light.
try { var t = localStorage.getItem("jfj-theme"); if (t) document.documentElement.setAttribute("data-theme", t); } catch (e) {}
</script>
</head>
<body>
<header class="top">
<a class="brand" href="index.html"><img src="_static/jfjoch.png" alt="" width="36" height="33"><span>Jungfraujoch</span></a>
<nav class="top__nav" aria-label="Sections">
<a href="#programs">Programs</a>
<a href="#download">Download</a>
<a href="documentation.html">Documentation</a>
<a href="https://gitea.psi.ch/mx/jungfraujoch">Source</a>
</nav>
<button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light / dark">
<svg class="theme-toggle__sun" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><circle cx="12" cy="12" r="4.5" fill="none" stroke="currentColor" stroke-width="2"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3M4.9 4.9l2.1 2.1M17 17l2.1 2.1M4.9 19.1 7 17M17 7l2.1-2.1" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
<svg class="theme-toggle__moon" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path d="M20 15.5A8.5 8.5 0 0 1 8.5 4a8.5 8.5 0 1 0 11.5 11.5z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg>
</button>
</header>
<main>
<section class="hero">
<figure class="hero__art">
<img src="hero_frame.webp" width="920" height="920" alt="A diffraction image: rows of Bragg spots, the beam stop's shadow and the gaps between detector modules"
title="Lysozyme, one 0.2&deg; rotation frame on an EIGER2 16M, SLS beamline X10SA, Paul Scherrer Institute">
<figcaption>Lysozyme &middot; one 0.2&deg; frame &middot; EIGER2 16M &middot; SLS X10SA</figcaption>
</figure>
<div class="hero__text">
<p class="eyebrow">Paul Scherrer Institute &middot; open source</p>
<h1>From the detector to the merged reflections.</h1>
<p class="lede">Software for X-ray diffraction data: <strong>Rugnux</strong> processes a stored
dataset with one command, the <strong>Viewer</strong> shows what is in it, and
<strong>Jungfraujoch</strong> acquires it from the detector at full speed.</p>
<div class="hero__actions">
<a class="btn btn--primary" href="#download">Download</a>
<a class="btn btn--ghost" href="documentation.html">Read the documentation</a>
</div>
<p class="hero__run"><code>rugnux &lt;diffraction image file&gt;</code><code>rugnux &lt;diffraction image file&gt; &lt;CIF/PDB model file&gt;</code></p>
</div>
</section>
<section class="programs" id="programs">
<div class="programs__grid">
<article class="program">
<p class="program__kicker">Data processing</p>
<h2>Rugnux</h2>
<p>Takes a macromolecular diffraction dataset, a rotation sweep or serial stills, from the
images to merged reflections: spot finding, indexing, integration, scaling and merging, with
the space group, cell and resolution decided from the data and a report that says on what
evidence. Writes <code>.mtz</code>, <code>.cif</code> and <code>.hkl</code> for the programs
that come next.</p>
<p class="program__meta">Linux &middot; macOS &middot; Windows &middot; command line &middot; fast on an NVIDIA GPU, works without one</p>
<p class="program__links"><a href="RUGNUX.html">Get started</a><a href="RUGNUX_OVERVIEW.html">What it does</a><a href="RUGNUX_TUTORIAL.html">Manual</a><a href="#dl-rugnux">Download</a></p>
</article>
<article class="program">
<p class="program__kicker">Desktop application</p>
<h2>Jungfraujoch Viewer</h2>
<p>Shows what is in a dataset: every image with its spots, predictions and resolution rings,
per-image statistics over the sweep, grid-scan maps, and the same processing pipeline as
Rugnux, run from a settings panel on the open file. Follows a live collection from a running
Jungfraujoch broker.</p>
<p class="program__meta">Linux &middot; macOS &middot; Windows &middot; Qt 6</p>
<p class="program__links"><a href="JFJOCH_VIEWER.html">Get started</a><a href="JFJOCH_VIEWER.html#a-guided-tour">Guided tour</a><a href="#dl-viewer">Download</a></p>
</article>
<article class="program">
<p class="program__kicker">Data acquisition</p>
<h2>Jungfraujoch</h2>
<p>The acquisition and real-time analysis system for the PSI JUNGFRAU and EIGER detectors,
and for DECTRIS detectors through their control unit: an FPGA and GPU pipeline that takes
the detector's frames at full rate, analyses them on the fly, streams them to the NXmx HDF5
writer and serves a web interface and REST API to the beamline.</p>
<p class="program__meta">Linux servers &middot; AMD Alveo U55C FPGA &middot; NVIDIA GPUs</p>
<p class="program__links"><a href="JUNGFRAUJOCH.html">Get started</a><a href="DEPLOYMENT.html">Install</a><a href="JFJOCH_BROKER.html">Broker</a><a href="JFJOCH_WRITER.html">Writer</a></p>
</article>
</div>
</section>
<section class="download" id="download">
<div class="download__head">
<h2>Download</h2>
<p>Pre-built, signed where the platform asks for it, nothing to install beside them.
<span data-os-note></span></p>
</div>
<div class="download__program" id="dl-rugnux">
<h3>Rugnux</h3>
<p>One self-contained executable. Unpack the archive into a directory of its own and run
<code>bin/rugnux</code>; no CUDA toolkit, no Qt, no service. On a machine with an NVIDIA GPU
take the GPU build, which also runs without one. <a href="RUGNUX_DOWNLOAD.html">Details, packages and building from source</a>.</p>
{{downloads:rugnux}}
</div>
<div class="download__program" id="dl-viewer">
<h3>Jungfraujoch Viewer</h3>
<p>A desktop application with the Qt runtime included: a portable archive on Linux, a
notarized disk image on macOS, an installer on Windows. <a href="VIEWER_DOWNLOAD.html">Details and building from source</a>.</p>
{{downloads:viewer}}
</div>
<div class="download__program download__program--text">
<h3>Jungfraujoch, the acquisition system</h3>
<p>Installed on the beamline's Linux servers from the <a href="REPOSITORIES.html">RPM and APT
repositories</a> (<code>jfjoch</code>, <code>jfjoch-writer</code>, <code>jfjoch-driver-dkms</code>,
<code>jfjoch-viewer</code>, <code>rugnux</code>), with the FPGA firmware and the writer's
packages attached to every <a href="https://gitea.psi.ch/mx/jungfraujoch/releases">release</a>.
<a href="DEPLOYMENT.html">Deployment</a> is the step-by-step guide; <a href="RELEASE_CONTENTS.html">Release contents</a> says what each package needs on the machine.</p>
</div>
</section>
<section class="licence">
<h2>Free to use, in academia and industry</h2>
<p>Rugnux, the viewer and the Jungfraujoch services are free software under the
<a href="LICENSE.html">GNU General Public License v3</a>; the FPGA design is released under the
<a href="FPGA_LICENSE.html">CERN Open Hardware Licence v2, strongly reciprocal</a>. Both let
anyone use, study and modify the software and the hardware design at no charge, commercial use
included; what they ask is that a modified version which is passed on is shared under the same
terms. The released binaries bundle third-party components under GPL-compatible licences, and the
CUDA builds the NVIDIA CUDA runtime under NVIDIA's EULA: see the
<a href="THIRD_PARTY_NOTICES.html">third-party notices</a>.</p>
</section>
</main>
<footer class="foot">
<p>Documentation for Jungfraujoch {{release}} &middot; <a href="CHANGELOG.html">changelog</a> &middot;
<a href="documentation.html">documentation</a> &middot; <a href="NAMING.html">why the names</a> &middot;
<a href="ACKNOWLEDGEMENT.html">acknowledgements</a> &middot; <a href="https://gitea.psi.ch/mx/jungfraujoch">source</a></p>
<p>&copy; Paul Scherrer Institute. Jungfraujoch streams, Rugnux processes: two Swiss mountains, two railways, one idea of throughput.</p>
</footer>
<script src="_static/jfjoch_downloads.js"></script>
<script src="landing.js"></script>
</body>
</html>