Skip to main content

Smart MCA for DT5771 Python Library

Project description

SmartMCA Python Library

High-level Python client library to control Nuclear Instruments Smart Digital MCA firmware (e.g. DT5771) over an HTTP/REST interface.

It provides typed configuration objects, parameter validation, and convenience helpers for:

  • Analog front-end configuration
  • Digital I/O and trigger routing
  • MCA processing (trigger, energy, baseline, pile-up rejection)
  • Acquisition presets, MCS and statistics
  • Oscilloscope readout and histogram retrieval

The full user documentation is available here


Features

  • Simple connection handling (login/logout, cookies, error reporting)
  • Pythonic configuration objects mirroring firmware registers
  • Enumerations for all categorical parameters (trigger modes, energy algorithms, etc.)
  • High-level acquisition control (start/stop/reset, presets, auto-save)
  • Readout of MCA statistics, MCS data, oscilloscope traces, histograms
  • Can be used both from a remote PC and from the embedded Jupyter environment on the instrument

Installation

From PyPI

pip install smartmca

From source (this repository)

git clonehttps://gitlab.nuclearinstruments.eu/public-repo/dt5771/smart-mca-python-library.git
cd smart-mca-python-library

# (optional) create a virtualenv
python -m venv .venv
source .venv/bin/activate  # on Windows: .venv\\Scripts\\activate

pip install -e .

Quick start

Minimal example showing how to connect to a board, configure a couple of parameters and acquire an energy spectrum.

from smartmca import (
    connect,
    disconnect,
    get_mca_configuration,
    set_mca_configuration,
    acquisition_start,
    acquisition_stop,
    histogram_get,
    ConfigAcquisition,
)

# 1. Connect to the instrument
url = "http://192.168.0.10"  # or "http://127.0.0.1" when running on-board
username = "user"
password = "password"  # change if you modified the default password on the device

if not connect(url, username, password):
    raise RuntimeError("Could not connect to SmartMCA server")

try:
    # 2. Read and adjust MCA configuration
    mca_cfg = get_mca_configuration()

    # Example: change some processing parameters
    # (see the MkDocs pages for the full list of fields)
    # mca_cfg.trigger_mode = TriggerMode.INTERNAL
    # mca_cfg.energy_mode = EnergyMode.TRAPEZOIDAL
    # mca_cfg.trap_shaping = 2000  # [ns]

    set_mca_configuration(mca_cfg)

    # 3. Start an acquisition
    result = acquisition_start()
    if result != "ok":
        raise RuntimeError(f"Acquisition start failed: {result}")

    # ... wait for statistics / preset condition using your own logic ...

    # 4. Read an energy histogram (rebin to 4096 channels)
    spectrum, status = histogram_get(
        ConfigAcquisition.SpectrumType.ENERGY,
        rebin=4096,
    )

    if status != "ok":
        raise RuntimeError(f"Histogram read failed: {status}")

    # `spectrum` is a list of counts per bin
    print(f"Number of channels: {len(spectrum)}")

finally:
    # 5. Stop acquisition and disconnect
    acquisition_stop()
    disconnect()

This is intentionally minimal. Refer to the configuration pages for the full list of parameters (analog, digital I/O, MCA processing, acquisition, oscilloscope).


Documentation

The full user guide is generated with MkDocs and published as GitLab Pages.

To build the documentation locally:

pip install -r requirements-mkdocs.txt

# From the repository root
mkdocs serve

Then open http://127.0.0.1:8000/ in your browser.

The documentation is organized as:

  • Home – overview and installation
  • Connection and System – connection helpers and system information
  • Configuration – analog and digital I/O, MCA processing, acquisition, oscilloscope
  • Data Acquisition & Readout – statistics, MCS, oscilloscope and histogram APIs

Versioning

Follow Semantic Versioning for library releases:

  • MAJOR – incompatible API changes
  • MINOR – new functionality in a backwards compatible manner
  • PATCH – backwards compatible bug fixes

Tag releases in Git and publish the same version on PyPI and GitLab pages when appropriate.


Contact / Support

This gives external users and colleagues a single place to start when using the library.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smartmca-0.1.9.tar.gz (33.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartmca-0.1.9-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file smartmca-0.1.9.tar.gz.

File metadata

  • Download URL: smartmca-0.1.9.tar.gz
  • Upload date:
  • Size: 33.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for smartmca-0.1.9.tar.gz
Algorithm Hash digest
SHA256 eada7cd130ffc05120cda6907ad9152151b086f91213434556cd4ce9fc7dab37
MD5 4819548b8c2f9faca46f1b7dd16bac01
BLAKE2b-256 70d945c96f1d7b42e131a80a091d068c528017711f521898425817c80752d843

See more details on using hashes here.

File details

Details for the file smartmca-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: smartmca-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for smartmca-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 7b43e08135b90388491cb92031cfff56b97116a45cdf84958d1acc8d9a24547d
MD5 d9c63f55e24499323992cbfd401b423e
BLAKE2b-256 c8e5cf52d6af15f519bc14e1a16d3a1fe5aba130027d4e7178ba985e85777f7f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page