Angus Gray-Weale
ADACS Swinburne
X-Pipeline Users Meeting — March 2026
Port X-Pipeline from MATLAB to Python
smop and other MATLAB-to-Python transpilers| Repo | Purpose |
|---|---|
xpfresh | Unchanged reference — the "truth" |
xprefactor | Refactored into small functions for conversion |
xpinstrument | Instrumented to generate test cases |
All three verified to produce identical results
fastlabel — connected componentsfastclusterprop — region propertiesfastsupercluster — O(n log n) sweep-linefastcoincidence2 — temporal coincidenceclustertopixel — label → maskstatisticSumLabelledMapSame C++ code as MATLAB MEX, compiled via nanobind for Python
Every output, every field, every return value compared for both shape and value
| Checkpoint | Status |
|---|---|
| RNG / job split | ✓ Identical |
| Injection masks | ✓ Identical |
| Loudest background | ✓ ~10-7 |
| On-source selection | ✓ same job |
| Detection threshold | ✓ ~10-9 |
| Injection pass flags | ✓ Identical |
| Efficiency (8 scales) | ✓ Identical |
| UL 50%/90%/95% | ✓ Identical |
Vela run7 efficiency curve (timtam)
All stages ported and validated: xdetection → xmerge → xmakegrbwebpage → xtunegrbwebpage
Both pages generated from the same MAT file format — timtam reads Python or MATLAB output identically
sample_grb_notebook.ipynb — Python port of sample_grb_script.m
from rosella.xmakeskygrid import xmakeskygrid
from rosella.antennaPatterns import antennaPatterns
from rosella.gwbenergy import gwbenergy
from rosella.SRD import SRD
# Build sky grid, compute antenna response, estimate SNR
ra_search, dec_search, prob, area, cov = xmakeskygrid(
'231.7', '-34.1', '1454920000', '5.0', '2', 'H1~L1~V1', '5e-4')
Fp, Fc, _ = antennaPatterns(network, sky_ctr)
hrss = hrss_nominal * (Egw / Egw_nominal)**0.5
SNR = np.sqrt(Fp**2 + Fc**2) * hrss / np.sqrt(S)
All values verified identical to MATLAB to 15 significant figures
sample_grb_notebook.ipynb — GRB sensitivity analysis (live demo)demo_xdetection.ipynb — full detection pipelinedemo_signal_processing.ipynb — filtering & resamplingdemo_xconditionSmall2.ipynb — data conditioningdemo_xtimefrequencymapSmall3.ipynb — time-frequency mapsdemo_xdetection_processInjection.ipynb — injections| Component | Status |
|---|---|
| Core detection (xdetection) | ✓ Complete |
| C++ extensions (fastcluster) | ✓ Complete |
| GRB post-processing pipeline | ✓ Complete |
| Integration tests passing | ✓ Complete |
| Results viewer (timtam) | ✓ Complete |
| Example notebooks | ● In progress |
| X-Pypeline release package | ● Upcoming |
| OSG / LIGO deployment | ● Upcoming |
rosella: 176 modules, 52k lines source + 76k lines tests, 763 commits
fastcluster: 10 C++ extensions via nanobind
Testing: 727 test functions across 3 layers
Integration: field-by-field match