Skip to content
fiorotto8Public

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Photoelectric X-ray polarimetry — visual workflow

This repository turns the microscopic photoelectric differential cross section into a coherent scientific-art sequence: polarized X-rays enter a gas cell, photoelectron directions are sampled, tracks are reconstructed, and the azimuthal modulation reveals polarization.

Created by Davide Fiorina (ORCID 0000-0002-7104-257X).

CrossSectionDescription.md is the physics source of truth. The production code under src/xpol_art/ implements its normalized leading-order Sauter K-shell angular kernel for oxygen K-shell absorption and a separately declared illustrative detector response. Evaluated total/subshell rates, molecular-edge models, alternative atomic models, and Compton transport described in the source document are extension guidance, not implemented claims of this artwork release.

Astronomical polarized X-rays entering a gas detector and becoming a reconstructed modulation curve

Gallery

Direction-space view Statistical measurement
Polarized Sauter direction globe Tracks progressively filling the azimuthal modulation
Brightness reveals favored emission directions at fixed radius. Sampled tracks become reconstructed angles and a modulation curve.

The release contains eleven 3840×2160 RGB PNG figures and 24 animations across landscape and vertical orientations. Git ships only 480p30 MP4s and GIFs: 854×480 for landscape and 480×854 for portrait. Native 1080p60 MP4 masters are generated locally and excluded from Git and source distributions.

Every animation carries the small credit “By Davide Fiorina via Local Qwen3.8”. The vertical gallery has no other text, with enlarged tracks-to-modulation visuals. See the animation folder guide and portrait rendering guide.

Figure Subject
2 keV DCS sculpture Low-beta oxygen-K probability volume
10 keV DCS sculpture Intermediate-energy probability volume
80 keV DCS sculpture Relativistically forward-focused probability volume
Polarized direction globe EVPA-aligned bright sectors
Unpolarized direction globe Azimuthally uniform directional field
Photoelectric interaction Absorption vertex and sampled photoelectron
Gas-cell polarimeter Detector, tracks, reconstruction, and readout
Tracks to modulation Statistical buildup and angular response
Polarization angle EVPA through modulation phase
Polarization degree Polarization fraction through amplitude
Hero illustration Complete source-to-measurement story
Animation GIF Duration
Polarized energy evolution Preview 9.0 s
Unpolarized energy evolution Preview 9.0 s
Polarized direction globe Preview 9.0 s
Unpolarized direction globe Preview 9.0 s
Photoelectric interactions Preview 6.5 s
Gas-cell orbit Preview 5.0 s
Tracks to modulation Preview 12.0 s
Polarization angle Preview 5.5 s
Polarization degree Preview 5.5 s
Track accumulation Preview 22.0 s
Polarization degree companion Preview 12.8 s
Polarization angle companion Preview 8.0 s

Installation

Use Python 3.11 or newer from the repository root:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --editable ".[test]"
python -m pytest

Rendering requires ffmpeg, ffprobe, an FFmpeg build with libx264, appropriate fonts, and a working VTK off-screen backend. Install --editable ".[render]" when test dependencies are not needed. See the rendering guide for Ubuntu/WSL packages, EGL/Xvfb setup, output routing, and production details.

Reproduce

Draft and smoke output is non-destructive and defaults under ignored frames/ directories:

python scripts/render_all.py --quality draft --only hero
python scripts/render_companion_animations.py --quality draft --only tracks_accumulation

Rebuild and verify the canonical release:

python3 scripts/render_all.py --quality production --no-manifest
python3 scripts/render_companion_animations.py --quality production
python3 scripts/render_all.py --format vertical --quality production --no-manifest
python3 scripts/render_companion_animations.py --format vertical --quality production
python3 scripts/export_previews.py --format landscape
python3 scripts/export_previews.py --format vertical
python3 scripts/render_all.py --manifest-only
python3 scripts/verify_release.py --decode-videos --masters

The renderer streams animation frames directly to FFmpeg. A completed .part.mp4 is promoted atomically. Previews are derived from native 60 fps masters; GIF timing alternates 30/40 ms delays to average 30 fps. The root manifest describes only the distributable files.

Scientific and visual contract

  • Physics samples use a photon-local right-handed frame with the photon along +z, EVPA zero along +x, and photoelectric maxima parallel to EVPA.
  • Artwork rotates those samples into a visible laboratory frame where photons enter from the top, the gas occupies the middle, and the readout is below.
  • Energy changes a distribution of polar angles; polarization angle and degree change the phase and amplitude of the azimuthal distribution.
  • Microscopic emission, stylized gas transport, detector response, and reconstructed observables remain separate layers.
  • The 2 keV oxygen-K frame is a declared low-beta illustrative extrapolation, and no absolute photoelectric interaction rate is visualized.

Equations, conventions, validity limits, reference implementations, and literature are maintained in CrossSectionDescription.md.

Repository layout

src/xpol_art/       validated physics, frames, response, and sampling
visualization/      shared visual components and scenes
scripts/            render, GIF, manifest, and release tools
figures/            canonical final PNG figures only
animations/landscape/480p30/  tracked landscape MP4/GIF previews
animations/vertical/480p30/   tracked portrait MP4/GIF previews
animations/*/1080p60/         ignored local MP4 masters
tests/              physics, renderer-contract, and release tests
docs/               detailed rendering documentation and preview assets

See CONTRIBUTING.md for development and pull requests, and RELEASING.md for the maintainer release checklist.

Source code and tests are MIT licensed. Documentation and media are CC BY 4.0; the exact scopes and suggested attribution are in LICENSES/README.md. Citation metadata is provided in CITATION.cff.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages