Full Changelog¶
1.2 (06-Nov-2020)¶
New Features¶
- Unit milimeter on
"pos"
and"dir"
columns of photonlist. [#169] - Add method
marxs.simulator.Parallel.move_center
to change thepos4d
value of amarxs.simulator.Parallel
and adjust position of elements at the same time. [#169] - Refactor
marxs.analysis.analysis.find_best_detector_position
to allow for more general objective functions. [#171] - Update plotting for
marxs.optics.CircleAperture
to give more flexibility in plotting the inner part of a ring-like aperture. This is needed for models or stacked, rind-like apertures. [#180] - Add new module
marxs.design.tolerancing
to estimate alignment tolerances. [#186] - Add class
marxs.optics.RandomGaussianScatter
. [#192] - The column names for blaze and order written by
marxs.optics.FlatGrating
can now be configured. [#195] - Add a number of helper functions (incl. plotting) to
marxs.design.tolerancing
. [#199] - Add a module to simulate CAT gratings manufactures in MIT’s SNL. [#202]
- Make MIT SNL grating specification more flexible. [#210]
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
andScatter
now expect angular quantities instead of plai floats. [#216]
Bug fixes¶
marxs.analysis.gratings.resolvingpower_per_order
has been updated to ignore photons with probability 0. [#162]- An index mix-up in
marxs.simulator.ParallelCalculated.calculate_elempos
introduced unintended zoom and shear in the elements. [#164] - [#159] left behind an undefined
filterfunc
. This is fixed and a regression test added. [#165] marxs.analysis.analysis.find_best_detector_position
will now change the detector position always along an axis perpendicular to the detector plane. [#171]marxs.optics.RadialMirrorScatter
now works withinplanescatter=0
which is useful for parameters studies. [#174]- Plot only “half-box” for elements such as mirrors where the optical interaction occurs on a surface. [#178]
- With
marxs.optics.MultiAperture
photons would always be sorted by aperture number. To fix this, apertures now behave more like other optical elements and useprocess_photons
. [#189] marxs.optics.FlatStack
now inherits frommarxs.simulator.BaseContainer
. [#196]- Fix bug in distributions generated by
marxs.source.SphericalDiskSource
. [#202] - Objects now fail to generate when zoom is set to 0. [#217]
1.1 (15-Jul-2017)¶
New Features¶
API Changes¶
- Remove
marxs.source.LabPointSource
, which was just a special case ofLabPointSourceCone
. Instead, set the default values of the later so that it reproduces the behaviour of the former. [#144] MultiLayerEfficiency
andMultiLayerMirror
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 ofKeepCol
with the new nameformat_positions()
and theatol
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, theplot_rays
functions do not acceptKeepCol
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 theSkyCoord
. The later option was broken and has been removed entirely. [#151] - Remove parameter
filterfunc
fromresolvingpower_from_photonlist
anddetected_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]
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.