Orix Versions Save

Analysing crystal orientations and symmetry in Python

v0.12.1.post0

2 weeks ago

orix 0.12.1.post0 is a patch release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

This release is necessary to fix the formatting of two tutorial notebooks in the documentation. This also fixes the PDF documentation build.

See below, the changelog or the GitHub changelog for all updates from the previous release.

v0.12.1

3 weeks ago

orix 0.12.1 is a patch release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

See below, the changelog or the GitHub changelog for all updates from the previous release.

Fixed

  • ax2qu and Quaternion.from_axes_angles() would raise if the input arrays were broadcastable but the final dimension was 1. This has been fixed.
  • Phase.from_cif() now correctly adjusts atom positions when forcing

v0.12.0

1 month ago

orix 0.12.0 is a minor release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

See below, the changelog or the GitHub changelog for all updates from the previous release.

Added

  • Vector3d.from_path_ends() class method to get vectors between two vectors.
  • Convenience function plot.format_labels() to get nicely formatted vector labels to use when plotting vectors.
  • Two offsets in the stereographic coordinates (X, Y) can be given to StereographicPlot.text() to offset text coordinates.
  • Explicit support for Python 3.11.
  • Creating quaternions from neo-eulerian vectors via new class methods from_rodrigues() and from_homochoric(), replacing the now deprecated from_neo_euler(). from_rodrigues() accepts an angle parameter to allow passing Rodrigues-Frank vectors.
  • Creating neo-eulerian vectors from quaternions via new methods to_axes_angles(), to_rodrigues() and to_homochoric(). Rodrigues-Frank vectors can be returned from to_rodrigues() by passing frank=True.
  • inv() method for Quaternion, Rotation, Orientation, and Misorientation. For the three first, its behavior is identical to the inversion operator ~. For misorientations, it inverts the direction of the transformation. Convenient for chaining operations.
  • The random() methods of Orientation and Misorientation now accept symmetry. A random() method is also added to Vector3d and Miller, the latter accepting a phase.
  • Function orix.sampling.get_sample_reduced_fundamental() for sampling rotations that rotate the Z-vector (0, 0, 1) onto the fundamental sector of the Laue group of a given Symmetry.

Changed

  • The convention parameter in from_euler() and to_euler() will be removed in the next minor release, 0.13, instead of release 1.0 as previously stated.
  • Allow passing a tuple of integers to reshape() methods of 3D objects.
  • random() methods no longer accept a list as a valid shape: pass a tuple instead.
  • Increase minimal version of Matplotlib to >= 3.5.

Removed

  • Support for Python 3.7.

Deprecated

  • Creating quaternions from neo-eulerian vectors via from_neo_euler() is deprecated and will be removed in v0.13. Use the existing from_axes_angles() and the new from_rodrigues() and from_homochoric() instead.

Fixed

  • Transparency of polar stereographic grid lines can now be controlled by Matplotlib's grid.alpha, just like the azimuth grid lines.
  • Previously, Phase did not adjust atom positions when forcing Phase.structure.lattice.base to use the crystal axes alignment e1 || a, e3 || c*. This is now fixed.

v0.11.1

1 year ago

orix 0.11.1 is a patch release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

See below, the changelog or the GitHub changelog for all updates from the previous release.

Fixed

  • Initialization of a crystal map with a phase list with fewer phases than in the phase ID array given returns a map with a new phase list with correct phase IDs.

v0.11.0

1 year ago

orix 0.11.0 is a minor release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

This release removes the use of a third axis (z) in CrystalMap. It also offers the possibility of creating rotations by aligning sets of vectors, e.g. an orientation from sample and crystal vectors or a misorientation from vectors in two different crystals.

See below, the changelog or the GitHub changelog for all updates from the previous release.

Added

  • Creation of one or more Quaternion (or instances of inheriting classes) from one or more SciPy Rotation.
  • Creation of one Quaternion or Rotation by aligning sets of vectors in two reference frames, one Orientation by aligning sets of sample vectors and crystal vectors, and one Misorientation by aligning two sets of crystal vectors in two different crystals.
  • row and col properties to CrystalMap giving the row and column coordinate of each map point given by CrystalMap.shape.
  • Rotation class methods from_neo_euler(), from_axes_angles(), from_euler(), from_matrix(), random() and identity() and methods to_euler() and to_matrix() are now available from the Quaternion class as well.
  • StereographicPlot.restrict_to_sector() allows two new parameters to control the amount of padding (in degrees in stereographic projection) and whether to show the sector edges. Keyword arguments can also be passed on to Matplotlib's PathPatch().
  • Option to pass degrees to the Quaternion methods from_axes_angles(), from_euler() and to_euler() by passing degrees=True.
  • Option to get degrees from all angle_with() and angle_with_outer() methods by passing degrees=True.
  • Option to pass degrees to the (Mis)Orientation method get_distance_matrix() by passing degrees=True.
  • Option to pass degrees to the Vector3d methods from_polar() and to_polar() by passing degrees=True.
  • Option to get spherical coordinates from InverseStereographicProjection.xy2spherical() in degrees or pass them as degrees to StereographicProjection methods spherical2xy() and spherical2xy_split() by passing degrees=True.

