computer programs
Mapping data between sample and detector conjugated spaces in Bragg coherent diffraction imaging
aDepartment of Engineering Science, University of Oxford, Parks Road, Oxford OX1 3PJ, UK
*Correspondence e-mail: david.yang@eng.ox.ac.uk, felix.hofmann@eng.ox.ac.uk
Bragg coherent X-ray diffraction imaging (BCDI) is a non-destructive, lensless method for 3D-resolved, nanoscale strain imaging in micro-crystals. A challenge, particularly for new users of the technique, is accurate mapping of experimental data, collected in the detector e.g. attached to the sample. This is particularly the case since different coordinate conventions are used at every BCDI beamline. The reconstruction algorithms and mapping scripts composed for individual beamlines are not readily interchangeable. To overcome this, a BCDI experiment simulation with a plugin script that converts all beamline angles to a universal, right-handed coordinate frame is introduced, making it possible to condense any beamline geometry into three rotation matrices. The simulation translates a user-specified 3D complex object to different BCDI-related coordinate frames. It also allows the generation of synthetic coherent diffraction data that can be inserted into any BCDI reconstruction algorithm to reconstruct the original user-specified object. Scripts are provided to map from sample space to detector conjugated space, detector conjugated space to sample space and detector conjugated space to detector conjugated space for a different reflection. This provides the reader with the basis for a flexible simulation tool kit that is easily adapted to different geometries. It is anticipated that this will find use in the generation of tailor-made supports for phasing of challenging data and exploration of novel geometries or data collection modalities.
coordinate frame, to more convenient orthogonal coordinates,Keywords: Bragg coherent X-ray diffraction imaging; crystal reflection; detector conjugated space; simulation; space transformation.
1. Introduction
Bragg coherent X-ray diffraction imaging (BCDI) is an emerging technique in the field of lensless imaging, able to provide a 3D spatial resolution of less than 10 nm (Cherukara et al., 2018). Micro-crystal samples for BCDI are often produced by deposition of a thin film, followed by subsequent dewetting, such as Au (Robinson et al., 2001) or Pb (Pfeifer et al., 2006). Immobilization of micro-crystals on a substrate has also been employed (Pfeifer et al., 2006; Harder & Robinson, 2013; Hruszkewycz et al., 2017), and more recently a top-down focused ion beam fabrication method has been demonstrated to allow manufacture of strain microscopy samples from any crystalline material (Hofmann et al., 2019). BCDI has been used to study strain in samples subject to a wide variety of increasingly complex conditions. For example, it has been used to investigate dislocations in crystal growth and dissolution cycles (Clark et al., 2015), strain in battery cathode nanoparticles (Ulvestad et al., 2015) and acoustic phonons in zinc oxide crystals (Ulvestad et al., 2017).
To perform BCDI, a crystalline sample is illuminated by a spatially coherent synchrotron X-ray beam with incoming wavevector, S0lab. The sample must be sufficiently small to fit inside the coherent volume of S0lab, which limits the sample size to 1 µm × 1 µm × 1 µm for BCDI (Clark et al., 2012; Hofmann et al., 2017a). If the Bragg condition is met, the X-rays are scattered from the sample volume and interfere, resulting in a diffraction pattern or the Fourier transform, , of the complex electron density of the crystal in the far-field Fraunhofer diffraction regime (Xiong et al., 2014). Approximating atoms as points, a perfect, infinite crystal will produce a diffraction pattern resembling a lattice of Dirac delta functions, a perfect, finite crystal will produce a similar array of peaks but with a defined symmetric width, and an imperfect crystal will produce the previous pattern, but with asymmetric width (Xiong et al., 2014). These diffraction patterns are collected on a pixelated area detector positioned perpendicular to the outgoing wavevector, Slab, in the far-field, intersecting part of the for a specific hkl reflection at the Bragg condition (Xiong et al., 2014). By rotating the sample about a rocking axis, a series of diffraction patterns is collected as the point moves through the This represents slices in the direction (Fig. 1) through the chosen 3D Bragg peak (Robinson et al., 2001).
These diffraction pattern intensities do not contain any phase information, known as the phase loss problem (Miao et al., 1999). What we record is the square of the amplitude of the of the complex electron density of the crystal (Ulvestad et al., 2015; Robinson et al., 2001). By oversampling the diffraction pattern by at least twice the Nyquist frequency (Miao & Sayre, 2000) (at least 4 pixels per fringe), and applying geometric constraints, the phase can be recovered using iterative phase-retrieval algorithms (Fienup, 1982). Only after retrieving the phase can the 3D image be reconstructed by inverting the diffraction pattern through an inverse Fourier transform (Miao & Sayre, 2000; Robinson et al., 2001; Clark et al., 2012). The resulting amplitude, ρ(r), and phase, ψ(r), where r is the position vector, can be interpreted as the complex electron density of the crystalline volume associated with the particular crystal reflection. ψ(r) corresponds to the projection of the lattice displacement field, u(r), onto the scattering vector, Qlab, of the hkl crystal reflection under consideration, i.e. ψ(r) = Qlab·u(r) (Robinson & Harder, 2009). As such, BCDI provides information about both the shape of the scattering crystal domain as well as the lattice displacement field within it. If three or more linearly independent reflections are measured for a single crystal, multi-reflection BCDI (MBCDI) can be implemented to calculate the full lattice strain tensor, , for the crystal by differentiating the full u(r) (Newton et al., 2010; Hofmann et al., 2017b).
BCDI is an increasingly popular technique, but its disadvantage is the relatively high barrier to entry. It requires access to coherent diffraction beamlines at select synchrotrons, each with different geometry conventions. Here we introduce a BCDI simulation program with a beamline-specific plugin script that simplifies the geometry for a beamline by converting all motor rotation angles to a right-handed convention and generates three fundamental matrices that fully describe the measurement (see Section 2). The simulation provides both the tools and the underlying theory required to move with ease between BCDI-related spaces. A challenge in the community is mapping between these spaces, particularly between detector conjugated space (DCS), where the measurement and phase retrieval are performed, and an orthogonal sample space (SS) attached to the object of study. We introduce three scripts that allow the reader to map from sample space to detector conjugated space, detector conjugated space to sample space, and detector conjugated space to detector conjugated space for a different crystal reflection. These scripts also incorporate the beamline-specific plugin, making them readily adaptable to any geometry.
2. Simulation geometry
This section covers the geometry that is used in the computer scripts and in Section 3. A schematic of the simulated geometry is shown in Fig. 1. The laboratory coordinates are oriented such that the incident X-ray beam is in the direction of the positive z-axis, the y-axis is vertically up and the x-axis is outboard to the left. Here the following coordinates are used to describe the various spaces:
The detector has two angles of rotation: δ and γ, which rotate about the y-axis and x-axis, respectively, when angles are set to zero as shown by Hofmann et al. (2017a), and all rotations adhere to a right-handed convention. The diffraction pattern is generated as if the detector were looking down onto the sample (as opposed to a projection onto a film). Explicitly, this means that if there is a diffraction pattern on the detector screen, decreasing γ will move the detector up in the y or direction, and the peak will move down on the screen. Similarly, decreasing δ will move the detector to the right as increases and the peak will move left on the screen. The sample stage has three angles of rotation: χ, ϕ and θ, which rotate about the z-axis, x-axis and y-axis respectively, when angles are set to zero, also shown by Hofmann et al. (2017a). If the sample is rocked about the y-axis by an increment of Δθ from negative to positive, this corresponds to collecting slices through the Bragg peak along the direction. In the case of the instrumentation at 34-ID-C, angular limits imposed by stage travel ranges need to be considered, as certain geometries are inaccessible (Appendix A).
Overall, the geometry of a BCDI experiment requires three rotation matrices to fully describe the affine transformation between coordinate systems: Rx,y,z, and , which correspond to the rotation matrices of the sample, detector and rocking axis, respectively. Once defined, the BCDI simulation and mapping can be carried out for any beamline.
3. Computer codes
A program, BCDI_Simulation, found at https://doi.org/10.5281/zenodo.3347113, and three scripts, SS_to_DCS, DCS_to_DCS and DCS_to_SS, available at https://doi.org/10.5281/zenodo.3347109, are published with this work. For the most updated version of the codes, the reader is asked to visit https://github.com/Hofmann-Group. The recommended machine requirements for these codes are: MATLAB version 2018b or later, 8 GB RAM, an Intel or AMD x86-64 processor with four cores, and at least 2 GB of free hard disk space. The use of an advanced research computing facility will greatly reduce computation time. For instance, the authors used the University of Oxford Advanced Research Computing (ARC) facility for this work (Richards, 2015). The maximum recommended complex double array size for these settings is 256 × 256 × 256, which can be saved as a separate .mat file. In this paper, a script refers to a single MATLAB file, a program refers to a script that calls upon other scripts, and a code can refer to both scripts and programs.
3.1. Bragg coherent diffraction imaging simulation
The program BCDI_Simulation allows the simulation of a BCDI experiment starting with a user-defined shape (a 3D complex double array). Similar to a laboratory experiment, the reader is required to input the X-ray wavelength, pixel size, detector size, hkl reflection (or detector and sample position angles), rocking increment, rocking axis and detector distance. Alternatively, the UB matrix can be input if micro-beam Laue diffraction was used to pre-determine the lattice orientation of the sample (Hofmann et al., 2017a). Using the inputs, the program translates and plots the shape in five different spaces: sample space (SS), lab space (LS), reciprocal lab space (RLS), detector (DRS) and detector conjugated space (DCS); these spaces are described in detail in Section 4 and are shown in Fig. 2. The simulation also produces a TIFF file containing 2D diffraction pattern slices through the simulated Bragg peak, which can be fed into a reconstruction algorithm (e.g. Clark et al., 2012) to reconstruct the user-defined shape in LS and DCS. Accordingly, the simulated shapes can be compared with the reconstructed shapes. At the time of writing, the code's geometry is based on beamline 34-ID-C at the Advanced Photon Source (APS) in Argonne National Laboratory, USA, because it is a heavily used instrument in the history of BCDI. This beamline uses both left- and right-handed geometry while the simulation assumes only right-handed rotations. Embedded in the simulation is a script, plugin_APS_34IDC, which converts these 34-ID-C conventions to the simulation's right-handed system for simplicity and generates the fundamental BCDI rotation matrices described in Section 2. The simulation can be easily adapted to any beamline.
3.2. Space transformation scripts
There are three MATLAB scripts that allow the transformation between various spaces involved in the BCDI reconstruction process. The inputs and outputs are all 3D complex MATLAB arrays. Two of the scripts have the option to create binary masks (based on a thresholded input amplitude) in DCS for a specific hkl of an object. The first, SS_to_DCS, will allow a reader to create a mask from a previously constructed SS shape, and the second, DCS_to_DCS, allows creation of a mask from a previously constructed DCS shape for a different hkl reflection. These phasing masks can be turned into `supports' by convolution with a Gaussian and thresholding to ensure that the support is about 10% larger than the mask. A support is often used as a starting guess in phase retrieval algorithms, where the phase of the diffraction pattern is obtained by mapping between DCS and DRS, applying real and reciprocal constraints, and updating the support every few iterations. These supports are used to set the outside amplitude to zero, since the object is assumed to be contained (Newton et al., 2010). Having scripts to produce supports based on prior knowledge (e.g. a sample shape or measured reflection) is expected to aid in the convergence of solutions and produce more accurate reconstructions (Marchesini et al., 2003). The third script, DCS_to_SS, transforms a DCS shape to SS. Transformations to and from the SS is particularly useful for MBCDI, which involves reconstructions from three or more different reflections to recover the full lattice strain tensor (Hofmann et al., 2017b, 2018). By setting the sample motor angles to their zero positions, one can recover the LS shape instead of the SS shape, as explained in Section 4.1. Each of these scripts uses the beamline-dependent plugin as used in the simulation. We are working on creating plugins for other beamlines — contact the authors if you would like this code to be extended to your instrument.
4. Space transformations
This section pertains to the BCDI spaces in BCDI_Simulation, shown in Fig. 2. In the following, an outline is presented. Beginning from SS (i.e. the free-standing object in its own reference frame), the goniometer rotates the specimen to LS, applying Rx,y,z on the SS basis vectors. The is applied to LS, or equivalently, , converting LS to RLS and taking the reciprocal of the LS basis vectors. The phase of the real space object is obtained as ψ(r) = Qlab · u(r), which is stored in a variable rather than being recovered through an iterative algorithm. Next, the RLS is transformed to the DRS, where the measured Bragg peak lives, by applying detector and rocking matrices and , in that order, to the RLS basis vectors. The inverse Fourier transform is applied, , to obtain the DCS shape, turning the DRS basis vectors into detector conjugated real space vectors. Finally, the LS is recovered by applying the coordinate transform matrices, and , in that order, to the DCS basis vectors.
To simplify, the simulation follows the following space transformation path: SS → LS → RLS → DRS → DCS → LS. For a laboratory BCDI experiment and reconstruction, the path is: DRS → DCS → LS. The SS and RLS steps are added in the simulation for clarity.
In each space the object, or its associated diffraction pattern, reside in a 3D pixel array. The basis vectors, calculated in the following subsections, capture how one moves from one pixel to the next along each axis in each space. If old basis vectors are given by a1, a2 and a3 and new basis vectors are given by b1, b2 and b3, the transformation matrix, T, can be written as
Once the basis vectors are known, the mapping of an array from one space to another can be achieved by linear interpolation in MATLAB: new_array = interp3(a1grid, a2grid, a3grid, old_array, b1grid, b2grid, b3grid), where a1grid, a2grid and a3grid are the original meshgrid coordinates with pixel number along each axis. b1grid, b2grid and b3grid correspond to the new meshgrid coordinates transformed by T in equation (2). Here all basis vectors are defined in a global coordinate frame that is aligned with the laboratory coordinate frame.
4.1. Sample space to lab space
The SS frame is the reference frame attached to the sample. This is how the sample appears on the mount, before rotating to the required geometry for any given Bragg condition. SS unit vectors are denoted by , and . To convert these unit vectors to basis vectors, we multiply by a sample pixel size, psam x, psam y or psam z1
When all sample angles χ, ϕ and θ are zero, SS and LS are aligned. The sample is rotated by Rx,y,z such that it is in the LS coordinate frame. The sample rotation matrix is
where Ry is a right-handed rotation θ about the y-axis, Rz is a right-handed rotation χ about the z-axis, and Rx is a right-handed rotation ϕ about the x-axis. To map a position in the SS coordinate frame, rSS, to the LS coordinate frame, i.e. find rLS, we simply apply equation (4) to rSS, i.e. rLS = [Rx,y,z][rSS]. Thus to obtain SS basis vectors in the global coordinate frame, we apply
The LS basis vectors, x, y and z, are aligned with the axes of the lab frame (and the global reference frame), and their size, i.e. the pixel size, should be the same as in SS because both LS and SS coordinate frames are in orthogonal real space. We use T from equation (2) to then carry out the mapping.
4.2. Lab space to reciprocal lab space
The LS is the reference space when a specific Bragg condition is being satisfied, in other words, as the sample sits when mounted on the goniometer at a beamline. To convert from LS to RLS, the is applied to the array. For ease of simulation, prior to incorporating the position of the detector relative to the sample, we consider the complex wavefield plotted on an orthonormal
coordinate grid. To convert from LS to RLS basis vectors, we apply the following operations,where VLS is the volume created by x, y, z and N1, N2, N3, which corresponds to the number of steps or pixels in the data array (Estandarte et al., 2018). Based on equation (7), normalizing qx, qy and qz would give the LS unit vectors , and , respectively.
4.3. Reciprocal lab space to detector reciprocal space
The detector will be placed at a position corresponding to the angle required to satisfy the Bragg condition for a specific hkl. In DRS, diffraction patterns without phase information are collected, which will occupy non-orthonormal From here, we use the prime (′) symbol to represent any set of non-orthogonal basis vectors. To translate from RLS to DRS basis vectors, a coordinate transform is applied to qx, qy and qz based on the detector position and rocking axis. For 34-ID-C, the detector is rotated by
where Ry is a right-handed rotation δ about the y-axis and Rx is a right-handed rotation γ about the x-axis. The rotation about the x-axis is performed before the rotation about the y-axis since the former is at the condition where δ = 0 (Pfeifer, 2005). To collect diffraction patterns, we calculate and that describe in-plane pixel positions on the detector,
where λ is the X-ray wavelength, D is the detector distance, d is the detector pixel size, and N1 and N2 correspond to the number of detector pixels in the x and y directions, respectively.
is determined by the rocking axis and requires the direction of the incident beam. For 34-ID-C, this is given by S0lab,
The diffracted beam, Slab, will be incident on the detector, thus Slab is equal to S0lab rotated by the detector matrix in equation (8),
Finally, the scattering vector, Qlab, is the center of the diffraction peak in reciprocal space,
For beamline 34-ID-C, rocking scans are performed about the y-axis with an increment of Δθ in lab coordinates. Note that we are interested in the momentum transfer in the frame of a particular crystal, so we must rotate Qlab by −Δθ (Pfeifer, 2005), so the rocking matrix, , is
where Ry is a right-handed rotation by −Δθ about the y-axis. Accordingly, is
Once , and are known, the data from the RLS can be mapped into the DRS using the transformation approach of equation (2).
4.4. Detector to detector conjugated space
To convert from DRS to DCS, the is applied. In BCDI_Simulation, the phase calculated when is applied to the LS shape in Section 4.1 is stored and used when taking the . However, in a laboratory-based experiment, the phase must be recovered using a phase-retrieval algorithm (Clark et al., 2012) as it is lost during the detection process. Similar to DRS, DCS is a non-orthogonal space and will later need to be transformed back to LS to recover the object. The basis vectors for DCS are (Berenguer et al., 2013)
5. Application of mapping scripts
The following examples demonstrate the functionality of the scripts SS_to_DCS, DCS_to_SS and DCS_to_DCS through both the simulation of a cubic crystal cylinder and a laboratory-based strain microscopy sample composed of tungsten.
For the simulation, the original shape in SS is a 64 × 64 × 64 pixel cylinder centered in a 256 × 256 × 256 pixel array that has been oriented for the simulated measurement of a (111) reflection. This was performed at a detector distance of 1.77 m, a rocking increment of 0.0027° and λ = 0.124 nm.
The laboratory-based measurement is from an experiment at 34-ID-C for the reflection from a tungsten micro-crystal and is included to demonstrate the application of the scripts. It was performed at a detector distance of 1.75 m, a rocking increment of 0.005° and λ = 0.124 nm.
5.1. Transfer from detector conjugated space to sample space
Fig. 3 shows the transformation of simulated and laboratory-based DCS shapes to SS. It should be noted that the solution given by iterative phase retrieval possesses trivial non-uniqueness, where either the object or the twin of the object are valid solutions. Practically, it is normally possible to distinguish the true object from its twin by the orientation of the shape. In the case of the twin, one must take the conjugate of the of the object. For the laboratory-based example in Fig. 3(b), the SS shape matches with the scanning electron microscope (SEM) images of the sample sitting on the mount shown in Appendix B1, Fig. 6, indicating that it is indeed the correct shape and orientation. Furthermore, SS shapes calculated from two different reflections, and , shown in Appendix B2, Fig. 7, show a very high degree of overlap (99.84%), as they should when the phase retrieval has successfully converged and the re-mapping into the SS frame has been carried out correctly.
Note that the overlap, even for the simulation, is not 100%. For the simulation, the primary source of discrepancy is interpolation, as the object is hard-edged and is thus limited by sampling resolution. For the laboratory-based experiment, sources of error include noise, motor angle accuracy and direction-dependent resolution (Cherukara et al., 2018).
5.2. Transfer from sample space to detector conjugated space
Fig. 4 shows the transformation of both SS shapes to DCS. The outputs of the script match the inputs of DCS_to_SS in Fig. 3. For the laboratory-based example in Fig. 4(b), the calculated DCS shape matches the reconstructed DCS shape in Appendix B3, Fig. 8(b). The ability to map a shape from SS to DCS is important as it allows a support for reconstruction to be made, e.g. based on multiple-view SEM micrographs.
5.3. Transfer from detector conjugated space to detector conjugated space
Fig. 5 shows the transformation of both DCS shapes to the DCS for another reflection. In Fig. 5(a), the calculated output of the script matches the corresponding reconstructed DCS shape for the reflection in Appendix B3, Fig. 8(a). In Fig. 5(b), the calculated output of the script matches the corresponding reconstructed DCS shape for the reflection shown in Appendix B3, Fig. 8(b).
6. Conclusion
The program BCDI_Simulation provides a flexible framework for mapping data between different coordinate frames in BCDI experiments. Importantly, it is easily adapted to the specific geometry used at different instruments. We generalize the inputs to three fundamental matrices: Rx,y,z, and , corresponding to the rotation of the sample, detector and rocking axis, respectively.
As a lensless technique, BCDI's limiting factor is the maximum spatial frequency at which the phase can be reliably recovered and the durability of the algorithm to reconstruct 3D objects (Xiong et al., 2014). Scripts SS_to_DCS and DCS_to_DCS provide a means to create more accurate DCS shapes, which could be turned into initial supports for phase retrieval. This will be particularly important for samples with complex geometry and/or strong phase variations where ab initio methods begin to stagnate. The final tool, DCS_to_SS, allows the reader to map the recovered sample shape into an orthogonal sample space. This is essential for MBCDI where multiple reflections from the same object are measured and must be projected into a common coordinate frame for analysis. We expect that these tools will be useful for the community in exploring data collection in different geometries, as well as new reconstruction approaches.
APPENDIX A
34-ID-C beamline to right-handed conversion
The motor angles from beamline 34-ID-C are converted to right-handed angles in Table 1, and the accessible motor ranges are noted. In Table 1, anglebl refers to the angle recorded in SPEC at 34-ID-C.
|
APPENDIX B
Laboratory example additional images
An MBCDI experiment was performed at 34-ID-C. The sample was a tungsten (a0 = 3.17 Å) microcrystal prepared by a focused ion beam liftout procedure (Hofmann et al., 2019) with λ = 0.124 nm. The recovered amplitudes for two reflections, and , are shown in this section. The right-handed detector angles for the reflections are listed in Table 2.
|
B1. Electron micrograph comparison
The SS shape calculated from the DCS shape using DCS_to_SS, and a comparison with an SEM image of the sample is shown in Fig. 6.
B2. Laboratory SS shape comparison
The SS shapes from two laboratory-based reflections, and , are calculated using DCS_to_SS. The two SS objects are overlapped and viewed in the x–y, x–z and y–z planes in Fig. 7, showing a 99.84% overlap, indicating a high accuracy of the experiment and the script, mentioned in Section 5.1.
B3. DCS shape reconstruction
For the cylinder, the reconstructed DCS shape for (111) was transformed to the DCS shape for using DCS_to_DCS and compared with the reconstructed DCS shape for in Fig. 8(a). For the laboratory sample, the reconstructed DCS shape for was transformed to the DCS shape for using DCS_to_DCS and compared with the reconstructed DCS shape for in Fig. 8(b). They show a 97.7% and 99.9% overlap, respectively, indicating a high accuracy of the experiment and the script, mentioned in Section 5.2.
Footnotes
1As a guide, where λ is the X-ray wavelength, D is the detector distance, d is the detector pixel size and N1 and N2 correspond to the number of steps or pixels in the data array in LS and RLS (Estandarte et al., 2018).
Acknowledgements
The authors would like to thank Ross Harder and Wonsuk Cha for elucidating the 34-ID-C beamline geometry, and Xiaojing Huang for clarifying the detector conjugated space to lab space mapping. Diffraction experiments were performed at the Advanced Photon Source, a US Department of Energy (DOE) Office of Science User Facility operated for the DOE Office of Science by Argonne National Laboratory under Contract No. DE-AC02-06CH11357. The authors would like to acknowledge the use of the University of Oxford Advanced Research Computing (ARC) facility in carrying out this work (https://dx.doi.org/10.5281/zenodo.22558).
Funding information
This work was funded by the European Research Council under the European Union's Horizon 2020 research and innovation programme (grant agreement No 714697 to FH).
References
Berenguer, F., Godard, P., Allain, M., Belloir, J. M., Talneau, A., Ravy, S. & Chamard, V. (2013). Phys. Rev. B, 88, 144101. CrossRef Google Scholar
Cherukara, M. J., Cha, W. & Harder, R. J. (2018). Appl. Phys. Lett. 113, 203101. CrossRef Google Scholar
Clark, J., Huang, X., Harder, R. & Robinson, I. (2012). Nat. Commun. 3, 993. CrossRef PubMed Google Scholar
Clark, J. N., Ihli, J., Schenk, A. S., Kim, Y. Y., Kulak, A. N., Campbell, J. M., Nisbet, G., Meldrum, F. C. & Robinson, I. K. (2015). Nat. Mater. 14, 780–784. CrossRef CAS PubMed Google Scholar
Estandarte, A. K. C., Lynch, C. M., Monteforte, M., Rawle, J., Nicklin, C. & Robinson, I. (2018). New J. Phys. 20, 113026. CrossRef Google Scholar
Fienup, J. R. (1982). Appl. Opt. 21, 2758–2769. CrossRef CAS PubMed Web of Science Google Scholar
Harder, R. & Robinson, I. K. (2013). JOM, 65, 1202–1207. CrossRef Google Scholar
Hofmann, F., Harder, R. J., Liu, W., Liu, Y., Robinson, I. K. & Zayachuk, Y. (2018). Acta Mater. 154, 113–123. CrossRef CAS Google Scholar
Hofmann, F., Phillips, N. W., Das, S., Karamched, P., Hughes, G. M., Douglas, J., Cha, W. & Liu, W. (2019). University of Oxford Technical Report, https://arxiv.org/ftp/arxiv/papers/1903/1903.04079.pdf. Google Scholar
Hofmann, F., Phillips, N. W., Harder, R. J., Liu, W., Clark, J. N., Robinson, I. K. & Abbey, B. (2017a). J. Synchrotron Rad. 24, 1048–1055. CrossRef CAS IUCr Journals Google Scholar
Hofmann, F., Tarleton, E., Harder, R. J., Phillips, N. W., Ma, P. W., Clark, J. N., Robinson, I. K., Abbey, B., Liu, W. & Beck, C. E. (2017b). Sci. Rep. 7, 45993. CrossRef PubMed Google Scholar
Hruszkewycz, S. O., Cha, W., Andrich, P., Anderson, C. P., Ulvestad, A., Harder, R., Fuoss, P. H., Awschalom, D. D. & Heremans, F. J. (2017). APL Mater. 5, 026105. Google Scholar
Marchesini, S., He, H., Chapman, N., Hau-Riege, P., Noy, A., Howells, R., Weierstall, U. & Spence, H. (2003). Phys. Rev. B, 68, 1401011. CrossRef Google Scholar
Miao, J., Charalambous, P., Kirz, J. & Sayre, D. (1999). Nature, 400, 342–344. Web of Science CrossRef CAS Google Scholar
Miao, J. & Sayre, D. (2000). Acta Cryst. A56, 596–605. Web of Science CrossRef CAS IUCr Journals Google Scholar
Newton, M. C., Leake, S. J., Harder, R. & Robinson, I. K. (2010). Nat. Mater. 9, 120–124. Web of Science CrossRef CAS PubMed Google Scholar
Pfeifer, M. A. (2005). PhD thesis, University of Illinois Urbana-Champaign, USA. Google Scholar
Pfeifer, M. A., Williams, G. J., Vartanyants, I. A., Harder, R. & Robinson, I. K. (2006). Nature, 442, 63–66. Web of Science CrossRef PubMed CAS Google Scholar
Richards, A. (2015). Zenodo, https://zenodo.org/record/22558. Google Scholar
Robinson, I. & Harder, R. (2009). Nat. Mater. 8, 291–298. Web of Science CrossRef PubMed CAS Google Scholar
Robinson, I. K., Vartanyants, I. A., Williams, G. J., Pfeifer, M. A. & Pitney, J. A. (2001). Phys. Rev. Lett. 87, 195505. Web of Science CrossRef PubMed Google Scholar
Ulvestad, A., Cherukara, M. J., Harder, R., Cha, W., Robinson, I. K., Soog, S., Nelson, S., Zhu, D., Stephenson, G. B., Heinonen, O. & Jokisaari, A. (2017). Sci. Rep. 7, 9823. CrossRef PubMed Google Scholar
Ulvestad, A., Singer, A., Clark, J. N., Cho, H. M., Kim, J. W., Harder, R., Maser, J., Meng, Y. S. & Shpyrko, O. G. (2015). Science, 348, 1344–1347. Web of Science CrossRef CAS PubMed Google Scholar
Xiong, G., Moutanabbir, O., Reiche, M., Harder, R. & Robinson, I. (2014). Adv. Mater. 26, 7747–7763. Web of Science CrossRef CAS PubMed Google Scholar
© International Union of Crystallography. Prior permission is not required to reproduce short quotations, tables and figures from this article, provided the original authors and source are cited. For more information, click here.