Skip to main content

A package for distributing the HEASOFT / XSPEC model library.

Reason this release was yanked:

Malformed build

Project description

xspectrampoline

Installing the XSPEC model library can be as easy as

pip install xspectrampoline

and that's what this package provides.

Usage

This package is indented only for providing the XSPEC model binaries, and is not a wrapper around the model library. The minimal wrapper code that exists is code you would have to write anyway, but beyond that there may are too many ways the models could be put together for Python usage. That's an exercise left to the reader.

Whilst you think about that, here's how you can use xspectrampoline

# Importing calls FNINIT in the libXS
import xspectrampoline

# Get a handle to the minimal wrapper
lib_xspec = xspectrampoline.get_libraries()

# Get the function by the symbol name
powerlaw = lib_xspec.get_model("C_powerlaw")

# Setup an energy, parameter, and output arrays
energy = np.linspace(0.01, 10.0, 100, dtype=np.float64)
parameters = np.array([3.0], dtype=np.float64)
output = np.zeros(len(energy) - 1, dtype=np.float64)
error = np.zeros(len(energy) - 1, dtype=np.float64)

# Invoke the model
powerlaw(energy, parameters, output, error)

# Then do things with `output`
...

Overwriting which libraries are used

By default xspectrampoline bundles everything that is needed to use the XSPEC model library. But what if you already have HEASOFT / XSPEC installed and want to use your local version? xspectrampoline checks if the HEADAS environment variable is set and determines the library locations accordingly. If you want to use your local version, just make sure HEADAS points to the right location and your linker paths are configured via headinit.

xspectrampoline sets the HEADAS environment variable if it's not already set. You can also access the path it uses to resolve the libraries using

import xspectrampoline

headas_path = xspectrampoline.get_HEADAS()
print(headas_path)

How does it work

This package is possible all thanks to Julia's BinaryBuilder.jl who have done all the hard work for making compiled libraries relatively easy to share around. The XSPEC model library was cross compiled into LibXSPEC_jll.jl for Linux and MacOS, and xspectrampoline is basically those artifacts bundled for distribution with Python.

For developers

To bundle things locally, ensure you have setuptools, wheel, and build installed:

python3 -m pip install --upgrade setuptool wheel build

You can then use the Makefile targets to automate the build commands. The Makefile fetches the BinaryBuilder.jl artifacts, unpacks them, and runs the necessary Python packaging commands to create the wheels. Those will then be available under ./dist in your local directory.

make

You can test the packaging by installing from the wheel:

python -m pip install ./dist/xspectrampoline-0.1.0-py3-none-linux_x86_64.whl

selecting the correct platform tag as needed.

There are also handy targets for doing this:

make install    # install the wheel on your system

make clean      # delete all files (include dist) that were generating during
                # the packaging process

Testing locally

Because you need to test the locally installed version of xspectrampoline, you need to make sure you run pytest outside of the root directory. After you've installed the wheel, the easiest way to do this is

cd test && pytest -vvv .

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

xspectrampoline-0.1.2-py3-none-macosx_14_0_x86_64.whl (11.2 MB view details)

Uploaded Python 3macOS 14.0+ x86-64

xspectrampoline-0.1.2-py3-none-macosx_14_0_arm64.whl (9.8 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

xspectrampoline-0.1.2-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file xspectrampoline-0.1.2-py3-none-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for xspectrampoline-0.1.2-py3-none-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 1cf328791be21d3a610a4ddcb640183196146f99aba5635cffaa6b9e19fbb485
MD5 aa59c1925cabc3210626f718d6edf4fc
BLAKE2b-256 2f56ba76e7b9193e1b87d789cb7e65f1af498f0e933523734d4cb6eba8cfea36

See more details on using hashes here.

File details

Details for the file xspectrampoline-0.1.2-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for xspectrampoline-0.1.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 11a2bf84243008bc86444c4926a0f8b1f4eb5f3915ec23a344d478ba1a5c1dbf
MD5 ad52693faea8bc27df85c0dc7991cbf7
BLAKE2b-256 a28011db20fdd915fa6c5a790e6f731ae700c7a4d2624e3ba21fcb26d2197fa6

See more details on using hashes here.

File details

Details for the file xspectrampoline-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for xspectrampoline-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 182478e24b8c1bafe613268443526658fe44d77eeb84a40b7048616898a3fdbb
MD5 fb23db197d07ce576359e6cdb082d43c
BLAKE2b-256 2851df723eafaca36d1ff61f1b95a4d48e379cb2812919a1dc845d578ea28aeb

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