Release 1.6.0 - #519
Open
jacklovell wants to merge 113 commits into
Open
Conversation
derived from Raysect's Function3D
Add e_field attribute to Plasma object for electric field vector
Add Integrator2D base class
ubuntu-latest switched to 24.04, but 22.04 is the last version which supports Python 3.7 that we continue to test against for now.
Run CI on ubuntu 22.04 runner
Reason for having Function6D in Cherab was removed
Feature/function6d
This should add the possibility to fully investigate what emission models an observation was performed with.
Update cherab-iter description
…aysect version to 0.9.1.*
…umpy versions, and upgrade Raysect to 0.9.*
…and targettedpixel modules
Added support for removing HTML build artifacts.
Renaming python-featured environments to avoid specific Python versions
Updated channels to use 'conda-forge' instead of the prefix's URL. Removed sphinx-tabs from pypi-dependencies.
Fix import statement for netcdf_file in calcam.py
This enables single-sourcing constant values in both Cython code and Python code (including tests). Fixes #509.
Make constants in cherab.core.utility.constants accessible to Python
* Reorder parameters of Function6D to x,y,z,u,v,w
* Add generic distribution function * Add tests to GenericDistribution, ZeroDistribution; move Maxwellian tests from test_maxwellian.py to test_distribution.py * Add ZeroDistribution, GenericDistribution to docs * Add demo for the generic distribution --------- Co-authored-by: Jack Lovell <jack.lovell@ukaea.uk>
* Add 2D Gauss-Legendre quadrature integrator * Add tests for GaussianQuadrature2D * Add Integrator2D documentation * Rename GaussianQuadrature to GaussianQuadrature1D To keep consistent naming with function frameword and quadrature2D integrator. GaussianQuadrature class marked as deprecated. * Add GaussianQuadrature rename to changelog * Replace deprecated GausianQuadrature usage with GausianQuadrature1D
* Add a Regularisation section to the tomography documentation, describing the functionality inside the admt_utils module. * Fixup the docstrings in admt_utils. * Add calculation of "skewed" second derivative operators, which operate along the diagonals of the grid. * Add a bolometer diagonstic system to Generomak. * Add a new example using the Generomak bolometers and the regularisation operators to perform isotropic and ADMT inversions. * Improve generate_derivative_operators function: * More thorough commenting of the function to make it easier to follow what is going on and why. * Exploit the sparsity of the derivative opreators but using a dictionary-of-keys representation instead of dense numpy arrays. A dictionary is faster to insert single elements into inside the loop than a numpy array too. * Remove the `np.isnan` checks which are slow for single elements, replace with a cheap check for `None`. * Support returning the operators as Scipy sparse arrays for use downstream. Default to returning as Numpy arrays for backwards compatibility. * Support generating sparse ADMT operators. * Add a regularised NNLS inversion using sparse matrices asn alternative to `invert_regularised_nnls` using sparse weight and penalty matrices. The numerical algorithm used is slightly different to `scipy.optimize.nnls`, as it uses the TRF variant of a bounded `scipy.optimize.lsq_linear` with the lower bound set to 0 to enforce positivity. Since the results differ due to floating point precision, the sparse variant is implemented as a separate function to maintain backwards compatibility. * Enable generating derivative operators with only 1 mapping: The 1D-to-2D and 2D-to-1D maps are the inverse of one another, so one can be computed from the other. Depending on how the end user forms their inversion grid it may be simpler to calculate the 1D-to-2D or the 2D-to-1D, so allow the caller to pass either and compute any missing mapping. If the caller already has both mappings (machine packages like cherab-jet, cherab-mastu and cherab-aug already generate both) then accept both too. * Add tests for auto-computing missing mappings. * Tests uncovered a bug converting the Dyy sparse operator to dense when `sparse=False` was passed: fix that and complete test coverage for `admt_utils`. * Update changelog.
✨ Introduce `pixi` for project management
* Add an action to build distributions on tagged releases Use the CIbuildwheel Github action to build wheels for all currently-supported Python versions, plus an SDist tarball. Manylinux wheels are produced using the manylinux2014 image where possible (to support JET/UKAEA computers which still run SL7), with manylinux_2_28 for Python 3.14 as that isn't available in manylinux2014. Only Linux wheels are built for now: MacOS (and Windows should Raysect ever support it) builds are deferred. But the strategy matrix for the wheels is written in such a way as to easily add other OS's or architectures later as necessary. To avoid wasting compute cycles, the workflow is configured to only run on published releases. This includes stable and pre-release publications. Automatic uploading to PyPI is not implemented: the distribution files should be downloaded from the `gather_artifacts` job's artifacts and checked locally before uploading to PyPI. This is to reduce the risk of uploading broken distributions: if the process proves robust and reliable then automatic uploading to PyPI can be revisited.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release candidate rc1: https://pypi.org/project/cherab/1.6.0rc1/.
Closes #507