concept-collection / seqlab
seqlab / src / examples / catalog.ts
246 lines · 7.4 KBBlameHistoryRaw
1// Metadata for the pulseq demoSeq examples: display name, category, and a
2// one-line description, keyed by demo id (the source .m basename without the
3// leading "write" and without ".m"). Only ids that both appear here AND have
4// an adapted source bundled (see index.ts) become gallery entries, so this
5// can safely list demos that don't yet run on numbl.
7export type Category =
8 | 'Basics'
9 | 'Gradient echo'
10 | 'Spin echo & TSE'
11 | 'EPI'
12 | 'Non-Cartesian'
13 | '3D & structural'
14 | 'Spectroscopy'
15 | 'Labels & advanced'
17export interface CatalogEntry {
18 name: string
19 category: Category
20 description: string
23export const CATEGORY_ORDER: Category[] = [
24 'Basics',
25 'Gradient echo',
26 'Spin echo & TSE',
27 'EPI',
28 'Non-Cartesian',
29 '3D & structural',
30 'Spectroscopy',
31 'Labels & advanced',
34// Keyed by example id. Ids match the adapted source basenames in index.ts.
35export const CATALOG: Record<string, CatalogEntry> = {
36 fid: {
37 name: 'FID',
38 category: 'Basics',
39 description: 'Free induction decay — hard pulse + long readout, the simplest sequence.',
40 },
41 gre: {
42 name: 'Gradient echo (GRE)',
43 category: 'Gradient echo',
44 description: 'RF-spoiled 2D GRE, 128×128; optional autoLabel for on-scanner recon.',
45 },
46 epi: {
47 name: 'EPI',
48 category: 'EPI',
49 description: 'Echo-planar imaging, 64×64, 3 slices — one readout train per excitation.',
50 },
51 GRE_live_demo_step0: {
52 name: 'GRE (live demo, step 0)',
53 category: 'Basics',
54 description: 'Minimal gradient echo from the pulseq live tutorial — a gentle starting point.',
55 },
56 GRE_live_demo: {
57 name: 'GRE (live demo)',
58 category: 'Gradient echo',
59 description: 'The full pulseq live-tutorial gradient echo with spoiling and timing.',
60 },
61 GradientEcho_label: {
62 name: 'GRE with labels',
63 category: 'Labels & advanced',
64 description: 'Gradient echo using manual LIN/SLC labels (mr.makeLabel) for reconstruction.',
65 },
66 GradientEcho3D: {
67 name: 'Gradient echo 3D',
68 category: '3D & structural',
69 description: '3D Cartesian gradient echo with two phase-encode directions.',
70 },
71 GradientEcho_grappa: {
72 name: 'GRE (GRAPPA)',
73 category: 'Labels & advanced',
74 description: 'Gradient echo with GRAPPA parallel-imaging sampling and reference lines.',
75 },
76 GRE_multiEcho_label: {
77 name: 'GRE multi-echo',
78 category: 'Gradient echo',
79 description: 'Multi-echo gradient echo with per-echo labels.',
80 },
81 GRE_rfShim: {
82 name: 'GRE (RF shim)',
83 category: 'Labels & advanced',
84 description: 'Gradient echo demonstrating multi-channel RF shimming.',
85 },
86 CineGradientEcho: {
87 name: 'Cine gradient echo',
88 category: 'Gradient echo',
89 description: 'Segmented cine gradient echo for cardiac-style time-resolved imaging.',
90 },
91 Trufi: {
92 name: 'TrueFISP / bSSFP',
93 category: 'Gradient echo',
94 description: 'Balanced steady-state free precession (TrueFISP) sequence.',
95 },
96 RadialGradientEcho: {
97 name: 'Radial GRE',
98 category: 'Non-Cartesian',
99 description: 'Radial gradient echo — spokes through k-space center.',
100 },
101 RadialGradientEcho_rotExt: {
102 name: 'Radial GRE (rotation ext.)',
103 category: 'Non-Cartesian',
104 description: 'Radial GRE using the rotation extension to rotate spokes.',
105 },
106 FastRadialGradientEcho: {
107 name: 'Fast radial GRE',
108 category: 'Non-Cartesian',
109 description: 'Fast radial gradient echo with continuous spoke acquisition.',
110 },
111 FastRadialGradientEcho_rot3D: {
112 name: 'Fast radial GRE (3D rot.)',
113 category: 'Non-Cartesian',
114 description: 'Fast radial GRE with 3D rotations of the readout.',
115 },
116 FastRadialGradientEcho_rotExt: {
117 name: 'Fast radial GRE (rot. ext.)',
118 category: 'Non-Cartesian',
119 description: 'Fast radial GRE driven by the rotation extension.',
120 },
121 Spiral: {
122 name: 'Spiral',
123 category: 'Non-Cartesian',
124 description: 'Spiral readout trajectory generated from a k-space design.',
125 },
126 UTE: {
127 name: 'UTE',
128 category: 'Non-Cartesian',
129 description: 'Ultra-short echo time radial acquisition with ramp sampling.',
130 },
131 UTE_rs: {
132 name: 'UTE (ramp-sampled)',
133 category: 'Non-Cartesian',
134 description: 'UTE variant with ramp-sampled readouts.',
135 },
136 ZTE_Petra: {
137 name: 'ZTE (PETRA)',
138 category: 'Non-Cartesian',
139 description: 'Zero echo time PETRA acquisition (radial + single-point center).',
140 },
141 ZTE_Petra_sodium: {
142 name: 'ZTE PETRA (sodium)',
143 category: 'Non-Cartesian',
144 description: 'Sodium-tuned ZTE PETRA acquisition.',
145 },
146 EpiSpinEcho: {
147 name: 'EPI spin echo',
148 category: 'EPI',
149 description: 'Spin-echo EPI — 180° refocusing before the readout train.',
150 },
151 EpiSpinEchoRS: {
152 name: 'EPI spin echo (ramp-sampled)',
153 category: 'EPI',
154 description: 'Ramp-sampled spin-echo EPI for faster readouts.',
155 },
156 EpiRS: {
157 name: 'EPI (ramp-sampled)',
158 category: 'EPI',
159 description: 'Gradient-echo EPI with ramp sampling.',
160 },
161 EpiRS_label: {
162 name: 'EPI-RS with labels',
163 category: 'EPI',
164 description: 'Ramp-sampled EPI with reconstruction labels.',
165 },
166 EpiRS_label_softdelay: {
167 name: 'EPI-RS (soft delay)',
168 category: 'EPI',
169 description: 'Ramp-sampled labelled EPI using soft delays for adjustable timing.',
170 },
171 EpiRS_label_trans: {
172 name: 'EPI-RS (transformed)',
173 category: 'EPI',
174 description: 'Ramp-sampled labelled EPI with a coordinate transform applied.',
175 },
176 Epi_label: {
177 name: 'EPI with labels',
178 category: 'EPI',
179 description: 'Basic EPI with reconstruction labels.',
180 },
181 EpiDiffusionRS: {
182 name: 'EPI diffusion',
183 category: 'EPI',
184 description: 'Diffusion-weighted ramp-sampled EPI with diffusion-encoding gradients.',
185 },
186 EpiDiffusionRS_PMC: {
187 name: 'EPI diffusion (PMC)',
188 category: 'EPI',
189 description: 'Diffusion EPI with prospective motion-correction hooks.',
190 },
191 TSE: {
192 name: 'Turbo spin echo (TSE)',
193 category: 'Spin echo & TSE',
194 description: 'Turbo/fast spin echo with a train of refocusing pulses.',
195 },
196 TSEprop: {
197 name: 'TSE PROPELLER',
198 category: 'Spin echo & TSE',
199 description: 'PROPELLER TSE — rotating blades of k-space.',
200 },
201 HASTE: {
202 name: 'HASTE',
203 category: 'Spin echo & TSE',
204 description: 'Half-Fourier single-shot turbo spin echo.',
205 },
206 SpinEcho_softdelay: {
207 name: 'Spin echo (soft delay)',
208 category: 'Spin echo & TSE',
209 description: 'Spin echo demonstrating adjustable soft delays.',
210 },
211 MPRAGE: {
212 name: 'MPRAGE',
213 category: '3D & structural',
214 description: '3D T1-weighted MPRAGE with inversion preparation.',
215 },
216 MPRAGE_grappa: {
217 name: 'MPRAGE (GRAPPA)',
218 category: '3D & structural',
219 description: 'MPRAGE with GRAPPA parallel-imaging undersampling.',
220 },
221 MPRAGE_4ge: {
222 name: 'MPRAGE (4 gradient echoes)',
223 category: '3D & structural',
224 description: 'Multi-echo MPRAGE variant.',
225 },
226 PRESS: {
227 name: 'PRESS',
228 category: 'Spectroscopy',
229 description: 'Point-resolved spectroscopy — single-voxel double spin echo.',
230 },
231 SemiLaser: {
232 name: 'semi-LASER',
233 category: 'Spectroscopy',
234 description: 'Single-voxel spectroscopy with adiabatic refocusing (semi-LASER).',
235 },
236 SelectiveRf: {
237 name: 'Selective RF',
238 category: 'Labels & advanced',
239 description: 'Spatially selective 2D RF excitation.',
240 },
241 demo_automatic_TRID_labels: {
242 name: 'Automatic TRID labels',
243 category: 'Labels & advanced',
244 description: 'Demonstrates automatic TRID (timing) label assignment.',
245 },