Recent Releases of nexpy

nexpy - v2.0.0b7

  • Uses temporary files to store virtual fields containing scanned data in the Scan Panel. HDF5 in-memory files are much slower in reading virtual datasets.
  • Allows the selection of axis limits when creating a virtual field in the Scan Panel. This accelerates the plotting of scanned data when a limited range is sufficient.
  • Creates a new plot window when a NXdata group in the tree view is plotted by a double-click if the shift key is depressed.
  • Tiles NeXpy panels along the bottom of the screen when cascading or tiling the plot windows.
  • Fixes the handling of plugins that are malformed in the Manage Plugins dialog.

- Python
Published by rayosborn 11 months ago

nexpy - v2.0.0b6

  • Adds a search box to the Log Window and Script Editor windows, allowing text to be selected and equivalent text to be highlighted.
  • Enables toggling between light mode and dark mode to improve the readability of tracebacks in the Log window.
  • Adds a "Save File" option when creating new workspaces, rather than automatically saving it to a backup directory. The old behavior could cause confusion about whether the new workspace had been saved.
  • Adds menu items to the Window menu to allow all plot windows to be either tiled or cascaded across the available screen.
  • Improves warning messages when removing files from the tree that had not yet been saved.
  • Adds support for more image modes when importing image files.
  • Fixes a bug when managing menu plugins that are declared as entry points by another package but cannot be installed. Now, they are automatically disabled.
  • Fixes a bug when over plotting LMFIT models in the Fit Panel.

- Python
Published by rayosborn 11 months ago

nexpy - v2.0.0b5

  • Adds support for shared script menus, which can be specified either by NeXpy settings or through the NX_SCRIPTDIRECTORY environment variable.
  • Updates the script menus dynamically whenever a new script is saved or an old script is deleted.
  • Adds entry points (nexpy.readers and nexpy.models) to allow other packages to define importers and fitting models.
  • Removes legacy functions that reference the Function class, which is no longer supported. New customized fitting modules should use the LMFIT Model class.

- Python
Published by rayosborn about 1 year ago

nexpy - v2.0.0b4

  • Adds links to Help menu for the Github release and issue pages for NeXpy and the nexusformat API.
  • Fixes a number of issues with PyQt6, including the collapse of panes in the main window and occasional crashes when exiting NeXpy.
  • Fixes a bug preventing autocomplete working in the IPython shell.
  • Catches ValueErrors when releasing a Matplotlib zoom box.

- Python
Published by rayosborn about 1 year ago

nexpy - v2.0.0b3

  • Splits the "Add Data" menu item into "Add Group", "Add Field", and "Add Attribute" menu items.
  • Provides a list of values specified as enumerations in the base class to the "Add" dialogs.
  • Removes deprecated values from the recommended items.
  • Adds an Edit Data panel for allowing scalar values in a group to be edited.
  • Adds an importer for NumPy arrays saved as .npy or .npz files.
  • Fixes a bug displaying scalar values in the View Panel.

- Python
Published by rayosborn about 1 year ago

nexpy - v2.0.0b2

  • Fixes an issue with importing plugins in Python v3.9.
  • Fixes an issue with selecting the y-values of rotated lines when the center of rotation is not at (0,0).
  • Adds a legend to rotated line plots.
  • Restricts the angles of rotated lines, generated by dragging a line with the shift key depressed, to multiples of 5°.

- Python
Published by rayosborn about 1 year ago

nexpy - v2.0.0b1

  • Enables the rotation of 2D plots by a specified angle, allowing 1D projections to be applied along non-orthogonal directions.
  • Provides a rapid way of plotting a 1D cut of 2D data along arbitrary directions when dragging the line with the shift key depressed.
  • Allows plugin menus to be dynamically enabled/disabled and reordered with a new Manage Plugins dialog.
  • Adds contextual menus to check or validate any NeXus groups in the tree. The group can either be checked against its corresponding base class definition or validated against an application definition. The colorized results are displayed in separate windows, with the option of displaying only errors or warnings, or informational messages about each element.
  • Another option allows the XML definition of the corresponding base class to be displayed as colorized text.
  • Fixes a bug displaying the axes when the skew angle is greater than 90°.
  • Tweaks icon colors to work better in dark mode.
  • Updates requirement to use Python v3.9, now that v3.8 has reached its end-of-life phase.

- Python
Published by rayosborn about 1 year ago

nexpy - v1.0.10

  • Removes limitation of skew plots to those with aspect set to 'equal'. Now, the only requirement is that aspect is not set to 'auto'.
  • Fixes the plot limits for skew plots when the skew angle is greater than 90°.
  • Adds a 'reload' button to the script editor to reload a script that has been modified by another editor.

- Python
Published by rayosborn over 1 year ago

nexpy - v1.0.9

  • Updates required nexusformat version to 1.0.6, which fixes compatibility with NumPy 2.0.0.
  • Protects specially named plot windows from being accidentally over-plotted.

- Python
Published by rayosborn about 2 years ago

nexpy - v1.0.8

  • Fixes a bug preventing the fitting of 1D weighted data.
  • Adds a menu option to fit 1D weighted data selected in the tree view.
  • Prevents files with invalid characters from corrupting the list of recently opened files.

- Python
Published by rayosborn about 2 years ago

