Open Source · GPLv3

RapidPy — Python rock
magnetometer control
for the modern era.

RAPID is being rewritten from legacy 32-bit Visual Basic 6 into a clean Python 64-bit stack — keeping the same instrument protocols while adding live plotting, CSV export, and a maintainable open codebase.

5
Released modules
64-bit
Native Python
PySide6
Modern UI
2026
Active development

Why RapidPy?

From legacy VB6
to maintainable Python

The original RAPID system was written in Visual Basic 6 and has run rock magnetism labs reliably for decades. As Windows evolves and VB6 becomes harder to maintain, RapidPy provides a drop-in module-by-module replacement — same instrument protocols, modern codebase.

  • Same hardware — no instrument changes needed
  • 64-bit executables, no 32-bit compatibility shims
  • Open source and community-maintainable
  • Live plotting and CSV export built in
  • Staged rollout — run new and old panels side by side
VB6
Visual Basic 6 · 32-bit · Windows only
Python
PySide6 · 64-bit · PyInstaller bundles
Python 3.13
PySide6 / Qt6
pyqtgraph
PyInstaller
Conda
GitHub Actions

Released Apps

Subsystem control modules

Each module is a self-contained executable — operators can run only the panels they need without installing the full system.

RapidPy Gaussmeter Control screenshot
🧲
Released

Gaussmeter Control

Driver-backed operator panel for the FW Bell 908A USB gaussmeter. Live field readings, configurable sampling sessions with alarm thresholds, and an interactive hover tooltip on the session plot.

  • Backendusb5100.dll (64-bit USB) or gm0.dll (RS-232)
  • OutputTimestamped CSV session export
  • BundleIncludes FW Bell USB driver installer
View documentation →
RapidPy VRM Decay Logger screenshot
📉
Released

VRM Decay Logger

Three-axis SQUID live-view logger for viscous remanent magnetisation decay experiments. Configurable log/linear time steps, per-axis calibration, and direct legacy INI file loading.

  • BackendRS-232 SQUID serial stream (X/Y/Z)
  • CalLoads from legacy Paleomag_v3.INI
  • OutputTimestamped 3-axis CSV
View documentation →
RapidPy ADwin Communications Tester screenshot
Released

ADwin Communications Tester

Diagnostic and dense-capture panel for validating ADwin digital I/O, direct DAC and ADC channels, and board-timed loopback waveform acquisition before running AF demagnetisation hardware.

  • BackendADwin Gold II via Python bindings
  • PurposePre-flight comms bench test
  • OutputDense waveform capture + PNG / CSV export
View documentation →
RapidPy COM Port Mapper screenshot
🔌
Released

COM Port Mapper

Utility for detecting and assigning serial COM ports to each hardware device (gaussmeter, SQUID, motor controllers) before starting a measurement session.

  • DetectionAuto-probes port list
  • DevicesGaussmeter, SQUID, XY/Z motors
  • SavesJSON config read by all modules
🎛️
🎛️
In Progress

AF Tuner

Alternating-field coil tuning panel — Python port of frmAFTuner. Manages ADwin-driven AF ramps, relay selection, and field calibration curves.

  • VB6 srcfrmAFTuner.frm
  • BackendADwin AF ramp via adwin_af.py
📐
📐
In Progress

XY Sample Changer

Sample queue prep and XY table control panel — port of frmChanger. Handles HomeToCenter and MoveToCorner routines with limit-switch guidance.

  • VB6 srcfrmChanger.frm
  • MotorQuicksilver XY via hardware.py
⚗️
⚗️
In Progress

RAPID v4 Main Shell

Unified operator interface replacing the VB6 MDI shell. Sidebar navigation across Sample Queue, Sequence Builder, Live Measurement, and System Settings. Phase 2 complete: all dialogs (Zijderveld plots, SQUID comm, IRM/ARM, vacuum, sample select, debug console) fully wired.

  • VB6 srcfrmProgram.frm (MDI orchestrator)
  • Phase2 of 4 — UI complete, backend Phase 3
  • PanelsDashboard, Queue, Sequence, Measure, Settings
📐
📐
Released

Zijderveld Viewer

Standalone demagnetisation data viewer: Zijderveld diagram, Lambert equal-area stereonet, and intensity-decay curve. Loads CSV files or uses built-in synthetic demo data. Runs independently of all hardware.

  • PlotsZijderveld, stereonet, intensity decay
  • InputCSV (label, N, E, U columns)
  • DepsPySide6 + pyqtgraph

Codebase

Architecture

A shared hardware abstraction layer sits beneath all subsystem apps, keeping driver code in one place and subsystem UIs thin.

RAPID/
├── RapidPy/
│   ├── rapidpy_common/         # Shared layer
│   │   ├── ui.py               # UMN maroon/gold style sheet
│   │   ├── hardware.py         # Quicksilver motor protocol + motion helpers
│   │   ├── adwin_af.py         # ADwin AF ramp backend
│   │   └── gaussmeter.py       # gm0.dll / FW Bell wrapper
│   │
│   ├── gaussmeter_control/     # ✅ Released
│   ├── vrm_logger/             # ✅ Released
│   ├── adwin_comms/            # ✅ Released
│   ├── af_tuner/               # 🔧 In progress
│   ├── changer_xy_control/     # 🔧 In progress
│   ├── updown_control/         # 🔧 In progress
│   ├── dc_motor_control/       # 🔧 In progress
│   ├── zijderveld_viewer/      # ✅ Released — standalone plot viewer
│   └── rapid_main/             # 🔧 Phase 2 — full system shell
│
├── installer/               # PyInstaller specs + Inno Setup
├── docs/                    # User and developer manuals
└── VB6/                     # Original VB6 source (reference)

Transition Plan

Migration roadmap

Subsystem-by-subsystem replacement, each validated against real hardware before the next one begins.

2024 — Phase 1
Instrument drivers & shared layer
Python wrappers for gm0.dll, FW Bell usb5100.dll, Quicksilver motor protocol, and ADwin AF ramp. UMN maroon/gold Qt style sheet.
2025 — Phase 2
Core operator panels released
Gaussmeter Control, VRM Decay Logger, and ADwin Communications Tester released as standalone Windows executables. Deployed at IRM, University of Minnesota.
2025–2026 — Phase 3
Motor control & AF panels
XY changer, up/down vertical axis, DC motor control, and AF tuner panels. All panels validated against hardware limits and safety interlocks.
May 2026 — Phase 4
RAPID v4 System Shell — Phase 2 complete
Full operator UI shell (rapid_main) reaches Phase 2: all 8 settings tabs populated, 9 dialog windows wired (Zijderveld plots, SQUID comm, IRM/ARM, vacuum, sample select, debug console), standalone zijderveld_viewer utility released. Backend hardware integration (Phase 3) now active.
2026→
Full system orchestration
Measurement flow engine, live SQUID & ADwin comms, file export, and calibration routines. Full VB6 parity with no parallel VB6 required.

Get involved

RAPID is open source under GPLv3. Bug reports, hardware compatibility notes, and pull requests are welcome.

View Repository Report an Issue