Full Changelog

1.2 (06-Nov-2020)

New Features

API Changes

  • Sources now require input for flux, energy, and polarization as astropy quantities. Any table-like input must not be a astropy QTable and flux and polarization values are densities not per-bin. [#218]
  • The geometry of a class is now defined as a separate object from the new marxs.math.geometry module. Before, the geometry was backed into the optical components itself which led to significant code duplication. The new scheme allows to make e.g. cylindrical and flat gratings with the same gratings objects. However, not all geometries work with all objects and there is currently no way to check automatically - the user has to use caution or check the code. [#182]
  • Geometry objects provide item access like this detector.geometry['center'] instead of a function interface with (...). [#182]
  • Remove utils.MergeIdentical merge strategy since it is not longer used after #189. [#191]
  • Quantity is used in more places, and thus the base classes need to accept quantities as output from “specific_process_photons”. This change requires some care and thus is done gradually only where needed at this point. [#202]
  • RandomGaussianScatter can be initialized without setting scatter, provided that its already defined a class level variable (e.g. for subclasses). [#202]
  • RandomGaussianScatter and Scatter now expect angular quantities instead of plai floats. [#216]

Bug fixes

Other changes and additions

  • Examples are now written for numpy >= 1.14 (which changed some printing formats). [#182]

1.1 (15-Jul-2017)

New Features

  • Add ability to plot cylinders in Mayavi (for support struts) [#147]
  • Add shape "None" (as a string) to avoid plotting an object [#157]

API Changes

  • Remove marxs.source.LabPointSource, which was just a special case of LabPointSourceCone. Instead, set the default values of the later so that it reproduces the behaviour of the former. [#144]
  • MultiLayerEfficiency and MultiLayerMirror now expect all parameters as keyword arguments for consistency with the other elements in MARXS. [#144]
  • marxs.visualization.utils.format_saved_positions is now a method of KeepCol with the new name format_positions() and the atol keyword can be switched off. Additionally, KeepCol now has a __array__ method. This makes the function useful for columns that are not positions, but e.g. polarization vectors. On the other hand, the plot_rays functions do not accept KeepCol objects directly as input any longer. [#149, #152]
  • According to the docs, a pointing could be initialized with either a SkyCoord or a tuple that would initialize the SkyCoord. The later option was broken and has been removed entirely. [#151]
  • Remove parameter filterfunc from resolvingpower_from_photonlist and detected_fraction. Instead, the photon list can be filtered before calling these functions just as easily. [#159]

Bug fixes

  • Added missing keywords in display dict for some objects and fixed exception when plotting things that are not objects. Discovered and fixed as part of [#147].
  • Polarization after reflection from a mirror used to just parallel transport the vector and calculate the probability of the photon based on s and p polarization. This needs to be applied to the outgoing polarization vector, too. [#148]
  • Plotting of Rowland Torus failed in Mayavi due to typo. [#154]

Other changes and additions

  • Improve Documentation [#146]
  • Docs: Add polarization example [#153]
  • Docs: Add example to calculate flux from normalized spectrum [#160]
  • Add experiemental data for comparison to the polarization example [#158]

1.0 (14-Apr-2017)

This is the first release intended to use. The Change log will begin starting with this release.

0.1 (experimental release)

This release was not intended to be used, but the verisioning scheme in the development branch required a tagged commit.