NICOS

Open-source scientific instrument control software

NICOS is a network-based control system written for neutron scattering instruments, originally at the MLZ. Its main goals are flexibility, ease of use and maintenance, and reusability.

NICOS allows remote control of scientific instruments via both interactive interfaces (GUI, command line) and a scripting system. The NICOS user scripts are written in Python with some minor restrictions. This choice allows for very flexible scripts for complex problems and easy interactive use at the same time.

Last release: v3.11.0

Open source

NICOS is an open-source project developed by an international collaboration.

Cross platform

Multi-platform with clients available on Windows, macOS and Linux.

Python/Qt powered

Written in Python, with a Qt graphical user interface.

Python based scripting and implementation

  • Based on hardware abstraction as "device" objects
  • Self-explanatory commands and device methods
  • Different instrument setups, changing dynamically at runtime
  • Full dry run of measurements supported
  • Common hardware driver backends such as Tango, Epics, and SECoP
  • Comfort features such as alarm system, electronic logbook

Highly configurable user interfaces

  • All important commands available as GUI actions
  • Features separated into panels, composition of panels specific for each instrument
  • Dynamic reconfiguration based on available hardware
  • Visualization of measured data and instrument state history
  • Separate status monitoring for overhead displays

Companion projects

  • Entangle: Framework for Tango servers, and collection of device drivers, MLZ
  • PILS: Specification for PLC-SCADA communication interface, MLZ/ESS
  • Frappy: Python implementation of SECoP, MLZ/PSI
  • Octopy: SECoP/MQTT broker, ESS
  • Marche: Server control daemon, MLZ