Changed

  • Bumped minimal version of diffpy.structure >= 3.0.2.
  • Only ASTAR .ang files return crystal maps with "nm" as scan unit.

Removed

  • Parameter z when creating a CrystalMap and the z and dz attributes of the class were deprecated in 0.10.1 and are now removed.
  • Passing shape or step_sizes with three values to create_coordinate_arrays() was depreacted in 0.10. and will now raise an error.
  • Parameter depth (and axes) in CrystalMapPlot.plot_map() was depreacted in 0.10.1 and will now raise an error if passed.
  • The z and dz datasets are not present in new orix HDF5 files. They are not read if present in older files.

Fixed

  • Reading of EDAX TSL .ang files with ten columns should now work.

v0.10.2

1 year ago

orix 0.10.2 is a patch release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

See below, the changelog or the GitHub changelog for all updates from the previous release.

Fixed

  • Miller.symmetrise(unique=True) returns the correct number of symmetrically equivalent but unique vectors, by rounding to 10 instead of 12 decimals prior to finding the unique vectors with NumPy.

Changed

  • Unique rotations and vectors are now found by rounding to 10 instead of 12 decimals.

v0.10.1

1 year ago

orix 0.10.1 is a patch release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

This release includes some deprecations, but most importantly it fixes a bug when indexing or slicing into an already indexed/sliced CrystalMap.

See below, the changelog or the GitHub changelog for all updates from the previous release.

Deprecated

  • Parameter z when creating a CrystalMap and the z and dz attributes of the class are deprecated and will be removed in 0.11.0. Support for 3D crystal maps is minimal and brittle, and it was therefore decided to remove it altogether.
  • Passing shape or step_sizes with three values to create_coordinate_arrays() is depreacted and will raise an error in 0.11.0. See the previous point for the reason.
  • Parameter depth in CrystalMapPlot.plot_map() is depreacted and will be removed in 0.11.0. See the top point for the reason.

Fixed

  • StereographicPlot.scatter() now accepts both c/color and s/sizes to set the color and sizes of scatter points, in line with matplotlib.axes.Axes.scatter().
  • Indexing/slicing into an already indexed/sliced CrystalMap now correctly returns the index/slice according to CrystalMap.shape and not the original shape of the un-sliced map.

v0.10.0

1 year ago

NOTE: This release has been yanked and should not be used. A relevant patch fix (and little else) has been added in 0.10.1.

orix 0.10.0 is a minor release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry

See below, the changelog or the GitHub changelog for all updates from the previous release.

Added

  • Support for type hints has been introduced and a section on this topic has been added to the contributing guide.
  • Vector3d.pole_density_function() has been implemented which allows for calculation of the Pole Density Function (PDF) and quantification of poles in the stereographic projection.
  • Seven methods for sampling unit vectors from regular grids on S2 via orix.sampling.sample_S2().
  • Calculation of the Inverse Pole Density Function (IPDF), ie. pole density in the crystal point group fundamental sector, through InversePoleFigurePlot.pole_density_function().
  • The orix.measure module has been introduced. The measure module is related to quantification of orientation and vector data.
  • Plotting the IPF color key on a created InversePoleFigurePlot is now possible with plot_ipf_color_key().
  • Examples gallery to documentation.

Changed

  • Moved part of documentation showing plotting of Wulff net and symmetry markers from the tutorials to examples.
  • Renamed user guide notebooks to tutorials in documentation.
  • Reference frame labels of stereographic projection of Symmetry.plot() from (a, b) to (e1, e2), signifying the standard Cartesian reference frame attached to a crystal.
  • Tighten distribution of random orientation clusters in tutorial showing clustering across fundamental region boundaries, to avoid clustering sometimes giving two clusters instead of three.

Removed

  • Support for Python 3.6 has been removed. The minimum supported version in orix is now Python 3.7.
  • Object3d.check(), Quaternion.check_quaternion() and Vector3d.check_vector(), as these methods were not used internally.
  • Deprecated method distance() of Misorientation and Orientation classes, use get_distance_matrix() instead.

Fixed

  • Plotting of unit cells works with Matplotlib v3.6, at the expense of a warning raised with earlier versions.

v0.9.0.post0

1 year ago

orix 0.9.0.post0 is a post-release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

This release is necessary so that the 0.9.0 release is successfully uploaded to Zenodo.

See https://github.com/pyxem/orix/compare/v0.8.2...v0.9.0.post0 for a complete list of changes.

v0.9.0

1 year ago

orix 0.9.0 is a minor release of orix, an open-source Python library for handling orientations, rotations and crystal symmetry.

This version contains many small and some larger changes, including enhancements to existing classes and bug fixes. See the changelog or https://github.com/pyxem/orix/compare/v0.8.2...v0.9.0 for a complete list of changes.

Notable changes:

  • orix.scalar.Scalar has been removed, so the data held by Scalar, like class properties Rotation.angle, Vector3d.azimuth and so on, are returned directly as a numpy.ndarray.
  • Creating rotations from Euler angles interprets the angles in the Bunge convention by default, i.e. rotations are transformations from the sample to the crystal.
  • Reducing memory usage when computing the misorientation distance matrix, rotation outer products and quaternion-vector outer products have been added via lazy computation with dask.
  • The alignment of crystal axes in the package is documented in the user guide.