Changes are listed with most recent versions at the top.
Dates are in YYYY/MM/DD format.
Primary (X.-.-) version numbers are used to denote backwards incompatibilities between versions, while minor (-.X.-) numbers primarily indicate new features and documentation.
Added tests for momentum conversion and for Qt tools.
Bugfix release to fix Qt API after bumping Qt versions. Tests have been added which hit large parts of the Qt code to prevent problems like this in the future.
Numba has been adopted to accelerate k-space conversion resulting in 10-50x speedup compared to the older plain numpy versions of code.
Additional example data has been added so that representative ARPES data covering standard types of experiments are available.
The documentation site has been moved from Netlify to https://arpes.readthedocs.io/ and the content available greatly expanded.
Tutorials for common types of analysis are available as Jupyter notebooks.
An organized API documentation page is availabe.
Docstrings have been massively expanded to cover the public API and most of the internal API.
The documentation build process has been simplified.
The momentum conversion API has been expanded with utility functions
arpes.utilities.conversion.forward.convert_through_angular_point: Performs a cut in momentum at a particular angle and passing through the angular coordinate provided.
arpes.utilities.conversion.forward.convert_through_angular_pair: Performs a cut in momentum passing through two given angular coordinates.
These are very helpful in getting high symmetry cuts rapidly.
Deep learning utilities upstreamed.
Multithreaded curve fitting.
Fit introspection utilities upstreamed.
Numerous small but compatible changes to the public API.
The xarray data accessor previously at .T has been named to .G to prevent shadowing the transpose function.
pylint -> black
Bump dependency versions, largely due to compatibility requirements with pyqtgraph.
Old .csv/spreadsheet driven APIs removed.
Circular references have been removed from tools which use Qt which previously lead to crashes due to objects being freed in C++/Qt5 but retained in Python/PyQt5.
Additionally, some diagnostics have been added to help deal with similar problems in the future.
Igor loader, aliased to ‘pxt’, ‘wave’, etc.
Improved documentation and intro videos
Made loading pxt files more stable by adding a utility to safely decode strings when the encoding used is not known but is a common format
Added a Qt-based waypoint data browser similar to what’s available at the Spectromicroscopy beamline,
Added a Qt-based masking tool
Added a Qt-based background subtraction tool
Generic Qt tools that interact with “paths” or “regions” are now simple to add with
Unitful axes on all Qt-based utilities
Data loading code for the Spectromicroscopy beamline at Elettra.
Added a number of interactive utilities
Documentation/tutorial on adding interactive utilities
Borrow code from DAQuiri for UI generation
Improved the documentation and FAQ.
Refactor file finding to support subfolders and endstation specific behavior
More moiré analysis tools including commensurability measures.
FallbackEndstation, see the changed section below.
Serious refactor to data loading. On the surface not much is different,
except that most things are more permissive by default now. In
particular, you can often get away with not passing the
keyword but it is recommended still.
There is now a
FallbackEndstation that tries to determine which
endstation to use in the case of missing
location key. This is to
reduce the barrier to entry for new users.
Moiré analysis module with some code to generate primitive moiré unit cells and plot them
Subpixel alignment in 1D and 2D based on image convolution and quadratic fitting this is useful for tracking and correcting shifts in valence data due to work function changes, charging, etc.
More or less fully fledged k-independent self energy analysis module (arpes.analysis.self_energy)
BZ exploration tool
Large refactor to data provenance
Now guaranteed produced for every plot using
By default we configure IPython to log all code execution
Most recent cell/notebook evaluations are included in provenance information
convert_coordinatesis now nearly an inverse transform to
convert_to_kspaceon the coordinates as is appropriate. In particular, this conversion is exact as opposed to small angle approximated
Some wrappers around getting Jupyter/IPython state
imreadwrapper that chooses backend between
dark_backgroundcontext manager changes text and spines to white
Data unit/axis unit conversions (
mean_annotationas supplement to
with_values-> generates a copy with replaced data
with_stanard_coords-> renames deduped (
eV-spectrum0for instance) coords back to standard on a xr.DataArray
.logical_offsetscalculates logical offsets for the ‘x,y,z’ motor set
hvfrom coords now
mean_otheras complement to
mapto rule them all
Prevent PyPI builds unless conda build succeeds, so that we can have a single package-time test harness (run_tests.py).
Fix documentation to better explain conda installation. In particular, current instructions avoid a possible error arising from installing BLAS through conda-forge.
colorama now listed as a dependency in conda appropriately.
Fix manifest typo that prevents example data being included
Removed type annotation for optional library breaking builds
Improved type annotations
Slightly safer data loading in light of plugins: no need to call
Data moved to a location where it is available in PyPI builds
Improved API documentation.
Most recent interative plot context is saved to
arpes.config.CONFIG['CURRENT_CONTEXT']. This allows simple and transparent recovery in case you forget to save the context and performed a lot of work in an interactive session. Additionally, this means that matplotlib interactive tools should work transparently, as the relevant widgets are guaranteed to be kept in memory.
Improved provenance coverage for builtins.
Metadata reworked to a common format accross all endstations. This is now documented appropriately with the data model.
MBS data loader now warns about unsatisfiable attributes and produces otherwise correct coordinates in the PyARPES format.
Some improvements made in the ANTARES data loader, still not as high quality as I would like though.
Major rework in order to provide a consistent angle convention
New momentum space conversion widget allows setting offsets interactively
Fermi surface conversion functions now allow azimuthal rotations
experimentmodule contains primitives for exporting scan sequences. This is an early addition towards being able to perform ARPES experiments from inside PyARPES.
As an example: After conducting nano-XPS, you can use PCA to select your sample region and export a scan sequnce just over the sample ROI or over the border between your sample and another area.
All loaded data comes with all angles and positions as coordinates
All loaded data should immediately convert to momentum space without issue (though normal emission is not guaranteed!)
Documentation changes to reflect these adjustments to the data model
Documentation link in README.rst is now correct.
Ship example data so that people can try what is in the documentation immediately after installing
Users can now load data directly, i.e. without a spreadsheet, with
load_without_dataset, in the future this will support matches based on the current working directory.
Users are better warned when spreadsheets are not in the correct format. Spreadsheet loading is also generally more permissive, see below.
Added more tests, especially around data loading, spreadsheet loading and normalization.
Spreadsheet loading no longer relatively silently fails due to whitespace in column names, we might nevertheless consider doing more significant cleaning of data at the very initial stages of spreadsheet loading.
Spreadsheet loading now appropriately uses safe_read universally.
modern_clean_xlsx_datasetis functionally deprecated, but will stay in at least for a little while I consider its removal.
Spreadsheet loading now appropriately handles files with ‘cleaned’ in their name.
Spreadsheet writing will not include the index and therefore an unnamed column when saving to disk.
Add a self-check utility for debugging installs,
import arpes; arpes.check()
PyARPES can generate scan directives to make working at beamlines or nanoARPES endstations simpler. You can now export a region or boundary of a region from a PyARPES analysis to a (first pass) LabView compatible scan specification. For now this consists of a coordinate list and optional spectrum declaration.
local_config.pynow has a programmatic interface in
Documentation overhaul, focusing on legibility for new users and installation instructions
Version requirements on
lmfitare now correct after Nick added
SplitLorentzianxarray compatible models
Moved to CI/CD on Azure Pipelines (https://dev.azure.com/lanzara-group/PyARPES)
Tests available for data loading and some limited analysis routines
Lanzara group Main Chamber data loading code will set a photon energy of 5.93 eV on all datasets by default
arpes.analysis.derivative.dn_along_axisnow properly accepts a smoothing function (
smooth_fn) with the signature
xr.DataArray -> xr.DataArray.
1.0.0 (June 2019)
First official release. API should be largely in place around most of PyARPES.