Skip to content

Releases: Baharis/hikari

v0.3.2

22 Jan 18:59
Compare
Choose a tag to compare

v0.3.2 (2025-01-22)

🐛

  • 🐛 Fix heuristic Operation.origin code that gave wrong results in cubic system (8ad71d1)

  • 🐛 Fix some trigonal systems being mistaken for cubic (51e50d1)

  • 🐛 Fix test which wrongly assumed that diagonal 3-fold screw axes should extinct -hhh, h-hh, and hh-h reflections (38bff51)

  • 🐛 Fix test which wrongly assumed that diagonal 3-fold screw axes should extinct -hhh, h-hh, and hh-h reflections (6b98f10)

  • 🐛 Make Group.auto_generated_code a single word (67c01c7)

  • 🐛 Properly attach Group.name and .number when reading catalog from json (1952454)

  • 🐛 Split SymmOp into Operation and BoundedOperation whose translation is fixed to [0,1) (5352e54)

  • 🐛 The direction of screw axes should align with their glide (ea7c587)

  • ⏪ Revert "🧪 Add failing test for auto-generated space group names" (0f0cb4c)

This reverts commit 50c96c2.

Other

  • 💡 Remove TODO comment associated with completed code update (80189b8)

  • 🚧 Add hikari.utility.Singleton to be potentially used later (a051311)

  • 🚧 Add rudimentary hm_symbol property that better aligns with crystallographic tables (8b850b0)

  • 📝 Improve documentation, type hints in hikari.dataframes.cif (2018a6c)

  • 📝 Improve documentation, type hints in hikari.dataframes.cif (941c6a1)

  • 📝 Improve type hints for hikari.symmetry.Operations (ce974d0)

  • 📝 Streamline operations.py type hints to rely on typing only (3d003ab)

  • 🧪 Add failing test for auto-generated space group names (50c96c2)

  • ✅ Make (ub)bounded a property, add/improve all Operation tests (ad33a95)

  • Merge remote-tracking branch 'origin/development' into development (321bc56)

  • 🔀 Merge pull request #43 from Baharis/development (c2f66e9)

Split SymmOp into Operation and BoundedOperation


Detailed Changes: v0.3.1...v0.3.2

v0.3.1

10 Dec 14:46
Compare
Choose a tag to compare

v0.3.1 (2024-12-10)

🐛

  • 🐛 Fix GroupCatalog.values, .items (81d700c)

  • 🐛 Fix all space groups being "standard" due to wrong type in json (ebe9b7d)

📦

  • 📦 Add MANIFEST.in to potentially help adding resources to wheel (2875cf7)

Other

  • ⚰️ Remove dead resources function _load_bytes (de35f29)

  • 👷 In continuous integration, run rapid tests only (49bc6a9)

  • 💚 Fix continuous integration to properly publish hikari under name hikari-toolkit (3992db7)

  • ✅ Add even more tests for GroupCatalog (b6b17d6)

  • ✅ Add further tests for GroupCatalog (1723078)

  • ✅ Skip the potency map tests on python 3.13.0 only (b8f178a)

  • 🔀 Merge pull request #42 from Baharis/development (fe1ca24)

Fix GroupCatalog, fix and expand GroupCatalog testing


Detailed Changes: v0.3.0...v0.3.1

v0.3.0

02 Dec 16:45
Compare
Choose a tag to compare

v0.3.0 (2024-12-02)

✏️

  • ✏️ Fix typo in pyproject.toml path (4dde1ef)

  • ✨ Increase overall quality of handling, storing, selecting Groups, Increase user experience quality and code safety, Bug fixes. (ec6aac6)

