Files
Jungfraujoch/docs/landing/index.html
T
leonarski_f 8ff2abf3aa docs: a standalone front page with the three programs and the downloads, the Sphinx tree one page below it
docs/landing/ is a self-contained page (HTML, CSS, a little JS, no framework): a hero, a card per
program, the download section with the archives of the newest release and the reader's own
platform marked, the licence in one paragraph, light and dark. The jfjoch_downloads extension
renders it into the HTML output root as index.html at the end of every Sphinx build, so it is
served wherever the documentation is - Read the Docs, the gitea-pages branch and the broker's
frontend bundle - and its download buttons are the same ones as on the Sphinx download pages,
built from the configured release and repointed at the newest published one by the shared script.

The Sphinx root page moves to documentation.html (root_doc), and the frontend's documentation
frame opens that page.

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

150 lines
8.7 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">
<svg class="hero__art" aria-hidden="true" viewBox="0 0 600 600"></svg>
<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><span>is the whole command: cell, space group and resolution come out of the data.</span></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>