nexpy - v1.0.7

  • Updates NeXus base class definitions to NeXus v2024.02.
  • Fixes the resolution of relative file paths in NeXpy command line arguments (#426).
  • Removes change of current working directory in the default startup scripts.

- Python
Published by rayosborn over 2 years ago

nexpy - v1.0.6

  • Fixes incompatibility with drawing polygons in Matplotlib v3.8.
  • Adds Python v3.11 to the list of supported versions.

- Python
Published by rayosborn over 2 years ago

nexpy - v1.0.5

  • Adds a Style Panel to plot windows' Options Tab to allow changes in font sizes dynamically for the current plot.
  • Supports switching to light/dark modes dynamically. This only occurs when running a version of Qt that triggers changes to the window palettes in response to the operating system. Versions of PyQt greater than 5.15 give the most consistent results.
  • Prevents windows from closing when the Escape key is pressed.
  • 'Preferences' are now renamed to 'Settings.'
  • Fixes a bug when resizing plot windows on high-DPI screens.
  • Fixes a bug caused by using deprecated Matplotlib functions to catch KeyPress events. This affects Matplotlib v3.8.

- Python
Published by rayosborn over 2 years ago

nexpy - v1.0.4

  • Adds 'Reload All' and 'Remove All' to the tree view contextual menu.
  • Sets the nexusformat and qtconsole dependencies to eliminate incompatible versions.
  • Simplifies use of the NXScrollArea widget by allowing both QWidgets and QLayouts as valid content. QLayouts are automatically wrapped in a QWidget before calling the setWidget function.

- Python
Published by rayosborn about 3 years ago

nexpy - v1.0.3

  • Enables discovery of plugins in external packages using entry points.
  • Improves dialogs for removing existing plugins.
  • Deletes plugin backups that are older than five days.

- Python
Published by rayosborn about 3 years ago

nexpy - v1.0.2

  • Adds a new color map for use with the XTEC package plugin. It is based on the tab10 color map, but adds white as the color for zero-valued pixels.
  • Improves the selection of the default z-values when the corresponding z-axis is defined as bin boundaries.

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.1

  • Fixes compatibility with NumPy v1.24, which has removed the previously deprecated float function.

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.0

  • Official release of v1.0.0.

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.0rc5

  • Improves formatting of the "File Removed" warning.
  • Adds a message to save files restored using the "Manage Backups" dialog

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.0rc4

  • Final code tweaks before releasing v1.0.0.

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.0rc3

  • Improves behavior of the Limits Panel when excluding signals from synchronization.

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.0rc2

  • Enables the exclusion of signal intensities from the Limit Panel synchronization.
  • Catches an exception in the View Dialog when a compression filter is unknown.
  • Fixes a bug with z-tab playbacks.

- Python
Published by rayosborn over 3 years ago

nexpy - v1.0.0rc1

  • First release candidate for v1.0.0

- Python
Published by rayosborn over 3 years ago

nexpy - Miscellaneous changes

  • Adds support for using specific directories to store lock files, with the addition of a Show File Locks menu item.
  • Fixes a bug with setting plot limits from the command line.

- Python
Published by rayosborn over 3 years ago

nexpy - Minor changes

  • Fixes a bug in the Scan Panel when a scan variable is missing in some files.
  • Adds support for PyQt6 and PySide6.

- Python
Published by rayosborn almost 4 years ago

nexpy - Minor bug fixes

  • Fixes a bug when masking data in the Fit Panel.
  • Fixes compatibility with the upcoming Matplotlib v3.6 release while preserving backward compatibility to v3.4.
  • Removes the Magic menu, which is no longer included in the Jupyter QtConsole and contains deprecated functions. The IPython magic commands will still work in the shell.
  • Updates the dependence on ipykernel to remove versions that contained a bug in the in-process kernel.

- Python
Published by rayosborn almost 4 years ago

nexpy - Minor Improvements

  • Adds an option to plot projections with weights.
  • Adds support for setting expiry times for stale locks.
  • Sets the default entry to the currently selected entry inChoose Entry dialogs.
  • Fixes the default file name when exporting plot windows.

- Python
Published by rayosborn about 4 years ago

nexpy - Minor Fixes

  • Fixes compatibility with older versions of Matplotlib.
  • Fixes a bug when removing all files from the tree.
  • Improves widgets used by plugin menus.

- Python
Published by rayosborn over 4 years ago

nexpy - Simplify startup script

  • Removes attempt to set the PyPlot backend in the default startup script to reduce potential problems in some systems. This allows a new user to customize their preferred backend by customizing the script after the initial launch.

- Python
Published by rayosborn over 4 years ago

nexpy - Support for Virtual Datasets

  • Uses HDF5 virtual datasets to consolidate data from multiple files in the Scan Panel.
  • Adds virtual dataset metadata, such as file sources, to the View Dialog.
  • Adds support for qualitative color maps (tab10 and tab20) with automatic alignment of integer values to the discrete color bands.
  • Enhances the options available for labeling 1D plot legends.
  • Drops support for PyQt4, now that it is no longer supported by Matplotlib. PyQt5 and PySide2 are currently supported.
  • Converts package to use the latest recommendations for package distribution, such as creating a pyproject.toml file to configure the build backend, moving metadata and requirements from setup.py to setup.cfg, and using setuptools_scm for version management.
  • Improves PEP-8 compliance of code.

- Python
Published by rayosborn over 4 years ago

nexpy - Miscellaneous Improvements

  • Allows LMFIT parameter expressions to be edited to include any parameters in a composite model.
  • Allows LMFIT composite models to combine different models with the standard binary operators, i.e., +, -, *, or /.
  • Allows different components of a composite model to be combined flexibly when plotting the model calculations.
  • Allows data to be masked before fitting. Masked points are selected either by a right-click zoom or, if the mplcursors package is installed, by double-clicking on individual points.
  • Uses the current plot limits to define the data included in initializing and fitting parameters in the Fit Panel.
  • Updates saved fits to include the composite model definition and parameter expressions.
  • Adds a BoseFactorModel that, when multiplying another lineshape, e.g., a Lorentzian, obeys detailed balance for negative energies.
  • Adds the option to rename a copied NeXus field or group before pasting it.
  • Adds the plot legend when using the mpl_plot function to plot an existing NXPlotView window to another Matplotlib figure.
  • Adds options to use data paths as legend labels in the Customize Panel.
  • Adds grid parameters to the Customize Panel for 1D data.
  • Adds the option to change the grid alpha value in the Customize Panel.
  • Adds extra linestyles to the Customize Panel.
  • Modifies the color cycle to match the current Matplotlib style.
  • Allows a size-1 array to be plotted.
  • Adds a "Open NeXpy Issue" button to the Log Window.
  • Adds a save function to NXPlotView to save the current plot to a file.
  • Ensures that shapes are removed from the NXPlotView shapes list when they are removed from the canvas.

- Python
Published by rayosborn over 4 years ago

nexpy - Miscellaneous Improvements

  • Adds support for plotting weighted data. If a weights array, as defined by the NeXus standard, is present, a new "Plot Weighted Data" option will plot the signal divided by the weights.
  • Adds support for adjusting the aspect ratio when aspect=equal is selected. If the axis field has an attribute named scaling_factor, its value is used to correct for the absolute values of the axis units. This is useful for axes which represent lattice vectors or reciprocal lattice vectors, whose values are multiples of unit cell parameters.
  • Adds support for applying a skew angle when aspect=equal is selected. If a NXdata group of rank 3 has a group attribute named angles, the values are used to define the skew angle between two axes when the corresponding value is not 90°. For example, if the angles attribute is set to (90.0, 70.0, 90.0), a skew angle is applied to plots where the x-axis and y-axis are dimensions 0 and 2, respectively.
  • Adds a new "Open Startup Script" option to the Script menu to allow the startup script to be edited.
  • Adds the option to select the available Matplotlib styles in the "Edit Preferences" dialog. A new "Publication" style, with enlarged fonts, is added to the list.
  • Adds support for customizing the color of "bad" pixels in the Customize Panel.
  • Adds a new NXPlotView function function, mpl_plot, which reproduces the current plot, preserving its formatting and legends, in a Pyplot axis, to facilitate its inclusion in Matplotlib layouts created by, e.g., subplots and GridSpec.
  • Removes NeXus files from the tree if they are in a remote directory that is no longer accessible.
  • Removes the legacy Pseudo-Voigt function in favor of the model provided by the LMfit package.
  • Fixes a bug where file locks are not cleared when shutting down NeXpy.
  • Fixes a bug through which a panel opened in a plot's Projection Tab is linked to a different plot.

- Python
Published by rayosborn almost 5 years ago

nexpy - Miscellaneous updates

  • Adds a pull-down menu to the Projection Tab for selecting which panel to open (Projection, Limits, or Scan).
  • Adds support for LMfit forms, which allow some fitting models to be customized. This requires LMfit v1.0.2.
  • Confines the fitting range to the x-limits of the parent plot. This can be changed with the "Reset Limits" button.
  • Removes legacy fitting functions that duplicate LMfit models.
  • Makes the Script menu display subdirectories hierarchically.
  • Adds new Matplotlib color maps - two qualitative maps (tab10 and tab20) and a gray-scale divergent map (divgray).
  • Fixes issues caused by changes in Matplotlib v3.4.0.
  • Fixes a plotting bug when a scan variable is not set in the Scan Panel.

- Python
Published by rayosborn over 5 years ago

nexpy - Fix incompatibility with Matplotlib v3.3

  • Fixes an incompatibility with Matplotlib resulting from code changes in the version 3.3 release.

- Python
Published by rayosborn over 5 years ago

nexpy - Update version requirements

  • Fixes version requirement for the nexusformat package.

- Python
Published by rayosborn over 5 years ago

nexpy - Miscellaneous updates

This release is the first to require Python 3.

  • Speeds up the loading of NeXus files by limiting recursion of group reads to two levels in the hierarchy by default. Lower levels are automatically loaded when they are referenced, e.g., by expanding the tree.
  • Adds "Edit Preferences" to the File menu to allow NeXus constants, e.g., defining memory limits, string encoding, etc, to be saved for subsequent sessions.
  • Adds the ability to restore all the files loaded in the previous NeXpy session, either using "Restore Session" in the File menu or using the -r switch.
  • Adds "Reload All", to reload files changed by external processes, and "Remove All", to remove all currently loaded files, to the File menu.
  • Adds a menu item "Show All Limits" to open the Limits panel and add all current plots.
  • Improves the Import Text option to give greater flexibility in setting signals, adding headers, excluding columns, etc.
  • Improves the Export option to allow export to NeXus files and to allow additional NXdata fields to be exported.
  • Adds support for using the interpretation attribute to identify RGB or RGBA data and plot as images automatically.
  • Implements manual garbage collection to prevent system crashes caused by automatic disposal of PyQT objects outside the main GUI thread.
  • Fixes a bug when plotting external fields.
  • Fixes a MacOS bug that makes the menus unresponsive when first starting NeXpy.

- Python
Published by rayosborn over 5 years ago

nexpy - Bug fixes

  • Fixes an issue with changing axes in the Limits Panel.
  • Fixes a bug in the 'chopper' example plugin.

- Python
Published by rayosborn almost 6 years ago

nexpy - Feature enhancements and bug fixes

  • Adds support for pre-defined 'models' in the lmfit package in the Fit Panel. From now on, users are encouraged to define their own fitting models as lmfit Model classes, although legacy NeXpy function modules are still supported.
  • Adds miscellaneous improvements to the Fit Panel, including selection of fitting methods and tooltips to display model definitions.
  • Adds a 'Fit' button to the Y-tab of all one-dimensional plots to initiate fits of plotted data.
  • Enhances the Export Dialog to allow any NXdata group to be exported as a NeXus file or, for one-dimensional data, an ASCII file.
  • Adds a button to the Options Tab to export the plotted data.
  • Allows the order of legend entries to be changed in the Customize Panel.
  • Adds additional color maps.
  • Improves plot updates in the Limit Panel.
  • Corrects the radius setting when plotting circles.
  • Fixes a bug when plotting data with step sizes much smaller than their absolute values.
  • Fixes a bug causing intermittent crashes when using 'Ctrl+W' to close dialog windows.
  • Fixes a bug causing intermittent PyQt crashes when closing NeXpy.
  • Fixes compatibility with the upcoming Matplotlib v3.3 release.

- Python
Published by rayosborn about 6 years ago

nexpy - Miscellaneous enhancements and bug fixes

  • Improves behavior of axis limit boxes and sliders. The slider limits and sensitivity are only reset when a user explicitly edits the limit boxes.
  • Uses the qtpy module to import PyQt libraries. This fixes a bug when running in 'headless' mode over SSH, i.e., when X-window forwarding is not enabled.
  • Updates plots when a user clicks Copy in the Limit Panel. The Apply button has been removed.
  • Filters out files with invalid external links when choosing files in the Scan Panel.
  • Improves initialization of contextual menus in the tree pane.
  • Removes minor ticks from color bars with log scales. Minor ticks for both the axes and color bars can be turned on and off in the Customize Panel for images. For 1D data, type plotview.minorticks_on() and plotview.minorticks_off(), respectively, in the IPython shell.
  • Requires nexusformat v0.5.2 because of internal changes to the API.
  • Fixes a bug with the data tables when using View Data.
  • Fixes an incompatibility with Matplotlib v3.2.
  • Adds requirement for v5.2 of ipykernel, which fixes a bug with in-process qtconsole kernels.

- Python
Published by rayosborn about 6 years ago

nexpy - Fix scan panel pug

  • Minor bug fix to correct issue with saving data from the Scan Panel before plotting.

- Python
Published by rayosborn over 6 years ago

nexpy - Miscellaneous enhancements

  • Allows the Projection Panel to be used with a Scan Panel plot.
  • Allows the Customize and Limit Panels to be opened from Projection and Scan Panel plots.
  • Adds line numbers to the Script Editor for all operating systems and improves scrolling behavior on MacOS.
  • Automatically converts tabs to four spaces when saving scripts.
  • Improves error messages when installing a new plugin.
  • Fixes start-up bug when old backup files cannot be deleted.
  • Fixes a bug in the Limit Panel that resets old values.

- Python
Published by rayosborn over 6 years ago

nexpy - New Features

  • Adds a new Scan Panel for combining data in multiple NeXus files into a single multidimensional array. A scalar field that changes in each file provides an additional plot axis allowing different files to be compared as a function of a parametric variable, such as temperature. The new array can be plotted and/or saved for subsequent analysis.
  • In a related feature, enables parametric scans of a scalar field stored in multiple NeXus files using "Plot Data."
  • Extends the Limits Panel to allow the limits of multiple plots to be synchronized. Changes to one plot will be automatically propagated to the other synchronized plots.
  • Extends the Customize Panel to add the ability to scale and/or add an offset to 1D plots.
  • Harmonizes keyboard shortcuts for the four panels (Customize, Limits, Projection, and Scan).
  • Adds a "Cut Data" option to copy and delete a NeXus field or group. The copied objects can be pasted into another NeXus tree.
  • Provides a fix for MacOS PyQt5 bugs. In PyQt5 > v5.11, a number of widgets are not repainted until clicking outside the window. This does not affect PyQt5 on Linux.
  • Adds support for Python 3.8.

- Python
Published by rayosborn over 6 years ago

nexpy - Mac OS X fix

  • Fixes a long-standing PyQt issue with Mac OS X menus being unresponsive without switching to and from another application.

- Python
Published by rayosborn over 6 years ago

nexpy - Enhancements and bug fixes

  • Detects changes in an open file made by an external process. The file's lock icon is colored red, indicating that the file should be reloaded.
  • Adds the option to clear stale file locks when it prevents operations on an open file.
  • Adds a menu item to export one-dimensional data to a multicolumn ASCII file.
  • Adds the option to add a smooth interpolation to one-dimensional point plots.
  • Improves the dialog to customize plots, which allows the choice of open or closed symbols, adds smooth lines to the legends, and makes legend labels persistent between plots.
  • Adds autocompletion of NeXus group dictionary items.
  • Gives the option of omitting an NXentry group when creating a new workspace.
  • Adds the use of a configuration file, ~/.nexpy/config.py, to customize the startup of a new NeXpy session.
  • Disables menu items that are incompatible with the selected group or field in the tree view.
  • Adds information about h5py options, such as compression and shuffle filters, when viewing a field.
  • Remove restriction on the minimum signal value in plots on a log scale.
  • Improves handling of malformed plot axes.
  • Fixes a bug when adding groups to a root group using the 'Add Data' dialog.
  • Installs Travis-CI checks on Github.

- Python
Published by rayosborn over 6 years ago

nexpy - Interface Enhancements

  • Uses tabbed windows for the Projection, Limit, and Customize panels.
  • Enhances the Limit panel (accessible using 'Window/Change Plot Limits') to allow the complete configuration of a plot (axes, axis limits, signal limits, window size, log scale, aspect ratio, color map, interpolation, and skew angle) to be copied from one window to another, to facilitate comparisons between the two.
  • Adds a Help menu link to an online Jupyter Notebook tutorial about the Python NeXus API.
  • Harmonizes window closings. Ctrl+W will close the currently active window, except with tabbed interfaces, where it closes the currently active tab.
  • Make shapes added to the plot from the shell, using plotview.rectangle(...), plotview.circle(...), etc., draggable and resizable.
  • Adds an option to the Projection panel to plot one-dimensional projections with lines.
  • Adds .nxspe to the list of default file extensions.
  • Fixes a bug in selecting default data to plot from parent groups.
  • Fixes the colorbar normalization in Matplotlib 3.1.0.
  • Fixes the use of pyplot commands from the shell in Matplotlib 3.1.0, e.g., plt.figure(). NeXpy and pyplot windows now coexist independently of each other.
  • Fixes a bug displaying legends in Matplotlib 3.
  • Improves Python 2 compatibility. Note that this is the last major version that will support Python 2. From v0.12.0, only Python 3 will be supported.

- Python
Published by rayosborn about 7 years ago

nexpy - Bug fix

  • There is a bug in the latest versions of ipykernel (>v5.0.0), which causes the IPython shell to stop working after any exception is triggered. This release overrides the ipykernel function that contains the bug.

- Python
Published by rayosborn over 7 years ago

nexpy - Bug fixes and enhancements

  • Adds an Open Directory menu item to load a complete directory of NeXus files.
  • Adds an Open Image menu item to import images. It uses the Fabio library for importing images in TIFF and CBF files and the Pillow library for importing JPEG, PNG, and GIF files.
  • Harmonizes the shutdown procedure when initiated by closing the main window, typing exit in the shell, or invoking the Quit menu, making it more compatible with different operating systems.
  • Plots boolean NXfields as int8 arrays to prevent Numpy warnings.
  • Adds a number of convenience functions to the BaseDialog for use in plugin modules, including support for threads.
  • Adds keyboard shortcut 'F' to flip the y-axis.
  • Changes the keyboard shortcut for unlocking NeXus files to Ctrl+Shift+U on non-Mac systems to ensure that Ctrl+U can still be used in the shell. On Macs, there is no clash because Ctrl+U is mapped onto Cmd+U.
  • Utilizes the lmfit module for fitting GridParameters.
  • Improves compatibility with changes to the ColorBar in Matplotlib v3.
  • Fixes a bug causing the highlights of tree items to be split when opening a group.
  • Fixes a bug when previous interpolation settings are not available in subsequent plots.

- Python
Published by rayosborn over 7 years ago

nexpy - Bug fixes

  • Updates nexusformat requirement to v0.4.17, which fixes a number of important bugs.
  • Fixes a bug with setting the full path in plot legends.
  • Fixes a bug with fitting data, in which the x-axis is stored as bin boundaries.

- Python
Published by rayosborn over 8 years ago

nexpy - Bug fixes and enhancements

  • Opens a projection panel when releasing a rectangle dragged with the right-mouse-button depressed. The rectangle sets the projection limits. Right-clicking without dragging still resets the plot limits to the original plot limits.
  • Adds support for displaying legends, and selecting which data are included, in the Customize plot dialog. The labels can be toggled between full file paths and field names.
  • Improves the selection of axes for fields that are not default signals in a group. The default axes will be chosen if the dimensions are compatible, making it easier to overplot multiple signals.
  • Adds support for the experimental NeXus method of defining auxiliary signals within a one-dimensional NXdata group. If the group attribute auxiliary_signals contains field names that share the same axis as the default signal, a new Plot All Signals menu item will display all the signals with a legend.
  • Adds support for minor grids. The keyboard shortcuts, 'g' and 'G' toggle displays of the grid, with the former adding minor gridlines.
  • Adds a Collapse Tree menu item.
  • Saves fits to a NXprocess group, rather than an NXentry group, with the addition of time stamps.
  • Adds a save_fit function to the Fit class, to be used to save fits that are performed in scripts.
  • Adds a more accurate version of the pseudo-Voigt approximation to the fitting functions.
  • Allows setting minimum values that are greater than the maximum in the limit text boxes (x-axis, y-axis, etc.). The maximum value is automatically set to the maximum possible value for the x- and y-tabs, or the same as the minimum value in the z-tab.
  • Fixes a bug that prevents NeXpy from launching on some Windows installations.

- Python
Published by rayosborn over 8 years ago

nexpy - Minor bug fixes and enhancements

  • Restores the ability to set log axes using both the GUI tabs or a command line (plotview.logx=True, etc), while preventing Matplotlib errors.
  • Improve handling of missing files, i.e., files containing external links and loaded files that were subsequently moved or deleted.
  • Incorporates fixes from nexusformat v0.4.14 for the handling of masks.

- Python
Published by rayosborn over 8 years ago

nexpy - Minor bug fixes and enhancements

  • Confines tab focus to within each plotting tab. Other tabs or the tree and shell panes can be given focus with mouse clicks or the keyboard shortcuts defined in the previous release.
  • Allows pull-down menus to be opened with a right-arrow key to selection from the keyboard.
  • Adds keyboard shortcuts for the z-axis movie controls - 'f', 'b', ' ', and 'r' for 'play forward', 'play back', 'pause' and 'replot', respectively.
  • Adds a fill value entry to the Initialize Data dialog.
  • Fixes a bug in v0.10.6 with duplicate Ctrl+Shift+P shortcuts in non-Mac versions.
  • Fixes a bug when reverting to a normal color map after a symmetric color map.
  • Fixes a bug in the dialog box for setting plot limits.
  • Fixes a bug that triggers an index error when the z-axis values are bin boundaries.
  • Fixes an incompatibility with changes planned for Matplotlib v2.2.

- Python
Published by rayosborn over 8 years ago

nexpy - Add keyboard shortcuts

  • Keyboard shortcuts have been added to switch between the tree (Ctrl+Shift+T), plot (Ctrl+1, Ctrl+2, etc), and IPython shell views (Ctrl+Shift+I).
  • Keyboard shortcuts have been added to the plotting windows to switch between tabs ('x', 'y', 'z', 'p', 'o'), select toolbar options, and toggle log and linear scales in 2D plots ('l').
  • Keyboard shortcuts allow the x-limits ('l' and 'r') to be selected in a fitting window before adding new functions. This can help the functions to produce more accurate guesses of the starting parameters.

- Python
Published by rayosborn over 8 years ago

nexpy - Minor bug fixes and enhancements

  • Fixes contextual menus to allow over plotting for all 1D plots.
  • Updates the "Open Recent..." menu when saving new NeXus files.
  • Ensures that only one log window is open.
  • Adds a function to plot 2D data on an irregular grid with Voronoi pixel boundaries.

- Python
Published by rayosborn over 8 years ago

nexpy - Minor bug fix

  • Pauses a slideshow after an exception is raised plotting the next frame, e.g., an OSError caused by renaming the NeXus data file.
  • Strips blank lines from the script editor before executing the script.

- Python
Published by rayosborn over 8 years ago

nexpy - Improvements in error handling

  • Major improvements in reporting errors. In the shell, only one-line error summaries are output for readability, with full colorized tracebacks stored in the log files (opened with Ctrl+Shift+L). All uncaught GUI errors are displayed as full colorized tracebacks in a dialog box, as well as in the log files.
  • Requires confirmation before exiting the program from the shell using exit or Ctrl+D.
  • In the tree view, tooltips now display the short version of NeXus trees without attributes and with a recursion level of two to improve readability.
  • Fixes compatibility with the latest version of spec2nexus.
  • Adds support for mplcursors in Python 3.
  • Improve information concerning external links in the GUI views of NeXus fields and groups.
  • Prevents changing the class of NXlink objects in the GUI Rename Dialog.
  • Restores the plotting window in the Fit Dialog if the user closed it prematurely.

- Python
Published by rayosborn over 8 years ago

nexpy - Bug fixes and enhancements

  • Fixes handling of errors with PyQt5 for versions later than 5.5, which trigger a program abort even when an exception is caught! Now, all uncaught exceptions produce a dialog window containing a full traceback. Such errors are also logged.
  • Adds a Restore Plugin menu item to allow previously saved plugins to be reinstalled.
  • Switches plugin imports to use importlib instead of the deprecated imp module.
  • Fixes a bug with plotting data with unresolved links.
  • Fixes a minor glitch when resizing of plot windows, caused by a change in Matplotlib v2.

- Python
Published by rayosborn almost 9 years ago

nexpy - Fix Matplotlib v2 compatibility

  • This fixes an incompatibility with Matplotlib v2, which prevents figures being exported to, e.g., PNG files.

- Python
Published by rayosborn about 9 years ago

nexpy - PyQt5 Compatibility

  • NeXpy is now compatible with PyQt4, PyQt5 and PySide.
  • Note that, if using PyQt5 for the first time, plugins and importers that reference QtGui modules may need to be edited to change the imports to QtWidgets.
  • Fixes a problem caused by a PySide bug that causes a segmentation fault on launch.
  • If h5pyd is installed, a new "Open Remote File" menu item is available for referencing data stored remotely. This feature is under development.

- Python
Published by rayosborn about 9 years ago

nexpy - Bug fixes

  • Fixes a bug preventing recent files from being correctly read on Windows
  • Fixes a bug causing multiple rectangles to be plotted displaying the projection panel limits

- Python
Published by rayosborn over 9 years ago

nexpy - Enhancements and Bug Fixes

  • Enables copying of projection limits between projection panel tabs.
  • Allows configuration of the projection panel rectangle color through the customize dialog, by making it the same as the grid color.
  • Ensures that the projection panel rectangle is still visible after a replotting with different skew angle.
  • Fixes bug preventing the 1D Customize Panel opening.
  • Prevents invalid values of the aspect ratio being set.

- Python
Published by rayosborn over 9 years ago

nexpy - Enhancements and bug fixes

Enhancements

  • Addition of Gaussian smoothing, using the astropy convolution function. This is available through the 'convolve' option in the Signal tab. The standard deviation of the Gaussian can be changed typing plotview.smooth=<n> in the shell, where n is the number of pixels (2 by default).
  • Support for symmetric color maps, in which the minimum signal value is fixed to the negative of the maximum. These are invoked by choosing one of the divergent color maps, which are now separated at the bottom of the color map menu in the Signal tab. The linthresh and linscale parameters can be set by calling plotview.symlog(<linthresh>, <linscale>, <vmax>) in the shell. Calling symlog without any parameters resets the defaults (linthresh=vmax/10, linscale=0.1).
  • Z-axis values now set to values closest to 0 when selecting the default slice for a 3- or higher-dimensional plot, i.e., with symmetric axes, the z-axis values will default to the middle. In our experience, this is nearly always preferable to the old default of plotting the zero-index slice.
  • New 'Set Default' menu item, which allows default data and/or entry groups to be selected for subsequent plotting. This uses the 'default' attribute on the NXdata or NXentry groups, as defined by the NeXus standard.
  • Configuration of grid colors and lifestyles in the Customize Panel.
  • Addition of a new 'Import Image' option, for importing image files that contain RGBA data, e.g., JPEG or PNG files.
  • Allow addition of attributes to groups in the 'Add Data' dialog.

Bug Fixes

  • Fixes a bug in setting the limits with infinities in the data.
  • Fixes bugs with changing and skewing axes.
  • Fixes problems caused by the failure of Matplotlib to update the colorbar ticks and label formatting when the 2D image normalization is changed, e.g., to log scaling.
  • Fixes a bug with the 'Change Plot Limits' menu item.

- Python
Published by rayosborn over 9 years ago

nexpy - Major enhancements

  • Adds a new tabular view of groups and fields, using the new View Data menu. The associated metadata, including attributes, are displayed along with all the data values in 10 x 10 blocks.
  • Adds menus to backup and restore NeXus files. Whenever a file is unlocked, the user can choose to store a backup version, which may be restored in the user's NeXpy directory (~/.nexpy/backups) if changes to the unlocked version need to be reversed. These backups are stored for three days, and may be read in again or deleted using the 'Manage Backups' menu.
  • Various enhancements of the Fit Dialog, allowing both trial parameter estimation and least-squares fitting to be restricted to a range of x-values within the data.
  • The scratch workspace, w0, is now saved to the user's NeXpy directory (~/.nexpy) and can be used to save snippets of NeXus data for reuse in a subsequent session. New menu items will open, purge, and close this scratch file.
  • Adds a new command-line option to display the current image using symmetric logarithms, plotview.symlog. A number of diverging color maps have been added to the default list.
  • New color maps can be installed from the shell if they are available in the Matplotlib installation.
  • Externally linked items can now be renamed.
  • All plot windows can be resized to be the same as the main plot window to facilitate comparisons.
  • Fixes the behavior of the Projection Panel with reversed axes.
  • Uses the new v0.4.4 release of the nexusformat package, which fixes a number of issues with external links.

- Python
Published by rayosborn almost 10 years ago

nexpy - Changes projections to averages

  • Data projections are now averaged over the number of summed bins, by default. The original behavior, in which the data are summed, can be restored by checkboxes in the Projection Tab and Projection Panel.
  • Fixes a bug causing a crash on launch on some systems because of conflicting PyQt libraries. The environment variable, QT_API, is set when the PyQt library is first imported, to prevent other packages from attempting to import a different library.
  • Requires v0.2.2 of the nexusformat package, which fixes a Python 3 bug preventing NXfield and NXgroup divisions.

- Python
Published by rayosborn over 10 years ago

nexpy - Python 2/3 compatibility

  • This is the first version compatible with both Python 2 and Python 3. It has been tested on v2.7, 3.3, 3.4, and 3.5. Python 2.7 and 3.3 are the minimum versions for Python 2 and 3, respectively.
  • Restores default tick mark locations. When implementing skewed axes, the default tick mark locations were inadvertently restricted to integer values. This restores the Matplotlib defaults. A new command-line function, plotview.locator, allows these to be modified.
  • Adds the ability to check the NeXpy version from the command line without launching the GUI by typing nexpy --version.
  • Updates requirement for nexusformat to v0.2.1 to improve Python 3 compatibility.

- Python
Published by rayosborn over 10 years ago

nexpy - Fix Customize Panel bug

  • Fixes a bug preventing plot titles and axis labels of image plots from being changed by the Customize Panel.

- Python
Published by rayosborn over 10 years ago

nexpy - Facilitate Conda builds

  • This version removes 'tifffile' from the NeXpy code because it is now available as a separate PyPI package or as a conda installation. The resulting package is pure Python, making it easier to distribute versions for multiple operating systems.
  • If modules are not available when NeXpy is launched, e.g., lmfit for fitting or tifffile for importing, they may be installed during a NeXpy session before the user tries using them again.
  • This fixes an incompatibility with the latest version of spec2nexus.

- Python
Published by rayosborn over 10 years ago

nexpy - Support for plotting skewed axes

  • Adds the ability to plot in 2D with skewed axes, i.e., where the x and y axes are not orthogonal. This is important when reciprocal space data are stored in a mesh that is diagonal in (h,k,l), but the unit cell has non-orthogonal axes.
  • A new "Customize Panel" replaces the default Matplotlib edit dialog, with fields tailored to NeXpy. For 2D plots, the skew angle, aspect ratio, and grid options can be set in the panel. For 1D plots, marker and line styles can be modified.
  • Redefines the default color map to use the forthcoming Matplotlib default, 'viridis'. This is one of four new perceptually linear color maps that render intensity variations with less distortion.
  • Right-clicking on a plot restores the axis limits without resetting the signal limits. Signal limits can be reset by clicking on the Home button in the options tab.
  • Fixes an incompatibility with the new Jupyter Console, which prevented the shell from editing multiline code.
  • Fixes an incompatibility with Matplotlib v1.5.0, which prevented rectangular zooms from working.
  • Fixes an incompatibility with lmfit-py v0.9.0, which prevented 1D fits from working.
  • Fixes a Windows bug where the plotting tabs had zero height.
  • Handles missing imports more sensibly.
  • Adds the .cxi extension to the list of recognized files in the default Open dialog.

- Python
Published by rayosborn over 10 years ago

nexpy - Add 'Open Recent' menu

  • A new 'Open Recent' menu is added to the 'File' menu to access the 20 most recently accessed NeXus files.
  • Fixes a bug in replotting images with irregular bin sizes. Unfortunately, this has required reverting to using the Matplotlib pcolormesh module, which does not have an interpolation option, for plotting irregular grids. The requested interpolation method is cached and restored when a regular grid is plotted again.
  • Sets the PyQt4 version to v2 to prevent problems using PyQt4-based IDEs to debug NeXpy.

- Python
Published by rayosborn almost 11 years ago

nexpy - Update IPython requirements

  • The previous release did not explicitly require IPython v4.0.0, but this is necessary to run with the new Jupyter console, at least in some Python configurations. This is the only change.

- Python
Published by rayosborn almost 11 years ago

nexpy - IPython 4.0 compatibility

  • With the release of IPython 4.0.0, the Qt console code has been transferred to the language-agnostic Jupyter project along with an extensive refactoring of the code. NeXpy has now been updated to use the new jupyter package, which is listed as a new dependency.
  • A dropdown menu to apply any of the available matplotlib interpolation methods to the current plot has been added. If the grid is not equally spaced, then the only method is 'bilinear', but there are many more options for plots using 'imshow'.
  • The display of line numbers has been removed from the script editor except when a Mac is being used. This is because there is a discrepancy in the line heights for the line number and text editor boxes in other PyQt implementations. Line numbers will be restored when this has been fixed.

- Python
Published by rayosborn almost 11 years ago

nexpy - Script editor enhancements

  • Scripts are now opened as tabs in a single script editor window and displayed with line numbers.
  • Fixes a bug when switching axes in a three- or more-dimensional data set plotted using pcolormesh.

- Python
Published by rayosborn almost 11 years ago

nexpy - Improved PyQt compatibility

  • Bug fixes to improve PyQt4/PySide compatibility. Keyword arguments, allowed by PySide, were replaced by the positional arguments required by PyQt4.
  • Improvement to the plugin utilities. When using GridParameters, all parameters can now be restored after an unsuccessful refinement, not just those that are varied. Some parameters might be changed by a fit function even when they are not varying, e.g., when two parameters are constrained to be equal.

- Python
Published by rayosborn almost 11 years ago

nexpy - First version with PySide and PyQt4 compatibility

  • This is the first version to attempt compatibility with both PyQt4 and PySide. This has been tested on a limited number of systems, so please report any problems and we will attempt to fix them quickly. If you have a broken version of PySide in your Python repository, as well as a working version of PyQt4, please uninstall PySide to ensure the correct package is selected. PyQt4 is the default for Anaconda distributions, while PySide is the default for Enthought/Canopy distributions.
  • The underlying API used by NeXpy to read and write NeXus/HDF5 files is now contained within a separate package, nexusformat, that is listed as a dependency. It should therefore automatically install the new package if you do pip install --upgrade nexpy. If you install NeXpy using setup.py, please make sure to install the nexusformat package (https://github.com/nexpy/nexusformat) first.
  • Editing the textboxes representing the minimum and maximum values of the axis sliders will now reset the slider range. This can be used to increase the sensitivity of the sliders or expand their range beyond the data limits. Clicking the Home button or right-clicking on the plot will restore the original limits.
  • Changed syntax of NeXpy plugin menus. This was required to ensure compatibility of PyQt4 and PySide version. Additional helper functions have been provided, so that simple dialogs can be created without any knowledge of PyQt.
  • Removed the restriction on link names. At one time, NeXus required links to have the same name as their targets, but this restriction was lifted a few years ago and NeXpy now allows it.
  • Improved the plotting of data with reversed axes. These are now plotted in the original direction stored within the NeXus file, but the axes can be flipped by a checkbox in the axis tabs. Note that the slider directions do not change.
  • Made the Matplotlib log option the default, rather than symlog, when plotting with log scales. This can produce unexpected results when the values are very small. The symlog option can still be chosen from the shell using plotview.ax.set_yscale('symlog').
  • Made it the default for Matplotlib axes not to use an offset in their tick labels. This can cause problems over a small range of very large values. This option can be changed by typing plotview.offsets = True or False in the shell.
  • Improved plotting of data containing infinities.
  • Fixed bug when a new z-plane is plotted with reduced axis limits without loading the whole plane.

- Python
Published by rayosborn about 11 years ago

nexpy - Minor bug fix

  • A line had been inadvertently removed from the code preventing over-plots of one-dimensional data.

- Python
Published by nexpy over 11 years ago

nexpy - Minor bug fix

  • Fixed a bug when switching x and y axes in pcolormesh and when plotting reversed axes.

- Python
Published by nexpy over 11 years ago

nexpy - Support for RGB(A) images

  • NeXpy now supports plotting RGB(A) images. This option is available if the rank of the signal is at least three and the last dimension has size 3 or 4. Image plots can be generated from the command line with the new 'implot' method.
  • Image plots, by default, have their origin in the top left corner (rather than the NeXpy default of bottom left). To enable this, the X and Y tabs now have a checkbox that allows the axes to be flipped. Plots will have the axes plotted by default according to their internal storage, whatever the direction of the axes, increasing or decreasing, unless the flip checkbox is checked. Image plots will have the Y-axis checkbox checked by default. Note that the direction of the X tab sliders will now be opposite to the axis direction when the X axis decreases from left to right.
  • Added "Close Plot Window" menu item, with a shortcut of Ctrl(or Cmd)+Shift+W.
  • Moved plot methods into NXdata class. This will allow plotting in NXmonitor and NXlog classes as well. If you attempt to plot another class, it will search for a valid NXdata group within its hierarchy.
  • Now, plotting axes can be defined by an attribute array, as well as a single delimited string.
  • Removed the NeXus version number from the file attributes. This version number used to refer to the C-API version, but that is no longer used.
  • NXfield and NXgroup names will now contain spaces if they are read in from an existing HDF5 file. This means that they can only be referred to as group dictionary items, and not as group attributes. Spaces are allowed in HDF5 names but not NeXus names.
  • Fixed bug where points would be plotted when a line was requested in calling the PlotDialog.
  • Fixed bug where the projection panel plots more than one limits rectangle.
  • Fixed compatibility with the latest versions of spec2nexus. SPEC file imports now require v2014.1228.0.
  • Increased requirement of Matplotlib to v1.2.0.
  • Removed the NeXus version number from the file attributes when creating a new file. This version number used to refer to the C-API version, but that is no longer used.

- Python
Published by nexpy over 11 years ago

nexpy - Bug fix

  • Fixes bug with overplotting one-dimensional data with error bars.

- Python
Published by nexpy over 11 years ago

nexpy - Adds support for external links

  • It is now possible to create links to objects stored in external files, either by creating an NXlink object on the command line or by using 'Paste as link' in the GUI.
  • There are significant improvements to the speed of replotting images when changing axes or running a z-axis 'movie'.
  • The aspect ratio of plots can now be set, either using a new toolbar button to toggle between 'equal' and 'auto' or by setting the value in the shell.
  • Fixed bug with reading variable-length HDF5 strings.
  • Added 'units' the to the 'Add field' dialog.
  • Added the ability to set a suffix to the 'Import Image Stack' dialog, for cases where the numerical increments in the image file name are not at the end of the file's base name.

- Python
Published by nexpy over 11 years ago

nexpy - Fixed source distribution

  • There were problems with including resource files in the PyPI distribution. This version is otherwise unchanged from v0.4.6.

- Python
Published by rayosborn over 11 years ago

nexpy - Minor bug fixes and improvements

  • Improved flexibility of selecting signals and axes when plotting or setting the signal in a group
  • Improved handling of non-compliant axis assignments in a plottable group
  • Improved plots of NXlog groups
  • Fixed bug in renaming linked items
  • Fixed bug where changing the plot limits failed when one of the values was 0
  • Fixed bug in plotting groups containing other groups

- Python
Published by rayosborn over 11 years ago

nexpy - Minor bug fixes and improvements

  • Major refactoring of NXPlotView to fold in NXplot functionality, creating a simpler class structure
  • Addition of 'plotview' functions to draw lines, rectangles, circles and ellipses
  • If nexpy is invoked from the command line with a NeXus file as first argument, the file is loaded on startup
  • Added a version number to the main window title
  • Casts assignments of NXfields to attributes as Numpy arrays
  • Improved handling of non-compliant NXdata groups
  • Fixed rename and makelink bugs
  • Fixed a masked array bug

- Python
Published by rayosborn almost 12 years ago

nexpy - Bug fix

  • The function for removing singleton axes in data projections did not work with the new group-level axes attribute.

- Python
Published by rayosborn almost 12 years ago

nexpy - Minor enhancements and bug fixes

  • Improved compatibility between NXfields and Numpy arrays, through the definition of more operators (int(), float(), <, >, <=, etc.) and addition of array_wrap function. This means that np.sin(x), where x is an NXfield, will return an NXfield of the same name. Please note that this could break some scripts that assume an ndarray is returned.
  • Fixed a bug in initializing an NXdata group with multiple NXfields of the same name.
  • Added the possible specification of NXdata 'signal' and 'axes' as group attributes, rather than attributes of the signal field. This tests a proposal that has not been formally ratified by the NIAC. The previous system will still work.
  • The ‘nxtitle’ property has the root name added to ‘nxpath’, if there is no title specified.
  • Fixed a bug where multiple NXPlotView windows could be created with the same label. If a new one is created, the old one is now deleted.
  • Added new 'plotview' functions to plot lines, cross-hairs, circles, and rectangles to a plot. This can be done from the IPython shell, e.g, plotview rectangle(x, y, dx, dy).
  • Colorized the log display. Traceback messages contained ANSI colors, which were previously stripped from the output.

- Python
Published by rayosborn almost 12 years ago

nexpy - Minor bug fixes

  • Fixed import error in data dialogs

- Python
Published by rayosborn almost 12 years ago

nexpy - Minor bug fixes

  • Made 'spec2nexus' an optional import in setup.py.
  • Used RotatingFileHandler to rotate log files when they are larger then 10kb.
  • Fixed a bug when plotting 2D data with log intensity scales. This could prevent axis switching in 3D or higher dimensional arrays, when all the data in the plotted top layer is less than or equal to zero.

- Python
Published by rayosborn almost 12 years ago

nexpy - Adds scripts, plugins, and logging

This version contains a few significant features. - An improved method for synchronizing the console and tree - A new script editor with syntax coloring for editing and running scripts in the console namespace - A new plugin menu system for customizing NeXpy with domain-specific menus - Logging of tree activities using the Python logging module

- Python
Published by rayosborn almost 12 years ago