From 8108c425217a44c88cd69cffcf3fcfd335120382 Mon Sep 17 00:00:00 2001 From: David Waterman Date: Tue, 11 Mar 2025 16:59:01 +0000 Subject: [PATCH 1/9] A space to work on DUI tutorial text for the CSSB workshop --- CCP4-CSSB-2025/dui2-processing.md | 366 ++++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 CCP4-CSSB-2025/dui2-processing.md diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md new file mode 100644 index 0000000..4990266 --- /dev/null +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -0,0 +1,366 @@ +# Data processing tutorial + +## Data + +To process the data locally using DIALS you will need a copy of the dataset on your computer. If you do not have it already you can download it from [this link](https://ccp4serv6.rc-harwell.ac.uk/jscofe-dev/tmp/ADH4.zip). + +## Summary + +We will start by looking at a data set recorded from crystals of the enzyme tetrahydroalstonine synthase (THAS1). The images were collected at Diamond Light Source on a PILATUS 6M pixel array detector at an X-ray wavelength of 1.282 Å, at the Zinc _K_ edge. There is sufficient anomalous signal to solve the structure by experimental phasing (SAD). There are some more details provided alongside the images in the file `ADH4_data_info.pdf`. + +First we will set up a xia2 processing job, running remotely on the CCP4 Cloud at Harwell. This will keep the local PCs free to simultaneously try out DIALS data processing using the command line. + +Once you have completed the "manual" processing, you can compare results with the xia2 job. Are there any differences? Which job has better statistics? + +## Processing with xia2 on CCP4 Cloud + +If you have CCP4 9.0 icons available, double click on the icon named "CCP4Cloud Remote". Alternatively, in a terminal with the CCP4 9.0 environment sourced, run the script `ccp4cloud-remote`. This will open a web browser allowing you to log in to the CCP4 Cloud at Harwell. Here we assume you already have an account, and know how to create a new project. + +Within your Cloud project, add a new "Automatic Image Processing with Xia-2" task. Under "Input Data" make sure sure the task will "Look for X-ray images in cloud storage". :file_folder: Browse for the image directory, selecting _Tutorials/Data/1_from_images/ADH4/ADH4_diffraction_data_. Set a sensible project and crystal name, and don't forget to add "Zn" as the heavy atom type! + +There's no need to set any advanced options, just select "Run". Make sure the job starts, but after that you can leave it to process while you look at the images locally with DIALS. + +> [!WARNING] +> Running xia2 in CCP4 Cloud requires you first to upload the images to Cloud, so it hasn't been a very popular option in the past. You are more likely to come across xia2 from autoprocessing results at the synchrotron, or by running xia2 locally through ccp4i2 or at the command line. Recently however, uploading images was made easier if you (or your lab) use the Globus file transfer platform, where CCP4 Cloud has an endpoint. However, image data is large and will eventually be deleted from Cloud to save space. So don't consider CCP4 Cloud as a backup solution for your diffraction data! + +## Setting up DIALS processing + +Now we will process the images using the DIALS command line. In a terminal with the CCP4 environment sourced, first change to a directory where you want to do the processing (we recommend processing in a different directory from the images themselves): + +```bash +cd ~ +mkdir ADH4-dials +cd ADH4-dials +``` + +## Importing the images + +The first task in data processing with DIALS is to import the images. The program used to do this is unimaginatively named `dials.import`. In common with other `dials.something` commands, running the program without options will print a help message with some usage examples: + +```bash +dials.import +``` + +You may have to scroll up to read the full output. If you add the option `-h` to this command you will not only see the help message, but also the structured definitions of the command line parameters that can be passed to the program. + +> [!NOTE] +> What happens if you pass multiple `h` and `v` characters? Try this out later with other DIALS programs too. + +Now we are ready to import the images. You can do this by entering the following command, after adjusting the path to the files on your computer: + +```bash +dials.import /path/to/images/ADH4_M7S9_6_*.cbf +``` + +Note the use of the wildcard `*` character in this command. This is not DIALS syntax, but is expanded by the shell to match every image file in that directory, from `ADH4_M7S9_6_0001.cbf` to `ADH4_M7S9_6_0800.cbf`. What `dials.import` does is read the header of each of these files, checks the diffraction geometry, and determines the relationship between the files. All going well you will see output that looks something like this: + +``` +-------------------------------------------------------------------------------- + format: + template: /data/ADH4_data_for_summer_school/ADH4_diffraction_data/ADH4_M7S9_6_####.cbf:1:800 + num images: 800 + sequences: + still: 0 + sweep: 1 + num stills: 0 +-------------------------------------------------------------------------------- +Writing experiments to imported.expt +``` + +This tells you that DIALS interprets the 800 images as a single rotation sweep, and writes the diffraction geometry and associated metadata into a new file, `imported.expt`. To get human-readable information from that file try + +```bash +dials.show imported.expt +``` + +## Viewing the images + +Although we are doing command-line data processing, we should still look at the images! DIALS contains a feature-rich image viewer for this purpose: + +```bash +dials.image_viewer imported.expt +``` + +> [!NOTE] +> Take a moment to explore the controls in the image viewer. Can you drag the image around and zoom using the mouse? Can you see the intensity and resolution information for a single pixel? What is your preferred colour scheme and brightness? Can you scroll through and see how the diffraction images change as data collection proceeds? Don't be afraid to play with the controls - nothing you can do here will affect processing of the data set. + +There is a horizontal backstop shadow across the images. We could mask this out if we wanted, however looking at the rotation axis orientation using `dials.image_viewer`, we see that this is aligned with the backstop shadow. Spots close to the rotation axis are less reliable and will not be integrated anyway (can you figure out why?). So we will not bother to mask the shadow here. + +## Finding spots + +With the image viewer open, select the "Threshold pixels" checkbox. This shows you which pixels the spot-finding algorithm considers to be "strong". + +> [!NOTE] +> Do the strong pixels match the position of the diffraction spots? What happens if you modify parameters of the threshold algorithm (like kernel size and gain)? What happens if you select different threshold algorithms? + +The default parameters seem pretty good for this data set, so exit the image viewer and run a default spot-finding job: + +```bash +dials.find_spots imported.expt +``` + +DIALS finds spots throughout the entire rotation scan, whereas some other programs default to finding spots on just enough images to perform indexing. This means spot-finding takes longer with DIALS, but the information determined from the entire scan can be reused multiple times. In fact, now DIALS will not need to read the image data again until integration. At the end of the spot-finding procedure you will see an ASCII-art histogram indicating the number of spots found on each image. In this case it is pretty boring because the crystal diffracts equally well throughout the scan: + +``` +Histogram of per-image spot count for imageset 0: +307302 spots found on 800 images (max 5525 / bin) +* * **** ** * * ** ** * * +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +1 image 800 + +-------------------------------------------------------------------------------- +Saved 307302 reflections to strong.refl +``` + +## Viewing the reciprocal lattice + +Now we can pass both the experimental geometry file `imported.expt`, and spot file `strong.refl` to `dials.reciprocal_lattice_viewer`: + +```bash +dials.reciprocal_lattice_viewer imported.expt strong.refl +``` + +> [!TIP] +> Using tab completion, if supported by your shell, avoids you having to type out long commands or filenames, like `dials.reciprocal_lattice_viewer`. Even if tab complete does not work, in this case you can use the alias `dials.rlv` instead. + +Take some time to explore the controls in the `dials.reciprocal_lattice_viewer` + +> [!NOTE] +> What does middle-button drag do? Try setting "Max Z" to something small, like 5. What does this show you? Align the view down the rotation axis and then click to increase the Max Z value (Use Alt-click to jump in blocks of 100). Can you see how data collection sweeps out a volume of reciprocal space? Can you align the view in a direction that clearly shows the crystal lattice? + +The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is to look for pathologies that might cause indexing to fail, such as poor diffraction geometry, noisy spots, split spots, ice rings, and so on. In this case the reciprocal space lattice looks very clean, so we would not expect indexing to have any problems. + + +## Indexing + +Go ahead and run a default `dials.index` job, which will find a $P\ 1$ cell, using the 3D FFT algorithm: + +```bash +dials.index imported.expt strong.refl +``` + +It is worth taking a moment to read the log output. The program runs through a few stages: + +- Setting up for indexing (calculate `max_cell`, setting resolution limits, mapping spots to reciprocal space and forming the FFT grid) +- Performing the FFT, searching for real space basis vectors and forming candidate solutions (in this case 50) +- Ranking the solutions and choosing the single best +- Performing geometry refinement in macrocycles with increasing resolution. At each stage this: + - Identifies outliers + - Parameterises the diffraction geometry + - Refines this geometry against the observations + - Increases resolution for the next macrocycle +- Once the resolution limit includes all reflections the final refined model and reflections are written to the files `indexed.expt` and `indexed.expt` + +> [!NOTE] +> The behaviour of all of these stages can be controlled by parameters given to `dials.index` (remember option switches like `-hhhvv`), but in most cases the defaults suffice. + +Now we have a crystal model it is worth looking at the reciprocal lattice again: + +```bash +dials.reciprocal_lattice_viewer indexed.expt indexed.refl +``` + +The spots are now coloured according to whether they are indexed or not. + +> [!NOTE] +> Try the "Show reciprocal cell" option. Zoom in and see if you can align the view with one of the reciprocal basis vectors, $a^\star$, $b^\star$ or $c^\star$. Try the toggles between "indexed" and "unindexed", "inliers" and "outliers". + +## Determining the Bravais lattice + +The initial solution from `dials.index` is triclinic, but the $\alpha$, $\beta$ \nd $\gamma$ angles are very close to 90°. To identify compatible Bravais lattices we run: + +```bash +dials.refine_bravais_settings indexed.expt indexed.refl +``` + +> [!TIP] +> Like with `dials.reciprocal_lattice_viewer`, `dials.refine_bravais_settings` has a short form alias: `dials.rbs` + +This will enforce the Bravais symmetry of compatible lattices (within some tolerance) and run refinement. The results are printed as a table: + +``` +Chiral space groups corresponding to each Bravais lattice: +aP: P1 +mP: P2 P21 +oP: P222 P2221 P21212 P212121 ++------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ +| Solution | Metric fit | rmsd | min/max cc | #spots | lattice | unit_cell | volume | cb_op | +|------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------| +| * 5 | 0.0338 | 0.078 | 0.904/0.947 | 12000 | oP | 57.10 102.19 112.16 90.00 90.00 90.00 | 654423 | a,b,c | +| * 4 | 0.0338 | 0.078 | 0.947/0.947 | 12000 | mP | 102.18 57.10 112.16 90.00 89.99 90.00 | 654379 | -b,-a,-c | +| * 3 | 0.0336 | 0.078 | 0.947/0.947 | 12000 | mP | 57.10 112.16 102.19 90.00 90.00 90.00 | 654411 | -a,-c,-b | +| * 2 | 0.0083 | 0.071 | 0.904/0.904 | 12000 | mP | 57.11 102.19 112.18 90.00 89.97 90.00 | 654619 | a,b,c | +| * 1 | 0 | 0.071 | -/- | 12000 | aP | 57.11 102.19 112.18 89.99 89.97 90.01 | 654702 | a,b,c | ++------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ +``` +The program writes out experimental geometry for all of these solutions (files `bravais_setting_1.expt` to `bravais_setting_5.expt`) but the associated reflections are not written out, as these files are larger and there is no point wasting disk space for the solutions that are not taken on further. The decision of which solution to choose is down to the user, but the program marks solutions deemed acceptable with an asterisk: `*`. In general, we look for the highest symmetry solution with reasonable values for the `Metric fit`, `rmsd` and `min/max cc` columns. Here we will take solution 5, the primitive orthorhombic (`oP`) one. + +In general, to get appropriately reindexed reflections we should run the `dials.reindex` program, passing the change of basis operator printed in the last column of the table. In this case that operator is just `a,b,c`, which is identity - the reflections come out with the same indices as they go in, so the reindexing step is not necessary in this case. Nevertheless, we show the command here anyway: + +```bash +dials.reindex indexed.refl change_of_basis_op=a,b,c +``` + +## Refining the solution + +We did some refinement during indexing, and again during Bravais lattice determination. Nevertheless, it is still worth running an additional step of refinement using `dials.refine`. This will use a more sophisticated outlier rejection algorithm than before, and it will also refine a "scan-varying" model of the crystal, in which changes to the orientation and unit cell are allowed as a function of the position in the rotation scan. Using the chosen Bravais lattice and our (unnecessarily) reindexed reflections, we type: + +```bash +dials.refine bravais_setting_5.expt reindexed.refl +``` + +From the log you should see that initially 13 parameters are refined during the "scan-static" macrocycle. Then this is followed by a "scan-varying" macrocycle using 37 parameters, where the crystal parameters have been made local to regions of the scan and the model is constructed by smoothing between these points. This more sophisticated model is able to fit the predictions to the data better, and you should see lower RMSDs as a result: + +``` +RMSDs by experiment: ++-------+--------+----------+----------+------------+ +| Exp | Nref | RMSD_X | RMSD_Y | RMSD_Z | +| id | | (px) | (px) | (images) | +|-------+--------+----------+----------+------------| +| 0 | 254417 | 0.2914 | 0.28382 | 0.1768 | ++-------+--------+----------+----------+------------+ +``` + +> [!NOTE] +> The space group selected by `dials.refine_bravais_settings` is $P\ 2\ 2\ 2$; that is, no attempt has been made yet to locate screw axes. That's not a problem, we do not need to know the exact space group prior to integration, just a sub group. There will be another attempt at symmetry determination later. + +It useful to look at the way the crystal parameters change during the scan, to make sure there are no unrealistic-looking changes. One way to do that is to use the command: + +```bash +dials.plot_scan_varying_model refined.expt +``` + +This will produce a pair of plots as `.png` files, which you can open in a viewer. Alternatively, you could run: + +```bash +dials.report refined.expt refined.refl +``` + +which will produce an HTML document, `dials.report.html`, containing similar plots as well as lot more information about the current stage of the data processing. This can be opened in any web browser. + +> [!NOTE] +> Check that the change in unit cell parameters and orientation angles looks small across the whole scan. + +## Integration + +We now have a model for how the data set evolves over the whole scan. We are ready to take this to integrate every spot, including the weak ones that were not found during spot-finding. Integration is the most resource-intensive part of processing and takes the longest. After starting this job, maybe now is a good time to go check on the progress of the xia2 job running on CCP4 Cloud. + +```bash +dials.integrate refined.expt refined.refl +``` + +After predicting reflections, `dials.integrate` starts forming a model to determine how big the measurement boxes should be. This is printed to the log at the lines + +``` +Calculating E.S.D Beam Divergence. +Calculating E.S.D Reflecting Range (mosaicity). + sigma b: 0.041727 degrees + sigma m: 0.062834 degrees +``` + +The `sigma m` value is the standard deviation of the reflecting range of reflections, which is sometimes (and inaccurately) called "mosacicity". It is good to check that this value is not too high. Here it is significantly less than 0.1°, so the sample seems very well behaved. + +After this step, `dials.integrate` will split the processing over as many processors as you have available, first modelling reflection profiles, and then performing the actual integration, using both summation integration and profile fitting methods. There are some summary tables at the end of the log file that are worth a glance, but really we don't have a good idea of the quality of the data set until we do scaling. + +## Determining the crystal symmetry + +Now we have integrated reflections we have much more useful data to perform symmetry checks. The program `dials.symmetry` will first check the Laue group (and we hope that this indicates our earlier choice of Bravais lattice is confirmed). Then it will look for potential screw axes by looking for apparent systematic absences: + +```bash +dials.symmetry integrated.expt integrated.refl +``` + +This systematic absence information is written to a table: + +``` ++--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ +| Screw axis | Score | No. present | No. absent | present | absent | present | absent | +|--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------| +| 21a | 0 | 10 | 10 | 1253.16 | 340.318 | 35.204 | 17.228 | +| 21b | 1 | 30 | 30 | 1575.34 | 1.901 | 45.998 | 0.318 | +| 21c | 1 | 38 | 39 | 1167.44 | 3.281 | 74.032 | 1.487 | ++--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ +``` + +Here we see clear screw axes along $b$ and $c$, which have high average intensity and $I/\sigma$ for reflections that are expected to be present, but low values for absences. For the potential axis along $a$, while there is higher intensity and $I/\sigma$ for expected present reflections compared to absences, the intensity in the putative absences is actually rather high. This indicates that the a screw axis along $a$ is not supported by the data. As a result, `dials.symmetry` ultimately writes the files `symmetrized.expt` and `symmetrized.refl`, using the space group $P\ 2\ 2_1\ 2_1$ + +## Scaling and exporting + +The scaling program, `dials.scale`, uses algorithms similar to Aimless to fit a physically-interpretable scaling model to the data set. This consists of three components: + +- an overall rotation angle-dependent scale factor (accounting for beam intensity changes, variation in illuminated volume and similar effects) +- a relative B-factor decay term (accounting roughly for the loss of high resolution reflections caused by radiation damage) +- an absorption surface (accounting for absorption along the differing path lengths of scattered rays through the crystal volume) + +The parameters of these components are adjusted in order to minimise the differences between reflections and their symmetry mates (which ought to have the same intensity). While performing this fit, an error model is also optimised so that the errors associated with the merged intensity for each reflection group is appropriate. We run the program with default options: + +```bash +dials.scale symmetrized.expt symmetrized.refl +``` + +At the end of the job a standard table of merging statistics is printed, parts of which may be familiar to you from "Table 1" of crystallographic structure papers: +``` + -------------Summary of merging statistics-------------- + + Overall Low High +High resolution limit 1.26 3.42 1.26 +Low resolution limit 112.16 112.61 1.28 +Completeness 82.6 97.7 5.8 +Multiplicity 3.8 4.3 1.0 +I/sigma 15.0 44.2 0.8 +Rmerge(I) 0.066 0.050 0.625 +Rmerge(I+/-) 0.054 0.043 1.675 +Rmeas(I) 0.075 0.056 0.884 +Rmeas(I+/-) 0.068 0.053 2.369 +Rpim(I) 0.034 0.026 0.625 +Rpim(I+/-) 0.041 0.031 1.675 +CC half 0.997 0.995 0.370 +Anomalous completeness 69.8 91.7 0.1 +Anomalous multiplicity 2.1 2.4 1.0 +Anomalous correlation 0.131 0.074 0.000 +Anomalous slope 1.124 +dF/F 0.071 +dI/s(dI) 1.255 +Total observations 561027 39438 526 +Total unique 145885 9107 507 +``` + +> [!NOTE] +> Do the summary statistics look okay? Is there any sign of an anomalous signal? + +While the summary table is worth a quick glance, graphical representations of the merging statistics are usually more informative. You can see plots of values against resolution and against image number if you open the file `dials.scale.html` in a web browser. + +> [!NOTE] +> Open `dials.scale.html` and look at the plots. What is the main factor determining the usable resolution limit in this case? How does the anomalous signal look? + +Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we could use: + +```bash +dials.merge scaled.expt scaled.refl +``` + +however, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that: + +```bash +dials.export scaled.expt scaled.refl +``` + +produces the file `scaled.mtz`, which we can import into CCP4 Cloud. + +## Comparing results with xia2 + +Hopefully by now the xia2 job you started on CCP4 Cloud will have finished. Following that job, run a "Merging and Scaling with Aimless" job, where under "Basic Options" select "no scaling only merge". Leave everything else as default and run. + +Now import your `scaled.mtz` from DIALS processing, and also follow that with a "no scaling only merge" Aimless job. + +Once both jobs have finished you can open both results windows to compare results side-by-side. Navigate to the "Scaling and merging" section in each case to compare merging statistics from Aimless. + +Which job looks better, yours or xia2's? Or does it not matter? From 94a8ae5af1fbb24ef946de8fe50bec0dbaefa6d3 Mon Sep 17 00:00:00 2001 From: David Waterman Date: Tue, 11 Mar 2025 17:11:20 +0000 Subject: [PATCH 2/9] First changes --- CCP4-CSSB-2025/dui2-processing.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index 4990266..67c9ae6 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -2,13 +2,13 @@ ## Data -To process the data locally using DIALS you will need a copy of the dataset on your computer. If you do not have it already you can download it from [this link](https://ccp4serv6.rc-harwell.ac.uk/jscofe-dev/tmp/ADH4.zip). +To process the data locally using DIALS you will need a copy of the dataset on your computer. If you do not have it already you can download it from [Zenodo](https://zenodo.org/records/14541394/files/zinc_K_edge_data_images_1-800.tar?download=1). ## Summary -We will start by looking at a data set recorded from crystals of the enzyme tetrahydroalstonine synthase (THAS1). The images were collected at Diamond Light Source on a PILATUS 6M pixel array detector at an X-ray wavelength of 1.282 Å, at the Zinc _K_ edge. There is sufficient anomalous signal to solve the structure by experimental phasing (SAD). There are some more details provided alongside the images in the file `ADH4_data_info.pdf`. +We will work on a data set recorded from crystals of the enzyme tetrahydroalstonine synthase (THAS1), with thanks to Prof. Dave Lawson for providing the data set. The images were collected at Diamond Light Source on a PILATUS 6M pixel array detector at an X-ray wavelength of 1.282 Å, at the Zinc _K_ edge. There is sufficient anomalous signal to solve the structure by experimental phasing (SAD). There are some more details about the data set [here](https://zenodo.org/records/14541394)). -First we will set up a xia2 processing job, running remotely on the CCP4 Cloud at Harwell. This will keep the local PCs free to simultaneously try out DIALS data processing using the command line. +First we will set up a xia2 processing job, running remotely on the CCP4 Cloud at Harwell. This will keep your local computer free to simultaneously try out DIALS data processing using the DUI2 graphical user interface. Once you have completed the "manual" processing, you can compare results with the xia2 job. Are there any differences? Which job has better statistics? From 126e14d4efc2e20bcbda817e818b4e126519405c Mon Sep 17 00:00:00 2001 From: David Waterman Date: Wed, 12 Mar 2025 10:45:49 +0000 Subject: [PATCH 3/9] Trying out screenshot --- CCP4-CSSB-2025/dui2-processing.md | 26 +++++++++++++++++++++----- CCP4-CSSB-2025/images/dui-start.png | Bin 0 -> 69197 bytes 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 CCP4-CSSB-2025/images/dui-start.png diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index 67c9ae6..ba43926 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -10,7 +10,7 @@ We will work on a data set recorded from crystals of the enzyme tetrahydroalston First we will set up a xia2 processing job, running remotely on the CCP4 Cloud at Harwell. This will keep your local computer free to simultaneously try out DIALS data processing using the DUI2 graphical user interface. -Once you have completed the "manual" processing, you can compare results with the xia2 job. Are there any differences? Which job has better statistics? +Once you have completed the interactive processing, you can compare results with the xia2 job. Are there any differences? Which job has better statistics? ## Processing with xia2 on CCP4 Cloud @@ -23,16 +23,32 @@ There's no need to set any advanced options, just select "Run". Make sure the jo > [!WARNING] > Running xia2 in CCP4 Cloud requires you first to upload the images to Cloud, so it hasn't been a very popular option in the past. You are more likely to come across xia2 from autoprocessing results at the synchrotron, or by running xia2 locally through ccp4i2 or at the command line. Recently however, uploading images was made easier if you (or your lab) use the Globus file transfer platform, where CCP4 Cloud has an endpoint. However, image data is large and will eventually be deleted from Cloud to save space. So don't consider CCP4 Cloud as a backup solution for your diffraction data! -## Setting up DIALS processing +## Setting up processing with DUI -Now we will process the images using the DIALS command line. In a terminal with the CCP4 environment sourced, first change to a directory where you want to do the processing (we recommend processing in a different directory from the images themselves): +Now we will process the images with DIALS via DUI. While it is possible to start DUI from either ccp4i2 or CCP4 Cloud, _this is not recommended!_ The problem is that when DUI is started from one of the CCP4 GUIs, it is not easy to restart DUI from where you left off if the program exists. If DUI is started from a terminal with the CCP4 environment sourced, then it can manage its own history and pick up from a previously unfinished job. + +Opening a command line (terminal) window with the CCP4 environment sourced differs by operating system. Please ask for help if you are unsure how to do this. Once it is done, first change to a directory where you want to do the processing (we recommend processing in a different directory from the images themselves), then start `dui2`. For example, using BASH on Linux or Mac: ```bash cd ~ -mkdir ADH4-dials -cd ADH4-dials +mkdir THAS1-dials +cd THAS1-dials +dui2 +``` + +on Windows + +```console +cd %USERPROFILE% +mkdir THAS1-dials +cd THAS1-dials +dui2 ``` +Once the program starts you should see something like this: + +![The DUI window at start up](./images/dui-start.png "DUI") + ## Importing the images The first task in data processing with DIALS is to import the images. The program used to do this is unimaginatively named `dials.import`. In common with other `dials.something` commands, running the program without options will print a help message with some usage examples: diff --git a/CCP4-CSSB-2025/images/dui-start.png b/CCP4-CSSB-2025/images/dui-start.png new file mode 100644 index 0000000000000000000000000000000000000000..60c3c4eb376bd08e518306b49533cbceded7eb55 GIT binary patch literal 69197 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 aQ11b*o$nL8GXP Date: Wed, 12 Mar 2025 11:43:54 +0000 Subject: [PATCH 4/9] Next image --- CCP4-CSSB-2025/dui2-processing.md | 50 ++++++++++++------------ CCP4-CSSB-2025/images/backstop-mask.png | Bin 0 -> 55189 bytes 2 files changed, 24 insertions(+), 26 deletions(-) create mode 100644 CCP4-CSSB-2025/images/backstop-mask.png diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index ba43926..8adb56a 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -38,7 +38,7 @@ dui2 on Windows -```console +```bat cd %USERPROFILE% mkdir THAS1-dials cd THAS1-dials @@ -51,29 +51,29 @@ Once the program starts you should see something like this: ## Importing the images -The first task in data processing with DIALS is to import the images. The program used to do this is unimaginatively named `dials.import`. In common with other `dials.something` commands, running the program without options will print a help message with some usage examples: +The first task in data processing with DIALS is to import the images. The DUI history tree is already highlighting an incomplete `dials.import` node. To see some help for a node that hasn't yet been run, click on the "Log" tab on the right, but note this help message is relevant mainly for the usage of `dials.import` from the command line, and some of the description might not be relevant for DUI. -```bash -dials.import -``` - -You may have to scroll up to read the full output. If you add the option `-h` to this command you will not only see the help message, but also the structured definitions of the command line parameters that can be passed to the program. +To import the data set, click on the "Open images" button and then navigate to the directory where the images are located. You then need to click on just one of the CBF images, say `ADH4_M7S9_6_0001.cbf`, and then click "Open". DUI will automatically convert that to a template that matches all the images in the data set. > [!NOTE] -> What happens if you pass multiple `h` and `v` characters? Try this out later with other DIALS programs too. +For EIGER data there is not one file per image, but usually a few files with the extension `.h5`. In this case, just select the file with the name that ends `_master.h5`, or, (better) if it is present, the file with the extension `.nxs`. +> + +DUI has not actually done the import yet. To do that you need to click on the "Run" button with the DIALS logo, at the bottom of the window. Once that is completed, in the "Log" tab you should see output that looks like this -Now we are ready to import the images. You can do this by entering the following command, after adjusting the path to the files on your computer: -```bash -dials.import /path/to/images/ADH4_M7S9_6_*.cbf ``` +DIALS (2018) Acta Cryst. D74, 85-97. https://doi.org/10.1107/S2059798317017235 +DIALS 3.21 +The following parameters have been modified: -Note the use of the wildcard `*` character in this command. This is not DIALS syntax, but is expanded by the shell to match every image file in that directory, from `ADH4_M7S9_6_0001.cbf` to `ADH4_M7S9_6_0800.cbf`. What `dials.import` does is read the header of each of these files, checks the diffraction geometry, and determines the relationship between the files. All going well you will see output that looks something like this: +input { + experiments = +} -``` -------------------------------------------------------------------------------- format: - template: /data/ADH4_data_for_summer_school/ADH4_diffraction_data/ADH4_M7S9_6_####.cbf:1:800 + template: /data/THAS1/images_1-800/ADH4_M7S9_6_####.cbf:1:800 num images: 800 sequences: still: 0 @@ -83,24 +83,22 @@ Note the use of the wildcard `*` character in this command. This is not DIALS sy Writing experiments to imported.expt ``` -This tells you that DIALS interprets the 800 images as a single rotation sweep, and writes the diffraction geometry and associated metadata into a new file, `imported.expt`. To get human-readable information from that file try - -```bash -dials.show imported.expt -``` +This tells you that DIALS interprets the 800 images as a single rotation sweep, and writes the diffraction geometry and associated metadata into a new file, `imported.expt`. ## Viewing the images -Although we are doing command-line data processing, we should still look at the images! DIALS contains a feature-rich image viewer for this purpose: - -```bash -dials.image_viewer imported.expt -``` +Click on the "Image" tab to view the diffraction images using DUI's viewer. You can use the mousewheel to zoom (if you have one), or the magnifying glass buttons at the upper right of the window. Click and drag to scroll the image. More options to change the contrast and colour scheme are contained in the "Display info" pull down menu. > [!NOTE] -> Take a moment to explore the controls in the image viewer. Can you drag the image around and zoom using the mouse? Can you see the intensity and resolution information for a single pixel? What is your preferred colour scheme and brightness? Can you scroll through and see how the diffraction images change as data collection proceeds? Don't be afraid to play with the controls - nothing you can do here will affect processing of the data set. +> Look at images at various points in the data set - at the beginning, in the middle, and at the end. Does the crystal diffract well throughout? Are there any other features present alongside the diffraction spots? + +## Masking the backstop shadow (optional) + +There is a horizontal backstop shadow across the images. We could mask this out if we wanted although in this case the rotation axis orientation is aligned with the backstop shadow (this is not shown in the DUI viewer, but you can see it by running the command `dials.image_viewer imported.expt`). Spots close to the rotation axis are less reliable and will not be integrated anyway (can you figure out why?). + +Nevertheless, if you want to try it you can mask out the shadow by clicking the "apply mask" button and then choosing one of the options (I recommend "Polygon") then clicking in the image to define a mask. Be aware that the mask is not actually defined until you click the DIALS "Run" button! After that the masked region will be displayed in translucent red, like this -There is a horizontal backstop shadow across the images. We could mask this out if we wanted, however looking at the rotation axis orientation using `dials.image_viewer`, we see that this is aligned with the backstop shadow. Spots close to the rotation axis are less reliable and will not be integrated anyway (can you figure out why?). So we will not bother to mask the shadow here. +![The backstop mask is shown as a translucent red polygon](./images/backstop-mask.png "Backstop mask") ## Finding spots diff --git a/CCP4-CSSB-2025/images/backstop-mask.png b/CCP4-CSSB-2025/images/backstop-mask.png new file mode 100644 index 0000000000000000000000000000000000000000..b1aef9c916ba18dd738c36e31a1c78e8886d0a27 GIT binary patch literal 55189 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 M07*qoM6N<$f Date: Wed, 12 Mar 2025 12:13:43 +0000 Subject: [PATCH 5/9] up to rlv image --- CCP4-CSSB-2025/dui2-processing.md | 37 +++++++++++------------------- CCP4-CSSB-2025/images/rlv.png | Bin 0 -> 60802 bytes 2 files changed, 13 insertions(+), 24 deletions(-) create mode 100644 CCP4-CSSB-2025/images/rlv.png diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index 8adb56a..f5c27bf 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -59,7 +59,7 @@ To import the data set, click on the "Open images" button and then navigate to t For EIGER data there is not one file per image, but usually a few files with the extension `.h5`. In this case, just select the file with the name that ends `_master.h5`, or, (better) if it is present, the file with the extension `.nxs`. > -DUI has not actually done the import yet. To do that you need to click on the "Run" button with the DIALS logo, at the bottom of the window. Once that is completed, in the "Log" tab you should see output that looks like this +DUI has not actually done the import yet. To do that you need to click on the "Run" button with the DIALS logo, at the bottom of the window. Once that is completed, in the "Log" tab you should see output that looks like this: ``` @@ -96,24 +96,15 @@ Click on the "Image" tab to view the diffraction images using DUI's viewer. You There is a horizontal backstop shadow across the images. We could mask this out if we wanted although in this case the rotation axis orientation is aligned with the backstop shadow (this is not shown in the DUI viewer, but you can see it by running the command `dials.image_viewer imported.expt`). Spots close to the rotation axis are less reliable and will not be integrated anyway (can you figure out why?). -Nevertheless, if you want to try it you can mask out the shadow by clicking the "apply mask" button and then choosing one of the options (I recommend "Polygon") then clicking in the image to define a mask. Be aware that the mask is not actually defined until you click the DIALS "Run" button! After that the masked region will be displayed in translucent red, like this +Nevertheless, if you want to try it you can mask out the shadow by clicking the "apply mask" button and then choosing one of the options (I recommend "Polygon") then clicking in the image to define a mask. Be aware that the mask is not actually defined until you click the DIALS "Run" button! After that the masked region will be displayed in translucent red, like this: ![The backstop mask is shown as a translucent red polygon](./images/backstop-mask.png "Backstop mask") ## Finding spots -With the image viewer open, select the "Threshold pixels" checkbox. This shows you which pixels the spot-finding algorithm considers to be "strong". +Click the "find spots" button to move to the next step. There are various parameters that can be adjusted to control the spot-finding algorithm. For Pilatus data sets like this one the default parameters are usually sensible. So, just click the "Run" button to start the job. -> [!NOTE] -> Do the strong pixels match the position of the diffraction spots? What happens if you modify parameters of the threshold algorithm (like kernel size and gain)? What happens if you select different threshold algorithms? - -The default parameters seem pretty good for this data set, so exit the image viewer and run a default spot-finding job: - -```bash -dials.find_spots imported.expt -``` - -DIALS finds spots throughout the entire rotation scan, whereas some other programs default to finding spots on just enough images to perform indexing. This means spot-finding takes longer with DIALS, but the information determined from the entire scan can be reused multiple times. In fact, now DIALS will not need to read the image data again until integration. At the end of the spot-finding procedure you will see an ASCII-art histogram indicating the number of spots found on each image. In this case it is pretty boring because the crystal diffracts equally well throughout the scan: +DIALS finds spots throughout the entire rotation scan, whereas some other programs default to finding spots on just enough images to perform indexing. This means spot-finding takes longer with DIALS, but the information determined from the entire scan can be reused multiple times. In fact, now DIALS will not need to read the image data again until integration. At the end of the spot-finding procedure, in the "Log" tab you will see an ASCII-art histogram indicating the number of spots found on each image. In this case it is pretty boring because the crystal diffracts consistently well throughout the scan: ``` Histogram of per-image spot count for imageset 0: @@ -134,23 +125,21 @@ Histogram of per-image spot count for imageset 0: Saved 307302 reflections to strong.refl ``` -## Viewing the reciprocal lattice - -Now we can pass both the experimental geometry file `imported.expt`, and spot file `strong.refl` to `dials.reciprocal_lattice_viewer`: +Similar information is available graphically in the "Report" tab. Click on "Analysis of strong reflections" to see the per-image counts. You can also see the details about the experiment geometry by clicking on that heading to expand the box. -```bash -dials.reciprocal_lattice_viewer imported.expt strong.refl -``` - -> [!TIP] -> Using tab completion, if supported by your shell, avoids you having to type out long commands or filenames, like `dials.reciprocal_lattice_viewer`. Even if tab complete does not work, in this case you can use the alias `dials.rlv` instead. +## Viewing the reciprocal lattice -Take some time to explore the controls in the `dials.reciprocal_lattice_viewer` +DUI does not yet contain its own reciprocal lattice viewer. However it is able to launch `dials.reciprocal_lattice_viewer` for you, from a button in the "Reciprocal lattice" tab. Press that, then take some time to explore the controls in the `dials.reciprocal_lattice_viewer`. > [!NOTE] > What does middle-button drag do? Try setting "Max Z" to something small, like 5. What does this show you? Align the view down the rotation axis and then click to increase the Max Z value (Use Alt-click to jump in blocks of 100). Can you see how data collection sweeps out a volume of reciprocal space? Can you align the view in a direction that clearly shows the crystal lattice? -The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is to look for pathologies that might cause indexing to fail, such as poor diffraction geometry, noisy spots, split spots, ice rings, and so on. In this case the reciprocal space lattice looks very clean, so we would not expect indexing to have any problems. +> [!NOTE] +> Sorry, there are bugs in the way buttons are display in CCP4's version of `dials.reciprocal_lattice_viewer`. The controls are functional. but the values are hard to read. + +The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is to look for pathologies that might cause indexing to fail, such as poor diffraction geometry, noisy spots, split spots, ice rings, and so on. In this case the reciprocal space lattice looks very clean, so we would not expect indexing to have any problems. Here is a view with a nicely aligned lattice, suggesting that indexing should not be a problem: + +![The aligned reciprocal lattice points](./images/rlv.png "dials.reciprocal_lattice_viewer") ## Indexing diff --git a/CCP4-CSSB-2025/images/rlv.png b/CCP4-CSSB-2025/images/rlv.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c66df36f51aa60b7b7771fb499192bf6ee2be5 GIT binary patch literal 60802 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 RUQ+-seQiUna!vc^{{sr&A0+?) literal 0 HcmV?d00001 From ea9a2d89a8cb699753622e5915ed7dcdc3609d22 Mon Sep 17 00:00:00 2001 From: David Waterman Date: Wed, 12 Mar 2025 16:18:13 +0000 Subject: [PATCH 6/9] Up to integration --- CCP4-CSSB-2025/dui2-processing.md | 69 ++++++----------------- CCP4-CSSB-2025/images/rbs-table.png | Bin 0 -> 10876 bytes CCP4-CSSB-2025/images/sv-cell.png | Bin 0 -> 41658 bytes CCP4-CSSB-2025/images/sv-orientation.png | Bin 0 -> 32152 bytes 4 files changed, 18 insertions(+), 51 deletions(-) create mode 100644 CCP4-CSSB-2025/images/rbs-table.png create mode 100644 CCP4-CSSB-2025/images/sv-cell.png create mode 100644 CCP4-CSSB-2025/images/sv-orientation.png diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index f5c27bf..17f8664 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -134,8 +134,8 @@ DUI does not yet contain its own reciprocal lattice viewer. However it is able t > [!NOTE] > What does middle-button drag do? Try setting "Max Z" to something small, like 5. What does this show you? Align the view down the rotation axis and then click to increase the Max Z value (Use Alt-click to jump in blocks of 100). Can you see how data collection sweeps out a volume of reciprocal space? Can you align the view in a direction that clearly shows the crystal lattice? -> [!NOTE] -> Sorry, there are bugs in the way buttons are display in CCP4's version of `dials.reciprocal_lattice_viewer`. The controls are functional. but the values are hard to read. +> [!WARNING] +> Sorry, there are bugs in the way buttons are displayed in CCP4's version of `dials.reciprocal_lattice_viewer`. The controls are functional. but the values are hard to read. The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is to look for pathologies that might cause indexing to fail, such as poor diffraction geometry, noisy spots, split spots, ice rings, and so on. In this case the reciprocal space lattice looks very clean, so we would not expect indexing to have any problems. Here is a view with a nicely aligned lattice, suggesting that indexing should not be a problem: @@ -144,13 +144,9 @@ The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is t ## Indexing -Go ahead and run a default `dials.index` job, which will find a $P\ 1$ cell, using the 3D FFT algorithm: - -```bash -dials.index imported.expt strong.refl -``` +Click the "index" button to set up a `dials.index` job. By default this will find a $P\ 1$ cell, using the 3D FFT algorithm. This is fine for our purposes, but feel free to experiment with the other settings. If a job goes wrong you can always click back to the `find_spots` node on the history tree and start a new "index" job from that point. -It is worth taking a moment to read the log output. The program runs through a few stages: +It is worth taking a moment to read the output in the "Log" tab once the job completes. The program runs through a few stages: - Setting up for indexing (calculate `max_cell`, setting resolution limits, mapping spots to reciprocal space and forming the FFT grid) - Performing the FFT, searching for real space basis vectors and forming candidate solutions (in this case 50) @@ -162,32 +158,16 @@ It is worth taking a moment to read the log output. The program runs through a f - Increases resolution for the next macrocycle - Once the resolution limit includes all reflections the final refined model and reflections are written to the files `indexed.expt` and `indexed.expt` -> [!NOTE] -> The behaviour of all of these stages can be controlled by parameters given to `dials.index` (remember option switches like `-hhhvv`), but in most cases the defaults suffice. - -Now we have a crystal model it is worth looking at the reciprocal lattice again: - -```bash -dials.reciprocal_lattice_viewer indexed.expt indexed.refl -``` - -The spots are now coloured according to whether they are indexed or not. +Now we have a crystal model it is worth looking at the reciprocal lattice again, by launching the `dials.reciprocal_lattice_viewer` from the "Reciprocal lattice" tab. The spots are now coloured according to whether they are indexed or not, although in this case almost all spots are indexed. > [!NOTE] > Try the "Show reciprocal cell" option. Zoom in and see if you can align the view with one of the reciprocal basis vectors, $a^\star$, $b^\star$ or $c^\star$. Try the toggles between "indexed" and "unindexed", "inliers" and "outliers". ## Determining the Bravais lattice -The initial solution from `dials.index` is triclinic, but the $\alpha$, $\beta$ \nd $\gamma$ angles are very close to 90°. To identify compatible Bravais lattices we run: - -```bash -dials.refine_bravais_settings indexed.expt indexed.refl -``` - -> [!TIP] -> Like with `dials.reciprocal_lattice_viewer`, `dials.refine_bravais_settings` has a short form alias: `dials.rbs` +The initial solution from `dials.index` is triclinic, but the $\alpha$, $\beta$ \nd $\gamma$ angles are very close to 90°. To identify compatible Bravais lattices click on the "refine bravais settings" button and press "Run" -This will enforce the Bravais symmetry of compatible lattices (within some tolerance) and run refinement. The results are printed as a table: +This will enforce the Bravais symmetry of compatible lattices (within some tolerance) and run refinement. The results are printed as a table at the end of the logfile shown in the "Log" tab: ``` Chiral space groups corresponding to each Bravais lattice: @@ -204,23 +184,20 @@ oP: P222 P2221 P21212 P212121 | * 1 | 0 | 0.071 | -/- | 12000 | aP | 57.11 102.19 112.18 89.99 89.97 90.01 | 654702 | a,b,c | +------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ ``` -The program writes out experimental geometry for all of these solutions (files `bravais_setting_1.expt` to `bravais_setting_5.expt`) but the associated reflections are not written out, as these files are larger and there is no point wasting disk space for the solutions that are not taken on further. The decision of which solution to choose is down to the user, but the program marks solutions deemed acceptable with an asterisk: `*`. In general, we look for the highest symmetry solution with reasonable values for the `Metric fit`, `rmsd` and `min/max cc` columns. Here we will take solution 5, the primitive orthorhombic (`oP`) one. -In general, to get appropriately reindexed reflections we should run the `dials.reindex` program, passing the change of basis operator printed in the last column of the table. In this case that operator is just `a,b,c`, which is identity - the reflections come out with the same indices as they go in, so the reindexing step is not necessary in this case. Nevertheless, we show the command here anyway: +However, within DUI it is easier to see this table in the next step - reindexing. So click on the "reindex" button, and the input pane now shows the same information as the text table, with a recommended solution highlighted. -```bash -dials.reindex indexed.refl change_of_basis_op=a,b,c -``` +![The table of Bravais lattice solutions](./images/rbs-table.png "Reindexing options") -## Refining the solution +The decision of which solution to choose is down to the user, but solutions deemed acceptable are marked with a "Y" in the "Ok" column. In general, we look for the highest symmetry solution with reasonable values for the `Metric fit`, `rmsd` and `min/max cc` columns. Here we will take solution 5, the primitive orthorhombic (`oP`) one. So ensure that row is highlighted and then press "Run". -We did some refinement during indexing, and again during Bravais lattice determination. Nevertheless, it is still worth running an additional step of refinement using `dials.refine`. This will use a more sophisticated outlier rejection algorithm than before, and it will also refine a "scan-varying" model of the crystal, in which changes to the orientation and unit cell are allowed as a function of the position in the rotation scan. Using the chosen Bravais lattice and our (unnecessarily) reindexed reflections, we type: +You could now check the crystal model under "Experiments" in the "Report" tab to see that the space group has been set to P\ 2\ 2\ 2$. No attempt has been made yet to locate screw axes. That's not a problem, we do not need to know the exact space group prior to integration, just a sub group. There will be another attempt at symmetry determination later. -```bash -dials.refine bravais_setting_5.expt reindexed.refl -``` +## Refining the solution + +We did some refinement during indexing, and again during Bravais lattice determination. Nevertheless, it is still worth running an additional step of refinement using the program `dials.refine`. This will use a more sophisticated outlier rejection algorithm than before, and it will also refine a "scan-varying" model of the crystal, in which changes to the orientation and unit cell are allowed as a function of the position in the rotation scan. So, click on the "Refine" button and click "Run" -From the log you should see that initially 13 parameters are refined during the "scan-static" macrocycle. Then this is followed by a "scan-varying" macrocycle using 37 parameters, where the crystal parameters have been made local to regions of the scan and the model is constructed by smoothing between these points. This more sophisticated model is able to fit the predictions to the data better, and you should see lower RMSDs as a result: +From the log you should see that initially 13 parameters are refined during the "scan-static" macrocycle. Then this is followed by a "scan-varying" macrocycle using 37 parameters, where the crystal parameters have been made local to regions of the scan and the model is constructed by smoothing between these points. This more sophisticated model is able to fit the predictions to the data better, and you should see lower RMSDs as a result. For example: ``` RMSDs by experiment: @@ -232,22 +209,12 @@ RMSDs by experiment: +-------+--------+----------+----------+------------+ ``` -> [!NOTE] -> The space group selected by `dials.refine_bravais_settings` is $P\ 2\ 2\ 2$; that is, no attempt has been made yet to locate screw axes. That's not a problem, we do not need to know the exact space group prior to integration, just a sub group. There will be another attempt at symmetry determination later. - -It useful to look at the way the crystal parameters change during the scan, to make sure there are no unrealistic-looking changes. One way to do that is to use the command: -```bash -dials.plot_scan_varying_model refined.expt -``` +It useful to look at the way the crystal parameters change during the scan, to make sure there are no unrealistic-looking changes. Click on the "Report" tab and expand the "Analysis of scan-varying crystal model". You should see plots like these: -This will produce a pair of plots as `.png` files, which you can open in a viewer. Alternatively, you could run: - -```bash -dials.report refined.expt refined.refl -``` +![The scan-varying crystal unit cell parameters](./images/sv-cell.png "Scan-varying cell") -which will produce an HTML document, `dials.report.html`, containing similar plots as well as lot more information about the current stage of the data processing. This can be opened in any web browser. +![The scan-varying crystal orientation parameters](./images/sv-orientation.png "Scan-varying orientation") > [!NOTE] > Check that the change in unit cell parameters and orientation angles looks small across the whole scan. diff --git a/CCP4-CSSB-2025/images/rbs-table.png b/CCP4-CSSB-2025/images/rbs-table.png new file mode 100644 index 0000000000000000000000000000000000000000..48adbb15f5e0061494720c9141f7cb343dddd8b8 GIT binary patch literal 10876 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 RmJEecme-K0l`;SH{{UerO^*No literal 0 HcmV?d00001 diff --git a/CCP4-CSSB-2025/images/sv-cell.png b/CCP4-CSSB-2025/images/sv-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..538f0592519315dce089fdc199d8d3bfebd41422 GIT binary patch literal 41658 zcmeFZWmHw$+c&JZfelEPG;F%NyQI4X1Zf1ML?i_1lI|8Hq`RctNQ1PLG#ikVkdk^P z=O54gjPZVbzuh0sU>scRwdP!NUh`Mij?h$Bz(glSfAHV|rjnwZ_JapVh7TS*jDw

