Change History#

Production#

2021.2.7#

Released 2025-05-08

Fixes#

  • Don’t warn when truncation affects comparison of file epoch and scan epoch.

Maintenance#

  • Documentation switched to pydata-sphinx-theme.

  • Expand recognition of SPEC data files to match more patterns.

  • Update project packaging.

2021.2.6#

Released 2023-02-10

Fixes#

  • Data file with twoc geometry not recognized, caused problems interpreting #G1 control lines

Maintenance#

  • Uses geometry when data file declares in file header, as written by SPEC standard macro.

2021.2.5#

Released 2022-12-22

Fixes#

  • Version number not reported correctly in certain situations (issue #299).

  • Coverage/Coveralls were failing to upload code coverage results (issue #299).

Maintenance#

  • Add CodeQL analysis workflow, per GitHub bot recommendation (issue #295).

  • Add support for Python 3.11.

  • Adjust badges on root-level README page.

  • When building documentation, “mock” the additional packages.

  • Refactor Sphinx publishing from GitHub Action to in-line workflow.

2021.2.4#

released 2022-10-14

Maintenance#

  • Ensure additional files are installed by conda & pip, per PEP-518.

Deprecations#

  • Drop support for Python <3.8.

2021.2.3#

released 2022-09-19

Fixes#

Documentation was not published for the common plugins.

2021.2.2#

released 2022-09-06

Maintenance#

Switch version management to setuptools-scm.

Updated Sphinx (documentation) configuration to v5.1.

2021.2.1#

released 2022-05-26

New Features and/or Enhancements#

Added --output (short version: -o) command-line option to spec2nexus application to name the output file.

Maintenance#

Add support for SPEC #R (user results) control line.

Contributors#

  • Florin Boariu

2021.2.0#

released 2022-03-17

Notice#

  • Conda package now on conda-forge: conda install -c conda-forge spec2nexus

  • Updated format for new Change History entries.

Breaking Changes#

The plugin system was rebuilt to make it easier to write and load plugins, especially custom, user-provided plugins.

New Features and/or Enhancements#

Added another way to access scans, using Python’s slicing interface. See the Slice Parameters section for more details and examples.

Add new diffractometer configuration reports:

  • str(scan.diffractometer): minimal view of scan

  • scan.diffractometer.print_brief(scan) : content similar to SPEC’s wh

  • scan.diffractometer.print_all(scan) : content similar to SPEC’s pa

Documentation reorganized and using new Furo theme.

New documentation of the NeXus file structure.

Fixes#

  • eznx: needs to return text as str (not bytes).

  • twoc: diffractometer geometry has 2-D lattice and reflection(s)

Maintenance#

  • Optimize initial load times for data files.

  • Code tests now use real examples of non-zero MCA data using files with both single and multiple MCA detectors.

  • Tests of code using Python 3.7, 3.8, 3.9, 3.10

  • All unit test code now in-source using pytest

  • Code is now compliant with PEP8 (Python code style guide).

  • Increase number of unit tests to improve code coverage (now ~95%).

  • Resume use of test code coverage reporting: https://coveralls.io/github/prjemian/spec2nexus

Deprecations#

  • Python versions lower than 3.7 are no longer supported.

Contributors#

  • Radu Abrudan


Older Releases#

2021.1.11:

released 2022.02.24

  • re-release due to documentation publishing workflow problem

2021.1.10:

released 2022.02.24

  • re-release due to documentation publishing workflow problem

2021.1.9:

released 2022.02.24

2021.1.8:

released 2020.11.10

  • #221

    move CI from travis-ci to Github Actions, test with python 3.8

  • #217

    raise ValueError when #L and #N lines do not agree

Note

Python 2 end of support

spec2nexus stopped development for Python 2 after release 2021.1.7, 2019-11-21. For more information, visit https://python3statement.org/.

2021.1.7:

released 2019-11-21

Note: Last version with support for Python 2

  • #213

    copy data file to gallery

  • #208

    add more diagnostics to gallery web page comments

  • #191

    write each positioner to NXpositioner group

  • #188

    catenate continued lines before parsing data

  • #186

    remove unused code

2021.1.6:

released 2019.11.01

  • #210

    add -c prjemian conda channel

2021.1.5:

released 2019.11.01

  • #209

    pyRestTable added to installation requirements

2021.1.4:

released 2019.10.18

  • #206

    specplot_gallery: replot shows all existing plots

2021.1.3:

released 2019.08.19 - only update plots with new content

  • #202

    specplot_gallery: switch to SVG (from PNG) for plots

  • #201

    spec: subsequent calls to read() duplicate scans – FIXED

  • #126

    spec: new update_available property

  • #108

    specplot_gallery: only update plots with new content

2021.1.2:

released 2019.08.15, plugin enhancements

  • #197

    plugins: handle empty empty #O0 or #P0 list

  • #195

    drop CII badge: not useful to spec2nexus

  • #190

    writer: link content into NXinstrument group

  • #51

    plugins: interpret #Gn control lines

2021.1.1:

released 2019.07.22, refactor

  • #181

    plugins: revised technique to load control line handlers

2021.1.0:

released 2019.07.15, new features

NEW

  • support for #UXML metadata

  • support for hklscan scans

  • improved support for mesh and hklmesh scans

  • #159

    handle #UXML metadata control lines

  • #155

    module: writer - recognize hklscan

  • #150

    module: writer - increase coverage of unit tests: mesh, hklmesh

  • #148

    module: eznx - increase coverage of unit tests

2021.0.1:

released 2019.07.13, plugin loading and documentation

  • #170

    describe how to write & load Control Line Handler plugins

  • #169

    announce deprecation of python 2

  • #165

    resolve conda build error

  • #149

    unit tests: units module

2021.0.0:

released 2019.07.12, API change affecting plugins

API change: Changed how plugins are defined and registered. Custom plugins must be modified and import code revised to work with new system.

  • #168

    plugins are now self-registering

  • #166

    fix conda packaging

2020.0.2:

released 2019.07.09, bug fixes and code review suggestions

NOTE: conda package is broken (no plugins directory). Only use pip install spec2nexus with this release.

  • #164

    post conda packages to aps-anl-tag channel

  • #161

    read files with no #E control line

  • #156

    LGTM code review

  • #153

    LGTM code review

2020.0.0:

released 2019.05.16, major release

  • #145

    unit tests for header content

  • #144

    eznx makeDataset() now recognizes if data is ndarray

  • #123

    Accept data files with no header control lines (#F #E #D #C sequence)

  • #113

    unit tests for eznx

  • #70

    remove h5toText, find this now in punx package

2019.0503.0:

released 2019.05.03, tag

  • #142

    DuplicateSpecScanNumber with multiple #F sections

  • #137

    (again) bug in #U control line handling

2019.0501.0:

released 2019.05.01, tag

  • #137

    bug in #U control line handling

  • #140

    change: #U data goes into <object>.U list (name changed from UserReserved)

2.1.0:

2019.04.26, release

  • #135

    switch to semantic versioning

  • #133

    support user control line “#U “ with plugin

  • #131

    support #MD control lines from apstools.SpecWriterCallback

  • #125

    fluorescence spectra in files for RSM3D

  • #120

    do not mock six package in documentation

  • #119

    delimiters in #H/#V lines with or without text values

  • #116

    process data from spock

    see [release notes](prjemian/spec2nexus)

    It takes a couple steps to upgrade an existing conda installation from version 2017.nnnn to newer version 2.1.0

    • add a declaration of spec2nexus < 2000 in the conda-meta/pinned file in the conda environment

    • conda update -c prjemian spec2nexus (should change to 2.1.0)

    It may still be necessary to uninstall and reinstall spec2nexus to effect an update:

    conda uninstall -y spec2nexus conda install -c prjemian spec2nexus

2019.0422.0:

(tag only)

  • tag as-is, for issue #131

2019.0321.0:

(tag only)

  • tag as-is, post conda noarch package and post to pypi

2017.901.4:
  • #62

    support Python3

  • #112

    merge py3-62 branch

  • #111

    Change raise statements to use parens around arguments. Affects issue #62

  • #114

    travis-ci for python 3.5 & 3.6

  • #107

    Problems accessing SpecDataFileScan.data

  • #95

    document final release steps

2017.711.0:
  • #110

    Ownership of info between #L/data & #S n

  • #109 Spaces in data labels on #L and other lines

2017.522.1:
  • #105 ignore extra content in #@CALIB control lines

  • #104 use versioneer (again)

  • #101

    documentation URL & date/time added to every gallery page

  • #100 conda package installs properly on Windows now

  • #99 BUG: specplot_gallery: plots of hklscan from file lmn40.spe

  • #98 BUG: specplot_gallery: identify as directory not found

  • #52 remove deprecated prjPySpec code

2017.317.0:
  • minor update of the 2017.3.0 release

2017.3.0:
  • #103 changed converters back to utils

  • #97 PyPI project description now formatted properly

  • #90 use versioneer (again)

2017-0202.0:
  • #99 fix list index error in hklscan when hkl are all constant

  • #96 combine steps when publishing to PyPI

2017-0201.0:
  • milestone punch list

  • #73 refactor mesh and MCA data parsing code

  • #67 apply continuous integration via travis-ci

  • #66 add verbosity option

  • #65 apply unit testing

  • #64 extractSpecScan: fixed list index out of range

  • #63 extractSpecScan: command line option to select range of scans

  • #56 specplot and specplot_gallery: add from USAXS instrument and generalize

2016.1025.0:

standardize the versioning kit with pyRestTable and pvWebMonitor

2016.1004.0:
  • #61 release info from git (dropped versioneer package)

2016.0829.0:
  • #60 Add new plugin test for XPCS plugin (thanks to John Hammonds)

2016.0615.1:
  • #57 keep information from unrecognized control lines,

  • #56 add specplot support,

  • #55 accept arbitrary number of MCA spectra

2016.0601.0:

match complete keys, use unix EOL internally, do not fail if no metadata

2016.0216.0:
  • #36 identify NIAC2014-compliant NeXus files

2016.0210.0:

bugfix: eznx.makeGroup() now correctly sets attributes on new group + documentation for NIAC2014 attributes

2016.0204.0:
  • #45 handle case when no data points in scan ,

  • #46 spec.getScan() ensures argument is used as str

2016.0201.0:

added spec.getScanNumbersChronological(), spec.getFirstScanNumber(), and spec.getLastScanNumber()

2016.0131.0:
  • #43 support new NeXus method for default/signal/axes/_indices,

2016.0130.0:

fixed #44

2015.1221.1:
  • #40 added versioneer support

2015.1221.0:
  • #39 read scans with repeated scan numbers

2015.0822.0:

extractSpecScan: add option to report scan heading data, such as positioners and Q

2015.0214.0:

h5toText: handle HDF5 ‘O’ data type (variable length strings)

2015.0127.0:

spec: ignore bad data lines

2015.0125.0:

spec: change handling of #L & #X, refactor detection of scanNum and scanCmd

2015.0113.0:

dropped requirement of lxml package

2014.1228.1:

spec: build mne:name cross-references for counters and positioners

2014.1228.0:

show version in documentation

2014.1028.0:

spec: quietly ignore unrecognized scan content for now

2014.1027.1:

spec: major changes in SPEC file support: custom plugins

  • spec based on plugins for each control line, users can add plugins

  • declared prjPySpec module as legacy, code is frozen at 2014.0623.0 release

  • added spec module to replace prjPySpec

2014.0623.0:

updated argparse settings

2014.0622.2:

added extractSpecScan.py to the suite from the USAXS project

2014.0410.0:

restore scan.fileName variable to keep interface the same for some legacy clients

2014.0404.1:

fix sdist utf8 problem, see: http://bugs.python.org/issue11638

2014.0404.0:

tree_api_parser moved back into NeXpy project

2014.0320.6:

handle multiple header sections in SPEC data file

2014.0320.5:

fix the new project URL

2014.0320.4:

Sphinx cannot build PDF with code-block in a footnote

2014.0320.3:

note the new home URL in the packaging, too, drop nexpy requirement, default docs theme

2014.0320.2:

tree_api_parse will go back into nexpy project, remove docs of it here

2014.0320.1:

allow readthedocs to build Sphinx without extra package requirements

2014.0320.0:
  • new home page at http://spec2nexus.readthedocs.org, easier to publish there

  • move common methods from __init__.py so docs will build at readthedocs.org

  • new test case fails existing SPEC reader, ignore blank lines

2014.03.11:

documentation

2014.03.09:

h5toText: option to suppress printing of attributes, put URLs in command-line usage documentation, better test of is_spec_file()

2014.03.08:

fixed string writer and content display bug in eznx, added h5toText.py, prjPySpec docs improved again

2014.03.051:

prjPySpec now handles SPEC v6 data file header additions, add new getScanCommands() method

2014.03.04:

(2014_Mardi_Gras release) removed nexpy project requirement from setup, prjPySpec raises exceptions now

2014.03.02:

drops nexus tree API (and its dependencies) in favor of native h5py writer

Development: GitHub repository#

2014.02.20:

version number fits PEP440, LICENSE file included in sdist, more documentation and examples

2014-02-19:

reference published documentation (re-posted)

2014-02-19:

add documentation framework

2014-02-18:

fork to GitHub to make generally available

Development: NeXpy branch#

2014-01:

briefly, a branch in nexpy/nexpy

  • spec2nexus added during this phase

  • relies on nexpy.api.nexus for NeXus support

Production: USAXS livedata#

2010-2014:

production use

2000-2010:

Tcl code (readSpecData.tcl) in production use at APS sectors 32, 33, & 34