Other

  • .* suffix can only be used with == or != operators (181004d)

  • 🍻 Add forgotten type fix (30f65d7)

  • 💚 Add hikari API tokens (847188d)

  • 💚 Can't install scipy on newest macs, maybe issue with 3.13; skip for now (3a613bc)

  • 💚 Make macos install gfortran (9d5da57)

  • 💚 Make macos install gfortran 2 (85d3d9e)

  • 💚 Make macos install gfortran 3 (b349f92)

  • 💚 Make macos install gfortran 4 (32175c0)

  • 📝 Align documentation style with that of picometer (f25ab46)

  • 🎉 Move to poetry package control, bump required python version to 3.9 (38397d1)

  • 🚚 Rename test directory to tests, remove some mentions of picometer (279926f)

  • groupcatalogue to make group dicts, hikari.typing, a->e (491b1cb)

  • Add a custom AmbiguousGroupAccessorWarning for clarity (8c8ab2e)

  • Add JSON files to git (414d047)

  • Add P21/n to the list of known structures (but not to pickles) (fa4d928)

  • Add P21/n to the list of known structures2 (but not to pickles) (b624353)

  • Add python 3.10 to test builds (6d87228)

  • Add some type hints (67d00de)

  • Add tests for hkl completeness scripts (1026827)

  • Add tests for HklFrame, including writing hkl and res (cd2d59f)

  • Add windows and mac os to test environments (e528da4)

  • Americanize all instances of Catalogue to Catalog (3438f82)

  • Apparently np.warnings doesn't exist in some versions; just try (f897412)

  • Apparently np.warnings doesn't exist in some versions; just try (62b62e6)

  • Apparently one refl is not always read correctly in Python3.10 (9159136)

  • Automatically generate the GroupCatalogue based on provided GroupCatalogueKey data (c6096a1)

  • Automatically get correct space group based on index, HM, HM-short*, or Hall name (b9ee7f8)

  • Bugfix: correctly type hint Match, remove fixed TODOs (fff5255)

  • Compose a Hall_symbol_PG.dat for point groups only (6009f6d)

  • Define all keys using clearer OOP syntax with registry (98e79ee)

  • Define new HklKeyDict to substitute old ambiguous HklKeys (c06d0e3)

  • Do not use >= when specified starred version of dependency (c03b44a)

  • Don't suggest buggy pandas 1.5.0 in requirements.txt (9908054)

  • Except ax.dist deprecation; any alternatives? (1ea5270)

  • Fix mpl deprecation issues, uncertainties not supported... (7e37464)

  • Fix code test environment to ubuntu-20.04 (7764931)

  • Fix error in shelx_4 hkl format docstring (6c7ae78)

  • Fix implementation for point groups (4fed404)

  • Fix issues with new HklKeyDict and HklKeyRegistrar (fea9177)

  • Fix platform-specific np.str to np.str_ (7400d26)

  • Fix python version 3.10 being interpreted as float (e9a55d1)

  • Fix temporary completeness statistics test (e44fe89)

  • Fix tests of similarity index comparisons to ignore heared lines (9f0907d)

  • Fix typo in test_space_groups_picked_match_hall (22594c0)

  • Fix wrong definition of d in HallSymbols (0d89742)

  • In catalog, change pickling protocol to 4 to support python 3.7 and 3.8 loader (8016a9c)

  • In catalog, replace f'{var=}' syntax from python 3.9 with f'var={var}' (a20a175)

  • In resources, replace importlib.resources.files from python 3.9 with open_binary & open_text (2c46c6c)

  • In type hints, replace collections.abc.Buffer from python 3.12 with simple bytes (0b27187)

  • Increased HklKeyRadius precision to float64 (f41abe8)

  • Make all docstrings and regexes with backslash raw (af20f77)

  • Make all docstrings and regexes with backslash raw 2 (278c5ee)

  • Merge branch 'development' (aa8476b)

  • Merge pull request #38 from Baharis/futureproof (9a96455)

Futureproof

  • Merge pull request #39 from Baharis/futureproof (87bfc47)

Futureproof

  • Merge pull request #40 from Baharis/hall_symbols (cd58abe)

Increase overall quality of handling, storing, selecting Groups; Increase user experience quality and code safety; Bug fixes.

  • Merge pull request #41 from Baharis/development (36888c6)

🔀 Bump minimum python to 3.9 and manage versioning with poetry

  • Merge remote-tracking branch 'origin/futureproof' into futureproof (08778c9)

  • Minor style and docstring improvements (f7258a8)

  • Modify implementation to account for point groups without '-p' at the beginning (12900b7)

  • Most of the Hall...

Read more

v0.2.3 - Better filling and animations

12 Aug 14:27
Compare
Choose a tag to compare
Pre-release

