Repository navigation
Orienta 0.4.7
This release fixes an error in "BG Static" that imprinted the bands of one pattern on every pattern of the scan, a detector-geometry error that appears with kikuchipy 0.12 and newer, the atom positions Hough indexing read for silicon and MgCu₂, the symmetry used for monoclinic phases, the .ang and .ctf exports, and several settings that had no effect. It adds control over the Hough reflector list, pattern-centre refinement with several phases, and adding a phase by its file path. The installers move to kikuchipy 0.13.1, orix 0.15.0 and PyEBSDIndex 0.3.10.1.
The open points of the Phase Library page that v0.4.6 planned for this release (groups, keyboard use and some panels) are not part of it; they are planned for a later release.
What was fixed
| Area | What went wrong | Fix |
|---|---|---|
| BG Static in the EBSD viewer, the first step of the recommended pipeline, and batch processing with static background removal (Hough, Dictionary) | The pattern at scan position (0, 0) was used as the background and subtracted from every pattern, so its bands were imprinted on all patterns. "BG Dynamic" was not affected. | The average of all patterns of the scan is subtracted. For large, lazily loaded files it is computed block by block from the file, with a progress bar, and cached for the dataset. A static background stored in the file is not used, because for Oxford files the loaded patterns are already processed by the acquisition software, and the stored background belongs to the unprocessed ones. |
| Detector distance with kikuchipy 0.12 or newer (Oxford files) | The newer Oxford reader reports the camera binning, and Orienta applied it a second time to a pixel size that was already per binned pixel. The detector distance came out too large by the binning factor (8× for 156×128 px modes). This affected spherical indexing (the built-in GPU indexer and EMSphInx) and the pattern-simulation tools; Hough and dictionary indexing were not affected. With the kikuchipy 0.11.3 that the v0.4.6 installers ship, only Oxford files whose header contains Camera Binning Mode could be affected. |
Pixel size and binning are now combined in one place, and kikuchipy 0.11.3 and 0.13.1 give the same detector geometry. When an exported result with the doubled geometry is imported, its geometry is corrected for the pattern-simulation tools where this is unambiguous (otherwise the log reports it). Its stored orientations are not changed; re-index affected results. |
| Hough indexing with silicon or MgCu₂ (any CIF of the 24 two-origin space groups written in origin choice 2) | The CIF reader that Hough uses expanded the atoms with the operators of origin choice 1, whatever the file was written in: silicon came out with 16 atoms in the cell instead of 8, MgCu₂ as Mg32Cu8 instead of Mg8Cu16. For silicon the reflector list then held the diamond-forbidden {222} and lacked {220} and {224}. | Hough reads these files with their origin choice, as the simulation path does since v0.4.6; a file whose origin choice cannot be decided is refused with a message (a non-standard setting named only by its symbol is read with a warning). Of the 36 CIF files we checked, only silicon and MgCu₂ were affected. |
| Monoclinic phases with unique axis b (for example Al13Fe4, β-AlFeSi) | The symmetry used to compare orientations had the two-fold axis along z, while it lies along y in Orienta's crystal frame (x ∥ a, z ∥ c*). Two orientations related by the real two-fold axis were treated as 180° apart: pixels of one grain could be split into different grains, boundaries could be drawn inside a grain, KAM could leave out neighbours, and IPF colours differed within a grain. Stored orientations from spherical and Hough indexing are not affected (for Hough this follows from the code and was not measured); the orientation grid of dictionary indexing did not cover every orientation of these phases, so dictionary results can hold wrong orientations. | Grain reconstruction, KAM, grain boundaries, IPF colours, pole figures and the dictionary orientation grid use the real two-fold axis, and the default Hough reflector list is expanded with it (Hough results may differ; the size of the change was not measured). Phases with unique axis c and all other crystal systems are unchanged. That the spherical indexer stores orientations in this frame was checked with patterns rendered from the Al13Fe4 master; the corrected calculations were checked on synthetic orientation maps. Nothing has yet been compared on a measured Al13Fe4 map. Re-index dictionary results of these phases. |
| Settings on the PC refinement page | Minimum d-spacing, structure-factor threshold, maximum reflectors and number of bands were shown but never reached the indexer. | The first three are replaced by the per-phase reflector-family table, and the number of bands is applied. |
| Kikuchi-line overlay in PC refinement after picking a pattern from the list | The pattern image was delivered at the size of a rendered figure (914×750 pixels for a 156×128 pattern), while the lines are in pattern pixels, so the lines were drawn shrunk into the top-left corner. | The pattern image is delivered at its own pixel size. |
| "Global CI" in PC refinement | After a global PC refinement the badge showed the CI of a single calibration pattern, and it could disagree with the value reported after "Index All". | Global CI is the mean CI over all calibration patterns, each with its winning phase, indexed at the current pattern centre; a refinement re-indexes all of them at the refined pattern centre. After a manual change of the pattern centre it shows N/A until the patterns are indexed again. |
| Kikuchi-line overlay in PC refinement for some phases (observed for MgZn2 and π-Al8FeMg3Si6) | The phase's structure was modified on every call, so the overlay reflectors changed from the second pattern on. | The structure is copied before use, and the reflector list is computed once per phase. |
| EDAX UP1/UP2 files on a hexagonal grid | They were read as if the grid were square, giving a single row or a distorted map with at most a warning. | They are refused with an error when the version-3 header or the .osc file shows a hexagonal grid. A version-1 file without its .osc cannot be checked; keep the .osc next to it, or export hexagonal scans as H5, which Orienta resamples. Detection was tested with synthetic headers only. |
| Connection between page and backend | A connection that had silently died was not detected, and after reconnecting the page did not re-read its state. | The page detects a dead connection, reconnects with increasing wait times, and re-reads its state afterwards. |
.ang export |
Results whose map was kept on the pixel grid (seen for spherical indexing and for Hough indexing with the EDS chemistry prior) were written with a step of 1.0 and x/y in pixels, so lengths and areas were wrong by the step size and its square. Lattice constants were written as 1.000 for spherical results and in batch exports, and for monoclinic phases the symmetry field held 112, which is not a TSL code. | Step and coordinates in micrometres; a cropped map starts at 0 and its origin is in the header. Lattice constants from the phase's structure, CIF or master file; the export stops with a message if none is known. TSL code 20 for monoclinic phases with unique axis b. The header states the reference frame, the scan geometry (for Oxford sources) and the phase-assignment method. Re-export affected files. |
Batch .ctf export |
For scans from Oxford systems the Euler angles were written in the EDAX TSL frame although .ctf is an Oxford format, so φ1 differed by 90° from the source system's own angles and from the light .h5. Lattice constants were written as 1.000. |
Written in the frame of the source file, the same angles as in the light .h5, with the lattice constants of the phase's structure, CIF or master file. Scans from EDAX systems keep the EDAX frame, which is their own. Re-export affected files. |
Repeated or batch .ang export |
Exporting over an existing file failed or kept the old file; batch files wrote Bruker pattern-centre values under the TSL names. | Overwriting works; the pattern centre is written in the TSL convention (or left at zero, with a note, when the detector size is not known). |
| Hough indexing from a source installation with pyopencl | PyEBSDIndex rebuilt its OpenCL kernels on every indexing call, and their memory was not freed (about 250 MB per call); after about 55 calls in one session Hough indexing failed with an OpenCL out-of-memory error until the app was restarted (measured on one GPU and driver under Windows; the number depends on the machine). The installers use the CPU band detector and were not affected. | Orienta reuses one OpenCL context per GPU for these calls. In a loop of 300 calls, each building an indexer and indexing 8 patterns, memory stayed constant; before the fix the same loop failed at call 56. Results are unchanged. |
start_app.py with port 8000 already in use |
It started anyway and attached to whatever answered on that port, which could be an old backend it could not stop. | It refuses to start and explains how to find the process that holds the port. |
| Group headings in the phase picker | "Pure elements" and "Other" were shown in German in every language. | Translated into all four interface languages. |
What is new
| Feature | What it does |
|---|---|
| Hough reflector families | On the Indexing and PC refinement pages, each phase has a table of its reflector families with d-spacing, relative structure factor and multiplicity. It shows which families PyEBSDIndex actually uses. You can untick families, add a family, keep the strongest N, or reset to the default. Without a selection the default reflector list is used, so the table changes nothing unless you use it. A result's methods paragraph names the families when a selection was used. |
| PC refinement with several phases | Calibration patterns are indexed against all selected phases (up to 8), each with its best-fitting phase. The pattern list shows the phase of each pattern. A single phase is refined as before, apart from the Global CI and number-of-bands fixes above. |
| Add a phase by its file path | The phase picker on the Indexing page accepts the full path of a .cif (Hough), .sht (Spherical) or master pattern .h5 (Dictionary). The file is checked first, and a file that is already in the library selects the library entry. |
Light/rich .h5 format 1.4 |
Carries, for Oxford .h5oina sources, the scan geometry from the file header (Scanning Rotation Angle, Specimen Orientation Euler, Tilt Angle; not applied to the Euler angles), space group, lattice parameters and crystal reference frame per phase, and whether the EDS chemistry prior was used. Files in format 1.3 still load. |
| Python packages on update | Updating an installed Orienta also brings its Python packages to the versions the release ships, before the analysis engine starts. |
| Show log files | A button under Settings → About opens the log folder in the desktop app, or shows its path in a browser. INSTALL.md lists the folders for each platform. |
| Tooltips | Every Hough parameter on both pages explains itself on hover, on the label and on the field. |
Changed
- PyEBSDIndex is cited in the README, CITATION.cff, NOTICE and the About page, and in the methods paragraph of every result computed with this version that used it: Hough indexing, the Hough anchor of spherical indexing, and a pattern centre from PC refinement. Reference: Rowenhorst, D. J., Callahan, P. G. & Ånes, H. W., J. Appl. Cryst. 57, 3–19 (2024), doi:10.1107/S1600576723010221.
- Library versions: A source install now requires kikuchipy 0.13.1, orix 0.15.0 and PyEBSDIndex 0.3.10.1 (each below its next minor version), and the installers ship exactly these instead of 0.11.3 / 0.14.1 / 0.3.9.1. An installation updated from v0.4.6 brings its Python packages to these versions the first time it starts (a few megabytes to download). If that cannot finish, for example without an internet connection, Orienta says so once, starts with the packages it has, and tries again at a later start; set
ORIENTA_SKIP_PACKAGE_SYNC=1to keep the current packages. Updating a source checkout installs the new versions into the environment Orienta runs in. Both sets were compared on real data: spherical indexing agreed to within 3e-5° and dictionary indexing was identical. Hough indexing in the installed app uses PyEBSDIndex's CPU band detection, and its results change: on a nickel map the orientations moved by 0.07° (median) and 99.8 % of the pixels by less than 1°; on a two-phase map of an aluminium alloy (Al and α-Al(Fe,Mn)Si, 10,800 pixels) 98 % of the pixels kept their phase, and of the α-Al(Fe,Mn)Si pixels that kept it, 92 % moved by less than 1° and most of the others by about 72°, a pseudo-symmetric variant of that phase. On the nickel map the new CPU band detection gives the same orientations as the OpenCL band detection of source installations with pyopencl (median difference below 0.0001°; 0.085° with PyEBSDIndex 0.3.9.1). On the two-phase map the two band detectors disagree for about a third of the α-Al(Fe,Mn)Si pixels, with the old and the new version alike. - Detector azimuthal angle: kikuchipy 0.12 reversed the meaning of the detector's azimuthal angle (the tilt of the detector about its vertical axis). Orienta keeps the earlier meaning, which is also EMsoft's, on every path that uses the angle: where it hands a detector to kikuchipy 0.12.1 or newer, it converts the sign, so CPU and GPU dictionary indexing and generation agree on both kikuchipy versions. Whether this matches the vendor's definition of the header value (the EDAX field
Camera Azimuthal Angle) is not documented and has not been measured; every file we tested reads 0. Hough and spherical indexing do not use the angle, and with kikuchipy 0.11.3 neither does the Kikuchi-band overlay in PC refinement. When a dataset has a non-zero azimuthal angle, the run log says so. - EDAX hexagonal grids: the README listed EDAX hexagonal-grid scans as unsupported, although v0.4.6 already reads them: an EDAX H5 file whose header says
Grid Type = HexGridis resampled to a square grid, each square pixel taking the pattern of the nearest measured point (patterns are not interpolated). The README now describes this and its limits.