What’s New¶
Attention
This page is not up to date. Please visit the github project for latest information
Jun 28 2018:¶
Moved pycroscopy.core
into separate package - pyUSID
pyUSID will be the engineering package that supports science-focused packages such as pycroscopy similar to how scipy depends on numpy.
All references to pycroscopy.core within the pycroscopy package are now referencing pyusid instead.
The current release of pycroscopy imports pyUSID and makes it available as pycroscopy.core
so that existing imports in user-code do not break.
In the next release of pycroscopy, this implicit import will be removed and the following modules would have to be imported directly from pyUSID
:
hdf_utils
write_utils
dtype_utils
io_utils
PycroDataset
- renamed toUSIDataset
Translator
ImageTranslator
NumpyTranslator
Process
parallel_compute()
plot_utils
jupyter_utils
Thus, imports and usages of such modules as:
import pycroscopy as px
px.plot_utils.plot_map(...)
px.hdf_utils.print_tree(h5_file)
px.PycroDataset(h5_dset)
# Other non-core classes:
px.processing.SignalFilter(h5_main, ...)
would need to be changed to:
# Now import pyUSID along with pycroscopy
import pyUSID as usid
import pycroscopy as px
# functions and classes still work the same way
# just use usid instead of px for anything that was in core (see list above).
usid.plot_utils.plot_map(...)
usid.hdf_utils.print_tree(h5_file)
# The only difference is the renaming of the PycroDataset to USIDataset:
usid.USIDataset(h5_dset)
# Other classes and functions outside .core are addressed just as before:
px.processing.SignalFilter(h5_main, ...)
Jun 19 2018:¶
Thanks to @Liambcollins for bug-fixes to
GTuneTranslator
Jun 18 2018:¶
Thanks to @Liambcollins for bug-fixes to
GLineTranslator
Jun 15 2018:¶
Thanks to @ramav87 for bug-fixes in BEPS related translators and notebooks
Jun 14 2018:¶
Jun 13 2018:¶
Thanks to @str-eat for implementing a PycroDataset to csv exporter
Jun 04 2018:¶
Thanks to @donpatrice for fixing a UTF8 isue with the
NanonisTranslator
Jun 01 2018:¶
First skeleton
GwyddionTranslator
being worked on by @str-eatAdded guidelines for contributing code
May 31 2018:¶
All
Translators
now use absolute pathsImproved examples and documentation
May 30 2018:¶
Thanks to @carlodri for donating his utility to read Gwyddion Simple File (gsf) reader
Added
gwyfile
to the requirements of pycroscopyNumpyTranslator
now accepts extra datasets and keyword arguments that will be passed on tohdf_utils.write_main_dataset()
May 26 2018:¶
Implemented a general function for reading sections of binary files
First version of the
BrukerTranslator
for translating Bruker Icon and other AFM files
May 03 2018:¶
plot_utils.plot_map()
now accepts the extent or the tick valuesFixed bug in
hdf_utils.write_reduced_spec_dsets()
andanalysis.BESHOFitter
General improvements to the
analysis.Fitter
classDocumentation updates
May 02 2018:¶
Fixed bug in
svd_rebuild()
May 01 2018:¶
Minor corrections to documentation formatting
pycroscopy.hdf_utils.get_auxillary_datasets()
renamed topycroscopy.hdf_utils.get_auxiliary_datasets()
Example on parallel computing rewritten to focus on
pycroscopy.parallel_compute()
Added
setUp()
andtearDown()
to unit testing classes forhdf_utils
andPycroDataset
Fixed bug in the sorting capability of
pycroscopy.hdf_utils.reshape_to_n_dims()
Added logo to website
Apr 29 2018 2:¶
Centralized verification of slice dictionary in
pycroscopy.PycroDataset
The
slice_dict
kwarg inpycroscopy.PycroDataset.slice()
now the first required argumentLots of minor formatting changes to examples.
Removed jupyter notebooks from which the examples were generated.
Apr 29 2018 1:¶
Fixed errors in broken examples
Replaced example BE datasets with ones where the central datasets now have
quantity
andunits
attributes to make themMain datasets
Replaced example STS dataset with a zip file which will download a lot faster for examples. Corrected the example on NumpyTranslator
Apr 28 2018 2:¶
Fixed unit tests for python 2. assertWarns() only applied to python 3 now
Added
from future
import statement to all modules inpycroscopy.core
Apr 28 2018 1:¶
(Massive) merge of (skunkworks) branch unity_dev into master``
Added unit tests for all (feasible) modules in
pycroscopy.core
Added examples for every single function or class in
pycroscopy.core
(10 cookbooks in total!)Added a primer to h5py and HDF5
Added document with instructions on converting unit tests to examples of functions.
Added web page with links to external tutorials
Added web page describing contents of package, organization,
Added web page with FAQs
Moved a simplified (non ptychography version of) ImageTranslator to
pycroscopy.core
Package reconfigured to use
pytests
instead ofNose
Converted last few
assert
statements into descriptiveErrors
Legacy HDF writing classes and functions deprecated now and will be removed in a future release:
hdf_writer
andvirtual_data
modules moved out ofpycroscopy.core.io
and back intopycroscopy.io
.Moved functions in
pycroscopy.write_utils
using above deprecated classes intopycroscopy.io.write_utils
. These functions are also deprecatedpycroscopy.translators.BEODFTranslator
,pycroscopy.analysis.BESHOFitter
, andpycroscopy.BELoopFitter
,pycroscopy.processing.SignalFilter
,pycroscopy.translators.GIVTranslator
,pycroscopy.analysis.GIVBayesian
,pycroscopy.processing.gmode_utils
, etc. now do not use deprecated classes as proof that even the most complex classes can easily be transitioned to using functions inpycroscopy.core.io.hdf_utils
andpycroscopy.core.io.write_utils
Unit tests for modules in
pycroscopy.core.io
rewritten to not use deprecated functions or classes.Deprecated classes only being used in translators, two analyses modules and two process modules
Removed old examples and tutorials, especially on deprecated classes
Upgrades to
pycroscopy.Process
:pycroscopy.Process
now has a new function -test()
that allows much easier in-place testing of processes before applying to the entire datasetpycroscopy.processing.Cluster`,
pycroscopy.processing.Decomposition
,pycroscopy.processing.SVD
,pycroscopy.processing.SignalFilter
,pycroscopy.processing.GIVBayesian
all implement the newtest()
functionality - return results as correct N-dimensional datasets in expected datatypespycroscopy.processing.Cluster
,pycroscopy.processing.Decomposition
now use a user-configured sklearn objects as inputs instead of creating an estimator objectSVD
,Cluster
,Decomposition
now correctly write results asMain
datasets
More robust
pycroscopy.gmode_utils
functionsUpdates to
pycroscopy.plot_utils
:plot_complex_loop_stack
merged intoplot_complex_spectra()
new function that provides best row / column configuration for (identical) subplots:
get_plot_grid_size()
moved clustering related utilities into
pycroscopy.viz.cluster_utils
<– significantly revised many functions in thereplot_map_stack()
accepts x, y labels.plot_map()
accepts X and Y vectors instead of sizes for more granular controlAll compound functions now pass kwargs to underlying functions wherever possible
Updates to
pycroscopy.write_utils
:pycroscopy.write_utils.AncillaryDescriptor
andpycroscopy.jupyter_utils.VizDimension
merged and significantly simplified topycroscopy.write_utils.Dimension
Swapped all usages of
AncillaryDescriptor
withDimension
in the entire packageMore robust handling of attributes with numpy strings as values
Added new functions to simplify building of matrices for ancillary datasets -
build_ind_val_matrices()
Updates to
pycroscopy.hdf_utils
:Functions updated to using the new
Dimension
objectsAdded a few new functions such as
write_book_keeping_attrs()
,create_indexed_group()
,create_results_group()
write_main_dataset()
can now write empty datasets, use different prefixes for ancillary dataset names, etc.Centralized the writing of book-keeping attributes to
write_book_keeping_attrs()
generalized certain functions such as
copy_attributes
,write_simple_attributes()
so that they can be applied to any HDF5 objectwrite_main_dataset()
andcreate_empty_dataset()
now validate thedtype
correctlyprint_tree()
now prints cleaner versions of the tree, onlyMain datasets
if requested.write_book_keeping_attrs()
now writes the operating system version and pycroscopy version in addition to the timestamp and machine IDRegion references functions such as
copy_region_refs()
now more robust
bug fixes to BE translation, visualization, plotting
Mar 27 2018:¶
Small changes to make pycroscopy available on
Conda forge
. Thanks to @carlodri !pycroscopy.translators.NanonisTranslator
added to translate Nanonis data files
Mar 2 2018:¶
Fixed decode error in
pycroscopy.translators.IgorTranslator
relevant for new versions of Asylum Research microscope software versions
Mar 3 2018: (on unity_dev
and not on master
)¶
pycroscopy.plot_utils.plot_map
now accepts X and Y vectorsLots of small bug fixes
More checks for more robust code in
pycroscopy.core
New handy function -
pycroscopy.hdf_utils.get_region()
- directly returns the referenced data as a numpy arrayAdded two new examples on
pycroscopy.io_utils
andpycroscopy.dtype_utils
Feb 18 2018: (on unity_dev
and not on master
)¶
Massive restructuring and overhaul of code:
Renamed
pycroscopy.ioHDF
topycroscopy.HDFWriter
Renamed
pycroscopy.MicroDataset
and pycroscopy.MicroDataGroup` topycroscopy.VirtualDataset
andpycroscopy.VirtualGroup
Data type manipulation functions moved out of
pycroscopy.io_utils
intopycroscopy.dtype_utils
Moved core foundational / science agnostic / engineering elements of pycroscopy into a new subpackage -
pycroscopy.core
. Rule for move - nothing in.core
should import anything out of.core
. This may be spun off as its own package at a later stage if deemed appropriate. Contents ofpycroscopy.core
:core.io
-HDFWriter
,VirtualData
,hdf_utils
,write_utils
,io_utils
,dtype_utils
,Translator
,NumpyTranslator
core.processing
-Process
,parallel_compute()
core.viz
-plot_utils
,jupyter_utils
Started adding a lot of type and value checks for safer and more robust file reading/writing. Expect a lot of descriptive Exceptions that will help in identifying problems easier and sooner.
Implemented modular and standalone functions in
pycroscopy.hdf_utils
that form a (much simpler and more robust) feature-equivalent alternative topycroscopy.HDFWriter
+pyroscopy.VirtualData
.pycroscopy.HDFWriter
+pyroscopy.VirtualData
will be phased out in the near future.First implementation of what may be one of the most popular and important functions -
pycroscopy.hdf_utils.write_main_dataset()
-Thoroughly checks and validates all inputs. Only if these pass,
Writes the a dataset containing the central data
Creates / reuses
ancillary datasets
links
Ancillary datasets
to create aMain dataset
writes
quantity
andunits
attributes - now mandatoryAlso writes any other attributes
Other notable functions include
write_simple_attrs()
,write_region_references
,write_ind_val_dsets()
pycroscopy.NumpyTranslator
now simply callspycroscopy.hdf_utils.write_main_dataset()
pycroscopy.Translator.simple_write()
removed. Translators can extendNumpyTranslator
instead.
Added first batch of unit tests for modules in
pycroscopy.core
.More robust
pycroscopy.parallel_compute()
via type checkingAdded a new class called
pycroscopy.AuxillaryDescriptor
to describe Position and spectroscopic dimensions. All major functions likewrite_main_dataset()
andwrite_ind_val_dsets()
to use this descriptor
Jan 16 2018: (on unity_dev
and not on master
)¶
pycroscopy.processing.Cluster
andpycroscopy.processing.Decomposition
now extendpycroscopy.Process
More robust HDF functions for checking the existence of prior results groups.
Fixed important bugs for better python2 compatibility (HDF I/O, plotting, etc.)
More FFT signal filtering functions
Several bug fixes to
pycroscopy.viz.plot_utils
Simplifications to the
image cleaning
andGIV
notebooks to use the new capabilities ofpycroscopy.processing.SVD
,pycroscopy.processing.Cluster
Dec 7 2017:¶
New function (
visualize()
) added topycroscopy.PycroDataset
to facilitate interactive visualization of data in for any dataset (< 4 dimensions)Significantly more customizable plotting functions in
pycroscopy.plot_utils
Improved
pycroscopy.Process
that provides the framework for:checking for prior instances of a process run on the same dataset with the same parameters
resuming an aborted process / computation
Reorganized
doSVD()
into a new Process calledpycroscopy.processing.SVD
to take advantage of above advancements.The same changes will be rolled out to
pycroscopy.processing.Cluster
andpycroscopy.processing.Decomposition
soon
Nov 17 2017:¶
Significant improvements and bug fixes to Bayesian Inference for G-mode IV.
Nov 11 2017:¶
New robust class for Bayesian Inference on G-mode IV data -
pycroscopy.processing.GIVBayesian
Utilities for reading files from Nanois controllers
New robust class for FFT Signal Filtering on any data including G-mode -
pycroscopy.processing.SignalFilter
FFT filtering rewritten and simplified to use objects
Oct 9 2017:¶
Added
pycroscopy.PycroDataset
- a class that simplifies handling, reshaping, and interpretation ofMain
datasets.
Sep 6 2017:¶
Added
pycroscopy.Process
- New class that provides a framework for data processing in Pycroscopy.
Sep 5 2017:¶
Improved the example on parallel computing
Aug 31 2017:¶
New plot function -
single_img_cbar_plot()
(now merged intoplot_map()
) for nicer 2D image plots with color-bars.
Aug 29 2017:¶
Improvements to Bayesian Inference on G-mode IV data including resistance compensation.