Skip to content
duserzymPublic

About

New Python GUI software migrated from old VB6 Paleomag2014 software code used at the IRM to run the Hargraves magnetometer Rapid system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

RapidPy automated sample-handling system

RAPID — RapidPy Paleomagnetic System

VB6 → Python 64-bit modernisation of the UC Berkeley RAPID paleomagnetic magnetometer controller.

The original VB6 source is archived at sourceforge.net/projects/paleomag (GPLv3). The VB6/ folder in this repo contains the Berkeley-specific variant operated on the Hargraves magnetometer, upgraded 2024-2025 and deployed at the Institute for Rock Magnetism (University of Minnesota, 2025).

Modern replacements live under RapidPy/ — self-contained Python apps with a shared hardware abstraction layer and a unified UMN maroon-and-gold UI style.


Current Progress

The integrated main app now has a portable Windows pilot build with six bundled helper tools. Launch dist/RapidPyMain/RapidPyMain.exe; copy the entire directory to move it to another computer. See the portable release and operator guide for verification, rebuilding, operator workflow, and the remaining VB6 replacement gates.

RapidPy is now beyond the initial three-app milestone. The repository currently contains seven released modules, additional in-progress migration panels, and bench or support utilities, with public app pages under the GitHub Pages site and recent one-file Windows builds landing in the repo-root dist/ folder.

Module Snapshot

App Status Module Current packaging Documentation
Gaussmeter Control Released RapidPy/gaussmeter_control dist/RapidPy_Gaussmeter.exe Manual · App page
VRM Decay Logger Released RapidPy/vrm_logger dist/RapidPyVRM.exe Manual · App page
ADwin Communications Tester Released RapidPy/adwin_comms dist/RapidPyADWin.exe Manual · App page
COM Port Mapper Released RapidPy/com_port_mapper dist/RapidPyCOMMapper.exe README · App page
XY Sample Changer Released RapidPy/changer_xy_control dist/RapidPyChangerXY.exe Manual · App page
Up/Down Control Released RapidPy/updown_control dist/RapidPyUpDown.exe Manual · App page
RapidPy DataViewer Released utility RapidPy/data_viewer Source launcher today App page
AF Tuner In progress RapidPy/af_tuner dist/RapidPyAFTuner.exe README · App page
RAPID v4 System Shell In progress RapidPy/system_shell dist/RapidPySystemShell.exe README
DC Motor Control Migration / bench RapidPy/dc_motor_control dist/RapidPyDCMotors.exe README
AF Clip Test Bench utility RapidPy/af_clip_test dist/RapidPyAFClipTest.exe README

Recent Highlights

  • Tiling, macOS-glass main app: rapid_main panels and tool windows now tile like Omarchy/Hyprland. You get workspaces 1–5, drag-to-dock, monocle, Ctrl+Alt key bindings, a launcher, and a classic single-page mode. The window has a macOS-style glass look with traffic-light tiles. See the tiling canvas guide.
  • Windows fit the screen: standalone apps open at their requested size up to 94% of the screen, never clip their content, and can be maximised. The old shared guard capped them at 35% of the screen width.
  • SQUID settings follow VB6: 1200,N,8,1, a 1 s read delay and one block per position. Import Paleomag_v3.INI on the lab PC before hardware runs.
  • SQUID read rate, live stream and motion capture: the operator sets the SQUID sample rate. A live stream window shows the filtered signal and its spectrum. Opt-in continuous capture records the SQUID while the specimen descends the borehole and turns 90°, then fits the coil-pass and rotation models. The capture is auxiliary and is never used for published results. See the guide and bench validation plan.
  • Glassmorphism instrument panels: Gaussmeter, Changer XY and ADwin share a new frosted-glass theme (rapidpy_common/glass.py) with status-chip headers. They also fit the 1280×720 minimum workspace instead of opening clipped.
  • COM Port Mapper: released Windows utility for serial-role discovery and saved machine-local COM assignments before launching hardware apps.
  • XY Sample Changer: released stage-centric operator panel with XY-only mode, in-app cup calibration editing, and VB6-compatible HomeToCenter / MoveToCorner behavior.
  • Up/Down Control: released Z-axis panel combining raw motion, top-switch readback, vacuum control, and SQUID-guided MeasPos optimisation in one window.
  • RapidPy DataViewer: released lightweight palaeomagnetic viewer for CIT .sam, MagIC measurements.txt, and legacy CSV data, with 2D/3D directional views, stereonet, intensity and paleointensity quicklooks, rule-based next-step hints, automatic file watching, and a generated app icon.
  • Docs and site: GitHub Pages homepage, hash-routed app pages, refreshed screenshots, module icons, and a compiled-app manual index now track the public migration surface.

Architecture

RapidPy architecture: operator shell and panels feed a queue compiler and measurement worker; a bracketed acquisition, flux-count guard, and holder correction sit inside the P0 integrity gates and publish through a bundle transaction; fail-closed hardware contracts reach the SQUID, sample changer, AF demagnetiser, and vacuum system.

