Releases: Baharis/hikari
v0.3.2
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
intoOperation
andBoundedOperation
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.Operation
s (ce974d0
) -
📝 Streamline
operations.py
type hints to rely ontyping
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
)
Split SymmOp
into Operation
and BoundedOperation
Detailed Changes: v0.3.1...v0.3.2
v0.3.1
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 namehikari-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
)
Fix GroupCatalog
, fix and expand GroupCatalog
testing
Detailed Changes: v0.3.0...v0.3.1
v0.3.0
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 totests
, remove some mentions ofpicometer
(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
toCatalog
(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 providedGroupCatalogueKey
data (c6096a1
) -
Automatically get correct space group based on index, HM, HM-short*, or Hall name (
b9ee7f8
) -
Bugfix: correctly type hint
Match
, remove fixedTODO
s (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 ambiguousHklKeys
(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
andHklKeyRegistrar
(fea9177
) -
Fix platform-specific
np.str
tonp.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
HallSymbol
s (0d89742
) -
In
catalog
, change pickling protocol to 4 to support python 3.7 and 3.8 loader (8016a9c
) -
In
catalog
, replacef'{var=}'
syntax from python 3.9 withf'var={var}'
(a20a175
) -
In
resources
, replaceimportlib.resources.files
from python 3.9 withopen_binary
&open_text
(2c46c6c
) -
In type hints, replace
collections.abc.Buffer
from python 3.12 with simplebytes
(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
)
Futureproof
Futureproof
Increase overall quality of handling, storing, selecting Groups; Increase user experience quality and code safety; Bug fixes.
🔀 Bump minimum python to 3.9 and manage versioning with poetry
v0.2.3 - Better filling and animations
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_trim
ming 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
- Animation by @Baharis in #34
- M80 by @Baharis in #35
- Similarity index animations fix by @Baharis in #36
- Reduction by @Baharis in #37
Full Changelog: v0.2.2...v0.2.3
v0.2.2 – Cif writing support
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
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
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
- Create .readthedocs.yaml by @Baharis in #19
- Cif frame by @Baharis in #20
- Cif frame by @Baharis in #21
- UBaseFrame by @Baharis in #22
- Added readthedocs files to try and fix empty documentation problem by @Baharis in #23
- Similarity by @Baharis in #24
- Similarity by @Baharis in #25
- Tests by @Baharis in #26
- Tests by @Baharis in #27
- Cif dictionary by @Baharis in #28
- Package optimisation by @Baharis in #29
Full Changelog: v0.1.5...v0.2.0
v0.1.5 - Additional utilities and script generalisations
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 Artist
s and AngularPropertyExplorer
s 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
- All scripts use path created by
make_abspath
instead of raw strings by @Baharis in #15 - Potency map by @Baharis in #16
- Interval by @Baharis in #17
- Angular explorer by @Baharis in #18
Full Changelog: v0.1.4...v0.1.5
v0.1.4 - Limited res handling and pypi integration
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 Group
s and SymmOp
s 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
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
'sGroup
andSymmOp
were given appropriatestr
andrepr
methods.- Fibonacci algorithm for point distribution was optimised
- Docstrings were abbreviated or made more precise.
What's Changed - Auto-generated release notes
- Resources management optimisation by @Baharis in #3
- Representations by @Baharis in #4
- Hkl artist by @Baharis in #5
- Stats by @Baharis in #6
- Hklframe by @Baharis in #7
- Dac count by @Baharis in #8
- Simple unittest-s for utility functions and symmetry.operations by @Baharis in #9
- Fibonacci sphere algorithm by @Baharis in #10
- dacs_count debugging by @Baharis in #11
- Frame tests by @Baharis in #12
Full Changelog: v0.1.2...v0.1.3