// Metadata for the pulseq demoSeq examples: display name, category, and a // one-line description, keyed by demo id (the source .m basename without the // leading "write" and without ".m"). Only ids that both appear here AND have // an adapted source bundled (see index.ts) become gallery entries, so this // can safely list demos that don't yet run on numbl. export type Category = | 'Basics' | 'Gradient echo' | 'Spin echo & TSE' | 'EPI' | 'Non-Cartesian' | '3D & structural' | 'Spectroscopy' | 'Labels & advanced' export interface CatalogEntry { name: string category: Category description: string } export const CATEGORY_ORDER: Category[] = [ 'Basics', 'Gradient echo', 'Spin echo & TSE', 'EPI', 'Non-Cartesian', '3D & structural', 'Spectroscopy', 'Labels & advanced', ] // Keyed by example id. Ids match the adapted source basenames in index.ts. export const CATALOG: Record = { fid: { name: 'FID', category: 'Basics', description: 'Free induction decay — hard pulse + long readout, the simplest sequence.', }, gre: { name: 'Gradient echo (GRE)', category: 'Gradient echo', description: 'RF-spoiled 2D GRE, 128×128; optional autoLabel for on-scanner recon.', }, epi: { name: 'EPI', category: 'EPI', description: 'Echo-planar imaging, 64×64, 3 slices — one readout train per excitation.', }, GRE_live_demo_step0: { name: 'GRE (live demo, step 0)', category: 'Basics', description: 'Minimal gradient echo from the pulseq live tutorial — a gentle starting point.', }, GRE_live_demo: { name: 'GRE (live demo)', category: 'Gradient echo', description: 'The full pulseq live-tutorial gradient echo with spoiling and timing.', }, GradientEcho_label: { name: 'GRE with labels', category: 'Labels & advanced', description: 'Gradient echo using manual LIN/SLC labels (mr.makeLabel) for reconstruction.', }, GradientEcho3D: { name: 'Gradient echo 3D', category: '3D & structural', description: '3D Cartesian gradient echo with two phase-encode directions.', }, GradientEcho_grappa: { name: 'GRE (GRAPPA)', category: 'Labels & advanced', description: 'Gradient echo with GRAPPA parallel-imaging sampling and reference lines.', }, GRE_multiEcho_label: { name: 'GRE multi-echo', category: 'Gradient echo', description: 'Multi-echo gradient echo with per-echo labels.', }, GRE_rfShim: { name: 'GRE (RF shim)', category: 'Labels & advanced', description: 'Gradient echo demonstrating multi-channel RF shimming.', }, CineGradientEcho: { name: 'Cine gradient echo', category: 'Gradient echo', description: 'Segmented cine gradient echo for cardiac-style time-resolved imaging.', }, Trufi: { name: 'TrueFISP / bSSFP', category: 'Gradient echo', description: 'Balanced steady-state free precession (TrueFISP) sequence.', }, RadialGradientEcho: { name: 'Radial GRE', category: 'Non-Cartesian', description: 'Radial gradient echo — spokes through k-space center.', }, RadialGradientEcho_rotExt: { name: 'Radial GRE (rotation ext.)', category: 'Non-Cartesian', description: 'Radial GRE using the rotation extension to rotate spokes.', }, FastRadialGradientEcho: { name: 'Fast radial GRE', category: 'Non-Cartesian', description: 'Fast radial gradient echo with continuous spoke acquisition.', }, FastRadialGradientEcho_rot3D: { name: 'Fast radial GRE (3D rot.)', category: 'Non-Cartesian', description: 'Fast radial GRE with 3D rotations of the readout.', }, FastRadialGradientEcho_rotExt: { name: 'Fast radial GRE (rot. ext.)', category: 'Non-Cartesian', description: 'Fast radial GRE driven by the rotation extension.', }, Spiral: { name: 'Spiral', category: 'Non-Cartesian', description: 'Spiral readout trajectory generated from a k-space design.', }, UTE: { name: 'UTE', category: 'Non-Cartesian', description: 'Ultra-short echo time radial acquisition with ramp sampling.', }, UTE_rs: { name: 'UTE (ramp-sampled)', category: 'Non-Cartesian', description: 'UTE variant with ramp-sampled readouts.', }, ZTE_Petra: { name: 'ZTE (PETRA)', category: 'Non-Cartesian', description: 'Zero echo time PETRA acquisition (radial + single-point center).', }, ZTE_Petra_sodium: { name: 'ZTE PETRA (sodium)', category: 'Non-Cartesian', description: 'Sodium-tuned ZTE PETRA acquisition.', }, EpiSpinEcho: { name: 'EPI spin echo', category: 'EPI', description: 'Spin-echo EPI — 180° refocusing before the readout train.', }, EpiSpinEchoRS: { name: 'EPI spin echo (ramp-sampled)', category: 'EPI', description: 'Ramp-sampled spin-echo EPI for faster readouts.', }, EpiRS: { name: 'EPI (ramp-sampled)', category: 'EPI', description: 'Gradient-echo EPI with ramp sampling.', }, EpiRS_label: { name: 'EPI-RS with labels', category: 'EPI', description: 'Ramp-sampled EPI with reconstruction labels.', }, EpiRS_label_softdelay: { name: 'EPI-RS (soft delay)', category: 'EPI', description: 'Ramp-sampled labelled EPI using soft delays for adjustable timing.', }, EpiRS_label_trans: { name: 'EPI-RS (transformed)', category: 'EPI', description: 'Ramp-sampled labelled EPI with a coordinate transform applied.', }, Epi_label: { name: 'EPI with labels', category: 'EPI', description: 'Basic EPI with reconstruction labels.', }, EpiDiffusionRS: { name: 'EPI diffusion', category: 'EPI', description: 'Diffusion-weighted ramp-sampled EPI with diffusion-encoding gradients.', }, EpiDiffusionRS_PMC: { name: 'EPI diffusion (PMC)', category: 'EPI', description: 'Diffusion EPI with prospective motion-correction hooks.', }, TSE: { name: 'Turbo spin echo (TSE)', category: 'Spin echo & TSE', description: 'Turbo/fast spin echo with a train of refocusing pulses.', }, TSEprop: { name: 'TSE PROPELLER', category: 'Spin echo & TSE', description: 'PROPELLER TSE — rotating blades of k-space.', }, HASTE: { name: 'HASTE', category: 'Spin echo & TSE', description: 'Half-Fourier single-shot turbo spin echo.', }, SpinEcho_softdelay: { name: 'Spin echo (soft delay)', category: 'Spin echo & TSE', description: 'Spin echo demonstrating adjustable soft delays.', }, MPRAGE: { name: 'MPRAGE', category: '3D & structural', description: '3D T1-weighted MPRAGE with inversion preparation.', }, MPRAGE_grappa: { name: 'MPRAGE (GRAPPA)', category: '3D & structural', description: 'MPRAGE with GRAPPA parallel-imaging undersampling.', }, MPRAGE_4ge: { name: 'MPRAGE (4 gradient echoes)', category: '3D & structural', description: 'Multi-echo MPRAGE variant.', }, PRESS: { name: 'PRESS', category: 'Spectroscopy', description: 'Point-resolved spectroscopy — single-voxel double spin echo.', }, SemiLaser: { name: 'semi-LASER', category: 'Spectroscopy', description: 'Single-voxel spectroscopy with adiabatic refocusing (semi-LASER).', }, SelectiveRf: { name: 'Selective RF', category: 'Labels & advanced', description: 'Spatially selective 2D RF excitation.', }, demo_automatic_TRID_labels: { name: 'Automatic TRID labels', category: 'Labels & advanced', description: 'Demonstrates automatic TRID (timing) label assignment.', }, }