<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">I am pleased to announce the release of v2.1.0 of the NeXpy and nexusformat packages.</span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">At the recent NIAC meeting, there was concern about the state of NeXus validation tools now that cnxvalidate is no longer supported.
 Although NeXpy has had validation tools since v2.0.0, there were reports of Python exceptions suggesting it was not sufficiently robust to handle all files. I have now looked into those issues and discovered that they were either due to poor handling of anomalies,
 such as symbol tables that contained no symbols, or linting errors in the NXDL files themselves. I have now performed a thorough review of the code, with the support of my favorite LLM, and can report that the tools now work, without exception, on all the
 files that are in the NeXus ‘exampledata’ repository, both regular and auto-generated files. Because some of the issues were with malformed NXDL files, I have now added a linting option. </span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">There are several command-line scripts, which can also be run within the NeXpy GUI Validation Panel.</span></p>
<ul style="list-style-type: disc;">
<li style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal; margin: 0px;">
<div role="presentation"><b>nxcheck</b><br>
Checks a group within a NeXus file against the base class definitions, reporting on missing fields or groups, invalid values, etc.</div>
</li><li style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal; margin: 0px;">
<div role="presentation"><b>nxvalidate</b><br>
Validates a NeXus file against an application definition, which is either read from the file’s ‘definition’ field or specified explicitly.</div>
</li><li style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal; margin: 0px;">
<div role="presentation"><b>nxinspect</b><br>
Output the contents of a NXDL base class.</div>
</li><li style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal; margin: 0px;">
<div role="presentation"><b>nxlint</b><br>
Checks NXDL files for structural errors, such as violations of the NXDL schema. </div>
</li></ul>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">The latest NeXus definitions are stored within the package, but it is possible to specify a different set of definitions as a command-line
 switch or an environment variable. Further details are available online (<a href="https://nexpy.github.io/nexpy/" data-outlook-id="27aa4dc9-0789-44e5-ab32-85489d11f484" style="margin-top: 0px; margin-bottom: 0px;"><u>https://nexpy.github.io/nexpy/</u></a>).</span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">If you encounter any bugs or believe any of the warnings/errors are incorrect, please report them to the nexusformat issues page:</span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><a href="https://github.com/nexpy/nexusformat/issues" data-outlook-id="0d9dfa6f-b96b-4cba-b4b8-6379bbda6976" style="margin-top: 0px; margin-bottom: 0px;">https://github.com/nexpy/nexusformat/issues</a></span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><img src="cid:47005413-72E5-43F1-855B-28C6AE550DDF" alt="Pasted Graphic 27.png" id="img-eb7b8ce8-a540-403e-b54b-e25cf95d6044" style="max-width: 747px; margin-top: 0px; margin-bottom: 0px;"></span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><u>Installation</u></span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">NeXpy is available on PyPI and conda-forge.</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal;"> </span><span style="font-family: "Helvetica Neue"; font-size: 12px; color: rgb(0, 0, 0);">$ pip install nexpy</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">or </span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal;"> </span><span style="font-family: "Helvetica Neue"; font-size: 12px; color: rgb(0, 0, 0);">$ conda install -c
 conda-forge nexpy</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">If you don’t intend to use the NeXpy GUI, the command-line tools can be installed with</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal;"> </span><span style="font-family: "Helvetica Neue"; font-size: 12px; color: rgb(0, 0, 0);">$ pip install nexusformat</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">or </span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0); line-height: normal;"> </span><span style="font-family: "Helvetica Neue"; font-size: 12px; color: rgb(0, 0, 0);">$ conda install -c
 conda-forge nexusformat</span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><br>
</span></p>
<p style="line-height: normal; margin: 0px; min-height: 15px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">With best regards,</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">Ray Osborn</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">-- </span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">Ray Osborn, Senior Scientist</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">Materials Science Division</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">Argonne National Laboratory</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">Argonne, IL 60439, USA</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);">Phone: +1 (630) 252-9011</span></p>
<p style="line-height: normal; margin: 0px;"><span style="font-family: "Helvetica Neue"; font-size: 13px; color: rgb(0, 0, 0);"><a href="mailto:ROsborn@anl.gov" data-outlook-id="25d9eb8b-4929-44e5-8d57-7c525c549c92" style="margin-top: 0px; margin-bottom: 0px;"><u>Email:
 ROsborn@anl.gov</u></a></span></p>
<div style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="direction: ltr; font-family: Aptos, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
</body>
</html>