# Tutorial: Your First PDF Workflow This tutorial mirrors the command-line guide but takes a more narrative approach aimed at new users. You will execute the demo workflow against a small input file and inspect the outputs. ## 1. Set up the environment ```bash python -m venv .venv source .venv/bin/activate pip install ewoks ewokspdf diffpy.pdfgetx ``` > Replace the last command with the wheel path of `diffpy.pdfgetx` when working offline. ## 2. Acquire sample data - Download or generate an integrated XRPD dataset as an HDF5 file that contains an NXdata group. - Copy the provided `examples/pdfgetx.cfg` (or your beamline template) alongside the dataset. For quick experiments you can adapt a BLISS dataset—only the NXdata signal and configuration are required. ## 3. Launch the workflow from Python You can run the same sequence manually without the Ewoks runner: ```python from ewokspdf.tasks.average import PdfGetXAverage from ewokspdf.tasks.config import PdfGetXConfig from ewokspdf.tasks.processor import PdfGetXProcessor from ewokspdf.tasks.save_ascii import PdfGetXSaveAscii from ewokspdf.tasks.save_nexus import PdfGetXSaveNexus average = PdfGetXAverage() average(nxdata_url="silx:///data/integrated.h5::/entry/scan/data", average_every="all") config = PdfGetXConfig() config(filename="/data/pdfgetx.cfg") processor = PdfGetXProcessor() processor(radial=average.outputs.radial, intensity=average.outputs.intensity, info=average.outputs.info, pdfgetx_options=config.outputs.pdfgetx_options) save_ascii = PdfGetXSaveAscii() save_ascii(filename="/tmp/pdf/results.h5", results=processor.outputs.results, info=processor.outputs.info) save_nexus = PdfGetXSaveNexus() save_nexus(nxdata_url="silx:///tmp/pdf/results.h5::/entry/1.1/", results=processor.outputs.results, pdfgetx_options=processor.outputs.pdfgetx_options, info=processor.outputs.info) ``` This mirrors exactly what the Ewoks workflow does and is convenient for notebook-based prototyping. ## 4. Explore the results - Open the ASCII files with your favorite plotting tool to inspect `F(Q)` or `G(r)`. - Launch `silx view /tmp/pdf/results.h5` to look at the NeXus output structure. ## 5. Iterate - Try changing `average.average_every` to `2` to compare stacked PDFs. - Override parameters such as `qmax` by adding them to `config.pdfgetx_options_dict`. - Experiment with different datasets to familiarise yourself with the workflow behaviour. Once comfortable, adapt the JSON or replicate the pipeline in a graphical Ewoks workspace.