In the last days, server dtools.pl documenting all major tools of the author has been finally deployed. As a consequence, some oversights and needs have been identified. This release contains three of them, one which needed immediate attention and two convenience ones.

First and foremost, the original algorithm used to fill the HklFrame with reflections for the sake of dac_trimming and evaluating stats has been found to use copious amount of memory, which caused more unique jobs on dtools.pl to be quickly terminated. This was especially apparent in cells which were oblique or featured large differences between a, b and c parameters. The new script is not only much less conservative in terms of memory used in the final step, but also total time. Selected data for filling various unit cells (expressed in Å and °) up to the resolution of 0.5Å has been summarised below:

  • Unit cell 20/20/20/90/90/90: 185MB / 900ms → 3MB / 190ms (267760 reciprocal space nodes)
  • Unit cell 4/10/40/90/90/90: 185MB / 900ms → 1MB / 60ms (53380 reciprocal space nodes)
  • Unit cell 20/20/20/30/30/30: 185MB / 900ms → 3MB / 120ms (59332 reciprocal space nodes)

Other than the issue of fill, two small additional features were added. In scripts, a tool to create simple similarity index animations has been added. It is rough around the edges and requires further customisation options, but can be used and modified to visualise an impact of ADP parameters on SI. Likewise, a partial support for reading m80 files was added, although it reads only selected information.

What's Changed

Full Changelog: v0.2.2...v0.2.3

v0.2.2 – Cif writing support

20 Jun 16:24
2cbd25c
Compare
Choose a tag to compare
Pre-release

The utilities responsible for reading and writing crystallographic information files were reworked, somewhat simplified using regex, and tested against multiple files. In particular, a functional CifWriter has been added. While both CifReader and CifWriter implemented in versions v0.2 might struggle with unusual syntax cases, they should be able to read vast majority of correctly prepared files.

Other than that, some small improvements to other parts of code have been introduced. Script calculate_similarity_indices has been modified to yield S=100 whenever the displacement ellipsoid is poorly defined. Script potency_map now writes the value of potency at focus, whenever such focus can be defined via orientation attribute. Simple tests for these two scripts have been added.

What's Changed

Full Changelog: v0.2.1...v0.2.2

v0.2.1 – Missing resources hotfix

10 Jun 14:44
e460d25
Compare
Choose a tag to compare
Pre-release

As mentioned in version 0.2.0 description, while uploading the files to PyPI some of the new resource files were found to be missing. In version 0.2.1 these were correctly included in a form of a hot-fix.

What's Changed

Full Changelog: v0.2.0...v0.2.1

v0.2.0 - Cif reading support

10 Jun 14:39
00697c5
Compare
Choose a tag to compare
Pre-release

In the latest patch, a decent support for cif files was added. In particular, Crystallographic Information Files can be now safely read and accessed using a dictionary-like syntax. Individual cif files are available as CifFrame objects, whereas individual data blocks within them are available as CifBlock objects. Both of them are a simple subclasses of OrderedDict with some simple methods. Both CifFrame and CifBlock can be read from cif file, and data from CifBlock can be accessed in desired type using get_as_type method.

In order to handle uncertainties in cif files, a package with this name has been added to the requirements and used to handle uncertainties in both CifFrame and new UBaseFrame. The latter (along BaseFrame) can now be filled from CifFrame and used to perform operations with standard deviations. Using this capability, a new calculate_similarity_indices script has been added.

Finally, from the project stand-point, a support for automated tests and CI integration was added. The tests themselves were extended (although they still cover an unfortunately small part of code).

Update: Due to a twine mistake at upload, some resource files were not included to the package at PyPI during upload. As a result, many capabilities of hikari v0.2.0 are lost there. As a result, a hotfixed version 0.2.1 should be used instead.

What's Changed

Full Changelog: v0.1.5...v0.2.0

v0.1.5 - Additional utilities and script generalisations

30 May 13:47
Compare
Choose a tag to compare

In this release a few tools for hikari.scripts managements were introduced and scripts themselves were improved. Firstly, the documentation has been reconstructed using sphinx. Some doc-strings were modified to described existing functionality better, although some methods unfortunately still remain vastly undocumented.

