Registry / data / attoworld

attoworld

JSON →
library2026.2.5pypypi✓ verified 83d ago

The `attoworld` library provides essential tools for attosecond science, developed by the Attosecond science group at the Max Planck Institute of Quantum Optics. It offers functionalities for data acquisition, processing, and analysis in areas like FROG (Frequency-resolved optical gating) and time-frequency analysis. The library is actively maintained with frequent releases, often several per month or quarter, following a `YYYY.minor.patch` versioning scheme.

pip install attoworld
INSTALL
IMPORT
SIG · ATTOWORLD
A
attoworld
datapythonv2026.2.5
Install
23.0s avg
Import
Disk
607MB
Pass rate
9/ 10
Env Coverage9 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v2026.2.5 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✓ —
✓ 23.43s
py 3.11
✓ —
✓ 22.05s
py 3.12
✓ —
✓ 21.68s
py 3.13
✓ —
✓ 22s
py 3.9
✕ build_error
✓ 25.83s
607MB installed
● package 607MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

attoworld_rs
from attoworld import attoworld_rs
from attoworld.frog.interface import FROG

This quickstart demonstrates how to load a FROG trace from a file (or create a dummy one), configure the reconstruction settings using `FROG_CONFIG`, and perform a basic FROG reconstruction to obtain the reconstructed pulse intensity.

import numpy as np import os from attoworld.frog.interface import FROG from attoworld.frog.frog_config import FROG_CONFIG # 1. Create a dummy FROG trace file for demonstration dummy_file_path = "dummy_frog_trace.dat" delay_axis = np.linspace(-100, 100, 128) # fs freq_axis = np.linspace(2.0, 4.0, 128) # PHz dummy_trace = np.random.rand(128, 128) * 100 + 10 # Base noise dummy_trace[40:80, 40:80] += 500 # Add a feature to the trace with open(dummy_file_path, "w") as f: f.write("# FROG trace data\n") f.write(f"# delay_axis {delay_axis.min()} {delay_axis.max()} {len(delay_axis)}\n") f.write(f"# freq_axis {freq_axis.min()} {freq_axis.max()} {len(freq_axis)}\n") np.savetxt(f, dummy_trace) # 2. Initialize FROG processor and load the trace frog_processor = FROG() frog_processor.load_trace(dummy_file_path) # 3. Configure FROG reconstruction settings config = FROG_CONFIG() config.max_iter = 10 # Keep iterations low for quick execution config.pulse_width_estimate_fs = 50 config.wavelength_center_nm = 800 config.delay_steps = len(delay_axis) config.freq_steps = len(freq_axis) config.delay_max = delay_axis.max() config.delay_min = delay_axis.min() config.freq_max = freq_axis.max() config.freq_min = freq_axis.min() # 4. Perform reconstruction print("Starting FROG reconstruction...") frog_processor.reconstruct(config) print("Reconstruction complete.") # 5. Access results reconstructed_pulse_intensity = frog_processor.reconstructed_intensity print(f"Reconstructed pulse intensity shape: {reconstructed_pulse_intensity.shape}") # 6. Clean up the dummy file os.remove(dummy_file_path)
Debug
Known issues
breakingThe units and phase convention for `.Speck.dat` files were updated in v2025.0.46. This change ensures consistency with specific scientific standards but may lead to discrepancies if re-analyzing data processed with earlier versions or if expecting the old conventions.
fix
If working with `.Speck.dat` files or data generated with `attoworld` versions prior to `v2025.0.46`, re-evaluate your analysis results and ensure compatibility with the updated unit and phase conventions. Consult documentation or new examples for verification.
affects: >=2025.0.46
gotchaThe core FROG reconstruction algorithm was rewritten in Rust (v2025.0.41) for significant performance improvements. While `pip install` generally handles this via pre-built wheels, users building from source or on uncommon platforms may encounter Rust compilation errors or need to ensure a Rust toolchain is installed.
fix
If `pip install attoworld` fails with errors related to Rust or `maturin`, ensure you have a compatible C++ compiler and the Rust toolchain installed (e.g., via `rustup`). For most users on standard platforms, pre-built wheels should work without manual Rust setup.
affects: >=2025.0.41
gotchaMany functions within `attoworld` operate with implicit physical units (e.g., femtoseconds for time, PHz for frequency, nanometers for wavelength). Supplying data in mismatched units without proper conversion will lead to incorrect scientific results without necessarily raising Python errors.
fix
Always consult function documentation or example usage to confirm the expected units for input parameters and the units of returned values. Ensure all input data is converted to the required unit system before passing it to `attoworld` functions.
affects: all
Upgrade
Version history
2026.2.5latest on PyPI · released Jun 9, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
19 hits · last 30 days
node
16
OpenAI (training)
1
Resources