Skip to content

Releases: datasophos/NexusLIMS

NexusLIMS 2.7.3

09 Jun 14:29

Choose a tag to compare

Welcome to version 2.7.3 of NexusLIMS!

Highlights

This release adds XML schema elements needed to support the dataset curation features introduced in NexusLIMS-CDCS 3.21.0-nx1. The Nexus Experiment schema now includes an optional <curation> block on each dataset for storing curator-assigned ratings and featured status, which the new public gallery uses to select and prioritize preview images. All existing records remain valid with no migration required on the backend side; run admin-upgrade-schema on the frontend after deploying 3.21.0-nx1 (see the frontend upgrading instructions for details).

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

New Features

Dataset curation schema elements (#116)

  • Added optional <curation> complex type to the Dataset element in nexus-experiment.xsd, which is displayed on the CDCS frontend:
    • image
  • <rating> child element (xs:integer, 1-5) stores curator-assigned quality scores
  • <featured> child element (xs:boolean) marks datasets for prominent display in the public gallery:
    • image
  • Change is fully backward-compatible; the block is absent when neither value is set

Documentation Improvements

3.21.0-nx1 frontend release documentation (#116)

  • Documented the public dataset gallery at /gallery/ including slide selection logic, keyboard navigation, and full-screen mode
  • Documented per-dataset rating and featured-status controls in the annotation panel and dataset tables
  • Expanded the production upgrade guide with a new admin-upgrade-schema step (including expected output), a manual web-UI fallback procedure, and a cdcs-production-upgrading anchor for cross-page linking
  • Updated administration docs with admin-update-xslt and admin-upgrade-schema command reference entries
  • Added Gallery Configuration section documenting NX_ENABLE_GALLERY, NX_GALLERY_FACILITY_NAME, NX_GALLERY_ROTATION_INTERVAL, and NX_GALLERY_LOGO environment variables
  • Updated compatibility matrix: 3.21.0-nx1 requires NexusLIMS backend 2.7.3+

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.7.3

# or
pip install nexuslims==2.7.3

# or, if installed from source:
git fetch
git checkout v2.7.3
uv sync

Full changelog

v2.7.2...v2.7.3

NexusLIMS 2.7.2

04 Jun 04:24

Choose a tag to compare

Welcome to version 2.7.2 of NexusLIMS!

Highlights

This release is maintenance-focused and does not include any end-user feature changes or runtime bug fixes, so upgrading is optional. It improves project maintenance and documentation around NexusLIMS frontend capabilities, fixes PR documentation preview deployment for closed pull requests, and speeds up local and CI test runs by running tests in parallel.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

Bug Fixes

Skip closed PR documentation previews

  • Skipped PR documentation preview deployment when the pull request has already closed, avoiding failed gh-pages updates after merge.

Documentation Improvements

Update NexusLIMS-CDCS compatibility documentation (#111)

  • Updated the frontend changelog and screenshot gallery for NexusLIMS-CDCS v3.21.0-nx0.
  • Documented sample and activity management in the annotator, inline title editing, the pending-changes modal, and multi-sample Bootstrap cards.
  • Restored a missing 2.7.0 changelog entry.
  • Added the v3.21.0-nx0 row to the version compatibility matrix.

Internal / Miscellaneous

Parallel test execution (#110)

  • Test suite now runs in parallel using pytest-xdist, reducing local and CI test time significantly.

Shared release workflow guidance

  • Moved the release workflow guidance into shared agent skill files so release preparation stays consistent across supported agent tooling.

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.7.2

# or
pip install nexuslims==2.7.2

# or, if installed from source:
git fetch
git checkout v2.7.2
uv sync

Full changelog

v2.7.1...v2.7.2

NexusLIMS 2.7.1

26 May 03:48

Choose a tag to compare

Welcome to version 2.7.1 of NexusLIMS!

Highlights

This is a patch release that fixes a bug in XML record generation where the <sample> element was missing its required id attribute. Without this fix, all <sampleID> references within acquisition activities in built records were dangling and unresolvable per the NexusLIMS schema.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact datasophos to discuss your needs!

Bug Fixes

  • Fixed missing id attribute on <sample> element in built XML records (#108) -- <sampleID> references within every acquisition activity were dangling and unresolvable per the NexusLIMS schema.

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.7.1

# or
pip install nexuslims==2.7.1

# or, if installed from source:
git fetch
git checkout v2.7.1
uv sync

Full changelog

v2.7.0...v2.7.1

NexusLIMS 2.7.0

25 May 02:15

Choose a tag to compare

Welcome to version 2.7.0 of NexusLIMS!

Highlights

This release adds per-user CDCS record ownership: NexusLIMS can now automatically look up or create a CDCS user account that matches the NEMO session user and assign uploaded records to that account. A companion setting gives you independent control over whether records are placed in the global public workspace. Together, these settings allow deployments to give individual researchers ownership of their own experimental records in CDCS.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

New Features

Per-user CDCS record ownership (#106)

  • New NX_CDCS_USER_OWNED_RECORDS setting (default false): when enabled, each uploaded record is assigned to a CDCS user account that matches the NEMO session user
  • NexusLIMS searches CDCS for an existing account by username, then by email, and creates one automatically if none exists
  • New NX_CDCS_ASSIGN_TO_PUBLIC_WORKSPACE setting (default true): controls whether uploaded records are placed in the global public workspace, independently of ownership
  • Both settings can be combined -- a record can be user-owned and publicly visible at the same time
  • Requires NX_CDCS_TOKEN to belong to a superuser account when NX_CDCS_USER_OWNED_RECORDS is enabled; user management failures never block the export (record is uploaded as admin-owned with a warning)

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.7.0

# or
pip install nexuslims==2.7.0

# or, if installed from source:
git fetch
git checkout v2.7.0
uv sync

Full changelog

v2.6.2...v2.7.0

NexusLIMS 2.6.2

27 Apr 02:51

Choose a tag to compare

Welcome to version 2.6.2 of NexusLIMS!

Highlights

This is a patch release fixing two bugs in the Tofwerk pFIB-ToF-SIMS preview generator that caused preview generation to fail for certain HDF5 acquisition files. Large pre-processed files (e.g. 500×256×256×259 float32 arrays ~32 GiB) would previously crash with an out-of-memory error; raw files whose NbrWrites attribute disagreed with the actual data shape by one would fail with a matplotlib ValueError. Both are now resolved.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

Bug Fixes

  • Tofwerk pFIB-ToF-SIMS preview generator: OOM and depth-profile shape mismatch (#105)
    • Replaced the full PeakData/PeakData[:] load with a write-by-write chunked reader, reducing peak memory from ~32 GiB to ~135 MB for a 500×256×256×259 acquisition.
    • Fixed a ValueError: x and y must have same first dimension in raw-file depth plots by deriving the x-axis from the actual EventList shape rather than the NbrWrites root attribute, which can disagree by one.

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.6.2

# or
pip install nexuslims==2.6.2

# or, if installed from source:
git fetch
git checkout v2.6.2
uv sync

Full changelog

v2.6.1...v2.6.2

NexusLIMS 2.6.1

10 Apr 04:59

Choose a tag to compare

Welcome to version 2.6.1 of NexusLIMS!

Highlights

This release brings a new nexuslims extract CLI command for quick single-file metadata extraction and preview generation, making it easier to inspect and debug microscopy files from the command line. The FEI TIFF extractor has been expanded to support both SEM and TEM TIFF formats, and the HyperSpy preview generator now handles EDAX .msa and .spc spectrum files. Several robustness fixes address edge cases in the DM3/DM4 extractor and blank 16-bit TIFF previews.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

New Features

Expanded FEI TIFF extractor with TEM support (#95)

  • QuantaTiffExtractor has been renamed to FeiTiffExtractor and now supports both FEI SEM (INI-style) and FEI TEM (<Root> XML) TIFF metadata formats
  • The old quanta_tif module is retained as a backward-compatibility shim -- no changes required to existing configurations
  • Added test coverage for FEI TEM bright-field image and SAED diffraction extraction paths

nexuslims extract CLI command (#96)

  • New command for single-file metadata extraction and preview generation directly from the terminal
  • Useful for inspecting files, debugging extractor behavior, and verifying instrument profiles without running a full record build

HyperSpy preview support for spectrum files (#97)

  • The HyperSpy preview generator now produces thumbnail plots for .msa and .spc spectrum file formats (EDAX)

Bug Fixes

  • Fixed KeyError exceptions in the DM3/DM4 extractor for files missing a Name key, 24-hour timestamps, and EELS TagGroups without an Operation key. (#98)
  • Fixed blank preview thumbnails for 16-bit TIFF images by applying a 2nd--98th percentile contrast stretch before converting to 8-bit. (#99)
  • Moved acceleration_voltage and stage_position to the base NexusMetadata class; added acquisition_device and horizontal_field_width to SpectrumMetadata. (#100)

Documentation Improvements

  • Added CLI reference and extractor documentation for the nexuslims extract command. (#101)
  • Documented the NexusLIMS-CDCS record annotator app with screenshots for the side panel, inline editing, and full-page editor entry points. (#103)

Internal / Miscellaneous

  • Updated CDCS REST API endpoint URLs to include trailing slashes, required for compatibility with NexusLIMS-CDCS 3.20.x; added a version compatibility reference page. (#91)
  • Added support and CI coverage for Python 3.13 and 3.14. (#93)

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.6.1

# or
pip install nexuslims==2.6.1

# or, if installed from source:
git fetch
git checkout v2.6.1
uv sync

Full changelog

v2.6.0...v2.6.1

NexusLIMS 2.6.0

20 Mar 03:57

Choose a tag to compare

Welcome to version 2.6.0 of NexusLIMS!

Highlights

This release brings three significant new capabilities to NexusLIMS. Records can now be exported directly to LabArchives electronic lab notebooks, making it easier to integrate NexusLIMS session summaries into your team's existing ELN workflow. A new interactive terminal-based database browser (nexuslims db view) lets you inspect instruments, sessions, and other database tables without leaving the command line. Finally, NexusLIMS now supports Tofwerk pFIB-ToF-SIMS HDF5 files, extending metadata extraction and preview generation to Tescan fibTOF instruments.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

New Features

LabArchives export destination (#87)

  • NexusLIMS records can now be exported to LabArchives electronic lab notebooks
  • When configured with LabArchives API credentials, the system automatically creates an organized folder structure by instrument
  • Uploads a formatted HTML session summary alongside the full XML record as an attachment
  • See the LabArchives Exporter documentation for configuration details

Interactive TUI database browser (#88)

  • Added nexuslims db view command that opens an interactive TUI browser for the NexusLIMS SQLite database, powered by Squall
  • Browse instruments, sessions, uploads, and other tables directly from the terminal
  • Filter rows and run custom SQL queries without needing an external database tool
  • See the nexuslims db view CLI reference for usage details

Tofwerk pFIB-ToF-SIMS HDF5 support (#90)

  • Added support for Tofwerk pFIB-ToF-SIMS HDF5 files (.h5)
  • NexusLIMS can now extract acquisition metadata from raw and post-processed fibTOF files produced by the Tescan pFIB-ToF-SIMS system
  • Preview image generation is also supported for these files
  • See the Tofwerk fibTOF extractor documentation for supported metadata fields

Installation

# if upgrading an existing uv tool install, run:
uv tool upgrade nexuslims

# for a new installation:
uv tool install nexuslims==2.6.0

# or
pip install nexuslims==2.6.0

# or, if installed from source:
git fetch
git checkout v2.6.0
uv sync

Full changelog

v2.5.1...v2.6.0

NexusLIMS 2.5.1

20 Feb 05:35

Choose a tag to compare

Welcome to version 2.5.1 of NexusLIMS!

Highlights

This is a patch release focused on dependency compatibility and installation improvements. The most notable fix allows NexusLIMS to install cleanly on ARM-based devices (such as a Raspberry Pi) without requiring manual compilation of native libraries. Several key dependencies have also been updated to their latest major versions.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

Bug Fixes

Fix lxml dependency constraint blocking Raspberry Pi installs (#85)

  • Fixed issue where NexusLIMS could not install easily on a Raspberry Pi device
    without significant compilation effort due to an outdated pinned dependency on lxml.

Internal / Miscellaneous

  • Updated dependencies: bumped lxml to v6, requests to v2.32+, python-dotenv to v1,
    textual to v8, Sphinx to v9, and ruff to v0.9; removed deprecated requests-ntlm
    and defusedxml dependencies. (#85)

Installation

# to upgrade an existing installation
uv tool upgrade nexuslims

# or
pip install -U nexuslims

# for a new installation:
uv tool install nexuslims==2.5.1

# or
pip install nexuslims==2.5.1

# or, if installed from source:
git fetch
git checkout v2.5.1
uv sync

Full Changelog

v2.5.0...v2.5.1

NexusLIMS 2.5.0

19 Feb 05:43

Choose a tag to compare

Welcome to version 2.5.0 of NexusLIMS!

Highlights

This release adds many new user-facing features and completes NexusLIMS's transformation into a first-class, installable Python package. NexusLIMS can now be installed, configured, and used with a single uv tool install nexusLIMS and configured interactively, with no source checkout required. All CLI functionality has been unified under a single nexuslims command with tab completion, and database management is now fully automated through a new nexuslims db sub-command. Two legacy entry points and scripts have been removed in favour of their modern replacements.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

Upgrade Instructions

Database schema upgrade required!

This release includes two schema migrations. After upgrading, run:

nexuslims db upgrade

The migrations make the following changes to your database:

  • New table: external_user_identifiers — stores mappings between NexusLIMS usernames and external system user IDs (NEMO, LabArchives, CDCS).
  • Removed columns from instruments: computer_name, computer_ip, computer_mount, and calendar_name (all were unused/deprecated).
  • Renamed column in instruments: schema_namedisplay_name.

If you have tooling that queries the instruments table directly by column name, update it to use display_name instead of schema_name.

Replace nexuslims-process-records with nexuslims build-records

The standalone nexuslims-process-records command has been removed. Update any scripts, cron jobs, or systemd units that invoke it:

# Before
nexuslims-process-records

# After
nexuslims build-records

All flags supported by the old command (-n, -vv, etc.) are available on the new command.

Replace manual SQL scripts with nexuslims db

The NexusLIMS_db_creation_script.sql file and legacy migrate_db.py scripts have been removed. Use the new nexuslims db CLI instead:

  • New installation: run nexuslims db init to create and stamp the database.
  • Existing installation: run nexuslims db upgrade to apply any pending migrations.

What's New

  • Pip-installable package: NexusLIMS is now usable directly from a pip or uv installation, without requiring a source code checkout. The recommended installation method is uv tool install nexusLIMS, which makes all CLI commands globally available. Standard pip install nexusLIMS and uv pip install nexusLIMS also work. All commands function immediately after install, even without a pre-existing .env file. (#74)
  • Unified nexuslims CLI with tab completion: All commands (build-records, config, db, instruments) are now subcommands of a single nexuslims entry point. Run nexuslims completion to enable shell tab completion. (#76, #78)
  • nexuslims db command: Manage database lifecycle (init, upgrade, downgrade, current, check) without using SQL directly at all. Migrations are shipped inside the package and automatically located regardless of install method. Advanced users can access the full Alembic CLI via nexuslims db alembic. (#67)
  • nexuslims config edit TUI: Interactive terminal form for editing the .env configuration, organised into seven tabs. Supports adding, editing, and deleting NEMO harvester instances and toggling optional sections (eLabFTW, email). (#70)
  • nexuslims instruments manage TUI: Interactive terminal UI for listing, adding, editing, and deleting instruments — no more direct SQLite access. (#69)
  • nexuslims instruments list: Print a summary table of all instruments with session and record counts. Supports --format json for scripting. (#83)
  • Preflight checks in build-records: Common misconfigurations (outdated schema, bad timezones, unwritable directories, unreachable export targets, etc.) are caught and reported with actionable messages before any work begins. (#82)
  • Standalone extractor library: parse_metadata() and the registry API now work without a .env, database, or NEMO/CDCS deployment. Ideal for use in Jupyter notebooks. (#84)
  • User identity mapping: While not user-facing, a new system that allows mapping user identities across external services (NEMO, LabArchives, CDCS) was added, which will enable consistent ownership of records throughout exports in future versions. (#68)

Bug Fixes

  • Fixed module-level settings access in nexusLIMS/harvesters/__init__.py that caused import-time validation errors when NexusLIMS was imported without a configured .env. CA bundle configuration is now loaded lazily. (#74)

Documentation Improvements

Internal / Miscellaneous

  • Comprehensive test infrastructure unification: centralized singleton management, unified test instrument data with a single TEST-TOOL PID, and automatic test marking by location (unit/integration). (#73)

Full Changelog: v2.4.1...v2.5.0

NexusLIMS 2.4.1

07 Feb 04:21

Choose a tag to compare

Welcome to version 2.4.1 of NexusLIMS!

This release adds new CLI features for date filtering and configuration management, fixes several bugs, and improves documentation.

As always, if you are looking for assistance with configuration or deployment of NexusLIMS, please contact Datasophos to discuss your needs!

New features

Date Filtering for Record Processing (#66)

  • Added --from and --to options to nexuslims-process-records for filtering sessions by date range
  • Process specific time periods, e.g., --from 2025-01-01 --to 2025-01-31 for all January 2025 sessions
  • Both date bounds are inclusive (the --to date includes all sessions ending by 23:59:59 on that day)
  • Changed default --from value to one week prior to today's date. Use --from=none and do not supply --to to disable date filtering and harvest usage events from all time

Configuration Management (#64)

  • Added nexuslims-config dump and nexuslims-config load commands for exporting/importing full NexusLIMS configuration as JSON
  • Makes it straightforward to migrate configurations between deployments
  • Running nexuslims-process-records -v (or -vv) now prints the effective configuration (with secrets redacted) at startup

SSL Verification Control (#45)

  • Added NX_DISABLE_SSL_VERIFY configuration option to disable SSL certificate verification for all outgoing HTTPS requests
  • Intended for local development environments only

Bug fixes

Gatan Diffraction Metadata (#61)

  • Fixed validation error when extracting metadata from Gatan .dm3 Diffraction files
  • magnification and stage_position are now only written as core fields for dataset types whose schema declares them (Image/SpectrumImage)
  • For other types, values are routed to extensions or dropped when empty

eLabFTW Export Reliability (#62)

  • Fixed eLabFTW export failure when the Location header differs from base_url in host or port (e.g., localhost deployments)
  • Experiment and upload IDs now extracted from the last path segment of the Location URL instead of relying on prefix-stripping

Documentation improvements

  • CLI Reference (#47): Added comprehensive documentation covering all nexuslims-process-records command-line options including new date filtering
    flags
  • Configuration Example (#65): Updated .env.example to match current configuration surface, fixed stale repository links, removed unused variables, added missing NX_EXPORT_STRATEGY
  • Configuration Reference (#63): Added NX_EXPORT_STRATEGY to configuration reference with descriptions of each valid value
  • Local Deployment (#44): Added note about setting NX_CERT_BUNDLE_FILE when using mkcert for local test deployments

Miscellaneous

  • Updated project homepage and documentation links for PyPI release info
  • Fixed documentation deployment workflow issues

Full Changelog: v2.4.0...v2.4.1


Installation

pip install nexuslims==2.4.1

# or
uv add nexuslims==2.4.1

# or, if installed from git:
git fetch
git checkout v2.4.1
uv sync

Upgrade Notes

No breaking changes or database migrations required for this release.