More functions were introduced to the utility submodule. Cartesian (x, y, z) to spherical (radius, polar, azimuth) and back vector transformations has been implemented as cart2sph and sph2cart. Some imports statements were moved or modified to prevent previously common import errors. All scripts have been also modified to utilise previously implemented hikari.utility.make_abspath, which simplifies working with paths by resolving links using syntax such as .. (parent directory) or ~ (home directory).

Despite the package being vastly object-oriented, many scripts are just particularly long and complex functions. In order to simplify performed operations, new types of objects were introduced. Interval is a simple 2-element container with interface to some numpy functions and intuitive __contains__ method such that x in Interval(y, z) is True if and only if y <= x <=z where {x, y, z} are numbers. A series of Artist objects were implemented to handle drawing spherical heatmap with both gnuplot and matplotlib outside the scripts themselves. Last but not least, the "angular" scripts, potency_map and r1_map were unified to rely on a common AngularPropertyExplorer, which was designed to readily allow creation of new maps of this kind. Both Artists and AngularPropertyExplorers are accessed via their factory methods in order to simplify further development.

As a result of introduced changes, selected scripts are more robust and feature increased functionality. In particular, the potency_map can be supplied orientation to be marked on the map, while the distribution of mapped property is evaluated using new weighted_quantiles and produced on a vertical histogram as well as in the output file.

What's Changed

Full Changelog: v0.1.4...v0.1.5

v0.1.4 - Limited res handling and pypi integration

20 Apr 17:24
eb98381
Compare
Choose a tag to compare

A few small tools relevant to author's current work were introduced. In particular, a LstFrame was created, while BaseFrame and ResFrame were extended in order to provide simple tools for R1 mapping and structure factor prediction, the latter implemented in hikari.scripts.fcf. While it appears that implemented formulas are inaccurate, they act as a first step to expand on. In particular, in future better res/cif parsing capabilities could allow hikari to refine models against XRD data.

Some methods for Groups and SymmOps were enhanced, but many capabilities are still missing. For example, the sense of rotation +/- is now being calculated, but not always reliably, as - for example - the concept of preferred direction in cubic system is complicated. For the same reason some cubic space group names might be inaccurate.

Last but not least, hikari is now available at PyPI, where it is called hikari-toolkit. As a result, you can use it just as install and import it just like other packages.

What's Changed

Full Changelog: v0.1.3...v0.1.4

v0.1.3 - Further optimisation and testing

22 Jan 15:01
22c812f
Compare
Choose a tag to compare

This update focuses on further optimisation and quality-of-life changes, especially for development. HklFrame and its parent object BaseFrame underwent some minor restructuring. In particular, overall structure of BaseFrame was preserved, with additional matrices A and G added. HklFrame had its dac method split into two: dac_trim is now responsible for removing dac-unavailable reflections and returns a HklFrame, whereas dacs_count only counts unique reflections for a list of vectors. As a result, the second method is visibly faster, since now basically all its operations are performed based on large matrix multiplication in numpy. Since the matrices might be sometimes very large, an internal approximate memory limit of hikari.MEMORY_SIZE was set to 500MiB. These changes are especially prominent for violin plots, whose script was until now embarrassingly slow.

  • highest quality potency map, Pnma, 8000 ų cell using MoKα to 0.83 Å: 124 seconds → 44 seconds;
  • default violin plot for all Laue Classes using MoKα to 0.83 Å: 262 seconds → 65 seconds

All library resources were organised in dedicated resources folder and can be imported from therein. The structure was planned so that it should work on all types of architecture. Large files are passed around as txt files, dictionaries, etc. depending on context.

Among other minor changes:

  • Selected hkl and potency scripts have been reorganised and simplified.
  • Rotation matrices were coded in hikari.utility.math_tools based on Rogriguez-Euler formula.
  • Scripts now accept space group names and numbers instead of instances of hikari.symmetry.group. Now one does not need to import them for each individual execution of script.
  • hikari.symmetry's Group and SymmOp were given appropriate str and repr methods.
  • Fibonacci algorithm for point distribution was optimised
  • Docstrings were abbreviated or made more precise.

What's Changed - Auto-generated release notes

Full Changelog: v0.1.2...v0.1.3