Automation of Mass Spectrometry Imaging Using Fisheye Cameras
Bibliographic record
Abstract
Collecting mass spectrometry (MS) data of histological samples using a liquid micro junction-surface sampling probe is generally unrepeatable and time-consuming due to difficulties in manually positioning the probe as precisely as possible, and aligning the exact times of probe contact and MS data acquisition. Previous work has shown that real-world probing coordinates can be calculated from undistorted sample images captured by a fisheye camera. This project sought to develop an application that fully automates calculating real-world sampling coordinates from unwarped sample photos, and creating MS images using timestamped MS data. The application’s interface and backend image processing are implemented using Python’s PyQt5, OpenCV, and Numpy libraries. A fisheye camera and probe are attached to the robotic arm of a 3D printer and pointed towards the printer bed to capture images and collect MS data of samples. Fisheye camera photos must be processed through checkerboard detection to establish visual linearity. AprilTags can assist in determining the camera-to-probe millimetre offset using eye-in-hand calibration and 3D coordinate conversions. The chronological delay between probe movements and data collection can be found using an initial sampling point with a distinct MS profile. With these configurations, users can capture an unwarped sample photo, select a region of interest to collect data from, specify the sampling resolution, and initiate automated MS sampling using the specified parameters and calculated image-to-real-world probing coordinates. The application’s automated sampling and timestamping functionality successfully facilitates the generation of MS images of flat histological samples. The application calculates the physical camera-to-probe offset with sub-millimetre accuracy. Image-to-real-world coordinate calculation accuracy is dependent on the checkerboard pattern used to undistort the fisheye camera, environmental lighting, and AprilTag positioning for the camera-to-probe offset estimate. Future work will integrate conductive sampling for uneven sample surfaces and verify alignment of timestamps to MS data acquisition.
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame machine prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. The Gemma side is a direct model label for every work in the frame, read from the title-only record. The Codex side is a classifier learned from the 10,348 direct Codex labels and calibrated to design-weighted sample rates; fields without enough sample support carry no Codex call. Candidate is the union of the two sides; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels.
Distilled classifier scores by category (both heads)
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.001 | 0.003 |
| Meta-epidemiology (narrow) | 0.001 | 0.001 |
| Meta-epidemiology (broad) | 0.001 | 0.001 |
| Bibliometrics | 0.001 | 0.001 |
| Science and technology studies | 0.001 | 0.001 |
| Scholarly communication | 0.001 | 0.001 |
| Open science | 0.002 | 0.002 |
| Research integrity | 0.001 | 0.001 |
| Insufficient payload (model declined to judge) | 0.007 | 0.005 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; a candidate call from one source (direct Gemma or distilled Codex), not a consensus.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".