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.
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.
- Website overview: https://duserzym.github.io/RAPID/
- Interactive system map: https://duserzym.github.io/RAPID/architecture.html
- App pages: https://duserzym.github.io/RAPID/apps/index.html
- Manual index: docs/compiled-apps-manual-index.md
| 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 |
- 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/MoveToCornerbehavior. - 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, MagICmeasurements.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.
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.
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
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.batExamples:
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.batRequirements: conda env create -f environment.yml creates the paleomag environment (Python 3.13, PySide6, pyqtgraph, PyInstaller).
| 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 |
GPLv3 — see LICENSE.
