Skip to main content

A modular software for working with scientific devices and combining them into unified multifunctional setup

Project description

Atomize - Split your spectrometer apart!


A modular open source software for working with scientific devices and combining them into spectrometer.
The general idea is close to FSC2 software developed by Jens Thomas Törring.
Remote control of spectrometers is usually carried out using home-written programs, which are often restricted to doing a certain experiment with a specific set of devices. In contrast, the programs like FSC2 and Atomize are much more flexible, since they are based on a modular approach for communication with device and scripting language (EDL in FSC2; Python in Atomize) for data measuring.

Atomize[^1] uses liveplot library based on pyqtgraph as a main graphics library. Liveplot was originally developed by Phil Reinhold. Since then, several improvements have been made to use it in Atomize, and it has been directly embedded into Atomize.

Python Programming Language is used inside experimental scripts, which opens up almost unlimited possibilities for raw experimental data treatment. In addition, with PyQt, one can create experimental scripts with a simple graphical interface, allowing users not familiar with Python to use it. Several examples of scripts (with dummy data) are provided in /atomize/tests/ directory, including a GUI script with extended comments inside. Also a variant of the Atomize with GUI Control Window extension can be found here.

Currently there are more than 200 device specific and general functions available for over 27 different devices, including 6 series of devices. If you would like to write a module for the device that is not currently available, please, read this short instruction.

Detailed documentation can be found here.

Status

At the moment, Atomize has been tested and is currently used for controlling several EPR spectrometers using a broad range of different devices. Examples of experimental scripts for standard pulsed EPR methods can be found in /atomize/tests/pulse_epr directory. The program has been tested on Ubuntu 18.04 LTS, 20.04 LTS, and 22.04 LTS.

Contents

Requirements

Basic usage

  1. Atomize

Install from PyPi:

pip3 install atomize-py

Run GUI from terminal:

atomize

To communicate with Liveplot inside a script the general function module should be imported.

import atomize.general_modules.general_functions as general
general.plot_1d(arguments)

The text editor used for editing can be specified in atomize/config.ini. The Telegram bot token and message chat ID can be specified in the same file.

  1. Setting up general configuration data

The /atomize directory contains a general configuration file with the name config.ini. It should be changed at will according to the description below:

[DEFAULT]
# configure the text editor that will opened when Edit is pressed:
editor = subl	# Linux
editorW = /path/to/text_editor/on/Windows/	# Windows
# configure the directory that will opened when Open 1D Data or Open 2D Data
# feature is used in Liveplot:
open_dir = /path/to/experimental/data/to/open/
# configure the directory that will be opened when Open Script is pressed:
script_dir = /Atomize/atomize/tests
# configure Telegram bot
telegram_bot_token = 
message_id = 
  1. Using device modules

To communicate with a device one should:

  1. modify the config file (/atomize/device_modules/config/) of the desired device accordingly. Choose the desired protocol (rs-232, gpib, ethernet, etc.) and correct the settings of the specified protocol in accordance with device settings. A little bit more detailed information about protocol settings can be found here.
  2. import the module or modules in your script and initialize the appropriate class. A class always has the same name as the module file. Initialization connect the desired device, if the settings are correct.
import atomize.device_modules.Keysight_3000_Xseries as keys
import atomize.device_modules.Lakeshore331 as tc
dsox3034t = keys.Keysight_3000_Xseries()
lakeshore331 = tc.Lakeshore331()
name_oscilloscope = dsox3034t.oscilloscope_name()
temperature = lakeshore331.tc_temperature('CH A')

The same idea is valid for plotting and file handling modules. The description of available functions is given below.

import atomize.general_modules.general_functions as general
import atomize.general_modules.csv_opener_saver_tk_kinter as openfile
file_handler = openfile.Saver_Opener()
head, data = file_handler.open_1D_dialog(header = 0)
general.plot_1d('1D Plot', data[0], data[1], label = 'test_data', yname = 'Y axis', yscale = 'V')
  1. Experimental scripts

Python is used to write an experimental script. Examples (with dummy data) can be found in /atomize/tests/ directory.

Available devices

Temperature Controllers

  • Lakeshore (GPIB, RS-232) 325; 331; 332; 335; 336; 340; Tested 01/2021
  • Oxford Instruments (RS-232) ITC 503; Tested 01/2021
  • Termodat (RS-485) 11M6; 13KX3; Tested 04/2021
  • Stanford Research (TCP/IP Socket) PTC10; Tested 07/2021
  • Scientific Instruments (TCP/IP Socket, RS-232) SCM10 Temperature Monitor; 07/2022

Lock-in Amplifiers

  • Stanford Research Lock-In Amplifier (GPIB, RS-232) SR-810; SR-830; SR-850; Tested 02/2021
  • Stanford Research Lock-In Amplifier (GPIB, RS-232, Ethernet) SR-860; SR-865a; Tested 01/2021

Oscilloscopes

  • Keysight InfiniiVision 2000 X-Series (Ethernet); Untested
  • Keysight InfiniiVision 3000 X-Series (Ethernet); Tested 06/2021
  • Keysight InfiniiVision 4000 X-Series (Ethernet); Untested
  • Tektronix 3000 Series (Ethernet); Tested 09/2022
  • Tektronix 4000 Series (Ethernet); Tested 01/2021
  • Tektronix 5 Series MSO (Ethernet); Tested 12/2023

Digitizers

  • Spectrum M4I 4450 X8; Tested 08/2021
  • Spectrum M4I 2211 X8; Tested 01/2021 The original library was written by Spectrum.
  • Insys FM214x3GDA as ADC; Tested 03/2025 The device is available via ctypes. The original library can be found here.

Oscilloscope Wave Generators

  • Wave Generator of Keysight InfiniiVision 2000 X-Series (Ethernet) Available via corresponding oscilloscope module.
  • Wave Generator of Keysight InfiniiVision 3000 X-Series (Ethernet) Available via corresponding oscilloscope module.
  • Wave Generator of Keysight InfiniiVision 4000 X-Series (Ethernet) Available via corresponding oscilloscope module.

Arbitrary Wave Generators

  • Spectrum M4I 6631 X8; Tested 07/2021 The original library was written by Spectrum.
  • Insys FM214x3GDA as DAC; Tested 03/2025 The device is available via ctypes. The original library can be found here.

Pulse Programmers

  • Pulse Blaster ESR 500 Pro; Tested 06/2021 The device is available via ctypes. The original C library was written by SpinCore Technologies.
  • Pulse Programmer Micran based on Insys FMC126P; Tested 12/2023
  • Insys FM214x3GDA as multichannel TTL pulse generator; Tested 03/2025 The Insys device is available via ctypes. The original library can be found here.

Frequency Counters

  • Agilent Frequency Counter (GPIB, RS-232) 53181A; 53131A/132A; Tested 02/2021 5343A; GPIB, Tested 02/2023
  • Keysight Frequency Counter (GPIB, RS-232, Ethernet) 53230A/220A; Untested

Magnetic Field Controllers

  • Bruker BH15 (GPIB); Tested 01/2021
  • Bruker ER032M (GPIB); Available via BH15 module
  • Bruker ER031M (RS-232 using arduino emulated keyboard); Tested 01/2021
  • Homemade magnetic field controller (RS-232); Tested 04/2023

Microwave Bridge Controllers

  • Micran X-band MW Bridge (TCP/IP Socket); Tested 06/2021
  • Micran X-band MW Bridge v2 (TCP/IP Socket); Tested 12/2022
  • Micran Q-band MW Bridge; Tested 12/2023

Gaussmeters

  • Lakeshore 455 DSP (RS-232); Tested 01/2021
  • NMR Gaussmeter Sibir 1 (UDP/IP Socket); Tested 04/2024

Power Supplies

  • Rigol DP800 Series (RS-232, Ethernet); Tested 01/2021
  • Stanford Research DC205 (RS-232); Untested
  • Stanford Research PS300 High Voltage Series (RS-232, GPIB); Untested

Magnet Power Supplies

  • Cryomagnetics 4G (Ethernet); Tested 11/2023

Delay Generators

  • Stanford Research DG535 (GPIB); Untested

Moisture Meters

  • IVG-1/1 (RS-485); Tested 02/2023

Balance

  • CPWplus 150 (RS-232); Tested 01/2021

Other

  • RODOS-10N Solid-State Relay (Ethernet); Tested 01/2021
  • Owen-MK110-220.4DN.4R Discrete IO Module (RS-485); Tested 04/2021
  • Cryomagnetics LM-510 Liquid Cryogen Monitor (TCP/IP Socket); Tested 07/2022
  • Cryomech CPA2896, CPA1110 Digital Panels (RS-485); Tested 07/2022

Available general functions and modules

Available plotting functions

Available functions for devices

Temperature controllers

Oscilloscopes

Digitizers

Oscilloscope wave generators

Arbitrary wave generators

Pulse programmers

Lock-in amplifiers

Frequency counters

Magnetic field controllers

Microwave bridge controllers

Gaussmeters

Power supplies

Magnet power supplies

Delay generators

Moisture meters

Balance

Other

Screenshots

[^1]: Atomize = A + TOM + ize; A stands for Anatoly, main developer; TOMo stands for the International TOMography center, our organization

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

atomize_py-0.2.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

atomize_py-0.2.0-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file atomize_py-0.2.0.tar.gz.

File metadata

  • Download URL: atomize_py-0.2.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for atomize_py-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fd9067b6c484c509825840ee3c2d96e2b95b2bd5f2ff9c2c5673baaf7ceaa8e8
MD5 097654dfe4e2fd44b2d1c136e2f7bfda
BLAKE2b-256 928282d2430a12cce0db6793af62196e22211482413c9c6dfad030c6223468aa

See more details on using hashes here.

File details

Details for the file atomize_py-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: atomize_py-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for atomize_py-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f02e0b0ca21cb6ff495105df7f30a34f5eb9599f2c5fa70f92888fd82b05737d
MD5 7a0d3de804be3f5d457b99fdf46dd3a9
BLAKE2b-256 7e656ac13dd1ac2426de1f7b45e7371325fe403011961dba18e71645f342f713

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