Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dLux v0.14.0

Latest
Compare
Choose a tag to compare
Loading
@LouisDesdoigtsLouisDesdoigts released this 04 Oct 04:06
· 7 commits to main since this release

v0.1.14

This version is a major upgrade to dLux across the board, increasing functionality, improving testing, docs enhancement, a back-end re-organisation, API changes to improve clarity and long-term stability, and an overall simplification of the code, classes and methods. These changes are in preparation for the submission to JOSS and following that, the 1.0 release.

Due to all of this, there have been a lot of changes, although migrating from v0.13.xx will be simple for end-users as the 'high-level' API is relatively unchanged beyond a few class name changes detailed below. If you have any troubles upgrading, please reach out via issues or email and I will be happy to help!

Changes

General

  • All functions with a_to_ have been replaced with2, ierad_to_arcsec ->rad2arcsec. This falls more in line with the method signatures ofjax/numpy and has been applied package wide.
  • Python 3.9 is no longer supported. This is due to changes in an upstream package.
  • Changed to a 'src/dLux' layout.

Layers

  • All scripts containing layers have been moved into a sub-modulelayers, so it is clear which scripts are layer-specific (since they are a lot of them)
  • All__call__ method have been renamed toapply. This is to prevent difficult to debug errors throws fromoptax when trying to optimise classes with a__call__ method.
  • All layer-based inputs can now be passed in as a (key, layer) tuple in order to assign a user-specified key to the dictionary entry.
  • Thecalculate method ofBasisLayer has been renamed toeval_basis.
  • A series of similarDetectorLayers andOpticalLayers have been combined intoUnifiedLayers, namelyRotate,Flip andResize.
  • Removed theIrregPolyAperture as it had some unresolved bugs. This is likely to be re-build in the newutils/geometry.py methods somewhere down the line.
  • ApertureFactory has been removed in favor of the newutils.geometry module. A small tutorial on how to use this can be found in the 'How-To's/Building Apertures' section of the docs.

Sources

  • TheBinarySource object now has the attributemean_flux, instead of justflux to improve clarity.

Utils

  • Adds the 'array_ops.py' script, holding specific paraxial array-based operations
  • pixel_coordinates ->nd_coords, improving clarity of the function names.
  • All functionality from theapertures.py script has been raised into 'utils/cordinates.py', 'utils/geometry.py', 'utils/zernikes.py'
  • All propagation functionality has been raised out of theWavefront class and into the 'utils/propagation.py' script.
  • A small amount of functionality from theSources classes has been raised to the 'utils/sources.py' script.
  • The methods in 'utils/optics.py' have been consolidated and simplified.

Wavefront

  • Unified theFrenselWavefront andWavefront classes. This comes with a namespace change to the propagation methods, detailed below.
    • Allinverse options have been removed from the propagators, the direction is now decided by the current plane of the wavefront.
    • FFT ->propagate_FFT
    • MFT &shifted_MFT unified to ->propagate
    • fresnel_prop ->propagate_frensel

Optics -> OpticalSystems

  • AllxxxOptics classes have been renamed toxxxOpticalSystem, ieAngularOptics ->AngularOpticalSystem. This is to avoid confusion between theOptic layer class.
  • Removed theLayeredOptics class, in favor of including a layers attribute in the (newly named)AngularOpticalSystem andCartesianOpticalSystem.
  • As per the point above, theAngular andCartesian Optical Systems have been reworked as child-classes of theLayeredOpticalSystem class. This means allOpticalSystem classes sharewf_npixels,diameter andlayers attribute, with the Cartesian and Angular versions have the extrapsf_npixels,psf_pixel_scale andoversample attributes, still with their respective um and arcsecond pixel scale units.
  • psf_oversample has been renamed tooversample and now also multiples the output number of pixels by the same value. As suchoversample must now be anint, and a PSF with the correct npixels and pixel_scale can be achieved with theDownsample detector layer, or theutils/downsample method.
  • Adds theinsert_layer andremove_layer methods

Detectors

  • Adds theinsert_layer andremove_layer methods

Image -> PSF

  • TheImage class have been renamed toPSF
  • The.image attribute has been renamed to.data

Transformations

  • Adds theCoordTransfrom class, allowing for coordinate transformations to be held in classes with a simplified API and structure, allowing for theAperture classes to have much simpler pytree structure.

Instruments

  • BaseInstrument has been re-named toInstrument
  • TheInstrument class has been re-named toTelescope
  • Adds theDither class, details in the 'Observation' section below

Observations

  • Observations are fully removed. They were ultimately an extra layer of abstraction and complexity that was not needed. Users wishing to use this functionality should now just create a child-class of theInstrument or (new)Telescope class and then proceed as they would with theObservation class.

Docs

  • The docs have been greatly re-worked an improved, much of this benefit comes from the back-end restructure of the package, and the raising of functionality from classes into the utils module
  • All jupyter notebooks have been removed and replaced with automatically generated .md files as a way to reduce the overall size of the repo. This can be done locally using thedocs/generate_mds.py file, run from the docs directory.
  • UML diagrams and now automatically generated and populate the docs as a .png. This allows for users to easily understand how a class is created, and where all if its attributes and method are defined. This should allow for users to very easily navigate the code base and find the methods of all classes easily.
  • The tutorials have been re-worked and greatly improved. We now have 'introductory' designed to get new users started, 'how-tos' that go through some of the key feautures and how to use them, and keeps the currently tutorials as under 'examples'. While the 'introductory' and 'how-tos' are not all completed, the core functionality and basic workflow is covered.
Assets2
Loading

[8]ページ先頭

©2009-2025 Movatter.jp