$xUA?Qm+``sY9r^<4hlO(V1T_yI z;p4{7bo>4wCcx-HlI!WFmU~Q)q>J`Y$=;B(pmq1|F6T6+u8vpK*3H%?ck5(s^k5{* z=RmmA{kM4MmDR*to$Y93BN8M-7dDCEK)ljV9cfav*6(d)^waJSfztPd#A%MWLC!VWO?4~8K!evhC2Ri zR2#_>rj?H(N_HO=H^>lhVqt$)A6ITv7rO13{wedtx6pw!Zc9W((^3K{|I6;vf@JfM zM&F@S&eRt7twH`76WYt;4U7t2@n^XGa`!ipi^>kyS!{7HzTT3&i#Kh3qm;;?R-l~B z;k3Pw-ri*tZHGLwHP7-;=<;pKRECV^>t&gcBOl(GToa!wUVkwimLNHW@QrI_& zGG8TJU!Js%oOI)B^q=kjjF!Z{VK=Ona@!cBCpLW@58jNd+vf1Lr>bn|V{Xf>i-|&& z;+L_T`zNE4f|3_l$Rd^CrD;iAAIkEkP8Mqn1z}4takl?S5c@MGJJIp(N_XooxOC&F zkBWG6sz{CO=&3SN_U{6vM60RKTD>zRQUOTXO|MKZ_nVdxgRE6a&)dB(d%%N=qY(G{ zAFfC<>y;*rYd`l~^yr0r*jsF!v179Royu8gdZiZ~BO{sGXbQXWaC5Eo5W|l$gH$r-Hg3Yp zKE!mf29+0BY|){~M^1}h^eWrWp0%7#8(V*U|FHJeqR3pkPg9G;cn42tSyjh8KVxxh zAEl4#o4r{Y$=i!h!i-y%+3+3kPYJpHw{t6QBf?v0qeIE8spy{m7q0v7u8;ccrz2~c zUM`c5*eJ}mGq`(0J2W(ke2yeCPJ__`n* zwj3o-#)QNj{vNOVi3tHkf;bXq+hL$;uEgR6dba11mmjuCym4+& zV|A|Q?YEyVu`afH3T7s>9+FtTz1&Fs-WTv83iC;$XbUA)nIKgo-cal z9$wWBaquGWCysWjI+cGfwPQ*zbozJNyRUVleJZr7{NOy8#2h-c;4x$Rg4XcjQ2Gt2 z;43z-lg(uC9~uNl+k1dMHSL5;l6<>Nugs>mE32hazub_fs{Jfus?zjly?a0Irog5_ z)pK$8Y}cDchnW!^nrl>=D5F}d_y&g=Qj5XUsX~=h-FH$??c7&Gh%C7XlNg?C+dD+c&xdxif_=W`vGIBV<)Hwl09|l2IUZy@ z;P9iDTPirP2c4Q0Z3H?zm*36U>5&_Kd0pbw>M4Mu@pkS33N~ey@?>`r+!ZGk?C?z4 zS;Sarjn~ncGwp?N-hj&tLACU%@n%PW&+gDnGj#%vV7>gonow2iRiSjpSZ{R;@0;#a zlp&jrIF$Yu-!u3N{qJsVCOr@nDx3{4LmWIlQXJ{Ou8>?&0dqbc-#(k$+pFIyH5NT4 zPD{QgYM)wOVBw^?*i}>G;Fu^PBY6dUb&bw5`a^HxfU|{yNt(6`afMEUisdYEvNhA~ zfe~Y}iz9R{(R@JZg}_Zc5#EigA|RbXrF{GKR5(Mm-q}3l4Ya0bG&Lg5ReH81){v7i z4gwqG$Hesr7dww^a!8OEBRBIs>N)=PDfWvw!u{akfi0mt^>a|_2&-6&*Wb{rq%n;V zRp$wJq4c7xh!xm}Z3aiWe9Lb2;wN{Fa8a*jUr&q6ZRgcNYoT$|E4Qotrpyyw zeMPiQ_Igf5Zw49v6OVd>AQVhDd#9|HpEzs+2K6Q@A3`TG$3i~~ga;Q3JXV_kr;e?F z=U*r)yvqc6)r0sim84&rkz`n!EbJ>j4+J+@h!&GffN#^Ndr|J!cSvaZ9$5PV(xi48 z+&a8w;Vd({-tUIfc@=WJcbIwo!~RTC;_vW|idhcF+N~nNM~UGwb<=gW8Yg%Uq}_-s zafkiVIL6a1zZg7G*c!>k9FP;;OY?iTl=U|RhNA$EugFh56M03k4~k&dmeksg>S>8@ z-&@*zHfgElPON_M3G-{gnwrapK1dIPf;Xxvjo2UVs?<-` z?jsS)1Lw>B&bRXGLEFWaeKAjif{7j@&6XSSu5*S2Tbhitq*IYT;d6BK%fjcygABz> zK~uJTDLQ$4hs3`9b%GLgL!wDL^s&%RO<1{FZ~yL2wo@BAsOrYU4AXQZFIFBUT1M?+ z$Q+G`{(e&X-UvUM=|tgVz_zOGIMOUIB;s;4j7nhtu(iu7G!z=W0469}pHnP22{x~MIpXPbM%2t$lo_P1;v>Yh`FX=;%Dwpz;KzKvHuh+m={~>P99d`}f za05t^dC%_PcJmEvrL95qRtO7zOyv6O^`_XKtBHc>8dSJ(Hp>w@tw8n8N>v#Aqv+V3 zAbTxM{@mAP}-)u3LIr?cy#T8RpzrCS`47qpMeVaAR{{G|L zZ2%4%l)z7N2@=@ns|pLlH#;1L9HH}bDEX+rt3&?9G`(;o)(o(Bt+c~W@e zE^|0+)7hzy`YU~2;wqM{LvtwMZvAbH;KheBkJA|bGr-lZ?rb;|l-q8Dc5g zefx!7w^FKC_F)q{mu(CA+a~3NK%`VT%|{69w7y&)J`R%I^M!Z53)sDFG6<>+nrkht zpHg&O@p&{y3WP5K{*In%ZkztX-r^+wkMW0=EM!WDh1N-j~E#F*bAtrGlooMXbfW-yC=K1 zd|%=^bsQsBfmBB#h*e%J!`S zHQI;7&r)QVM5JWHlezEC(j)R^!`tLeG{d^~GhoCOaadRg1j3*-gu)xjncEJ*yx4L>TZ32Hw|~x4Uy)A0E&J ztEGx*;ULTW^s=il@Tkq9#**fhEJJpA@;Iow^i0ri`7^;eWm z@qDx++@M+Msc|;p%ONhzHP)Ui`@Sp^3{w59eX!m8Cb8XLsHKt3P;FVfS_NR>;)QzK zMvAd&H{HDX0q2Ayj+~4+8YkCjH%jGr*)#u^TcL#^jlKVUt##_}*Zcqbjmg})XY+t{shMI4C| zbrSc4VC&U1asoP>Iu^fRKwLr3JC&O*3Nyp2t|Srm5EB9CK+|@>ps6U7p*7sTqT-DfjyCh50-NaV3aaA!2PG1UB@bve zo?#Yarv$ZP`qhUZRvl0;nRP$M{n`IHWBxvFD4GE0A|`L2-WtW8&*hJ2DeDEy(1h$_ zXO#<^X2Tx|shP^iHq)y8FOx3Bg76`|Va*pF5e|9kK&X@|cdEtOk*W)6$)rfULxJ9V zzV0ZY^ab%rzV4w5kF0yf#C^Y?o-CY}M@ogl-U}dA1Qj#$m;`lk_8rl<{e3+_8g~+9 zReb~l7{$8qbylR5<9+RDoR(Gi1eGIyILviXxq2Qr$BQRp^E;YMkQ5funW?jh(kbA( zwx$HC>Ez38L&AVrX(=@Qz4DM4Ioxn`Bz4_1+sXo$9P&<5-%zH|XaS5)(%KZ+Ju!ac zRWWC}zd(^d({0d@r#`x;F&7Tyyt@BUCI|wUXuiO61iY0uzrDUZ2Cy9vdE){=*e56dO_9}jWzyqsd1RF}Wk{Q`zRfNDD2 z_E*GH{wrR9TBd*!AYL0lbV&K)u{#LJIAYOrIXPDH)-aNQ8P@9gJ0*&~h`J|| zP$$qjqD(*sd`!1I*ywAO6(g#+P%ye|MEDcD~@QU93(q_r;^E?QGt`ZOLnk89q3cJf6sk z1dz}DNgAZT*&k1v!0(_xkj`t15>4%=-s-$8!E9Llk&d3eXY?blc>$w(RvaMUq!rq9 zh%hR@IL?lXt_vf*s^_L>zn3`;Ok6`u+`seVPMT8y!dq)Q%5hIJx|8sVMgeKdIAsE7 zXxA{aHomamb#s=)yJyFU0sImjyUxh>_oWcU6slY;H+>*RS2ul-LV+4PG>%`qaZxhq zwuc}Qev<&eYc^+Vzn3+J%7%qk;madm?RG1PflOLslnRr*9DxbQ(7R2X+=Io|p^wr* z1-_TZKr6ba)eN-me4t#tS2K~4cVDLYt^*}Rc=5`eu3`s1@V6q)`CF|vGfYDbky+(W zHsVkS(N$&`2n)V@(Fg7`;cLiNs3+e}@ z@Y+_nWb?UIIaYeZGei5KF&sd?Nd2U#vPq!RIo}u`=Vc_f{j@8c-WSP2=d9Nx)@6oy z3=$@p%++P&X3f5;UUaVd3H!^BikE8o7M(6N`T=|Da4!KdGQ*?rx*S>bB3Jj99!MD)VJsAinByKlw&AF8GtgE2vBs< z@hCcqF}>lN&&=@JZ%Sw>;_CA}uOSu*<~3Tc_hz}j?=5-nvNIdi7A(A7kGAhvKLL8% zTY1PbgxpOjDSVM4H=e`vOY{6Zon`^I^FFOY3_${OC`*KL^&3htj^C=Lv~@EFDak*v zivqU0SmX=68Z0K-o@spwsKs@bFpO&`G{)|qz09;8jHD>}(o%1uwC&<&@1BEq$r~GM zT!5DH{aHwBG#;DiKNAS#I!Z<-5)mYBwQ6cUpi6pu$8!t*#EWg}na*P!d3e%G=KNOv zUhorCk4EgnhmWRoG?bP*-W39!ag8$|e{vP*l~#ZMY%>tY;g#2OIsf$6MbR*2rL}QZ zJhfgt4k)7PZ6vOBu^=uaYms4D~X$vPTcQBkuNSVuOSAwYLE1mPbv!Bj_>J2%^ zpvo1NwadsNGsC(Ulp?;$QguPLk5i>^bMXfQ+Wzj8x&0cWX}R3YOg4|`|GOBrQ87@q z@iWAD<4<~>jnPgrC*65NB}3Y;E@nXTw%R^y?_OqZd><&Y9$Naexy}>fHuNnuht@!l ziPZ>?YeN?B!raZXtKXf(^^JD^u8ve(=I^JGqUB-PGe?687^zUAw`P=K0QI4>Mfkeh3AdTAlmQJXA zRE){>yZJjX#M$Y%QxQKfpJ-lliAp<+8_~3&KF}J|UrmyUNF{7VP(7z7)@5Px6kz96 zVy2rk|Q$YXw8FPK{^!bv^=inuf zAuL8ve}pa_BHV(+)69v_v`p+iE0i8{B7uR65&r^0fZIm0!JrCfJKa{Uf5)za;snsM zF&`e&$Dm+TB!B8aIQz}w;FzHi014JsIY=l|6q|dP{*UZa2jAu_HTJQnonPah7{=|| z=rp_YuCtjPthy#TO?7%8v&Cxs!ks2o;mPi>Kmv3ECLF#2x4&L@O&&b2|2~`Z5el(e z#XtLt=~3vIw-CT#rrOv?J`$^jB+u7$K`T>APJ`3U{7#k{jV{W8e6H3yYT?aKrxHH+ z0ku^1?bY&KMsT$p&UBfp(1(tctyHAmd3kC1 zMf%QFGqqv0)%E94OtMWLe2dCfK&KEr#AbXLyDGCTA|5+*L8#a%EPC3$F28JnXnqW2 z`~u-&10;D;?@4oHpN4J~g4HgyE33mP{^OzA{mPOzm1fgvNM)%|r<3{~jwkqeRUNT8 zV(e769qOSs8EmLAIeg3%IlHmlSTk!5(W0ybv;1kJ$gaZ_go*LCok0Rl~%_&JV`~GC%##hz%s7D+;mS_E*$zatCs$R)E2x2YDT$E*(Sc!n7$Xc1YPw!f z;6p7ErMT;G%jX7KqkAI@KE}Lm{TR6Lv$iye6K@d@AJEeg6KVsh>yD9&c$$h)cABc^ zW(tuTQOosMU~g|`J>MqdGXyvM%=dDte`Wn%u)qc<$dujJLl3zmbNM&1;Qhr`fxTLu zl>%w5HoLbdO0aqb6DN%JX7(lzY8~fzP7*?YO4-mAn&T!yFz#6ERdJXgbt~`A7j50l zY3y>DCId9WKP9`F8TRXxXcr>Dz7V9s=MKNLga;z`+IP5bjr67t#{a=%`f{F0!e`i7 zu|)5zVZ`n}z0a+~7{NF<@!Q^r|C^h#e4x4T?%%D@_KB@Buk-mNc4sWwntM7YbvfsJ;be9`U7L?qy$;doFJGa&h>U}GPwM>^LfP#GNM`JwYljI zxH7&jWzus}E5!4R2cBn7ode0Rq@Ux^d#drg;#mCRk+}LTj7*L26>rWo9p7_E-&;K1 zs~?fSQ@{pYBhzjj@5_jAIXQ=!7f<+9J(V!LUbWgQCCNc=gQ09zp%!m=6-a~4tN}<+3+==2D{o2&>ND} z@6^atQ|njV)M}?ViJQlLm7D$~PuQ{@h@K#5>v+*FmtiiP`t^eTCnBOo<%6^S(Y0{& zqwAg@lcV2Kq*G&OCQ+2DCngv03VruyxUXS6k>))KC=O#ErF)A>a;@A{*P>eN z#`AS?dk*Z@Vk4e@@xAna6fhQu`$uM~W_>nhlQg;s-)rxW^w-CnRs|x1j`{basN}m#;Yd?i+S6Vx@Cdio z3M3pV!=I}G(6CRi&epBZpF}4|Hn`*F%(xSRp{-w}N($yU5AxqYKJZYMH0LunW+SPH zY~}{e+?Lv+Bc&+42tGKvtv!YDW4$2ju%!E0uuGmpBZ8YL;a^{=Sr}MuMA$yXWjo=L@Ob+CuYHRzpJh9VezqI(M)K~?pjY8B zYTX{LI70%2b)nG1F#xcPe~l%{Jc1h=Z#8O}K$5y%BmSqia_~FR-$R#e%!O?lwS^bfK&c@7uSNA zfh|?eUQT^=c&5qO>=W#?$yKUah_UhIU+Q;|)elHk)>MLaft`SC~W z6_%o|VDBjYmoTWSOpwLrBTKRzE1|&To=jI58%**+ke(I%6oEv2vF(W}rs|Oo#_!2; zou$oy>p*3D2Cz_~NeO7$C0lC30}q>Ag>H@>e5=70@CPRUpqk(!0p88yt+L?Cn`=6jnOJgBzQKM#`IPIt5{=cjF|H|8->VguGP;6 zr)WV&*Dko_leQxn*J??AMs@3PB+A+e{e}F>%D<=MtMH!;FFX=wFlm5360fQ{lY4%4 z<6Wa_RP)VTO*yLXXLjmpd?*gvb0NoxK2`rpfeuDH{B>m z{Q7LM(E)O<1WAK5B+Mz90NGrLpNwRSM)!nMu_vz+SN;-Mar)qR0MrHiaHz28+pqo? zt6?R_J1gai1dkXbJyFHZ$19EMo*uNHKToXdn-gQu$ZcSDSqB5+8$RP@~A*DiCgx1$IFIVx4`3qhopRKG! z{ezTLKlK#TFb%~TU*Q7(zMYABx89d^GVn;!pzT$1NBit@g;*B&U_XZ5C?RN&RmDmMeyAg+?@Xlcdp0vEnmmMiIkkz5BGqx({c>* z3~7oHnskPkL`qzeSvAik(p#RNQ3}5Zl@iY6P-98^ETxT3m(iUNF@|rf8ZsJd#z4FE zipR{O)VP-*mLow>VJej-fk9?;Ah@+YhO>G~&d!shBw`GU@tO4*lZ;P6z4d2kH!^%J z^lL0Ss(YWR;?$!TMRKxlrzPD`k*V1BdciUI<_B;;u1lEy?t$mJ_5-ByUNgG-U|4S& zCxu3Y#`XtpXN)yOiB_9F43A z!{cF}0`*_Zo&KZ*p;#0w7tX>ZPd@)r`|~K~kf1r(a8*Ix!-cLr`jI4iJ~h;~M=t!V z6l4?_P!*XhRI2;od~bJ1FTHPVX12$)aeJl4Vxv(5H&)IkG*}Uf z+YaA5PX~z;j5*4gW(3%X3Eu*>L58^kpY2{i`3EZe!?GNoX+v^uT0jQn-gj1xz@vA> z8sc*Ts=}&&ND3NKh&d7630q4gPQ8ZJC;I#JyyjJCQ1(*h zGG&y4szh7y|f8nb%A8v_HP{c1+j23P81FB43<^Lr{ zN?%}jakbc-#*L~Bs%g}t;^$faA%;BP&02ti=q;ZFYde;YPRIHXl+ii5Wl7=~}Obq(c zGI;8`S>bNed$EW`2FbZUddv}KYML_Z=ugWCM?MBip-pEAyQ^ApkS>|DxD7PSJl`F3 z|Mrvla;?8R3n+JqkHUQ2JNTL){$iJi#1amj`TQG9d0lYK{zI7T3W2~<_UGAg8@x6+ zb0mRYMOCiDk{^APWUZ6<9=C-aKpd9i6OZRPSvR621<<`J#$JiJT?$V$D1|f+eW64X zTF*8YPAgw>Ra{E1eb&pl#85nvmF#GgSm54X+q)NaDX5DUY`z+$_^Jia?jMkdxUEn; z&9osUudXc+J>nw7Zr1k-wZX1%7OpxKaJYRmhsf|jzV2k87gkA)F< z7KxE}3^cCAl?-vTs#bR1de6K-gwiR{NsL1L<9Cp0j&p65Kp4kYg4c1BVs!r=o$Uxi zcFQE220kj4K@vh1=IisteCJxUxjfGvlN#-13ur-8g7#9{6*k)aVKPSzvKe~pEUD9M z))Qg`--)v>xo`sIQ>>5sv^0j5zD7wR-$pq7Y)odYZ0@?y7g9oICXw&v*l$OJMAZY{ zeXL~2Ne#|P7nXm7HGLNdhQb*Ff#8$2E)ar^pWpk-b*(-dga@YeOE@imU^n{)9JkLv zh5X2$+2LCzb~pJ_x-7uNu<-Ns@6u;(uLfpWVOi2RE$W$ekfHQhARHpr(|0$%Ezb<( ztrwe|IO*0@*GqQRn`jl+C$X95&amMGhKzR8#)`rEVkmeY(#p+YQAsT5;Re(*r9n&b z-{aV;czp(>!0U&yboFP^UNXlH-^&6J6niS$yPOves?VQ)RUg(6^P9iBRoVdWrSm(a zAVzbS?W$UA+tJR=LG)@ELl=mNI{aRTaMTTu8N*5NJmGmdz~;GX(w5~Fb=G87bKyji z2pKAo|AofN0EMB66UV>tm9XfBR^9(ERnAN?%1NQ> znZA}LM{hW?7SDB7){==RrvGVmw0To9T`wKd1*B4f?)oFct8lv09y3-u89SkJSaLpB(eJBFj ziS?wR^<%zj6(x-pKpwdQ#E-E3RcS9$`0OX-`v0iUWftf9&6_xaEG5q=T0|(5c0u@D zFyLf#{0`H663kN;FURvkymqnW+6qm7EtWUP)i*9pi>Be$TDfVf{@>GG+xDD$G53+535{b8v?v$#nL)y_{Bcofh27!{28XnCXv)>Z zfzVqMhU?QN8k4$2&tfBw!6Uv>T{$jhfzO79J4qv~Ccgz@HcZYDndfz7;VV9loWnW^(P8ML@ZnS4 zwy(;17A&+bJkk~%b7F(JEn^%~ni!6%aG%)_U{(#t=|TyrNI#;s>-8O&&koy2|D7_p zhY&APN(RQron8Y1Xz?F@V-&@jt3{)^-59B@ufT(PQ~RE}Tl{!IE->%;r(k%wT7&4- zJfr`s1=c8m{nSs4lh1uTh6v*rlA|)FD5F^kQ}QKV!fsDz%$_DjJ#BomKmW8&g~5h0 zhTXW4&$-Ct6OI52t5h|$c?>p6&*XTZaIgcSKVJLGYkQre_or)=`DWx>vbdl^{<>!p z%(Bpwo3Z?f3Es#!@x3p*mAvOo>+ahUI8gnYzo&)ouFfiBLHN+=<)f2zD2ITq$m+)T z8>48CaLA%^b$)Hztwz_kz$OP@skdX6DJ#)wS>jkqZm$SxOY5}0R<{pi@H;%#vXFHl zq6ia1m$#(MGs`E}jGgEMWF^`@_%o_Tpgh%w0Jal#Ar>214PlqPq&9x1_754kYqrUf z1_GBFWy)@{LH;-8V+33|!>Xj$W@yapZy&@(Dbe#I4c$u6MF~*Fg&1R{EgPQ~pSrW? zaHURhnn~>>vr})S472hpZ@8xy9F^s3KMaPRh+-Q>meR5sRPy;5US!7Q1T_5w2&e@` zsvGD0(K+tFM2q~jhgMH`MVy-t&KKGp5pMbuU@e`| zss=AiPThJ0k7{DM#I|DG>NhVpXFgKe?|NR!AamuwSISO9D|Yc>NNkT{b#)}<2-uic z8)%STV8h83t|tZ9d!klH+=)xp$8RW*!v?{;tp;`?Pn(} za93d!?SzHd<~A{4!zK3oG`&t9j9~f7?N>Ye688ADQRAL4oqM9^fZ5O3!CbPlelugN z{((tmduno;bNz}5rwx0g(V3-8|@yRgnXu;8(MQk_mlq>H?f8RQ4*S2nJfe0o1ye*hHZ(l6> z_jpSNvDd%iUQAth6{K1|!dEC(&$c>Tfpb{MNlx(={HiNHl|nm_Jz#rDgt$%r3Wr@erG>BRi{$xjBd^&Gu*5fdA9Qb zU$}+cGu~u10-6lH{^{J^^V{{I28}GM;@#(aOiD@}ql6<9B5!!{@VP&18oeW&R8U1r z*(XeXsD5xJ8#R}*2j7boD*uUIiF(0;ulOnAsgqWejOcZh`Ov-6O3feJ?-BCxoy?G2 zk-hV#NI$;n&ypy)ZfZY0#LidyoL^r7V4vg1CtsKobD40Osmx|ZUYX6Wp-O~L>$vRD zN6QA?c0$o;<9&?vlO>$WR1WrTZ$bdpFjE9HqPmvGaLF5XPBdTPK$ddimG6=|U6UD) z$7X!5=)>+YYKgzGNTFLbo!3)*@7>s6en{rCxk}@4M)Vx2!8L6{$&^&iT?n(znjBpw z3uj9prgfIye=vHA`P?7Mg9#CVt%B&6|5gR?EAn%S;C^=VJn(y8b}ewtM;@tPN*)|q z7WaP?Ne4&ww5Mn#0adC87^Ljl;J5L>E50|ybs<4w&%u>0|Gv@!vdUIrDM(9i*a&uN ztvpym;@a~(x*#GM68Vv`3TlM}ftfyI#FzT4qYJ@9fB5oFJzL}l9WetF+w6P{8ggWx zRgyXV@y^ZyK>!yG&h~`J3(}%DpFp#WmehOF!h0kXu~u9yihBm|vj@QlxmhuIXtUkI zPkIm@$V1A{1%foc$+g-GwDQvGob0n7lho(v0^=VR_}~Buf`Q|z!B0>sbKgXOD{LU< zSqfpzG0^C%gv#Lt0FN}iNuPyMQzS?kRlUElb3#Omyy&0U0PMqq2I#WSZ*iS(#F#{0 zl?x7pPcQzsPPXHfHyg1~eEv^+6OJiFk!v1g{ADH+jqhWy` z@VoQwd2b8_D~Mmbu{J)}AF)~O3MuO6l>=FO$I1b6ac^Ca)?oM+hAo)EqCDV58QWWC z^F6~p+{h7zm#)POk9=G?Uj~cQggVaGD|w$Euxm)()K3AG>#)xoMDI61L|TCU(_77T z#2}dyh7{%JwY!djO2L6wvzcZHgh-ibC|wa8jLnDq!jZz++@~Za>u@TaP_|lx*H} zg}!q^7{Ej=l@SW0ssfhE7_+BfT2-Ai6z;oGD4R>+kzM(}nAeaVLZ|(0XNi@tW(q_M zcG+$+&ow3&KgCM0+_#}<8jR&?D#R(ixGrC~_n&z)N`OaA7Aa_ao&)PBSu6|ya#HyNV>88bHp+4+eQ9mdY}Fmp^&zWy{k z3KCwM5010d(yzeln6YhsTyET?p5uEwp!?1Zt1tTN?*Y7O>0vxJ-8i;c;Od7UdoUVu zS@&ZxM1uF(ucIMu-H*FRqK!<`x>q|?0JQx3d|o$y$VswVHd`vDioha zeXmVdxXTuJZK?Oh-02+1hJ1iof;OdltN%n;86yYtCG5laE@U6~@octvwwTw%Yz&PA zh(+EvoWZ+3Ve0=Y?aAXowv`z>F9() z-Vw0ZH!;a%EokX3_?~=6S-Fo}Vqo?8OjCB_=G>fswhewK|EqmLe68W<*+%p>{Dy4d zKzx}yj1fJ+St@eh9JZg{@1yePW1IUavzB(%PaB&Sa(3Rk7H$4Lja&A)_cp!k&RFDX zRG>HiRCxmpe)*z<+*vvPT%Ewi`H}~$4=bE}Ys(znOQe?Z?~F$P4-9$mR`!c>IAXmR z(JAQ_ReYVzn|nG7h9FI79~jb@mL)((Nrzry(GywJU)IV5uQe`nX#%Httep*`;hACt z8)ze2db^Ift`L&KibKc7pVO)Yv1HpJBg!nmEhY1)RH%-|^eiFO!^y|J%U#|N;JYK)^&r!NJSt1NZ zXO)QsH<@%pIs6IM%P30oo$ym5>MgOTX=Wcv;Y`|G#Teha>o-@DKF@_QR#!b^+V1KH zSQFTrXdILnv6S%&_AeePiMT2zJdO~hR~BSf?#?l$Hjoja_)x$tzNIW)I{Mx?+7gGNhzdkmn$iEGD{qX=J;gRabyWfnb5MVdm6AyPqGyxv$q9s(7r2=^_y>9L!`|V(f>+GY7 z=2oPQA*^#`A#B_boyD%n@#ERwNr|Tpel@<7{g^YKKh0sjF0WCv0PUij?kXgQ5#Mk(rjfPeyGgP1@Ve-ec<(4?LU}FR0DRK?FLGC4A z%#>d8Z4YJ_j%6WZtCIx+Sj~n8F8Q!{q3XMM7IyiOPU!;0ms7Gb9y1~U^r_Oi-DP9i7g<-D&&}*L%bevsa1kI>iHj)SIFB2{&V!mgK z3aW(*oRej2Xv%@IlClZaK2wTGL6Tn>fPz6;>DnwsB=P4?g?&t6cuvJKEa#9$|rfVATcDb^!R{K zq1jCF>61uMc4Yraf`Ku)0XVK7-EHT3lC=n-1TXV1uSju_-%_@PcByPBUAR$KjLckMVx)-H#np$`d60HCn z)EV_=;$P_8zw&s%P1#J-`2!x=!M4_d>(d~4Ljkma2w$=nF(^zKF1^AmI2bm(}- zT}1!wcjoLo`Zfz-CoVHn?TwQ9vp=FS1RoAUck7~9BY)XPw0u|h@KMFLtk|G5U*Ad`>V(rcI|l%8#E#nd@xr^ zLx-TjYzW{|%IUIuB9pbvKuQmN1Gj}G=I}Dp(5VQ-Gl$@P7 zsIOSX&0013O#0DO-AJP#jaEyi44G*NWqOsF*xBUteD z;66@`ArRW*;=t@<=jt(dD&MJk>mx=r7N6c3mIF)(V!}NwA7b#n4Wt*40iEbk1Sre}t{a z(>C*2>)QhUBUG#;5WH=jM~!Oze=NN7lnZJ`Mn;vp+neuw1+p+FjB{a`mjxiuXA1Nm z>)Sq!7U>`q4j!TfqxHMb&9sK&BM86!h8a>xygp)NojzcZ+T&#>{7CsO`6Mq3O7^1K z?*TlE_jxQFJEmXgXK>9h?@%t4QVR2p_DkN#{&anff%GWKNCRkjuNs8Ld9zUh2DCK% ztVu5>?UEHB)w|&Og_Fh{>awqpGSc#5>lW`JW1A=v(U-THSGAweUHB@H}$jh>-cm%u#jpZ-KrS^rG)v)$*M>pRo!mk6UkLe}&JBkfu7Tc)^tkY2nGj1+=EE=@%vh|FEcFc@Y< z4jtfz8;ur!wGY(=m09lzHH#7 zy5#{aLWVy{3W84ue-UG5OWnty{1cpG5lGclUf@J9Tdl@nQ&)Jsnsf{6#Kxm(mtAj_ zn{Q`I;OF**z?7=HOhMe@6rd6sAkttJf1oxzqm5EmA)ol!=)}4|-@waQPh$uuS}JH- zN9Fqpf;yQGNR_9o^&>!y2jj|)3X0RsFLXJ;&;!Q+?Gu5(jV!lQPMGB@&=H_m@R}mN zl2#r)sfJ4PL*s{k$uh>!|J?506vUxAs|MeVknw;>yQAI4+V zkAt68z|i&HJW74tZ~$>IOysczIH5I2O8^Pk9j$o;?@gfmsE=T{uWNh%NHVMiBWgiN zreH!|E63=q2C-5gA<&K*dGCSBKd~eb6}Lp)3C?AnF0OgBxF$TE<>=T-wkZ-X2tP`BQNRZhSb2eF2j^ zRlBUxb&4l@8cu-5uH&CZQ@z8H0Ev1CF@CnSH$X>ksL%R2dhKDr@Y8BT{Ntt7>H|dk zag+Lm*Q%VxtM*|wz&P^L2Pk+HczS_EF_$z%a~{SBhqah-1u9da(RtZ$Z7Bs?DteP_ ze>gX48cA$hf0bCUj*4)M@pUWsChAt|=G$Hp>aC{rdG5^nG0@q}W=cT)KQIT;tyQ@) zI|bbNShhF!YTxIVYn&NzER4EdW7@*7f8TeX@KQQUEiCMbdH|h-FGvqPmi1I#f_OWa z-_j-e*y!iZTfABM`fwmuvh#G)`KNQnn=3(;lz732>-Hx*thUBtEVjm42vO!=9G|?X zI|#4id>EdrifF`|@6XnJvx?YKOL-p)oTM+X;OpdRG#fGUPhesHlNy6hTu|POLT0n7UcEZ*9&)MQhwuLjxjZ3J%nH1Tt$5{QoVA)h;Vf`BlvbW1?-f%V&+x;whd}6MQ{trqXs?;M&^PtjZzzfr35;Fw`Q6Ug zd2^O|MCdqK6s@Ecc$X)bF6vpyOu5TZ4%0bLuh3RkydTV6mh9!RwM*n%N`{4XPVDw)F7<{dP=zX&(XgZj56uST35TG={ z5P$B#Gptj;}N;jH`G8`uL~w<)aWK#W@K;pqOtHqHgy- zO#pN}Q^Y#hB5}XP`*dehw5t+)VT1hSQszgvH+bY=oPC!_03-OoVE;!FNTvG!(DoKw zQFq_pup-FNLw7d}pmcY4w=mKmNJ$BTAPv$Df^>JMbP6a90!k>75=zH&=8E6{x?jMv zmbI1&^Nn-P-k;iO#uZj>USa82R$yyolF8V*ijeJ@$jqq}+bzE>ek4DvkM0U@SU=USj&pICIvi zPi*qS;!AakGhT2EgD4gIWe9ZVk9MfS34Fkn3Rb5q;=Fq9qdEEmU|j0%sahg&QMMqo z#^33nqsMD|YQV0<56z#cW47KW7&vJ6K1ZQ(5bsIT$bVOZ!Yb4@RXCB0iwYq6dUNkB1;45GV&ZD!5&= zLP;N;)E8v@6ax4y^nav&!bk3h05cOL*-$A?5J&1TeVxh`ARTZ%ATo&j?9bk!&O=NR z_$l}4xR~!LiNHN`X{IxP%NdYgdIRNy^|$W8AJ9|7Y@9;n!WK16rsBU!xgR*wvNz%f zyoR4YZXUG$l(@UDcSSE^!gt<*VE3}6;|K2T7Avjhyi}Qrka24>#1fj>ejt?i!SUmp zc*{TDMwk1U+*V4Q7w>QJ;_I-iown7Fmx=4gF&-|l4^KU-?qpI)fjuT;SKY)Q=1c+_ zS7Sy$z#)~2f_#o21E>i0eM}nE?Oo~b;A+{Ti%Gt|+l8r^c6Rmh(IoMs0aKJ}4a19;sfLQ_a@ocd#zt@r`0xKFF7qv44oS%1@gNjY`@@M`rz-YtvsvSSn)y{JtK=gTe zTHCpZCk_OUx&Q{N4I+2q47B+SPoaYa564JvZ^!BAorxCPBpD3u$E*JeN0cFMPaU@n z-ZTPWpr2W`i8ENOn-vYg7t zmV?2(GT=by`A11lJ_592NKEQTD*ou*vxx2nI<93=F_I!cCXhuCqym>NUj72x<|~ zzrz9LZcAnrkaJ=-8W6%3-r%iU&{KJuh$*9zgZ%6)BMCB0xS=zV(A)wmb&C}}`usvB zC>(n;Fk)~Ur1bDR=b7f5+q!-j&l1w1F@!$a!Xk3wjQNGV*83|6^A|8v#R2&s*|Zc` zwr@B5{%=(QF?z=Fwi`l>ZvED#uyDN6K9ODoxg6mCKg26dnyY+D-9Gwe7c+B{cu`C> zv|waBx^97n&oHK%ChYje6O15fwO{){LL- z9X5ryc0M5j%L?$FG={3S7iX-pHX3fDn*gD)zi3fh;XF;m%C#m7Y7B@PZXlK;@=KX| z7SlmTEXFYPTYQ6y-+qcAF(~+_VbLm z-!@<#Z#%i+O%-<=vZZK~3<^+0r`;hTc;c>mZ30P{<3LS-0rECv;IihIjqTtn6GqSIYQ7}`}w{H8aIio`C^m1N&nvwvNR zQ_0H!gG#Z>zmCp;Jdom$U&2F^)_q_tdhp@yRyQAbIFei8K*M0WH)_|H!E0}^gq)fF zE*wo;4C+sXxX4%wQ#_dMO8~j6`YLV4dg*8gYT(8@q()|Wg(x5Mm5FR73_Mi`06B|;ys?}tbQY~a8WWAV0j^|61 zjiFY>Lb57Z5W4eEsh5lt;&MJpYC88=tLXB2GWttKM4Q_DT2$!CiGz^8I`fE5lMVcy zNdq=0E~9iZn7}RnM-5&<5cFLZcj>(+FefHjrTv!eqF58VGU|NU_&E-j0^h+%DD&~4 zLuL!`N2I|7{h1HQV9Kw*#T{f2+=}Pm>tP& z!YeL~to}^WiKL*QI>fWl&2kZz29zt7F8wg0+2NYG3|M`LkLV@v5k`-HdI=Qunr_S! zTI^l*RrUZo{N(W2pP)rQoafE`pdlC}ryPPXaGvDS2j>Chx#~=ywlH(q#G!UBB)|OYCVoq#H-LP^l0-E zSe*4)gETe7?9U?nFsy$c?C1a&FLYCs-s8%E7NW44Ht4EHr;Z+Zjd@SQwW3pMblgq_ zd%q^h9sZs@PDx*x7fOa-n7kc+m2-&9uKGz1*pOsD?w(u5y$qDiON!cAYAh#x^&T{y z#TEbeJ^rbjr5$Q$)DMhoKf~7~LZ;u*2in-+fJmEH+YP94G%q2C@{#&!>s2!-{X(a} z!Sz?B9IVhIPXJ#m@h`&pvlPu5gy_!{kaaQJ)n&=Pw@Q?+T+Ee0edF*beK8p>w-q!~ z-_L|JLtxV7*D88q4f6th`29+=Puj za~sb|JR0l<<(i-m!@q~m6<+5}%A%l{7&G7Eej@!V2^30#Ey+_4TH34u(7*bj$g zONz*N)Safo{sVBj);;ZesIyuG%!5-6_Bto;K78EEW|Z_iShkND8cD4~VlaL7rKxhH zvM>)~#e@tr)QRaXQ>|=>K*)QDul(XaQ5}-F;nqMwFmSx{bKzgE90Yi9B0{`U$BN$Q zBj?55Tg*{vXty3CDg}8|tZ%f+^(%EBpm`~k{+!gFECE-W4T-aA0BHhDuPcC5YmhI@ z_P+R7%Nn9o&~9|l6LS9%jYtmAt}+$ch)Gtpa&f*9t9GbZpsZ|!sg{Yjox!+>N~jP7%DJt0%%}6Lq22%tGNX(Yxm$1& zsf*rgh0<%8_6|5UH#<%yq7H{G+I_+1-YG6DEJwoxrBUkxy;cDTRI55Vl>hQ?>H*K& zrneE_r=(br%y4N8qmKEOhhk3CQ}aQifpI4I=cQQ4i~_++CK(Z-Lui6uDsa66|EAR~ zGc{E*B?L*P#7pr&^lVGc#uSgyFx_?5V_C39bl2q$d#+%8weTC+O_?l&Y|p?P zoUidY{+A^ zj&(IXq_7z*L@<}qY&V?&ND#7esRk8S+fSXx9nN37Kqw@!K^yAUYp~O#TcmEz2zwvC zA3>b~F^dZ(YLxMGP+DY`w|#vCiIVSxJ*;-;Dw#e|Fx>+jJkpbPH3%||A%0jF?w{6~ z=d=2pAI<`Kx1N9#V{w;80t7ES`XQR&DgemdT@odoeyXLKr!w3d&G!8_`q6;^PSBgtWU)`l(#zt5jCF`M7-{@4>5kpE6bPtz`=Q z{xJZb-oBkrgbQJOt6ZqxT6dvubpC1p-`!q0>v(ZwAt1kT zMQBBSam;AmyQs~XbRD|EHAg^uP>tK+!>;1x zsu_LRw0am-Qj(-Y(9?YvQzdI!CdZOk@ju-|3vb;_P)UNL1RE2OhrNNX{l!TeE(Uet z!ah>VD&ZDImO>LwyC2}BJ^F(nF2r62LMvVkosAsiw_8uviq)O`R6jYZ%5S$it6llw zymb~sPr890zgjW&os0QT*GbS1v<4FkjeS9jLC&d^LHzP znGOmBof$_>kt)9VY{o~YhQZ9c{AV2 zRwyOW#JCSAfXJvHX%u%!5~+jE$?m4}%6ZYvAqw`j-ZW+3jEViUB5u~#z<2+i4mm@C z?y9!7u(SQimy33*)dX$Y0F*0yTgfrLtGVGHZ!#Hu0_q$^Yqa<&7HG(Eo+th0ecoF4 zotvy0uT@3yU7p8guN$#)U&5VmflW7WuctCN>^1*3Cd_>h%nb>J*ZwMG2JL>Fz^Zp2 z@=NQHgaLFr)wn1kjwxO&+g2V+-Jn@`uHMU?(qh$Y9M0_DtD`H$;1R9_+}#Yu>}_7= ze&a!Y)*p_$U8Z*xGXL+Ax=?yn`dbT22q?vbN#1GJ>9&J|wzZ;0y z5TjMbZ7h}u;`6`uwj`ne+Uw7uuYfzQC>HQ9E4MMHQ`%_y#+r{3Z|c^FWy<`&9=CrB zKTsS%A}rMZY^TPCn#H__%1W@oIjwj&jUuEhePSXLboikty4^;+|%|Kk3CZ67FeW8iCE5sW{9C_{1H zt*<_4OEQ^FPxbdJo76Nu+;xgD9S+*H0(qLCzzze5{pAI@J0%Vgg|llDV{&gaDUWIu zl?H8A7Qd{zWYuA=TOQrdC~=>^SmcuWV0RJet~iAAyCB?@CJB?(RFD_p za9L-$c2B~-BtNToZp%zdZK$bR52KsiBJIUael^IW=(@Z0#qS(5VL2n_B0)G1)>aU4 z6murd>A`Pe-U~6|+W+_B|0xE++48BF=!=+@XHcW}yoHa`>ND zLJWm{-FzrpdNO=1>-IFL*?Om_loOJffV zUU2z#_N@_a;yU9jJtxD|8b)C8-rAfRd)NZKH(3DCjokq7$cWHB=59TfhGx6Bwi1`udde z2+{Wc0^S?3B7@6^SaU#yxKpO_17tu5^@8YNGAxp_xA}ZEnQ}Y&h}Dir9>A{zZMG$$ zGe^WhF*2plCB$=gx;WOgWs*h7JBZMM$qSENn{#W{z?{zmO{oc}weP;Sot>NcIDhu# zc9>-ma=kyvDE_Y&;4)Zg!RMxRUS+aP?8c!&)Yl;BJGHYhGGL{B|G-|!^nU^rGz^gk zV=o`->9(dhJuUw!uJe37N`8YdvIH1J#SpZ_X55Y499;u-dJ`t${T;SrH*Z8Pb$CFT zTAU4QK0_{=eo6ZB(fwVZfgO3FB1_9kBZ@|pY5XXm#Q8@7=DF1c^YOqamuf}`Ov$Lg z@_WowxjI)OgoorQySd72Lb67 zPQCT4_}>{AuK_4$z1rbZHG_H1l(5z*|CUUeiXyUa4g@wk1e?X@5U{`5#H0boLm2%p^Zm9|!HzUj&KUtP}{8coYV5(%GA4UGxJ=pC(*x&KAs zMZkK0guF>3$adXWP#;YKK@!s$dl$Wc&{!e-pC-iT8Jg=_AqJL~{1}L@eCx4|2*pMz ze@FZlFn^;Uutx3vv$JDy7R79zAEX;E`+4xZa-ulfhDCW6w?J+U^Na>&F#{kEZJE5h zYC7#}f}TXnM$n1+{3wVv6Ea>kInHJ+ist2-Hocubl+eysd<$Pw^2h?56dZE^_=H1$ zBD8p6t^dld2*!}3uG63_6)Fc-u~)B&*kRbhN4Oiz+>L$eGiW0a=nAv}$+yH-c?a zNA%^47KrSy@{IH-u^gbhJZD)emt_?~PF&(>Ubb*s#zl#4&5`Z1d&$}I4Jpy^ixSCR zRZlN+SP^J)PK&4$Jb=QndCVZ80w_5M{vxs93V~wmmqhpSyqgkfa1DMOS3QL~xtuuku5eMm)=7Sew8tJS z2sQdhE0A^?aXFwGx|kzLr1;QApp55RMj#hHpaj-0Br}j93!};GpuRGT$KdMtl(sJ@ zQJO|0c7c(d;%QzuqSix-=4Wt?E1SA>$Lvx44x;-TLE5$CNAdjxi`I`364{8 zdq9^7Kh-h|<8e|P(6Wy-&Q@c&od!}O95U4aQ<{{xTV`1FFvvLx4bPBBLp)QkP@;ex z#-xBd6p>il8)Va5(jd4XAw^3SC#a)0%7blK4TA=ReAM5Ix#wLj zt3@OC$2}Z*_vlDs<9LQi%R7U@H|>1c8f3~d@kQ&1A#spekj=UIpUmr zk#liRQ?W4wQ}tMg%fYJt4TKDz^qVva|n?eLsa_npAN0S z67Wh)ZZXe>Sl2;7)`v2L5g3z642#IB0Pyjlg0$Js$(&%A&W4FHzJyfE8l;Pfzc1*e@b+wR3BPLAb!x zHES8D(&Bh1=8yjLen?Ce+Q~HYbuwm0`ym$jX@fw6lq0y4^n}Kk!|N@vlOmtY1qFGJ z=_rO}(IebJ_1Xr(NCI7jy}c@=q@N-GqRVRk_#Hw<*dI&vt- zKuJMXCd--7L@V}GJgx!s|F+o7XD-kRO_lH7oRA4`Ft+N#m-0mH{PVj^U&PT_pHu3wfVoxR#ecxtB%BF#s|sdHJdV#3KbcO3QS}= zHuUJDcALhTHC+R-a#}dKAI&42xQ~-)e@+dInGHMsC0hQ9eH(C7Q4JE@{s7WF2Mb8b zG*>YS(a40pp>giz$A0admfsv8{=Cn*uL>dfgs4&<2nBwJh+)X1iQ+yZeg}jSN+m}jM3@b6-NYnbBV!ENG#gbg?TSM zG`2ysG~zaard~wAsQ~`UJlEO%n={d`$DPu}HTtKeJB2EHaOY zFk<$4NL=v{Pg=xT_#uWl&F+{co6;$C9UT~h)h++_*Pvo7fO@%dc9`4WM0ngv$ob35*)wf1BX{Lf{b=i?nl(7273QhNa!nnhc=~WWo13I z?v)yWQ&s@|87}Gh#qp%|-cBu34&hXpAG=S*k)<|gKr6f$H+cg*njQ)k#Jba=U7aV!37eDzqJSefT$Z%HVF-tMD$EW zgjWg*QE;_ILAfr|qr#7?{9jO%!`LVbbY|73I#f>2@UYDxUJ6?z4jbnrf1j5(y1rh0q^LF0v=xXN@5A90+`^*rU7Z7^; z=`m(m7)S(~;&@*gWauQ^G7?>FcaZ0{A~dg*>fWwcyF3s?<}OcJKn5~Qz-AImFY#wa z=NRn9ndm5x0iBW2Jw@6=3el5CaBgF+vNY^WP^2ZARX` zTN1%xVJ+Kx`*j32?I}qpFOAX&lcec`r~|eg^gMRBpsaiF4SE*$O36T z9Blx3? z4SP^lCq`+s8CuX;`f;C1<^&^+Q5ouFedIb8AZ< zu#&|E<7|_N8WqBOq)X8YxTIFNtfWIjK9*qEJb%c1n%B*(5CgspGdk=fYoY!CIY=A+ z3aA#2doj4|2Al};DquC5YUD!YP?Mk*s6n9K^pwEj;-c{%@`D7>2`p;EE0>$KZ7MSv zRnA}@tGG~IffsF3ZG~RtS5GXCNLgw=a!9Hn6HSEM-bc}X+9S1zWgoy|B`!4(dV%x9YDFw4=^V|Xr(DOECuVX|vF$E$h};CB=3jEX_D>>uUH zk-*rV+A^Tu^GD!kk`(u0QsC61uG9PH9_@vG0lX+FLPdPIhAtO9NYTN$P%aU#gBf8s z%M#`;VLx8NIUvQ=IrK{gEgXKi~42RPsl7Bx5KA}NThP-TJh5v5FNB8hj;^63>i&kO}JwDQ^3{f zKJy+y#m;q2IIRuFcjld`pLDzmv7FNGS(vr4%49a#_$Rj38hC>7l7<*CjY8+LHl;E= z!)h^?Sz+#*72Hed+qR>Nq_!&6(PmR@t$I$O zP~IVLOG4g6$S2A1x}X;6byMUvue}AW-Irp(;E53DY_GI8A5h5p5wQ`z4`)LrG7U~o zPZ!1)6{!g#EhUX>LMB~xW|G-bV`l8oSilGSKRez z0PHq?%oNbrz`%|62UYpbfm8#?n6#rHT33t9zAsdxF1*dKB^fO^1Q4>FuZR&-jr#j5 z?FN$}EkmG`67pin$n1&e1Wz&^e7vCuq%l$E(+ZKm8Un*c)>j+lBo*(5JVz%{15z5V z=0@9OcCGr>uqOI*s>T-U%v81$R^@~XJmbv9Un&iSQtoywNxggs-V6)_oj~h@iaEqW z8_M~AE?FI}XK-0mx7#OaN*?G@@G~3%MWZAig?!L^zKyn>p?=@|3Asmd)%FucA*R-Y za&kJ`_ubshaRi1x1VbzkFI)Mj>cJ1ATH6%}a$)x+kcGTJC7>ecsOf$i2%C`?et3=Z z>TsLbHKK=Kpna5bqACuAIYCX@pl1`AnM>iN(%e+gTWV1i}8^Dbtu zNwo3@Ycs7{w%ecHzdKbBNNh8Gj7Sx?RdBPV@ zLX9QB=V4b4w9Y2(iC)pBw%DwoVI(A%^6LpFIgayhZ;S8}ooS8a7<oj&y` z@!5FNFFEPUuS8^aC*=dJpJQFK*7yN=?{YMF2yWnpsYEtH#uF_j+wk6Zm(llBxwi>V zekzh8Z&dbB-Yq~AUppu-(}Jg?Y6M!xBuk*AfQBY56Bi}LNS(mYMhW~4^FX!-qhz3- zLJ-&O?>zL<1GP34=@&uU_2BR13rVlEf3 z%g8%GxZ7eo@j3Ax_+H~^;Nxbc&(k+Kf8|6-1`+f1Fuvz~+XtipBB1)^GN?%r{Y{<2 zEL-J|m`i6w%2>8L5Dy>!p4Qks5`2iJ=6kxgy`i5T-z}tt|IV5C&Y~zAxe%=Sq$81Ms7|frP9gA|~3} z+6^|}z@)x>5%zLRtraobfvk(HwBm`aeu{EUKlP8}S)F^}=8X-ppMX7f1WoZvnM#qDrZS3akD;J29kBwx3gpfaPkwSELH^vA89>s0|S}yC4TB6`@HYiko6H+-Cn;|CrasgBwGAIIJL1U$xZx7 z0I)J5T(}-aA;x{=Lm>INxJxC|FMO;I<&VF;!5Ial<80pShkyVdpcXCwxYSE)!>2Uew|}Yw&=Q2y(;i8Q zg9%Eu6UASix2p{h1geme`&wxS^Bfi1|#z zz^7B~9NzA^pO7mPHVSflc3xP&y1m${gZCg2J~seO zlHsl$l<~89UW25zf+%x<2%k;Ph>xcQq_gfA%@QCLbqz@lrV&#U0in4*IJZQ4ak~Tk zhH&?`=}^D?NejGwGL0}e;~&q-3;(1>5&9f__vP~}-AUG@oWvaf4|>u`27Vu!mCQn0 z5Bhf5JHg)K3Ds$IS(7df*#Y4W@rVJBps||8YIw1&T`Ynt^X3^Y=i`q`?#ust%ZuWiDkmX=8CKF{ zd^+Umf;R@CV60=f8pyx-W(Rn8#X%xc_h8NL;tA$#Z)p@gJ*VsQqc;0*;1x8$AUgN_ zwfdwz>QR7Gq}ZA`e#g4kEVd>LuRA48|un}&?mdkuK{v@1`9}JMV~Pf zzAv{FU<@XdP5J9xx=&U$GzM;oLe6A_kb3sZkY0D~E5J3EBi?Xt6#XhwRvs_Wj-LKcBH^+zR3FS5n|V7)}*9%`6%b6^^ zIfxO*RqorHhx`ky;j$?UB=-W*F;)SKZw2Vt%aF7NL`?JtnvZyRc$@JGR9f@2$o3_T zU|NOIlObYLm%xI;!V#c1ETW@;xtQw?^?nhvC1e+8{xN(49wJ(&^pVhG3E$HO`upfG z>gv%bt}Yg8|MN98+kvK+;V63~!FIjsk01~B65f<>lZnsLPuPLfvZ)qV%f_I0uTB@m zsS5vqB{1$W=3^br!o#BzBBQPz4pOngHx#FCMlU4CS@?PN18C-A!xD-6976Wyrd_h5zZEy#jc?o~DE` z5y*0*PhKMjWq>VTlZzTv2u`{)%k zX7-3*L?v)KJ4#g9&{YaM-s_HHh+X?#2M~r>YnvIe5f*;O!=+@!eH!)RlnH66c2gwRVr~c&iV^q}b^Nz63GOWk1 z6+rW*kqjL8LYD?vFox%T`UP?f8@_Q-!LFA}wCKN!y!>s4@Q#u1B8JX_tg4k;e)k`$ zh|r7%78gAy5a@u&u||v&?H?Ez0b>5YY(HQP?9j3diUP`ad#W(1axMjFOn+>xxkooC zNoD)ik9C|gZfZ}ORp@mN_`H&VNn5Gj9h@+g_@mEwxYQh4O5itgkLxp*2-R@UTQ2U^ zBaz$KUGSfUx>DD-Hq6gkTR!eP4_t)caeR*XK$yC{FnXfW$sJxsy-Q&Jm}5stI+Zt~ zY|DFaL9rVXy!Sjw3qzd9j_fu5H-8K+KHObNkP5#jLCk_>V`Jm}LC?fA$XauGy3Y;_ zU!HZrg50;U5?x?|OP%+T1);?%@*D^vfU&Z&BF@5*krA*8ePsVKFMx@mtTlUX#i1jD zH2Uas)Cqax3NcY7eyn3h&)-IlD87KC4xUqSxiZhD{(Ny~94$HkFXh_@7fi_(HzgAi zbF_Pg#44h_>5B67DAGBT&ee%b(ew*JgsPk9S4W0#5%*Atenr9Q;3k0{;Fgcd5kFx_ zHFb+n$gY7uaUCFZ1A*c%ukQen&VkSn03mvr;t5j?Th6_dIt1+rWI!5FL(mxEM>~O? z`T6=pq+Bt|82V1v2b-fROYN4Un#i&|Cj~JK+?Hjs8``|zwtj_!SN@Vr6NZ^IUg6c+ z;nm8g9Ui;<~QdnN40*b}-Te)e5M#s{S zaFDWKjO867Q)?>266$^DouW>Tb)!wC{gT+l0kPOHQY zL7SSs`ZGJxIGFOZ+}PE%w#Y6#I=aCD(ouzmL^$wWyG~3&nSV=hWR8M$jPr#E`t#Z} z{y&UGuO8e`rCSBy2I7bv9d$KlOSvTP4JRi!32C?8q$M4Udsz~$@M`60lrcYMo=q(I zjU1u;eL@bu89w}im5XcM+mv2>E;53a51SkAhdD%XF%vzu}-n!L^d)m138vaK>vKz={eP*rWg z)};0-!hyn%YvCM@8!kXr5dV6CZP8y<&cQzA3N<4wWdzUbWm~_;a~9m%>-SGTF!wam z_wKqVDMk3lHI-d#ya~~BU-P(8=}tky;93o@ehG&876PV484f})kC)viM?iVB9X||| zj=4vMpdxp_`e1}H2P!)@#Kf0}E#&jO>d1j1M~Fxpz|*p8i2c!(Ts18-dD#XjrzdE+ zqfcvhd9YrBt@1e~Kf`3SaiFP;>u6tx;-G2{d(7^UfO#wA+33A?rXB%jy%d65&*A;U zejYNFDN<6hz5${P~-6w3?}5MlSQT zPJQ5TpQ#M1{{8#60}2t$5&#x+==&h3Ck}j6eGXHQmEuVitHDIoO0`5ij_^jJj{4Vo0Or4G?q;3 z_Ue1}YPC6|?@893bgvGfiCBi6IA_x*TFF2{;b)}SJhheGK_UmBLP`KKfHHDS5%hTe z`;QeA3m-Wx@s7ua_}2)&1qVDBkMXiM!>11339REg{#n39cB;@Z51JAUL86O#=+O5J zR18k3J-R&*Wzp?mW1ZiPPIGgNj@2ES#S9 zU0ogP;#%DkYFJfnUMFFG9PlyWItTkFwp@OXTiOeo(C1_jzIgKP_OJY@dEIs6+AcIq zkOh5sI*IRsS8n(5FOJvOYEYe>(=UFqaa$vH-u0p78Y}+$It)yGwe5VS87s&siM}C< zpXca7duQnNsnsUjSLNrjBHpAU>}X$Gjw1J+qm=w>B=%t<*vBxHK*D~3dnhT+#5k@x zP;Gg2wthV!6RY6|j$zi0SD%3Bv|NR@@)a;^`qUTt_)0(5S$YO+oI#OvYDOJ1@eY(d(66`z zhJ5Ct{X2Gpzc=#G|C~mL`sqTok0{B?N~HHi`6rQs)ZncXNaT3O2DVD8k*_AWWosN5 z|2XEESH#+VZO=v;>w4A~|4tEHc=#`L^oku~9HS|$X6g#vD!wCV>KnnbmeW$QEUIbV zj`fnVVgrv@IFaFmQL=&J?IbFr^P<@}T{Q={G@fu_sa{mAu}7=SwL1(YC7|WF;ugGL z->Iwa3$dfjMWo@{zPSWFj9g}n;?b`m+30cq@O+1CKhYRAy_!B49h=`q$&OoMXmGdN z{ny^@%XjoFVcgN&(SsU+#Z_CR%7a#Z1r7f_4rl7nM{gKL;j)Xv5^`>t?$EuwwwbF=iQV;?w)+;YC zJ)WnCTfV#DWc0lqCW&=C8tKeXavXcvA%z6GUUtd%KBPHN2x;ISkjmgdnhBa-MkrK4%gHH2&l#CXnlaKpQXmnEnxO1gR$*%-xze(0#(VT7xPd2 z1&w516hyLY=1OA{b}2B4%%yR-AonW4TeSzoBHnvLI5$?K?Njz@9Nxv#E(rGgkN~gm zt>qZcRkq|X1eR1SCG<{(v$Y>2_SI^Fzp8ZOGdw^SoH1;jh zILSxC20WZj?S$m&0Qu~O{%JCmW1(?|BGRGvW%5yJ!f`(;OlhvNbtpek3Jb^Z=u*RO~JdQvsSjIP$!R%72!iQR~( zU-TN_J=9~}MDk%qPVAOWdC{ocvw|wsxSRG(ZM0EJaDZ1$UyATcS+;R;Tu%77KXUIA zcxx4;q6%uvGX93fhqnbQangYet+=RsHhEkC>>Yl6@wRA~fpJhnVCA0<8V6&sYF_Nl zsnN7h`R+YdQc{WsBgrL|p09Qo4G@`zL3Md-KE~N*`^bM|$`W+V69pBD@xr2xs~w~Y zQH?@V==Tg6lt3KFELe4a!GCLW_a z69$zRCk$PrMjkw~hixb*C<$?Kntl1w?Y?qP(+R4CX+k8Z;_4iScBN&d8~SrHn2yAF z7|LiRU^9QPS-7}T6B6)Vtu&Pl3=Nrh*qaFqLxO|55i=7psl`o+I89k_abr5;~5)+OSMQZ1@~*CnMy9HI*s7Z-^6HcBcg?%DXxy!wsn>lP6) zF-@j$TB5=iUfGeQQ!Cg~Ap+#hM7Xq{-{R|P%E@S2GpXp7d2l7@R~nU=5>vy@<#qlz zq&SXis+&NyVa$qQUepfvj6ms(G|7wmT4)IQt z?{u=-@(MIr%{1Iyyed**#|*b5~*T8W0~b zX*C$dCf=4>NQwuCBEwxN>633i9trz?mNS%r?>%QlydyM%KF3xg6BGKWG!>d4>Ok8I zVep&TM^zzO_Er2+1H97dV!loOg~i30fcWtCI9N9FVq4cCsIb&;|A9nX1J%*)5HT1? ziexKL9_A>udWR?FPqVVHATj>BSu$J4nz9&?) z>n!{$x_H9;1$tx1+UPL+xP<|JWNCSL&#N;K_BH}66||tZkoSLy zP?35g(bCr-#ZFwZ&*{O}La30G2WF0fv$JhN+<0o!hgM!GCU@rz&vA7P(1QbJ9EspM zfur^7ug^i7@=?DQG!rJD7bQa$5DoZI41@`6XFUzZ$%Do^f!{Oea=m?HPNwU3?X`>_ z9(1PJCL7Yu5M4?n9w|N5-WjmZ@kFiy5KZ#98vC znWys0BB&GwV--+S!0`_Ex%%y}imboACati_+H#@U?5t6xnfXFs{kldkFw^{0oVxiUUFov4i=8Yc0Lof zQ-T)4_a61?q|$8D@r0BSVvCC1#E1<|>hrZw18lOc^LeKF`V#M_1koCYHFoaDzfp)$ zQZ9T$#VVP>*SsO~rj(L%O{a&x8hXsS`du+mGyB&$um!zSmY@n>t?TNyo|_ID1}!od z;#{HIz3Bi|E`@&O?A1GKpJ@8Sk3-E$@hzvUc=K&iibUB>+HhKHEQ{}kwo@6t5+v1t zl&RNa7t{Qv_{~SuUm0VBY7%+BL4823G*cs^U&&%uSIO=j8BvazQ4+u0p7e(M8a2 zK0UsI3VSyLFJBIE1xpj8CL%*cOkvvz3N>gXDux6-zQ__FJggC11w0IkoC%N|bHc&S z9Y>)+nJQCXmA^`p5M*Ox^U@TOv?P_FO<|y~UvvW+5>IgUeY!1?vtuBu98+Fj<4f?O z3oT;+D{q?iX>nxf2I=Rc&N7B<0z(fYEGiQOSnH9yb!SP72VV>d!7xu2=wx`IJgp1E zeXJEU&IQFj4}#XamzQ=2&6e(I<|f$?D;r@awCUSjJB)OR#@ahPIxBhT+LlgJq!lDv zIG~~`pO6^;Zqdc@lpf$9e-$uB8UGeA*J_9Y#{NGAOj$`y%$*EN?oS@>CYeWSIpR-f z@~C_^abwwEXM_N0d3?alu6f1<sB4D;v9etElInypj`fFUTv=zHdeFdR+0^ z($;+J^0IvqkZ>skR~G56z!C^zrYzZE~&@oc>dXkk~rlvX^hYiuhQ|>q0hl1#1)0O z@v?Zik1(csn}SVQ^ED|-X1N2@It-gK0dbP63w1o4~ zT^oTRzj3rNW}(Z*(^qe~gTraHJKmuyh2ysuVQ`NdJjZp_x-|ZAZPwR&;NnVmTH4W~ z`oVx8)t5pURR0Bn#hP?6$)&HQAMcluRk&)g9w8t~lJ?tZ+0pUD8MXm=q+2EcIs89p zkkpOD{|YPA2T0F=<2WHLt)!~spR#J%TS~AJ3=81w{H;wY;#pzbD9Sg(<+oQmgm5OZ z?U?yrSPT8?ILTU{fEscbH+(w51i7#mANqbhpV=GBCR?Y#q$QlM%l7B~4f@YxMz!p6 zCa~Zfq}jbMQ>cawFuaYZtg2piI^koS`+B-eHR7ZfoenY(eHI9F zIFsQL{FM%E@(xs6RYixqOmr|6*^#vd07OiP+%qs=*$|Oi3^j#H0!Z)}7`}d9{|yl7 zmx1JqVc-mz(Vhh+CINAv3OPoM!UbnBZ`G)dh|9OvZ8#wPxO7WdUHz|_)FA7jYK682 zWO~q7cb;Z|SR{q2u1kk4d(YUr>RXC3Z`49HQlEIHn}YCOvU(I+(94+HzZXTu zoQQy5TwnVkhL`}hLTEDaW`HQd{;OnO=H;BQ^$&h_R@TpHwPi4On~5HA22FA#=vlar z6@6eCM3*2*xSt4_WL+cvxjafzR9x9p{+E95@>cr`;Wa^r`3cMW5t@2H zbQKV$V;Yhhz}o#5?m?3~qYI$rmv`dA6bC%K2 z|Jl(9xJ*Q(;*R2_JT~k{0G>BD*}ezypd%auBYin)YirpmTqZzAxO4ZGqyhxh>`urV z*2C5EpH1X6Gfk@fLwNM4bT=Vk90+a}N#7Ix*aH#&0PyHp#+1ZF`spII>1)HEsO(=kqdy*(9JakSb?I6ZCCUwM{yWAhO=Z%3Imrq-$N{{`*(`Wfxqz<7QKPs>)CsMFoPC_l{4-aM$b9qSfLCpiBj6;B|lzC z%stO9>*5ZxWyy}qEm}-~OF#Q!U;M5pOd5!G@^(PjT|D3qG_L3kp!{XusN_cp`SA|r z?;-61ntt9Fhw*dV78FdN@V~UL?A2P?&1jyNO<=xX4$*`g$#p%P57B!HvNkVm!j=t& z1!LbO0KR;-zT4ro(@9C;IfBbKXHb@tNzgZ>jr&p#a9O?bF6=GiWGh@Pe-`Ty!MJ`da_q=4%WZ$v} z!(@X6-~0GJ=|fd;u8vq!N~mu_JQi<{Xwf{qzwsB@h z%^{f)Ly^OTP9r)vb|8m|R#IyiC8t(SZCNT&79&H2B26oDh_FUH)vE(Td)@7t|Ka_-^Lc)mAD-vFpTm9K*L8ir*Y{GA54)LysT{NJtpxT6SBAj` z$%{M`5MMvKqWnlzRjGD$$L~Qm(}V6R5NBdxd$%Z>eUnKz74`9jpV7WRgesSC<;X7U zSCy&!^sCB1$+*3OfgQz}nI|XOMOI`M)~KnK5Rs_wJz+)Ra3!w@VDP30$QP6z3aBCF zsr{<(ovlD~QWG{ViHB$R60!@c?EFuvEB4ys3gA7b*DB382J^K}$;pl~A894xvPYek zqEf`*3me!Eu*2g}JK6avb`5X4cP)P979R{FFKJ>W4Rpq2%a^G#@L2dj)9UOr&_wdb z%t^&(f=YFZ#oQfehpb$BP5)rQk6U`EA|}pAH(KF5JgjO|UzwO2g0W(TPyRF2GA*y{>W(0~}_Sv;R@mRO{AR zpV*bLjj?k5=S()e8?mag$S)7;{+C`%HNAbW#10L9dW)R!_9w7bMBXf|MYX;XHb#G6DZUk#%fDR>s zI@^NMLeNiWgeD2^n2Ts>Z%Zp33mnqv(2wMbx><-#YHI3hVAWj%2g4SqWK|ljZkHjA zX0R!8_QVT8_&uG~t3{r3lPcxSHoJDcJvsJhNF$(6@Mvxfh$~LtI%e;PJdw!NZFt@u zuBJI_{V>`Z95!EQPMUh-hCZluT&*0f5DjPX;U?xk4_U19nw*@>hv}tWy?P5bG{P_I z61ilx!JVAg0W__uG#;-RtY`_X08E@~c)a(hmkET-CjDlRNeh6oFZZY~A0pl%Ij{LI zV^OG8M`#w=rRFjGn;eUpKM2Z!$^&5=3t_Q|zeN@`zbQ0MUzWgNe=%qH2 zVNoxF4!ikBp^@m?gs~Vt3D*x5l)NVwRYc47Zp)qD>)?CNKY*yfACQ~a1!M(Y%Bo%Fa{W5d!?D0owN&!f0nDeeUn%hHUQxI8N_3^+Z z9C;{OcipO0*0xmB$j=iEf#n&HFVxY|Ijue_2%mCJvwBluOt2snLqs$D5>&?ay^3F? zmS^CDwYRtTmUw!f$qO9-D^ma_F`fA&S;xr;J&IUh?pgU2LU2^1#Yx~ui0^?07noa{ zF$)yFwMPz}3-&|EV&KG1{)nk-j9l(Cd_6@^8vH3rSg$Y;zmv1E?m{S(Qf~cZDYLVu zhVFNtrJ>1SQ<5nT%-Eb+kP$kefi0=o9rxDi^YR~N#{1X3+vbJ|m+>|e^y+Yn*Q+ud zKu`D@NMxN>-@w=p{`Cmy#1E8W2>)3zT<##%Ng?I!OQCwVu?^;?_YPhrr4MXx?U^rT zXEdqN!iYDy@x8rvgdFa8v~ENBtJ8x?D-wU|WVy1|rWqgWT>~;Szn~^HVp^RF!xVZ@ zo)3tTyYmznH08|Y@-DYgkfHB`by<2rk!{y+f#1k3>gNpd13Q!2f~ge;lEj?YjHMh2 zY{TCLb*LQ|Xai=vQ5VyC8Z0Q}npwF=1X4VqD=RPR^Pr~2e0Fwr*-`I+=?*QD_j^uf zauV7MS|9@l1DG%vaCz!??k)}3ZHzCvNdw@@J=vHHKV7L}0Ew&GbG8R`Xq>3H{p4O zgHK;{+7kZiy<{=>=1+QkxJKmkJ`)vhU$VzNmimFAWQY+q4HtubF)^XF8EPuc6&f)mc@2$@&`s8Bdr8K37 zMEMxWuqpmRC5gf2Q`|3QvS(gCj(Uv9vms!V-#&c0?Gb?wv%Fn=>})5I;r=ORvBqWa zz6dtT^;Dl+adO>QmJjB|svBjF*E!lHFz};Mz)?VQYr7%Uw5?ACOVzGf({9*Npq;#7 z`}SA*j<=16`ZvOI>9>V@5OihS`>+h%!!=H0%+H(Jw`gH2>9TkBF|9M(p*H^3kCv;L ziB2i_urvVaw~k?X6rQ2ASAS1)!=Y0zd{^fiMF&xNjP5P+lryCPD*^*+I8G(U&K|+j z_M13l81H$$PYYA8l-I^UO*6;B^?qZ2Sc1blRh#SFJm?R-D<2acYbw5b@A!+mw$HZ+ zClPOF#Vc7mP1!q(Q%-id`E|ZwpVE_6Bp@8RziKXXJF$l=)9zx~BD@~2q*8q}Sb-k- zD+Jx{dCwubb{OmVyU`}k$f}`Lhw>4vr8%0Gj3UNuzO0(kpu-3^}?%wO0B#&{{?J6#vT9w literal 0 HcmV?d00001 diff --git a/CCP4-CSSB-2025/images/sv-orientation.png b/CCP4-CSSB-2025/images/sv-orientation.png new file mode 100644 index 0000000000000000000000000000000000000000..0685e2dd6b3544974dc60a6beb0b70a49893df68 GIT binary patch literal 32152 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 literal 0 HcmV?d00001 From 1c2e20374935b14e05f0d76b19d9c7784cfe80f1 Mon Sep 17 00:00:00 2001 From: David Waterman Date: Wed, 12 Mar 2025 17:18:48 +0000 Subject: [PATCH 7/9] Finished? --- CCP4-CSSB-2025/dui2-processing.md | 43 +++++++++++-------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index 17f8664..bf7b283 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -163,6 +163,8 @@ Now we have a crystal model it is worth looking at the reciprocal lattice again, > [!NOTE] > Try the "Show reciprocal cell" option. Zoom in and see if you can align the view with one of the reciprocal basis vectors, $a^\star$, $b^\star$ or $c^\star$. Try the toggles between "indexed" and "unindexed", "inliers" and "outliers". +Back in the DUI main window, switch to the "Image" tab. Now we have crystal model we can switch between displaying shoeboxes for the observed spots, and little "`+`" symbols for the predicted spots (see the "Display info" pull down). At a high enough Zoom level the Miller indices for reflections are also displayed. + ## Determining the Bravais lattice The initial solution from `dials.index` is triclinic, but the $\alpha$, $\beta$ \nd $\gamma$ angles are very close to 90°. To identify compatible Bravais lattices click on the "refine bravais settings" button and press "Run" @@ -223,9 +225,7 @@ It useful to look at the way the crystal parameters change during the scan, to m We now have a model for how the data set evolves over the whole scan. We are ready to take this to integrate every spot, including the weak ones that were not found during spot-finding. Integration is the most resource-intensive part of processing and takes the longest. After starting this job, maybe now is a good time to go check on the progress of the xia2 job running on CCP4 Cloud. -```bash -dials.integrate refined.expt refined.refl -``` +Click on the "integrate" button and then "Run" to start a job with default parameters. You can switch to the "Log" tab to follow what stage the program is at. After predicting reflections, `dials.integrate` starts forming a model to determine how big the measurement boxes should be. This is printed to the log at the lines @@ -240,15 +240,15 @@ The `sigma m` value is the standard deviation of the reflecting range of reflect After this step, `dials.integrate` will split the processing over as many processors as you have available, first modelling reflection profiles, and then performing the actual integration, using both summation integration and profile fitting methods. There are some summary tables at the end of the log file that are worth a glance, but really we don't have a good idea of the quality of the data set until we do scaling. +Once integration is finished there is new information in the "Report" tab, in the "Analysis of reflection intensities" and "Analysis of reference profiles" sections under "DIALS analysis plots". + ## Determining the crystal symmetry -Now we have integrated reflections we have much more useful data to perform symmetry checks. The program `dials.symmetry` will first check the Laue group (and we hope that this indicates our earlier choice of Bravais lattice is confirmed). Then it will look for potential screw axes by looking for apparent systematic absences: +Now we have integrated reflections we have much more useful data to perform symmetry checks. The program `dials.symmetry` will first check the Laue group (and we hope that this indicates our earlier choice of Bravais lattice is confirmed). Then it will look for potential screw axes by looking for apparent systematic absences. -```bash -dials.symmetry integrated.expt integrated.refl -``` +Click the "symmetry" button and "Run" for default parameters. -This systematic absence information is written to a table: +The systematic absence information is written to a table in the log: ``` +--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ @@ -270,13 +270,9 @@ The scaling program, `dials.scale`, uses algorithms similar to Aimless to fit a - a relative B-factor decay term (accounting roughly for the loss of high resolution reflections caused by radiation damage) - an absorption surface (accounting for absorption along the differing path lengths of scattered rays through the crystal volume) -The parameters of these components are adjusted in order to minimise the differences between reflections and their symmetry mates (which ought to have the same intensity). While performing this fit, an error model is also optimised so that the errors associated with the merged intensity for each reflection group is appropriate. We run the program with default options: - -```bash -dials.scale symmetrized.expt symmetrized.refl -``` +The parameters of these components are adjusted in order to minimise the differences between reflections and their symmetry mates (which ought to have the same intensity). While performing this fit, an error model is also optimised so that the errors associated with the merged intensity for each reflection group is appropriate. We run the program with default options by clicking on the "scale" button and then "Run". -At the end of the job a standard table of merging statistics is printed, parts of which may be familiar to you from "Table 1" of crystallographic structure papers: +At the end of the log file a standard table of merging statistics is printed, parts of which may be familiar to you from "Table 1" of crystallographic structure papers: ``` -------------Summary of merging statistics-------------- @@ -306,24 +302,15 @@ Total unique 145885 9107 507 > [!NOTE] > Do the summary statistics look okay? Is there any sign of an anomalous signal? -While the summary table is worth a quick glance, graphical representations of the merging statistics are usually more informative. You can see plots of values against resolution and against image number if you open the file `dials.scale.html` in a web browser. +While the summary table is worth a quick glance, graphical representations of the merging statistics are usually more informative. You can see plots of values against resolution and against image number in the "Report" tab. > [!NOTE] -> Open `dials.scale.html` and look at the plots. What is the main factor determining the usable resolution limit in this case? How does the anomalous signal look? +> Look at the plots in the "Report" tab. What is the main factor determining the usable resolution limit in this case? How does the anomalous signal look? -Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we could use: +Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we click on the "merge" button and export `merged.mtz`. However, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that we click on the "export" button instead and click "Run". -```bash -dials.merge scaled.expt scaled.refl -``` - -however, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that: - -```bash -dials.export scaled.expt scaled.refl -``` - -produces the file `scaled.mtz`, which we can import into CCP4 Cloud. +> [!WARNING] +> The exported MTZ is written in a strange location, in a subdirectory of the directory where you started `dui2`, depending on the job number in the history tree. For example, when I ran it, it appeared in `./run_dui2_nodes/run12/scaled.mtz`. ## Comparing results with xia2 From e0a56e7fabd19604275046921c0a173d3be37e0b Mon Sep 17 00:00:00 2001 From: David Waterman Date: Wed, 12 Mar 2025 19:18:01 +0000 Subject: [PATCH 8/9] output MTZ location --- CCP4-CSSB-2025/dui2-processing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index bf7b283..5b9030c 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -307,10 +307,10 @@ While the summary table is worth a quick glance, graphical representations of th > [!NOTE] > Look at the plots in the "Report" tab. What is the main factor determining the usable resolution limit in this case? How does the anomalous signal look? -Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we click on the "merge" button and export `merged.mtz`. However, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that we click on the "export" button instead and click "Run". +Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we click on the "merge" button and export `merged.mtz`. However, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that we click on the "export" button instead and click "Run". Once that is finished, click on the button "Download/save hklout file" to save the file to the directory where you started the processing. > [!WARNING] -> The exported MTZ is written in a strange location, in a subdirectory of the directory where you started `dui2`, depending on the job number in the history tree. For example, when I ran it, it appeared in `./run_dui2_nodes/run12/scaled.mtz`. +> DUI will save the file with the name `scaled` by default. That is, you have to add the extension `.mtz` yourself. ## Comparing results with xia2 From 8cc01089cea345248963732a7e08d6d85c9a9353 Mon Sep 17 00:00:00 2001 From: David Waterman Date: Thu, 13 Mar 2025 09:46:33 +0000 Subject: [PATCH 9/9] Change to UNIX line endings --- CCP4-CSSB-2025/dui2-processing.md | 646 +++++++++++++++--------------- 1 file changed, 323 insertions(+), 323 deletions(-) diff --git a/CCP4-CSSB-2025/dui2-processing.md b/CCP4-CSSB-2025/dui2-processing.md index 5b9030c..4ce348e 100644 --- a/CCP4-CSSB-2025/dui2-processing.md +++ b/CCP4-CSSB-2025/dui2-processing.md @@ -1,323 +1,323 @@ -# Data processing tutorial - -## Data - -To process the data locally using DIALS you will need a copy of the dataset on your computer. If you do not have it already you can download it from [Zenodo](https://zenodo.org/records/14541394/files/zinc_K_edge_data_images_1-800.tar?download=1). - -## Summary - -We will work on a data set recorded from crystals of the enzyme tetrahydroalstonine synthase (THAS1), with thanks to Prof. Dave Lawson for providing the data set. The images were collected at Diamond Light Source on a PILATUS 6M pixel array detector at an X-ray wavelength of 1.282 Å, at the Zinc _K_ edge. There is sufficient anomalous signal to solve the structure by experimental phasing (SAD). There are some more details about the data set [here](https://zenodo.org/records/14541394)). - -First we will set up a xia2 processing job, running remotely on the CCP4 Cloud at Harwell. This will keep your local computer free to simultaneously try out DIALS data processing using the DUI2 graphical user interface. - -Once you have completed the interactive processing, you can compare results with the xia2 job. Are there any differences? Which job has better statistics? - -## Processing with xia2 on CCP4 Cloud - -If you have CCP4 9.0 icons available, double click on the icon named "CCP4Cloud Remote". Alternatively, in a terminal with the CCP4 9.0 environment sourced, run the script `ccp4cloud-remote`. This will open a web browser allowing you to log in to the CCP4 Cloud at Harwell. Here we assume you already have an account, and know how to create a new project. - -Within your Cloud project, add a new "Automatic Image Processing with Xia-2" task. Under "Input Data" make sure sure the task will "Look for X-ray images in cloud storage". :file_folder: Browse for the image directory, selecting _Tutorials/Data/1_from_images/ADH4/ADH4_diffraction_data_. Set a sensible project and crystal name, and don't forget to add "Zn" as the heavy atom type! - -There's no need to set any advanced options, just select "Run". Make sure the job starts, but after that you can leave it to process while you look at the images locally with DIALS. - -> [!WARNING] -> Running xia2 in CCP4 Cloud requires you first to upload the images to Cloud, so it hasn't been a very popular option in the past. You are more likely to come across xia2 from autoprocessing results at the synchrotron, or by running xia2 locally through ccp4i2 or at the command line. Recently however, uploading images was made easier if you (or your lab) use the Globus file transfer platform, where CCP4 Cloud has an endpoint. However, image data is large and will eventually be deleted from Cloud to save space. So don't consider CCP4 Cloud as a backup solution for your diffraction data! - -## Setting up processing with DUI - -Now we will process the images with DIALS via DUI. While it is possible to start DUI from either ccp4i2 or CCP4 Cloud, _this is not recommended!_ The problem is that when DUI is started from one of the CCP4 GUIs, it is not easy to restart DUI from where you left off if the program exists. If DUI is started from a terminal with the CCP4 environment sourced, then it can manage its own history and pick up from a previously unfinished job. - -Opening a command line (terminal) window with the CCP4 environment sourced differs by operating system. Please ask for help if you are unsure how to do this. Once it is done, first change to a directory where you want to do the processing (we recommend processing in a different directory from the images themselves), then start `dui2`. For example, using BASH on Linux or Mac: - -```bash -cd ~ -mkdir THAS1-dials -cd THAS1-dials -dui2 -``` - -on Windows - -```bat -cd %USERPROFILE% -mkdir THAS1-dials -cd THAS1-dials -dui2 -``` - -Once the program starts you should see something like this: - -![The DUI window at start up](./images/dui-start.png "DUI") - -## Importing the images - -The first task in data processing with DIALS is to import the images. The DUI history tree is already highlighting an incomplete `dials.import` node. To see some help for a node that hasn't yet been run, click on the "Log" tab on the right, but note this help message is relevant mainly for the usage of `dials.import` from the command line, and some of the description might not be relevant for DUI. - -To import the data set, click on the "Open images" button and then navigate to the directory where the images are located. You then need to click on just one of the CBF images, say `ADH4_M7S9_6_0001.cbf`, and then click "Open". DUI will automatically convert that to a template that matches all the images in the data set. - -> [!NOTE] -For EIGER data there is not one file per image, but usually a few files with the extension `.h5`. In this case, just select the file with the name that ends `_master.h5`, or, (better) if it is present, the file with the extension `.nxs`. -> - -DUI has not actually done the import yet. To do that you need to click on the "Run" button with the DIALS logo, at the bottom of the window. Once that is completed, in the "Log" tab you should see output that looks like this: - - -``` -DIALS (2018) Acta Cryst. D74, 85-97. https://doi.org/10.1107/S2059798317017235 -DIALS 3.21 -The following parameters have been modified: - -input { - experiments = -} - --------------------------------------------------------------------------------- - format: - template: /data/THAS1/images_1-800/ADH4_M7S9_6_####.cbf:1:800 - num images: 800 - sequences: - still: 0 - sweep: 1 - num stills: 0 --------------------------------------------------------------------------------- -Writing experiments to imported.expt -``` - -This tells you that DIALS interprets the 800 images as a single rotation sweep, and writes the diffraction geometry and associated metadata into a new file, `imported.expt`. - -## Viewing the images - -Click on the "Image" tab to view the diffraction images using DUI's viewer. You can use the mousewheel to zoom (if you have one), or the magnifying glass buttons at the upper right of the window. Click and drag to scroll the image. More options to change the contrast and colour scheme are contained in the "Display info" pull down menu. - -> [!NOTE] -> Look at images at various points in the data set - at the beginning, in the middle, and at the end. Does the crystal diffract well throughout? Are there any other features present alongside the diffraction spots? - -## Masking the backstop shadow (optional) - -There is a horizontal backstop shadow across the images. We could mask this out if we wanted although in this case the rotation axis orientation is aligned with the backstop shadow (this is not shown in the DUI viewer, but you can see it by running the command `dials.image_viewer imported.expt`). Spots close to the rotation axis are less reliable and will not be integrated anyway (can you figure out why?). - -Nevertheless, if you want to try it you can mask out the shadow by clicking the "apply mask" button and then choosing one of the options (I recommend "Polygon") then clicking in the image to define a mask. Be aware that the mask is not actually defined until you click the DIALS "Run" button! After that the masked region will be displayed in translucent red, like this: - -![The backstop mask is shown as a translucent red polygon](./images/backstop-mask.png "Backstop mask") - -## Finding spots - -Click the "find spots" button to move to the next step. There are various parameters that can be adjusted to control the spot-finding algorithm. For Pilatus data sets like this one the default parameters are usually sensible. So, just click the "Run" button to start the job. - -DIALS finds spots throughout the entire rotation scan, whereas some other programs default to finding spots on just enough images to perform indexing. This means spot-finding takes longer with DIALS, but the information determined from the entire scan can be reused multiple times. In fact, now DIALS will not need to read the image data again until integration. At the end of the spot-finding procedure, in the "Log" tab you will see an ASCII-art histogram indicating the number of spots found on each image. In this case it is pretty boring because the crystal diffracts consistently well throughout the scan: - -``` -Histogram of per-image spot count for imageset 0: -307302 spots found on 800 images (max 5525 / bin) -* * **** ** * * ** ** * * -************************************************************ -************************************************************ -************************************************************ -************************************************************ -************************************************************ -************************************************************ -************************************************************ -************************************************************ -************************************************************ -1 image 800 - --------------------------------------------------------------------------------- -Saved 307302 reflections to strong.refl -``` - -Similar information is available graphically in the "Report" tab. Click on "Analysis of strong reflections" to see the per-image counts. You can also see the details about the experiment geometry by clicking on that heading to expand the box. - -## Viewing the reciprocal lattice - -DUI does not yet contain its own reciprocal lattice viewer. However it is able to launch `dials.reciprocal_lattice_viewer` for you, from a button in the "Reciprocal lattice" tab. Press that, then take some time to explore the controls in the `dials.reciprocal_lattice_viewer`. - -> [!NOTE] -> What does middle-button drag do? Try setting "Max Z" to something small, like 5. What does this show you? Align the view down the rotation axis and then click to increase the Max Z value (Use Alt-click to jump in blocks of 100). Can you see how data collection sweeps out a volume of reciprocal space? Can you align the view in a direction that clearly shows the crystal lattice? - -> [!WARNING] -> Sorry, there are bugs in the way buttons are displayed in CCP4's version of `dials.reciprocal_lattice_viewer`. The controls are functional. but the values are hard to read. - -The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is to look for pathologies that might cause indexing to fail, such as poor diffraction geometry, noisy spots, split spots, ice rings, and so on. In this case the reciprocal space lattice looks very clean, so we would not expect indexing to have any problems. Here is a view with a nicely aligned lattice, suggesting that indexing should not be a problem: - -![The aligned reciprocal lattice points](./images/rlv.png "dials.reciprocal_lattice_viewer") - - -## Indexing - -Click the "index" button to set up a `dials.index` job. By default this will find a $P\ 1$ cell, using the 3D FFT algorithm. This is fine for our purposes, but feel free to experiment with the other settings. If a job goes wrong you can always click back to the `find_spots` node on the history tree and start a new "index" job from that point. - -It is worth taking a moment to read the output in the "Log" tab once the job completes. The program runs through a few stages: - -- Setting up for indexing (calculate `max_cell`, setting resolution limits, mapping spots to reciprocal space and forming the FFT grid) -- Performing the FFT, searching for real space basis vectors and forming candidate solutions (in this case 50) -- Ranking the solutions and choosing the single best -- Performing geometry refinement in macrocycles with increasing resolution. At each stage this: - - Identifies outliers - - Parameterises the diffraction geometry - - Refines this geometry against the observations - - Increases resolution for the next macrocycle -- Once the resolution limit includes all reflections the final refined model and reflections are written to the files `indexed.expt` and `indexed.expt` - -Now we have a crystal model it is worth looking at the reciprocal lattice again, by launching the `dials.reciprocal_lattice_viewer` from the "Reciprocal lattice" tab. The spots are now coloured according to whether they are indexed or not, although in this case almost all spots are indexed. - -> [!NOTE] -> Try the "Show reciprocal cell" option. Zoom in and see if you can align the view with one of the reciprocal basis vectors, $a^\star$, $b^\star$ or $c^\star$. Try the toggles between "indexed" and "unindexed", "inliers" and "outliers". - -Back in the DUI main window, switch to the "Image" tab. Now we have crystal model we can switch between displaying shoeboxes for the observed spots, and little "`+`" symbols for the predicted spots (see the "Display info" pull down). At a high enough Zoom level the Miller indices for reflections are also displayed. - -## Determining the Bravais lattice - -The initial solution from `dials.index` is triclinic, but the $\alpha$, $\beta$ \nd $\gamma$ angles are very close to 90°. To identify compatible Bravais lattices click on the "refine bravais settings" button and press "Run" - -This will enforce the Bravais symmetry of compatible lattices (within some tolerance) and run refinement. The results are printed as a table at the end of the logfile shown in the "Log" tab: - -``` -Chiral space groups corresponding to each Bravais lattice: -aP: P1 -mP: P2 P21 -oP: P222 P2221 P21212 P212121 -+------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ -| Solution | Metric fit | rmsd | min/max cc | #spots | lattice | unit_cell | volume | cb_op | -|------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------| -| * 5 | 0.0338 | 0.078 | 0.904/0.947 | 12000 | oP | 57.10 102.19 112.16 90.00 90.00 90.00 | 654423 | a,b,c | -| * 4 | 0.0338 | 0.078 | 0.947/0.947 | 12000 | mP | 102.18 57.10 112.16 90.00 89.99 90.00 | 654379 | -b,-a,-c | -| * 3 | 0.0336 | 0.078 | 0.947/0.947 | 12000 | mP | 57.10 112.16 102.19 90.00 90.00 90.00 | 654411 | -a,-c,-b | -| * 2 | 0.0083 | 0.071 | 0.904/0.904 | 12000 | mP | 57.11 102.19 112.18 90.00 89.97 90.00 | 654619 | a,b,c | -| * 1 | 0 | 0.071 | -/- | 12000 | aP | 57.11 102.19 112.18 89.99 89.97 90.01 | 654702 | a,b,c | -+------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ -``` - -However, within DUI it is easier to see this table in the next step - reindexing. So click on the "reindex" button, and the input pane now shows the same information as the text table, with a recommended solution highlighted. - -![The table of Bravais lattice solutions](./images/rbs-table.png "Reindexing options") - -The decision of which solution to choose is down to the user, but solutions deemed acceptable are marked with a "Y" in the "Ok" column. In general, we look for the highest symmetry solution with reasonable values for the `Metric fit`, `rmsd` and `min/max cc` columns. Here we will take solution 5, the primitive orthorhombic (`oP`) one. So ensure that row is highlighted and then press "Run". - -You could now check the crystal model under "Experiments" in the "Report" tab to see that the space group has been set to P\ 2\ 2\ 2$. No attempt has been made yet to locate screw axes. That's not a problem, we do not need to know the exact space group prior to integration, just a sub group. There will be another attempt at symmetry determination later. - -## Refining the solution - -We did some refinement during indexing, and again during Bravais lattice determination. Nevertheless, it is still worth running an additional step of refinement using the program `dials.refine`. This will use a more sophisticated outlier rejection algorithm than before, and it will also refine a "scan-varying" model of the crystal, in which changes to the orientation and unit cell are allowed as a function of the position in the rotation scan. So, click on the "Refine" button and click "Run" - -From the log you should see that initially 13 parameters are refined during the "scan-static" macrocycle. Then this is followed by a "scan-varying" macrocycle using 37 parameters, where the crystal parameters have been made local to regions of the scan and the model is constructed by smoothing between these points. This more sophisticated model is able to fit the predictions to the data better, and you should see lower RMSDs as a result. For example: - -``` -RMSDs by experiment: -+-------+--------+----------+----------+------------+ -| Exp | Nref | RMSD_X | RMSD_Y | RMSD_Z | -| id | | (px) | (px) | (images) | -|-------+--------+----------+----------+------------| -| 0 | 254417 | 0.2914 | 0.28382 | 0.1768 | -+-------+--------+----------+----------+------------+ -``` - - -It useful to look at the way the crystal parameters change during the scan, to make sure there are no unrealistic-looking changes. Click on the "Report" tab and expand the "Analysis of scan-varying crystal model". You should see plots like these: - -![The scan-varying crystal unit cell parameters](./images/sv-cell.png "Scan-varying cell") - -![The scan-varying crystal orientation parameters](./images/sv-orientation.png "Scan-varying orientation") - -> [!NOTE] -> Check that the change in unit cell parameters and orientation angles looks small across the whole scan. - -## Integration - -We now have a model for how the data set evolves over the whole scan. We are ready to take this to integrate every spot, including the weak ones that were not found during spot-finding. Integration is the most resource-intensive part of processing and takes the longest. After starting this job, maybe now is a good time to go check on the progress of the xia2 job running on CCP4 Cloud. - -Click on the "integrate" button and then "Run" to start a job with default parameters. You can switch to the "Log" tab to follow what stage the program is at. - -After predicting reflections, `dials.integrate` starts forming a model to determine how big the measurement boxes should be. This is printed to the log at the lines - -``` -Calculating E.S.D Beam Divergence. -Calculating E.S.D Reflecting Range (mosaicity). - sigma b: 0.041727 degrees - sigma m: 0.062834 degrees -``` - -The `sigma m` value is the standard deviation of the reflecting range of reflections, which is sometimes (and inaccurately) called "mosacicity". It is good to check that this value is not too high. Here it is significantly less than 0.1°, so the sample seems very well behaved. - -After this step, `dials.integrate` will split the processing over as many processors as you have available, first modelling reflection profiles, and then performing the actual integration, using both summation integration and profile fitting methods. There are some summary tables at the end of the log file that are worth a glance, but really we don't have a good idea of the quality of the data set until we do scaling. - -Once integration is finished there is new information in the "Report" tab, in the "Analysis of reflection intensities" and "Analysis of reference profiles" sections under "DIALS analysis plots". - -## Determining the crystal symmetry - -Now we have integrated reflections we have much more useful data to perform symmetry checks. The program `dials.symmetry` will first check the Laue group (and we hope that this indicates our earlier choice of Bravais lattice is confirmed). Then it will look for potential screw axes by looking for apparent systematic absences. - -Click the "symmetry" button and "Run" for default parameters. - -The systematic absence information is written to a table in the log: - -``` -+--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ -| Screw axis | Score | No. present | No. absent | present | absent | present | absent | -|--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------| -| 21a | 0 | 10 | 10 | 1253.16 | 340.318 | 35.204 | 17.228 | -| 21b | 1 | 30 | 30 | 1575.34 | 1.901 | 45.998 | 0.318 | -| 21c | 1 | 38 | 39 | 1167.44 | 3.281 | 74.032 | 1.487 | -+--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ -``` - -Here we see clear screw axes along $b$ and $c$, which have high average intensity and $I/\sigma$ for reflections that are expected to be present, but low values for absences. For the potential axis along $a$, while there is higher intensity and $I/\sigma$ for expected present reflections compared to absences, the intensity in the putative absences is actually rather high. This indicates that the a screw axis along $a$ is not supported by the data. As a result, `dials.symmetry` ultimately writes the files `symmetrized.expt` and `symmetrized.refl`, using the space group $P\ 2\ 2_1\ 2_1$ - -## Scaling and exporting - -The scaling program, `dials.scale`, uses algorithms similar to Aimless to fit a physically-interpretable scaling model to the data set. This consists of three components: - -- an overall rotation angle-dependent scale factor (accounting for beam intensity changes, variation in illuminated volume and similar effects) -- a relative B-factor decay term (accounting roughly for the loss of high resolution reflections caused by radiation damage) -- an absorption surface (accounting for absorption along the differing path lengths of scattered rays through the crystal volume) - -The parameters of these components are adjusted in order to minimise the differences between reflections and their symmetry mates (which ought to have the same intensity). While performing this fit, an error model is also optimised so that the errors associated with the merged intensity for each reflection group is appropriate. We run the program with default options by clicking on the "scale" button and then "Run". - -At the end of the log file a standard table of merging statistics is printed, parts of which may be familiar to you from "Table 1" of crystallographic structure papers: -``` - -------------Summary of merging statistics-------------- - - Overall Low High -High resolution limit 1.26 3.42 1.26 -Low resolution limit 112.16 112.61 1.28 -Completeness 82.6 97.7 5.8 -Multiplicity 3.8 4.3 1.0 -I/sigma 15.0 44.2 0.8 -Rmerge(I) 0.066 0.050 0.625 -Rmerge(I+/-) 0.054 0.043 1.675 -Rmeas(I) 0.075 0.056 0.884 -Rmeas(I+/-) 0.068 0.053 2.369 -Rpim(I) 0.034 0.026 0.625 -Rpim(I+/-) 0.041 0.031 1.675 -CC half 0.997 0.995 0.370 -Anomalous completeness 69.8 91.7 0.1 -Anomalous multiplicity 2.1 2.4 1.0 -Anomalous correlation 0.131 0.074 0.000 -Anomalous slope 1.124 -dF/F 0.071 -dI/s(dI) 1.255 -Total observations 561027 39438 526 -Total unique 145885 9107 507 -``` - -> [!NOTE] -> Do the summary statistics look okay? Is there any sign of an anomalous signal? - -While the summary table is worth a quick glance, graphical representations of the merging statistics are usually more informative. You can see plots of values against resolution and against image number in the "Report" tab. - -> [!NOTE] -> Look at the plots in the "Report" tab. What is the main factor determining the usable resolution limit in this case? How does the anomalous signal look? - -Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we click on the "merge" button and export `merged.mtz`. However, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that we click on the "export" button instead and click "Run". Once that is finished, click on the button "Download/save hklout file" to save the file to the directory where you started the processing. - -> [!WARNING] -> DUI will save the file with the name `scaled` by default. That is, you have to add the extension `.mtz` yourself. - -## Comparing results with xia2 - -Hopefully by now the xia2 job you started on CCP4 Cloud will have finished. Following that job, run a "Merging and Scaling with Aimless" job, where under "Basic Options" select "no scaling only merge". Leave everything else as default and run. - -Now import your `scaled.mtz` from DIALS processing, and also follow that with a "no scaling only merge" Aimless job. - -Once both jobs have finished you can open both results windows to compare results side-by-side. Navigate to the "Scaling and merging" section in each case to compare merging statistics from Aimless. - -Which job looks better, yours or xia2's? Or does it not matter? +# Data processing tutorial + +## Data + +To process the data locally using DIALS you will need a copy of the dataset on your computer. If you do not have it already you can download it from [Zenodo](https://zenodo.org/records/14541394/files/zinc_K_edge_data_images_1-800.tar?download=1). + +## Summary + +We will work on a data set recorded from crystals of the enzyme tetrahydroalstonine synthase (THAS1), with thanks to Prof. Dave Lawson for providing the data set. The images were collected at Diamond Light Source on a PILATUS 6M pixel array detector at an X-ray wavelength of 1.282 Å, at the Zinc _K_ edge. There is sufficient anomalous signal to solve the structure by experimental phasing (SAD). There are some more details about the data set [here](https://zenodo.org/records/14541394)). + +First we will set up a xia2 processing job, running remotely on the CCP4 Cloud at Harwell. This will keep your local computer free to simultaneously try out DIALS data processing using the DUI2 graphical user interface. + +Once you have completed the interactive processing, you can compare results with the xia2 job. Are there any differences? Which job has better statistics? + +## Processing with xia2 on CCP4 Cloud + +If you have CCP4 9.0 icons available, double click on the icon named "CCP4Cloud Remote". Alternatively, in a terminal with the CCP4 9.0 environment sourced, run the script `ccp4cloud-remote`. This will open a web browser allowing you to log in to the CCP4 Cloud at Harwell. Here we assume you already have an account, and know how to create a new project. + +Within your Cloud project, add a new "Automatic Image Processing with Xia-2" task. Under "Input Data" make sure sure the task will "Look for X-ray images in cloud storage". :file_folder: Browse for the image directory, selecting _Tutorials/Data/1_from_images/ADH4/ADH4_diffraction_data_. Set a sensible project and crystal name, and don't forget to add "Zn" as the heavy atom type! + +There's no need to set any advanced options, just select "Run". Make sure the job starts, but after that you can leave it to process while you look at the images locally with DIALS. + +> [!WARNING] +> Running xia2 in CCP4 Cloud requires you first to upload the images to Cloud, so it hasn't been a very popular option in the past. You are more likely to come across xia2 from autoprocessing results at the synchrotron, or by running xia2 locally through ccp4i2 or at the command line. Recently however, uploading images was made easier if you (or your lab) use the Globus file transfer platform, where CCP4 Cloud has an endpoint. However, image data is large and will eventually be deleted from Cloud to save space. So don't consider CCP4 Cloud as a backup solution for your diffraction data! + +## Setting up processing with DUI + +Now we will process the images with DIALS via DUI. While it is possible to start DUI from either ccp4i2 or CCP4 Cloud, _this is not recommended!_ The problem is that when DUI is started from one of the CCP4 GUIs, it is not easy to restart DUI from where you left off if the program exists. If DUI is started from a terminal with the CCP4 environment sourced, then it can manage its own history and pick up from a previously unfinished job. + +Opening a command line (terminal) window with the CCP4 environment sourced differs by operating system. Please ask for help if you are unsure how to do this. Once it is done, first change to a directory where you want to do the processing (we recommend processing in a different directory from the images themselves), then start `dui2`. For example, using BASH on Linux or Mac: + +```bash +cd ~ +mkdir THAS1-dials +cd THAS1-dials +dui2 +``` + +on Windows + +```bat +cd %USERPROFILE% +mkdir THAS1-dials +cd THAS1-dials +dui2 +``` + +Once the program starts you should see something like this: + +![The DUI window at start up](./images/dui-start.png "DUI") + +## Importing the images + +The first task in data processing with DIALS is to import the images. The DUI history tree is already highlighting an incomplete `dials.import` node. To see some help for a node that hasn't yet been run, click on the "Log" tab on the right, but note this help message is relevant mainly for the usage of `dials.import` from the command line, and some of the description might not be relevant for DUI. + +To import the data set, click on the "Open images" button and then navigate to the directory where the images are located. You then need to click on just one of the CBF images, say `ADH4_M7S9_6_0001.cbf`, and then click "Open". DUI will automatically convert that to a template that matches all the images in the data set. + +> [!NOTE] +For EIGER data there is not one file per image, but usually a few files with the extension `.h5`. In this case, just select the file with the name that ends `_master.h5`, or, (better) if it is present, the file with the extension `.nxs`. +> + +DUI has not actually done the import yet. To do that you need to click on the "Run" button with the DIALS logo, at the bottom of the window. Once that is completed, in the "Log" tab you should see output that looks like this: + + +``` +DIALS (2018) Acta Cryst. D74, 85-97. https://doi.org/10.1107/S2059798317017235 +DIALS 3.21 +The following parameters have been modified: + +input { + experiments = +} + +-------------------------------------------------------------------------------- + format: + template: /data/THAS1/images_1-800/ADH4_M7S9_6_####.cbf:1:800 + num images: 800 + sequences: + still: 0 + sweep: 1 + num stills: 0 +-------------------------------------------------------------------------------- +Writing experiments to imported.expt +``` + +This tells you that DIALS interprets the 800 images as a single rotation sweep, and writes the diffraction geometry and associated metadata into a new file, `imported.expt`. + +## Viewing the images + +Click on the "Image" tab to view the diffraction images using DUI's viewer. You can use the mousewheel to zoom (if you have one), or the magnifying glass buttons at the upper right of the window. Click and drag to scroll the image. More options to change the contrast and colour scheme are contained in the "Display info" pull down menu. + +> [!NOTE] +> Look at images at various points in the data set - at the beginning, in the middle, and at the end. Does the crystal diffract well throughout? Are there any other features present alongside the diffraction spots? + +## Masking the backstop shadow (optional) + +There is a horizontal backstop shadow across the images. We could mask this out if we wanted although in this case the rotation axis orientation is aligned with the backstop shadow (this is not shown in the DUI viewer, but you can see it by running the command `dials.image_viewer imported.expt`). Spots close to the rotation axis are less reliable and will not be integrated anyway (can you figure out why?). + +Nevertheless, if you want to try it you can mask out the shadow by clicking the "apply mask" button and then choosing one of the options (I recommend "Polygon") then clicking in the image to define a mask. Be aware that the mask is not actually defined until you click the DIALS "Run" button! After that the masked region will be displayed in translucent red, like this: + +![The backstop mask is shown as a translucent red polygon](./images/backstop-mask.png "Backstop mask") + +## Finding spots + +Click the "find spots" button to move to the next step. There are various parameters that can be adjusted to control the spot-finding algorithm. For Pilatus data sets like this one the default parameters are usually sensible. So, just click the "Run" button to start the job. + +DIALS finds spots throughout the entire rotation scan, whereas some other programs default to finding spots on just enough images to perform indexing. This means spot-finding takes longer with DIALS, but the information determined from the entire scan can be reused multiple times. In fact, now DIALS will not need to read the image data again until integration. At the end of the spot-finding procedure, in the "Log" tab you will see an ASCII-art histogram indicating the number of spots found on each image. In this case it is pretty boring because the crystal diffracts consistently well throughout the scan: + +``` +Histogram of per-image spot count for imageset 0: +307302 spots found on 800 images (max 5525 / bin) +* * **** ** * * ** ** * * +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +************************************************************ +1 image 800 + +-------------------------------------------------------------------------------- +Saved 307302 reflections to strong.refl +``` + +Similar information is available graphically in the "Report" tab. Click on "Analysis of strong reflections" to see the per-image counts. You can also see the details about the experiment geometry by clicking on that heading to expand the box. + +## Viewing the reciprocal lattice + +DUI does not yet contain its own reciprocal lattice viewer. However it is able to launch `dials.reciprocal_lattice_viewer` for you, from a button in the "Reciprocal lattice" tab. Press that, then take some time to explore the controls in the `dials.reciprocal_lattice_viewer`. + +> [!NOTE] +> What does middle-button drag do? Try setting "Max Z" to something small, like 5. What does this show you? Align the view down the rotation axis and then click to increase the Max Z value (Use Alt-click to jump in blocks of 100). Can you see how data collection sweeps out a volume of reciprocal space? Can you align the view in a direction that clearly shows the crystal lattice? + +> [!WARNING] +> Sorry, there are bugs in the way buttons are displayed in CCP4's version of `dials.reciprocal_lattice_viewer`. The controls are functional. but the values are hard to read. + +The main purpose of the `dials.reciprocal_lattice_viewer` prior to indexing is to look for pathologies that might cause indexing to fail, such as poor diffraction geometry, noisy spots, split spots, ice rings, and so on. In this case the reciprocal space lattice looks very clean, so we would not expect indexing to have any problems. Here is a view with a nicely aligned lattice, suggesting that indexing should not be a problem: + +![The aligned reciprocal lattice points](./images/rlv.png "dials.reciprocal_lattice_viewer") + + +## Indexing + +Click the "index" button to set up a `dials.index` job. By default this will find a $P\ 1$ cell, using the 3D FFT algorithm. This is fine for our purposes, but feel free to experiment with the other settings. If a job goes wrong you can always click back to the `find_spots` node on the history tree and start a new "index" job from that point. + +It is worth taking a moment to read the output in the "Log" tab once the job completes. The program runs through a few stages: + +- Setting up for indexing (calculate `max_cell`, setting resolution limits, mapping spots to reciprocal space and forming the FFT grid) +- Performing the FFT, searching for real space basis vectors and forming candidate solutions (in this case 50) +- Ranking the solutions and choosing the single best +- Performing geometry refinement in macrocycles with increasing resolution. At each stage this: + - Identifies outliers + - Parameterises the diffraction geometry + - Refines this geometry against the observations + - Increases resolution for the next macrocycle +- Once the resolution limit includes all reflections the final refined model and reflections are written to the files `indexed.expt` and `indexed.expt` + +Now we have a crystal model it is worth looking at the reciprocal lattice again, by launching the `dials.reciprocal_lattice_viewer` from the "Reciprocal lattice" tab. The spots are now coloured according to whether they are indexed or not, although in this case almost all spots are indexed. + +> [!NOTE] +> Try the "Show reciprocal cell" option. Zoom in and see if you can align the view with one of the reciprocal basis vectors, $a^\star$, $b^\star$ or $c^\star$. Try the toggles between "indexed" and "unindexed", "inliers" and "outliers". + +Back in the DUI main window, switch to the "Image" tab. Now we have crystal model we can switch between displaying shoeboxes for the observed spots, and little "`+`" symbols for the predicted spots (see the "Display info" pull down). At a high enough Zoom level the Miller indices for reflections are also displayed. + +## Determining the Bravais lattice + +The initial solution from `dials.index` is triclinic, but the $\alpha$, $\beta$ \nd $\gamma$ angles are very close to 90°. To identify compatible Bravais lattices click on the "refine bravais settings" button and press "Run" + +This will enforce the Bravais symmetry of compatible lattices (within some tolerance) and run refinement. The results are printed as a table at the end of the logfile shown in the "Log" tab: + +``` +Chiral space groups corresponding to each Bravais lattice: +aP: P1 +mP: P2 P21 +oP: P222 P2221 P21212 P212121 ++------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ +| Solution | Metric fit | rmsd | min/max cc | #spots | lattice | unit_cell | volume | cb_op | +|------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------| +| * 5 | 0.0338 | 0.078 | 0.904/0.947 | 12000 | oP | 57.10 102.19 112.16 90.00 90.00 90.00 | 654423 | a,b,c | +| * 4 | 0.0338 | 0.078 | 0.947/0.947 | 12000 | mP | 102.18 57.10 112.16 90.00 89.99 90.00 | 654379 | -b,-a,-c | +| * 3 | 0.0336 | 0.078 | 0.947/0.947 | 12000 | mP | 57.10 112.16 102.19 90.00 90.00 90.00 | 654411 | -a,-c,-b | +| * 2 | 0.0083 | 0.071 | 0.904/0.904 | 12000 | mP | 57.11 102.19 112.18 90.00 89.97 90.00 | 654619 | a,b,c | +| * 1 | 0 | 0.071 | -/- | 12000 | aP | 57.11 102.19 112.18 89.99 89.97 90.01 | 654702 | a,b,c | ++------------+--------------+--------+--------------+----------+-----------+-------------------------------------------+----------+----------+ +``` + +However, within DUI it is easier to see this table in the next step - reindexing. So click on the "reindex" button, and the input pane now shows the same information as the text table, with a recommended solution highlighted. + +![The table of Bravais lattice solutions](./images/rbs-table.png "Reindexing options") + +The decision of which solution to choose is down to the user, but solutions deemed acceptable are marked with a "Y" in the "Ok" column. In general, we look for the highest symmetry solution with reasonable values for the `Metric fit`, `rmsd` and `min/max cc` columns. Here we will take solution 5, the primitive orthorhombic (`oP`) one. So ensure that row is highlighted and then press "Run". + +You could now check the crystal model under "Experiments" in the "Report" tab to see that the space group has been set to P\ 2\ 2\ 2$. No attempt has been made yet to locate screw axes. That's not a problem, we do not need to know the exact space group prior to integration, just a sub group. There will be another attempt at symmetry determination later. + +## Refining the solution + +We did some refinement during indexing, and again during Bravais lattice determination. Nevertheless, it is still worth running an additional step of refinement using the program `dials.refine`. This will use a more sophisticated outlier rejection algorithm than before, and it will also refine a "scan-varying" model of the crystal, in which changes to the orientation and unit cell are allowed as a function of the position in the rotation scan. So, click on the "Refine" button and click "Run" + +From the log you should see that initially 13 parameters are refined during the "scan-static" macrocycle. Then this is followed by a "scan-varying" macrocycle using 37 parameters, where the crystal parameters have been made local to regions of the scan and the model is constructed by smoothing between these points. This more sophisticated model is able to fit the predictions to the data better, and you should see lower RMSDs as a result. For example: + +``` +RMSDs by experiment: ++-------+--------+----------+----------+------------+ +| Exp | Nref | RMSD_X | RMSD_Y | RMSD_Z | +| id | | (px) | (px) | (images) | +|-------+--------+----------+----------+------------| +| 0 | 254417 | 0.2914 | 0.28382 | 0.1768 | ++-------+--------+----------+----------+------------+ +``` + + +It useful to look at the way the crystal parameters change during the scan, to make sure there are no unrealistic-looking changes. Click on the "Report" tab and expand the "Analysis of scan-varying crystal model". You should see plots like these: + +![The scan-varying crystal unit cell parameters](./images/sv-cell.png "Scan-varying cell") + +![The scan-varying crystal orientation parameters](./images/sv-orientation.png "Scan-varying orientation") + +> [!NOTE] +> Check that the change in unit cell parameters and orientation angles looks small across the whole scan. + +## Integration + +We now have a model for how the data set evolves over the whole scan. We are ready to take this to integrate every spot, including the weak ones that were not found during spot-finding. Integration is the most resource-intensive part of processing and takes the longest. After starting this job, maybe now is a good time to go check on the progress of the xia2 job running on CCP4 Cloud. + +Click on the "integrate" button and then "Run" to start a job with default parameters. You can switch to the "Log" tab to follow what stage the program is at. + +After predicting reflections, `dials.integrate` starts forming a model to determine how big the measurement boxes should be. This is printed to the log at the lines + +``` +Calculating E.S.D Beam Divergence. +Calculating E.S.D Reflecting Range (mosaicity). + sigma b: 0.041727 degrees + sigma m: 0.062834 degrees +``` + +The `sigma m` value is the standard deviation of the reflecting range of reflections, which is sometimes (and inaccurately) called "mosacicity". It is good to check that this value is not too high. Here it is significantly less than 0.1°, so the sample seems very well behaved. + +After this step, `dials.integrate` will split the processing over as many processors as you have available, first modelling reflection profiles, and then performing the actual integration, using both summation integration and profile fitting methods. There are some summary tables at the end of the log file that are worth a glance, but really we don't have a good idea of the quality of the data set until we do scaling. + +Once integration is finished there is new information in the "Report" tab, in the "Analysis of reflection intensities" and "Analysis of reference profiles" sections under "DIALS analysis plots". + +## Determining the crystal symmetry + +Now we have integrated reflections we have much more useful data to perform symmetry checks. The program `dials.symmetry` will first check the Laue group (and we hope that this indicates our earlier choice of Bravais lattice is confirmed). Then it will look for potential screw axes by looking for apparent systematic absences. + +Click the "symmetry" button and "Run" for default parameters. + +The systematic absence information is written to a table in the log: + +``` ++--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ +| Screw axis | Score | No. present | No. absent | present | absent | present | absent | +|--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------| +| 21a | 0 | 10 | 10 | 1253.16 | 340.318 | 35.204 | 17.228 | +| 21b | 1 | 30 | 30 | 1575.34 | 1.901 | 45.998 | 0.318 | +| 21c | 1 | 38 | 39 | 1167.44 | 3.281 | 74.032 | 1.487 | ++--------------+---------+---------------+--------------+---------------+--------------+-------------------+------------------+ +``` + +Here we see clear screw axes along $b$ and $c$, which have high average intensity and $I/\sigma$ for reflections that are expected to be present, but low values for absences. For the potential axis along $a$, while there is higher intensity and $I/\sigma$ for expected present reflections compared to absences, the intensity in the putative absences is actually rather high. This indicates that the a screw axis along $a$ is not supported by the data. As a result, `dials.symmetry` ultimately writes the files `symmetrized.expt` and `symmetrized.refl`, using the space group $P\ 2\ 2_1\ 2_1$ + +## Scaling and exporting + +The scaling program, `dials.scale`, uses algorithms similar to Aimless to fit a physically-interpretable scaling model to the data set. This consists of three components: + +- an overall rotation angle-dependent scale factor (accounting for beam intensity changes, variation in illuminated volume and similar effects) +- a relative B-factor decay term (accounting roughly for the loss of high resolution reflections caused by radiation damage) +- an absorption surface (accounting for absorption along the differing path lengths of scattered rays through the crystal volume) + +The parameters of these components are adjusted in order to minimise the differences between reflections and their symmetry mates (which ought to have the same intensity). While performing this fit, an error model is also optimised so that the errors associated with the merged intensity for each reflection group is appropriate. We run the program with default options by clicking on the "scale" button and then "Run". + +At the end of the log file a standard table of merging statistics is printed, parts of which may be familiar to you from "Table 1" of crystallographic structure papers: +``` + -------------Summary of merging statistics-------------- + + Overall Low High +High resolution limit 1.26 3.42 1.26 +Low resolution limit 112.16 112.61 1.28 +Completeness 82.6 97.7 5.8 +Multiplicity 3.8 4.3 1.0 +I/sigma 15.0 44.2 0.8 +Rmerge(I) 0.066 0.050 0.625 +Rmerge(I+/-) 0.054 0.043 1.675 +Rmeas(I) 0.075 0.056 0.884 +Rmeas(I+/-) 0.068 0.053 2.369 +Rpim(I) 0.034 0.026 0.625 +Rpim(I+/-) 0.041 0.031 1.675 +CC half 0.997 0.995 0.370 +Anomalous completeness 69.8 91.7 0.1 +Anomalous multiplicity 2.1 2.4 1.0 +Anomalous correlation 0.131 0.074 0.000 +Anomalous slope 1.124 +dF/F 0.071 +dI/s(dI) 1.255 +Total observations 561027 39438 526 +Total unique 145885 9107 507 +``` + +> [!NOTE] +> Do the summary statistics look okay? Is there any sign of an anomalous signal? + +While the summary table is worth a quick glance, graphical representations of the merging statistics are usually more informative. You can see plots of values against resolution and against image number in the "Report" tab. + +> [!NOTE] +> Look at the plots in the "Report" tab. What is the main factor determining the usable resolution limit in this case? How does the anomalous signal look? + +Although `dials.scale` reports the _merging statistics_, the data set has not actually been merged (meaning only a single record for each unique Miller index is kept). To export a merged MTZ for structure solution we click on the "merge" button and export `merged.mtz`. However, in this case we prefer to export the scaled, unmerged data then perform merging inside CCP4 Cloud, so that we also get the merging statistics recorded there. To do that we click on the "export" button instead and click "Run". Once that is finished, click on the button "Download/save hklout file" to save the file to the directory where you started the processing. + +> [!WARNING] +> DUI will save the file with the name `scaled` by default. That is, you have to add the extension `.mtz` yourself. + +## Comparing results with xia2 + +Hopefully by now the xia2 job you started on CCP4 Cloud will have finished. Following that job, run a "Merging and Scaling with Aimless" job, where under "Basic Options" select "no scaling only merge". Leave everything else as default and run. + +Now import your `scaled.mtz` from DIALS processing, and also follow that with a "no scaling only merge" Aimless job. + +Once both jobs have finished you can open both results windows to compare results side-by-side. Navigate to the "Scaling and merging" section in each case to compare merging statistics from Aimless. + +Which job looks better, yours or xia2's? Or are they about the same?