|
31 | 31 | "from ess.amor.types import *" |
32 | 32 | ] |
33 | 33 | }, |
| 34 | + { |
| 35 | + "cell_type": "markdown", |
| 36 | + "metadata": {}, |
| 37 | + "source": [ |
| 38 | + "## Create and configure the workflow\n", |
| 39 | + "\n", |
| 40 | + "We begin by creating the Amor workflow object which is a skeleton for reducing Amor data,\n", |
| 41 | + "with pre-configured steps." |
| 42 | + ] |
| 43 | + }, |
34 | 44 | { |
35 | 45 | "cell_type": "code", |
36 | 46 | "execution_count": null, |
37 | 47 | "metadata": {}, |
38 | 48 | "outputs": [], |
39 | 49 | "source": [ |
40 | | - "pl = sciline.Pipeline(\n", |
41 | | - " (\n", |
42 | | - " *amor.providers,\n", |
43 | | - " *amor.data.providers,\n", |
44 | | - " ),\n", |
45 | | - " params=amor.default_parameters,\n", |
46 | | - ")\n", |
47 | | - "\n", |
48 | | - "pl[SampleSize[Sample]] = sc.scalar(10.0, unit='mm')\n", |
49 | | - "pl[SampleSize[Reference]] = sc.scalar(10.0, unit='mm')\n", |
| 50 | + "workflow = amor.AmorWorkflow()" |
| 51 | + ] |
| 52 | + }, |
| 53 | + { |
| 54 | + "cell_type": "markdown", |
| 55 | + "metadata": {}, |
| 56 | + "source": [ |
| 57 | + "We then need to set the missing parameters which are specific to each experiment:" |
| 58 | + ] |
| 59 | + }, |
| 60 | + { |
| 61 | + "cell_type": "code", |
| 62 | + "execution_count": null, |
| 63 | + "metadata": {}, |
| 64 | + "outputs": [], |
| 65 | + "source": [ |
| 66 | + "workflow[SampleSize[SampleRun]] = sc.scalar(10.0, unit='mm')\n", |
| 67 | + "workflow[SampleSize[ReferenceRun]] = sc.scalar(10.0, unit='mm')\n", |
50 | 68 | "\n", |
51 | | - "pl[ChopperPhase[Reference]] = sc.scalar(-7.5, unit='deg')\n", |
52 | | - "pl[ChopperPhase[Sample]] = sc.scalar(-7.5, unit='deg')\n", |
| 69 | + "workflow[ChopperPhase[ReferenceRun]] = sc.scalar(-7.5, unit='deg')\n", |
| 70 | + "workflow[ChopperPhase[SampleRun]] = sc.scalar(-7.5, unit='deg')\n", |
53 | 71 | "\n", |
54 | | - "pl[QBins] = sc.geomspace(dim='Q', start=0.005, stop=0.3, num=391, unit='1/angstrom')\n", |
55 | | - "pl[WavelengthBins] = sc.geomspace('wavelength', 2.8, 12, 301, unit='angstrom')\n", |
| 72 | + "workflow[QBins] = sc.geomspace(dim='Q', start=0.005, stop=0.3, num=391, unit='1/angstrom')\n", |
| 73 | + "workflow[WavelengthBins] = sc.geomspace('wavelength', 2.8, 12, 301, unit='angstrom')\n", |
56 | 74 | "\n", |
57 | 75 | "# The YIndexLimits and ZIndexLimits define ranges on the detector where\n", |
58 | 76 | "# data is considered to be valid signal.\n", |
59 | 77 | "# They represent the lower and upper boundaries of a range of pixel indices.\n", |
60 | | - "pl[YIndexLimits] = sc.scalar(11, unit=None), sc.scalar(41, unit=None)\n", |
61 | | - "pl[ZIndexLimits] = sc.scalar(80, unit=None), sc.scalar(370, unit=None)" |
| 78 | + "workflow[YIndexLimits] = sc.scalar(11, unit=None), sc.scalar(41, unit=None)\n", |
| 79 | + "workflow[ZIndexLimits] = sc.scalar(80, unit=None), sc.scalar(370, unit=None)" |
62 | 80 | ] |
63 | 81 | }, |
64 | 82 | { |
|
67 | 85 | "metadata": {}, |
68 | 86 | "outputs": [], |
69 | 87 | "source": [ |
70 | | - "pl.visualize(NormalizedIofQ, graph_attr={'rankdir': 'LR'})" |
| 88 | + "workflow.visualize(NormalizedIofQ, graph_attr={'rankdir': 'LR'})" |
71 | 89 | ] |
72 | 90 | }, |
73 | 91 | { |
|
88 | 106 | "metadata": {}, |
89 | 107 | "outputs": [], |
90 | 108 | "source": [ |
91 | | - "pl[TutorialFilename[Reference]] = \"amor2023n000614.hdf\"\n", |
| 109 | + "workflow[Filename[ReferenceRun]] = amor.data.amor_reference_run()\n", |
92 | 110 | "# The sample rotation value in the file is slightly off, so we set it manually\n", |
93 | | - "pl[SampleRotation[Reference]] = sc.scalar(0.65, unit='deg')\n", |
| 111 | + "workflow[SampleRotation[ReferenceRun]] = sc.scalar(0.65, unit='deg')\n", |
94 | 112 | "\n", |
95 | | - "reference_result = pl.compute(IdealReferenceIntensity)\n", |
| 113 | + "reference_result = workflow.compute(IdealReferenceIntensity)\n", |
96 | 114 | "# Set the result back onto the pipeline to cache it\n", |
97 | | - "pl[IdealReferenceIntensity] = reference_result" |
| 115 | + "workflow[IdealReferenceIntensity] = reference_result" |
98 | 116 | ] |
99 | 117 | }, |
100 | 118 | { |
|
110 | 128 | "metadata": {}, |
111 | 129 | "outputs": [], |
112 | 130 | "source": [ |
113 | | - "pl.visualize(NormalizedIofQ, graph_attr={'rankdir': 'LR'})" |
| 131 | + "workflow.visualize(NormalizedIofQ, graph_attr={'rankdir': 'LR'})" |
114 | 132 | ] |
115 | 133 | }, |
116 | 134 | { |
|
129 | 147 | "metadata": {}, |
130 | 148 | "outputs": [], |
131 | 149 | "source": [ |
132 | | - "pl[TutorialFilename[Sample]] = \"amor2023n000608.hdf\"\n", |
133 | | - "pl[SampleRotation[Sample]] = sc.scalar(0.85, unit='deg')\n", |
134 | | - "ioq8 = pl.compute(NormalizedIofQ).hist()\n", |
| 150 | + "workflow[Filename[SampleRun]] = amor.data.amor_sample_run(608)\n", |
| 151 | + "workflow[SampleRotation[SampleRun]] = sc.scalar(0.85, unit='deg')\n", |
| 152 | + "ioq8 = workflow.compute(NormalizedIofQ).hist()\n", |
135 | 153 | "\n", |
136 | | - "pl[TutorialFilename[Sample]] = \"amor2023n000609.hdf\"\n", |
137 | | - "pl[SampleRotation[Sample]] = sc.scalar(2.25, unit='deg')\n", |
138 | | - "ioq9 = pl.compute(NormalizedIofQ).hist()\n", |
| 154 | + "workflow[Filename[SampleRun]] = amor.data.amor_sample_run(609)\n", |
| 155 | + "workflow[SampleRotation[SampleRun]] = sc.scalar(2.25, unit='deg')\n", |
| 156 | + "ioq9 = workflow.compute(NormalizedIofQ).hist()\n", |
139 | 157 | "\n", |
140 | | - "pl[TutorialFilename[Sample]] = \"amor2023n000610.hdf\"\n", |
141 | | - "pl[SampleRotation[Sample]] = sc.scalar(3.65, unit='deg')\n", |
142 | | - "ioq10 = pl.compute(NormalizedIofQ).hist()\n", |
| 158 | + "workflow[Filename[SampleRun]] = amor.data.amor_sample_run(610)\n", |
| 159 | + "workflow[SampleRotation[SampleRun]] = sc.scalar(3.65, unit='deg')\n", |
| 160 | + "ioq10 = workflow.compute(NormalizedIofQ).hist()\n", |
143 | 161 | "\n", |
144 | 162 | "sc.plot({'608': ioq8, '609': ioq9, '610': ioq10}, norm='log', vmin=1e-4)" |
145 | 163 | ] |
|
157 | 175 | "metadata": {}, |
158 | 176 | "outputs": [], |
159 | 177 | "source": [ |
160 | | - "pl[TutorialFilename[Sample]] = \"amor2023n000608.hdf\"\n", |
161 | | - "pl[SampleRotation[Sample]] = sc.scalar(0.85, unit='deg')\n", |
162 | | - "pl.compute(ReflectivityDiagnosticsView)" |
| 178 | + "workflow[Filename[SampleRun]] = amor.data.amor_sample_run(608)\n", |
| 179 | + "workflow[SampleRotation[SampleRun]] = sc.scalar(0.85, unit='deg')\n", |
| 180 | + "workflow.compute(ReflectivityDiagnosticsView)" |
163 | 181 | ] |
164 | 182 | }, |
165 | 183 | { |
|
176 | 194 | "metadata": {}, |
177 | 195 | "outputs": [], |
178 | 196 | "source": [ |
179 | | - "pl.compute(WavelengthThetaFigure)" |
| 197 | + "workflow.compute(WavelengthThetaFigure)" |
180 | 198 | ] |
181 | 199 | }, |
182 | 200 | { |
|
215 | 233 | "metadata": {}, |
216 | 234 | "outputs": [], |
217 | 235 | "source": [ |
218 | | - "pl[orso.OrsoCreator] = orso.OrsoCreator(\n", |
| 236 | + "workflow[orso.OrsoCreator] = orso.OrsoCreator(\n", |
219 | 237 | " fileio.base.Person(\n", |
220 | 238 | " name='Max Mustermann',\n", |
221 | 239 | " affiliation='European Spallation Source ERIC',\n", |
|
230 | 248 | "metadata": {}, |
231 | 249 | "outputs": [], |
232 | 250 | "source": [ |
233 | | - "pl.visualize(orso.OrsoIofQDataset, graph_attr={'rankdir': 'LR'})" |
| 251 | + "workflow.visualize(orso.OrsoIofQDataset, graph_attr={'rankdir': 'LR'})" |
234 | 252 | ] |
235 | 253 | }, |
236 | 254 | { |
|
246 | 264 | "metadata": {}, |
247 | 265 | "outputs": [], |
248 | 266 | "source": [ |
249 | | - "iofq_dataset = pl.compute(orso.OrsoIofQDataset)\n", |
| 267 | + "iofq_dataset = workflow.compute(orso.OrsoIofQDataset)\n", |
250 | 268 | "iofq_dataset" |
251 | 269 | ] |
252 | 270 | }, |
|
282 | 300 | "outputs": [], |
283 | 301 | "source": [ |
284 | 302 | "iofq_dataset.info.reduction.corrections = orso.find_corrections(\n", |
285 | | - " pl.get(orso.OrsoIofQDataset)\n", |
| 303 | + " workflow.get(orso.OrsoIofQDataset)\n", |
286 | 304 | ")" |
287 | 305 | ] |
288 | 306 | }, |
|
0 commit comments