Skip to main content

Handy utilities for handling nuclear shell model calculations from KSHELL

Project description

kshell-utilities

Handy utilities for processing nuclear shell model data from KSHELL. Se the KSHELL repository for installation and usage instructions for KSHELL.

Installation

Install from the PyPi repository

pip install kshell-utilities

Or, for the very latest version, clone this repository to your downloads directory. cd to the root directory of this repository and run

pip install .

Usage

Please see the How to use the output from KSHELL section of the Wiki in the KSHELL repository for an introduction on how to use kshell-utilities: https://github.com/GaffaSnobb/kshell/wiki/How-to-use-the-output-from-KSHELL

Runtime cache

load_kshell_output(..., load_and_save_to_file=...) controls the NumPy cache used for faster re-runs:

  • False: recalculate from source files and do not write cache files.
  • True: load a current valid cache when available; otherwise recalculate and save a new cache.
  • "overwrite": recalculate from source files and replace cache files.

Cache files are written under tmp/ by default. Set KSHELL_UTILITIES_CACHE_DIR to use another directory. Cache entries include schema/package metadata and source-file fingerprints; stale, unversioned, corrupt, or object-array caches are ignored and regenerated instead of being loaded.

Derived OBTD arrays are cached for repeated plotting workflows. obtd_heatmap, plot_obtd_contribution_vs_b_decay, and m1_ls_interference_angle save their computed x/y or matrix data, and warm cache hits can render without materializing OBTD arrays. modified_m1_gsf_from_obtd(..., make_heatmap=False) also checks its modified-transition cache before loading OBTD data.

For workflows that need the cached heatmap arrays but not the figure rendering, use obtd_heatmap(..., plot=False, return_data=True). For faster rendered heatmaps where per-cell labels are not needed, use annot=False.

Use list_cache_entries(), cache_size(), and clear_cache() to inspect and clear cache files. A loaded ReadKshellOutput instance also exposes cache_entries(), cache_size(), clear_cache(), and clear_derived_cache() scoped to that output.

OBTD loading

Directory loads use load_obtd="lazy" by default. Levels and transition data are loaded immediately, while one-body transition density files are loaded only if OBTD data is requested, for example through obtd_heatmap, m1_ls_interference_angle, plot_obtd_contribution_vs_b_decay, modified_m1_gsf_from_obtd, or direct obtd_dict access.

OBTD methods that first select transitions, such as obtd_heatmap, m1_ls_interference_angle, and plot_obtd_contribution_vs_b_decay, load only the OBTD master arrays needed for those selected transitions. Direct obtd_dict access still loads the full OBTD dictionary for compatibility.

Use load_obtd=True to load OBTDs during load_kshell_output(...), or load_obtd=False to prevent automatic OBTD loading for memory-constrained non-OBTD workflows.

Deprecated aliases

Older names such as loadtxt, B_distribution, level_density_heatmap, brink_axel_j, primary_matrix, mixing_ratio, obtd_B_plot, obtd_modifier, interference_angle, com, check_data, level_table, nld_savetxt, help, and parameters are still available as compatibility aliases, but they emit DeprecationWarning. Prefer the clearer names in new code.

Profiling

tools/profile_pipeline.py runs representative pipeline timings. Add --memory to report current and peak traced allocations with tracemalloc, including cases for lazy directory loads, GSF-only workflows with OBTDs present, narrow OBTD heatmaps, full obtd_dict materialization, and warm derived OBTD caches.

Example:

python tools/profile_pipeline.py --iterations 1 --memory --case gsf_only_directory_with_obtd --case obtd_heatmap_narrow_warm_cache

Plot display

Plotting helpers should avoid implicit interactive display where possible. Newer plotting APIs use show=False by default and return matplotlib figure/axes objects so callers can decide whether to display, save, or close figures.

Testing

The test suite is being built against the latest stable Python 3.14 series.

Install the package with test dependencies:

pip install -e ".[test]"

Run the test suite:

python -m pytest

Run with coverage:

python -m pytest --cov

See TESTING.md for the current baseline and known xfailed regressions.

Credits

KSHELL is created by Noritaka Shimizu https://arxiv.org/abs/1310.5431. Code in this repository is built upon tools created by Jørgen Eriksson Midtbø: https://github.com/jorgenem/kshell_public.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kshell_utilities-3.0.0.3.tar.gz (596.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kshell_utilities-3.0.0.3-py3-none-any.whl (129.8 kB view details)

Uploaded Python 3

File details

Details for the file kshell_utilities-3.0.0.3.tar.gz.

File metadata

  • Download URL: kshell_utilities-3.0.0.3.tar.gz
  • Upload date:
  • Size: 596.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for kshell_utilities-3.0.0.3.tar.gz
Algorithm Hash digest
SHA256 2f11122d6fdfcf6ae14c7a6881d001baf5aeb7341a734c51966fc972625c2cf1
MD5 762466b87da457d4afa9cbadae113b77
BLAKE2b-256 909baa6b1a681ce0b5404667136ecc7ed1cf004e6860c60bfccb42a3db7c640b

See more details on using hashes here.

File details

Details for the file kshell_utilities-3.0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for kshell_utilities-3.0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a4fe6efbd03a69e524ae038a34af7217c73f5c4478a2d591f61a60704aaac774
MD5 228a77cec5fb1644983fbfb3fd6a1871
BLAKE2b-256 f28e652e9c4e87e43c8a36fd13958447cd73a90ee18dcf34774daf6a480befe1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page