Open the interactive system map ↗ — pan, zoom, hover any box for its source files, or step through four guided views:

View What it shows
01 · Measurement block path One specimen from the sequence panel to a published, provenance-stamped output bundle
02 · Flux-count rejection A one-count step between the bracketing zeros is rejected; the holder correction never moves
03 · Fail-closed hardware mode A missing driver, port, adapter, or calibration blocks preflight instead of becoming a simulator
04 · Evidence and replay Recorded blocks replay through the same guard, and only a complete run is ever published

Reading it left to right: the operator shell drives a workflow engine, which runs the measurement core — a bracketed acquisition (zero, four orientations, zero), a flux-count guard that validates before it reduces, and a measured holder correction. Only an accepted block reaches the transactional bundle writer. The hardware abstraction composes that core and fails closed, so every instrument is reached through exactly one serial adapter.

The diagram is generated with archify from a typed JSON source of truth — see docs/architecture/ to regenerate it.

Repository layout

RapidPy/
├── rapidpy_common/          # Shared hardware layer
│   ├── ui.py                # UMN maroon/gold liquid-glass style sheet
│   ├── hardware.py          # Quicksilver motor protocol + motion helpers
│   ├── adwin_af.py          # ADwin AF ramp backend
│   └── gaussmeter.py        # gm0.dll / FW Bell wrapper + reading helpers
├── gaussmeter_control/      # Released FW Bell 908A operator panel
├── vrm_logger/              # Released three-axis SQUID VRM decay logger
├── adwin_comms/             # Released ADwin I/O diagnostic tester
├── com_port_mapper/         # Released serial-role discovery utility
├── af_tuner/                # In-progress AF coil tuning panel
├── af_clip_test/            # Bench utility for AF clipping workflows
├── changer_xy_control/      # Released stage-centric XY changer panel
├── updown_control/          # Released Z-axis / vacuum / MeasPos panel
├── dc_motor_control/        # Broader motor migration surface
├── system_shell/            # In-progress subsystem launcher
└── data_viewer/             # Standalone demagnetisation data viewer

Build & Distribution

Recent Windows builds are one-file PyInstaller bundles written to the repo-root dist/ folder:

Executable Description
RapidPy_Gaussmeter.exe Gaussmeter Control
RapidPyVRM.exe VRM Decay Logger
RapidPyADWin.exe ADwin Communications Tester
RapidPyCOMMapper.exe COM Port Mapper
RapidPyChangerXY.exe XY Sample Changer
RapidPyUpDown.exe Up/Down Control
RapidPyAFTuner.exe AF Tuner
RapidPySystemShell.exe RAPID v4 System Shell
RapidPyDCMotors.exe DC Motor Control
RapidPyAFClipTest.exe AF Clip Test
install_fwbell_drivers.exe FW Bell USB driver installer (bundled with Gaussmeter Setup)

RapidPy/data_viewer is currently maintained as a source-launched utility rather than a packaged executable; its app assets are generated from RapidPy/data_viewer/tools/generate_icon.py.

PyInstaller specs live under installer/. Most app folders provide a build_windows.bat that regenerates icons and invokes the matching spec from the repo root.

Build from an app folder with:

Set-Location RapidPy\<module_folder>
conda run -n paleomag cmd /c build_windows.bat

Examples:

Set-Location RapidPy\gaussmeter_control
conda run -n paleomag cmd /c build_windows.bat

Set-Location RapidPy\changer_xy_control
conda run -n paleomag cmd /c build_windows.bat

Set-Location RapidPy\updown_control
conda run -n paleomag cmd /c build_windows.bat

Requirements: conda env create -f environment.yml creates the paleomag environment (Python 3.13, PySide6, pyqtgraph, PyInstaller).


Additional Documentation

Document Description
compiled-apps-manual-index.md Current compiled-app status, manual coverage, and VB6 transition-sheet tracking
docs/architecture/ Typed JSON source and regeneration steps for the interactive system map
docs/site/architecture.html Generated interactive system map published on GitHub Pages
docs/site/index.html Static source for the GitHub Pages homepage
docs/site/apps/index.html Static source for the GitHub Pages app-detail pages
fw-bell-gaussmeter-user-guide.md Operator setup, driver installation, DLL placement, and GUI usage
fw-bell-gaussmeter-developer-guide.md Direct driver work, helper usage, SCPI communication
gaussmeter-user-manual.md Full Gaussmeter Control app manual
vrm-logger-user-manual.md VRM Decay Logger full manual
adwin-comms-user-manual.md ADwin Communications Tester manual
changer-xy-control-user-manual.md XY Sample Changer full manual
updown-control-user-manual.md Up/Down Control full manual

Licence

GPLv3 — see LICENSE.

About

New Python GUI software migrated from old VB6 Paleomag2014 software code used at the IRM to run the Hargraves magnetometer Rapid system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages