forked from hyperspy/hyperspy
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES.txt
489 lines (410 loc) · 20.4 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
What's new
**********
We only cover here the main highlights, for a detailed list of all the changes
see `the github commits changelog
<https://github.com/hyperspy/hyperspy/commits/master>`_.
.. _changes_0.7.1:
v0.7.1
======
This is a maintenance release. A list of fixed issues is available in the
`0.7.1 milestone
<https://github.com/hyperspy/hyperspy/issues?milestone=4&page=1&state=closed>`_
in the github repository.
New features
------------
.. _changes_0.7.1:
* Add suspend/resume model plot updating. See :ref:`model.visualization`.
v0.7
====
New features
------------
Core
^^^^
* New syntax to index the :py:class:`~.axes.AxesManager`.
* New Signal methods to transform between Signal subclasses. More information
:ref:`here <transforming.signal>`.
+ :py:meth:`~.signal.Signal.set_signal_type`
+ :py:meth:`~.signal.Signal.set_signal_origin`
+ :py:meth:`~.signal.Signal.as_image`
+ :py:meth:`~.signal.Signal.as_spectrum`
* The string representation of the Signal class now prints the shape of the
data and includes a separator between the navigation and the signal axes e.g
(100, 10| 5) for a signal with two navigation axes of size 100 and 10 and one
signal axis of size 5.
* Add support for RGBA data. See :ref:`signal.change_dtype`.
* The default toolkit can now be saved in the preferences.
* Added full compatibility with the Qt toolkit that is now the default.
* Added compatibility witn the the GTK and TK toolkits, although with no GUI
features.
* It is now possible to run HyperSpy in
:ref:`a headless system <headless-label>`.
* Added a CLI to :py:meth:`~.signal.Signal1DTools.remove_background`.
* New :py:meth:`~.signal.Signal1DTools.estimate_peak_width` method to estimate
peak width.
* New methods to integrate over one axis:
:py:meth:`~.signal.Signal.integrate1D` and
:py:meth:`~.signal.Signal1DTools.integrate_in_range`.
* New :attr:`~signal.Signal.metadata` attribute, ``Signal.binned``. Several
methods behave differently on binned and unbinned signals.
See :ref:`signal.binned`.
* New :py:meth:`~.signal.Signal.map` method to easily transform the
data using a function that operates on individual signals. See
:ref:`signal.iterator`.
* New :py:meth:`~.signal.Signal.get_histogram` and
:py:meth:`~.signal.Signal.print_summary_statistics` methods.
* The spikes removal tool has been moved to the :class:`~._signal.Spectrum`
class so that it is available for all its subclasses.
* The :py:meth:`~.signal.Signal.split` method now can automatically split back
stacked signals into its original part. See :ref:`signal.stack_split`.
IO
^^
* Improved support for FEI's emi and ser files.
* Improved support for Gatan's dm3 files.
* Add support for reading Gatan's dm4 files.
Plotting
^^^^^^^^
* Use the blitting capabilities of the different toolkits to
speed up the plotting of images.
* Added several extra options to the Signal :py:meth:`~.signal.Signal.plot`
method to customize the navigator. See :ref:`visualization-label`.
* Add compatibility with IPython's matplotlib inline plotting. See
:ref:`inline_plotting`.
* New function, :py:func:`~.drawing.utils.plot_spectra`, to plot several
spectra in the same figure. See :ref:`plot.spectra`.
* New function, :py:func:`~.drawing.utils.plot_signals`, to plot several
signals at the same time. See :ref:`plot.signals`.
* New function, :py:func:`~.drawing.utils.plot_histograms`, to plot the histrograms
of several signals at the same time. See :ref:`plot.signals`.
Curve fitting
^^^^^^^^^^^^^
* The chi-squared, reduced chi-squared and the degrees of freedom are
computed automatically when fitting. See :ref:`model.fitting`.
* New functionality to plot the individual components of a model. See
:ref:`model.visualization`.
* New method, :py:meth:`~.model.Model.fit_component`, to help setting the
starting parameters. See :ref:`model.starting`.
Machine learning
^^^^^^^^^^^^^^^^
* The PCA scree plot can now be easily obtained as a Signal. See
:ref:`scree-plot`.
* The decomposition and blind source separation components can now be obtained
as :py:class:`~.signal.Signal` instances. See :ref:`mva.get_results`.
* New methods to plot the decomposition and blind source separation results
that support n-dimensional loadings. See :ref:`mva.visualization`.
Dielectric function
^^^^^^^^^^^^^^^^^^^
* New :class:`~.signal.Signal` subclass,
:class:`~._signals.dielectric_function.DielectricFunction`.
EELS
^^^^
* New method,
:meth:`~._signals.eels.EELSSpectrum.kramers_kronig_analysis` to calculate
the dielectric function from low-loss electron energy-loss spectra based on
the Kramers-Kronig relations. See :ref:`eels.kk`.
* New method to align the zero-loss peak,
:meth:`~._signals.eels.EELSSpectrum.align_zero_loss_peak`.
EDS
^^^
* New signal, EDSSpectrum especialized in EDS data analysis, with subsignal
for EDS with SEM and with TEM: EDSSEMSpectrum and EDSTEMSpectrum. See
:ref:`eds-label`.
* New database of EDS lines available in the ``elements`` attribute of the
``hspy.utils.material`` module.
* Adapted methods to calibrate the spectrum, the detector and the microscope.
See :ref:`eds_calibration-label`.
* Specific methods to describe the sample,
:py:meth:`~._signals.eds.EDSSpectrum.add_elements` and
:py:meth:`~._signals.eds.EDSSpectrum.add_lines`. See :ref:`eds_sample-label`
* New method to get the intensity of specific X-ray lines:
:py:meth:`~._signals.eds.EDSSpectrum.get_lines_intensity`. See
:ref:`eds_plot-label`
API changes
-----------
* hyperspy.misc has been reorganized. Most of the functions in misc.utils has
been rellocated to specialized modules. misc.utils is no longer imported in
hyperspy.hspy. A new hyperspy.utils module is imported instead.
* Objects that have been renamed
+ ``hspy.elements`` -> ``utils.material.elements``.
+ ``Signal.navigation_indexer`` -> ``inav``.
+ ``Signal.signal_indexer`` -> ``isig``.
+ ``Signal.mapped_parameters`` -> ``Signal.metadata``.
+ ``Signal.original_parameters`` -> ``Signal.original_metadata``.
* The metadata has been reorganized. See :ref:`metadata_structure`.
* The following signal methods now operate out-of-place:
+ :py:meth:`~.signal.Signal.swap_axes`
+ :py:meth:`~.signal.Signal.rebin`
.. _changes_0.6:
v0.6
====
New features
------------
* Signal now supports indexing and slicing. See :ref:`signal.indexing`.
* Most arithmetic and rich arithmetic operators work with signal.
See :ref:`signal.operations`.
* Much improved EELSSpectrum methods:
:py:meth:`~._signals.eels.EELSSpectrum.estimate_zero_loss_peak_centre`,
:py:meth:`~._signals.eels.EELSSpectrum.estimate_elastic_scattering_intensity` and
:py:meth:`~._signals.eels.EELSSpectrum.estimate_elastic_scattering_threshold`.
* The axes can now be given using their name e.g. ``s.crop("x", 1,10)``
* New syntax to specify position over axes: an integer specifies the indexes
over the axis and a floating number specifies the position in the axis units
e.g. ``s.crop("x", 1, 10.)`` crops over the axis `x` (in meters) from index 1
to value 10 meters. Note that this may make your old scripts behave in
unexpected ways as just renaming the old \*_in_units and \*_in_values methods
won't work in most cases.
* Most methods now use the natural order i.e. X,Y,Z.. to index the axes.
* Add padding to fourier-log and fourier-ratio deconvolution to fix the
wrap-around problem and increase its performance.
* New
:py:meth:`~.components.eels_cl_edge.EELSCLEdge.get_fine_structure_as_spectrum`
EELSCLEdge method.
* New :py:class:`~.components.arctan.Arctan` model component.
* New
:py:meth:`~.model.Model.enable_adjust_position`
and :py:meth:`~.model.Model.disable_adjust_position`
to easily change the position of components using the mouse on the plot.
* New Model methods
:py:meth:`~.model.Model.set_parameters_value`,
:py:meth:`~.model.Model.set_parameters_free` and
:py:meth:`~.model.Model.set_parameters_not_free`
to easily set several important component attributes of a list of components
at once.
* New
:py:func:`~.misc.utils.stack` function to stack signals.
* New Signal methods:
:py:meth:`~.signal.Signal.integrate_simpson`,
:py:meth:`~.signal.Signal.max`,
:py:meth:`~.signal.Signal.min`,
:py:meth:`~.signal.Signal.var`, and
:py:meth:`~.signal.Signal.std`.
* New sliders window to easily navigate signals with navigation_dimension > 2.
* The Ripple (rpl) reader can now read rpl files produced by INCA.
API changes
-----------
* The following functions has been renamed or removed:
* components.EELSCLEdge
* knots_factor -> fine_structure_smoothing
* edge_position -> onset_energy
* energy_shift removed
* components.Voigt.origin -> centre
* signals.Spectrum
* find_peaks_1D -> Signal.find_peaks1D_ohaver
* align_1D -> Signal.align1D
* shift_1D -> Signal.shift1D
* interpolate_1D -> Signal.interpolate1D
* signals.Image.estimate_2D_translation -> Signal.estimate_shift2D
* Signal
* split_in -> split
* crop_in_units -> crop
* crop_in_pixels -> crop
* Change syntax to create Signal objects. Instead of a dictionary
Signal.__init__ takes keywords e.g with a new syntax .
``>>> s = signals.Spectrum(np.arange(10))`` instead of
``>>> s = signals.Spectrum({'data' : np.arange(10)})``
.. _changes_0.5.1:
v0.5.1
======
New features
------------
* New Signal method `get_current_signal` proposed by magnunor.
* New Signal `save` method keyword `extension` to easily change the saving format while keeping the same file name.
* New EELSSpectrum methods: estimate_elastic_scattering_intensity, fourier_ratio_deconvolution, richardson_lucy_deconvolution, power_law_extrapolation.
* New Spectrum method: hanning_taper.
Mayor bugs fixed
----------------
* The `print_current_values` Model method was raising errors when fine structure was enabled or when only_free = False.
* The `load` function `signal_type` keyword was not passed to the readers.
* The spikes removal tool was unable to find the next spikes when the spike was detected close to the limits of the spectrum.
* `load` was raising an UnicodeError when the title contained non-ASCII characters.
* In Windows `HyperSpy Here` was opening in the current folder, not in the selected folder.
* The fine structure coefficients were overwritten with their std when charging values from the model.
* Storing the parameters in the maps and all the related functionality was broken for 1D spectrum.
* Remove_background was broken for 1D spectrum.
API changes
-----------
* EELSSPectrum.find_low_loss_centre was renamed to estimate_zero_loss_peak_centre.
* EELSSPectrum.calculate_FWHM was renamed to estimate_FWHM.
.. _changes_0.5:
v0.5
====
New features
------------
* The documentation was thoroughly revised, courtesy of M. Walls.
* New user interface to remove spikes from EELS spectra.
* New align2D signals.Image method to align image stacks.
* When loading image files, the data are now automatically converted to
grayscale when all the color channels are equal.
* Add the possibility to load a stack memory mapped (similar to ImageJ
virtual stack).
* Improved hyperspy starter script that now includes the possibility
to start HyperSpy in the new IPython notebook.
* Add "HyperSpy notebook here" to the Windows context menu.
* The information displayed in the plots produced by Signal.plot have
been enhanced.
* Added Egerton's sigmak3 and sigmal3 GOS calculations (translated
from matlab by I. Iyengar) to the EELS core loss component.
* A browsable dictionary containing the chemical elements and
their onset energies is now available in the user namespace under
the variable name `elements`.
* The ripple file format now supports storing the beam energy, the collection and the convergence angle.
Mayor bugs fixed
----------------
* The EELS core loss component had a bug in the calculation of the
relativistic gamma that produced a gamma that was always
approximately zero. As a consequence the GOS calculation was wrong,
especially for high beam energies.
* Loading msa files was broken when running on Python 2.7.2 and newer.
* Saving images to rpl format was broken.
* Performing BSS on data decomposed with poissonian noise normalization
was failing when some columns or rows of the unfolded data were zero,
what occurs often in EDX data for example.
* Importing some versions of scikits learn was broken
* The progress bar was not working properly in the new IPython notebook.
* The constrast of the image was not automatically updated.
API changes
-----------
* spatial_mask was renamed to navigation_mask.
* Spectrum and Image are not loaded into the user namespace by default.
The signals module is loaded instead.
* Change the default BSS algorithm to sklearn fastica, that is now
distributed with HyperSpy and used in case that sklearn is not
installed e.g. when using EPDFree.
* _slicing_axes was renamed to signal_axes.
* _non_slicing_axes to navigation_axes.
* All the Model \*_in_pixels methods were renamed to to _*_in_pixel.
* EELSCLEdge.fs_state was renamed to fine_structure_active.
* EELSCLEdge.fslist was renamed to fine_structure_coeff.
* EELSCLEdge.fs_emax was renamed to fine_structure_width.
* EELSCLEdge.freedelta was renamed to free_energy_shift.
* EELSCLEdge.delta was renamed to energy_shift.
* A value of True in a mask now means that the item is masked all over
HyperSpy.
.. _changes_0.4.1:
v0.4.1
======
New features
------------
* Added TIFF 16, 32 and 64 bits support by using (and distributing) Christoph Gohlke's `tifffile library <http://www.lfd.uci.edu/~gohlke/code/tifffile.py.html>`_.
* Improved UTF8 support.
* Reduce the number of required libraries by making mdp and hdf5 not mandatory.
* Improve the information returned by __repr__ of several objects.
* DictionaryBrowser now has an export method, i.e. mapped parameters and original_parameters can be exported.
* New _id_name attribute for Components and Parameters. Improvements in their __repr__ methods.
* Component.name can now be overwriten by the user.
* New Signal.__str__ method.
* Include HyperSpy in The Python Package Index.
Bugs fixed
----------
* Non-ascii characters breaking IO and print features fixed.
* Loading of multiple files at once using wildcards fixed.
* Remove broken hyperspy-gui script.
* Remove unmantained and broken 2D peak finding and analysis features.
Syntax changes
--------------
* In EELS automatic background feature creates a PowerLaw component, adds it to the model an add it to a variable in the user namespace. The variable has been renamed from `bg` to `background`.
* pes_gaussian Component renamed to pes_core_line_shape.
.. _changes_0.4:
v0.4
====
New features
------------
* Add a slider to the filter ui.
* Add auto_replot to sum.
* Add butterworth filter.
* Added centring and auto_transpose to the svd_pca algorithm.
* Keep the mva_results information when changing the signal type.
* Added sparse_pca and mini_batch_sparse_pca to decomposition algorithms.
* Added TV to the smoothing algorithms available in BSS.
* Added whitening to the mdp ICA preprocessing.
* Add explained_variance_ratio.
* Improvements in saving/loading mva data.
* Add option to perform ICA on the scores.
* Add orthomax FA algorithm.
* Add plot methods to Component and Parameter.
* Add plot_results to Model.
* Add possibility to export the decomposition and bss results to a folder.
* Add Signal method `change_dtype`.
* Add the possibility to pass extra parameters to the ICA algorithm.
* Add the possibility to reproject the data after a decomposition.
* Add warning when decomposing a non-float signal.
* adds a method to get the PCs as a Spectrum object and adds smoothing to the ICA preprocessing.
* Add the possibility to select the energy range in which to perform spike removal operations.
* the smoothings guis now offer differentiation and line color option. Smoothing now does not require a gui.
* Fix reverse_ic which was not reversing the scores and improve the autoreversing method.
* Avoid cropping when is not needed.
* Changed criteria to reverse the ICs.
* Changed nonans default to False for plotting.
* Change the whitening algorithm to a svd based one and add sklearn fastica algorithm.
* Clean the ummixing info after a new decomposition.
* Increase the chances that similar independent components will have the same indexes.
* Make savitzky-golay smoothing work without raising figures.
* Make plot_decomposition* plot only the number of factors/scores determined by output_dimension.
* make the Parameter __repr__ method print its name.
* New contrast adjustment tool.
* New export method for Model, Component and Parameter.
* New Model method: print_current_values.
* New signal, spectrum_simulation.
* New smoothing algorithm: total variance denoising.
* Plotting the components in the same or separate windows is now configurable in the preferences.
* Plotting the spikes is now optional.
* Return an error message when the decomposition algorithm is not recognised.
* Store the masks in mva_results.
* The free parameters are now automically updated on chaning the free attribute.
Bugs fixed
----------
* Added missing keywords to plot_pca_factors and plot_ica_factors.
* renamed incorrectly named exportPca and exportIca functions.
* an error was raised when calling generate_data_from_model.
* a signal with containing nans was failing to plot.
* attempting to use any decomposition plotting method after loading with mva_results.load was raising an error.
* a typo was causing in error in pca when normalize_variance = True.
* a typo was raising an error when cropping the decomposition dimension.
* commit 5ff3798105d6 made decomposition and other methods raise an error.
* BUG-FIXED: the decomposition centering index was wrong.
* ensure_directory was failing for the current directory.
* model data forced to be 3D unnecessarily.
* non declared variable was raising an error.
* plot naming for peak char factor plots were messed up.
* plot_RGB was broken.
* plot_scores_2D was using the transpose of the shape to reshape the scores.
* remove background was raising an error when the navigation dimension was 0.
* saving the scores was sometimes transposing the shape.
* selecting indexes while using the learning export functions was raising an error.
* the calibrate ui was calculating wrongly the calibration the first time that Apply was pressed.
* the offset estimation was summing instead of averaging.
* the plot_explained_variance_ratio was actually plotting the cumulative, renamed.
* the signal mask in decomposition and ica was not being raveled.
* the slice attribute was not correctly set at init in some scenarios.
* the smoothing and calibrabrion UIs were freezing when the plots where closed before closing the UI window.
* to_spectrum was transposing the navigation dimension.
* variance2one was operating in the wrong axis.
* when closing the plots of a model, the UI object was not being destroyed.
* when plotting an image the title was not displayed.
* when the axis size was changed (e.g. after cropping) the set_signal_dimension method was not being called.
* when using transform the data was being centered and the resulting scores were wrong.
Syntax changes
--------------
* in decomposition V rename to explained_variance.
* In FixedPattern, default interpolation changed to linear.
* Line and parabole components deleted + improvements in the docstrings.
* pca_V = variance.
* mva_result renamed to learning_results.
* pca renamed to decomposition.
* pca_v and mva_results.v renamed to scores pc renamed to factors .
pca_build_SI renamed to get_pca_model ica_build_SI renamed to get_ica_model.
* plot_explained_variance renamed to plot_explained_variance_ratio.
* principal_components_analysis renamed to decomposition.
* rename eels_simulation to eels_spectrum_simulation.
* Rename the output parameter of svd_pca and add scores.
* Replace plot_lev by plot_explained_variance_ratio.
* Scores renamed to loadings.
* slice_bool renamed to navigate to make its function more explicit.
* smoothing renamed to pretreatment and butter added.
* variance2one renamed to normalize_variance.
* w renamed to unmixing matrix and fixes a bug when loading a mva_result
in which output_dimension = None.
* ubshells are again availabe in the interactive session.
* Several changes to the interface.
* The documentation was updated to reflex the last changes.
* The microscopes.csv file was updated so it no longer contains the
Orsay VG parameters.