OSCR

Machine Learning-Based Fluorescence Assessment for Augmented Imaging and Decision Support in Glioblastoma Resections.

Code ↔ Paper

3 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 3 matches · 1 of them tie a paragraph to a whole file without given lines: a weak match, whose lines are not tinted
  1. [1] § 2. Materials and Methods › 2.5. Model Development › 2.5.2. Anomaly Detection ↔ fgsFluorescenceDetection_clVAE_main.m, lines 53 to 122 · score 0.76 · cyclic annealing, mini batches, layer, decay, Kullback, divergence · Report a mismatch
  2. [2] § 2. Materials and Methods › 2.5. Model Development › 2.5.2. Anomaly Detection ↔ synthFluorescenceDetection_clVAE_main.m, lines 56 to 125 · score 0.76 · cyclic annealing, mini batches, layer, decay, Kullback, divergence · Report a mismatch
  3. [3] § 2. Materials and Methods › 2.3. Data Preparation ↔ FD_clVAE_ImagePreprocess.m, the whole file · a weak match · score 0.69 · median filter, saturation, compression, artifacts, block, preprocessing · Report a mismatch

Paper

Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

MATLAB · 347 lines · 12 KB · MIT · 1 match

  1. %% Contrastive Variational Autoencoder for Fluorescence Detection in
  2. %% Fluorescence Guided Neurosurgery Imaging - Main
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. % Script Name : fgsFluorescenceDetection_clVAE_main.m
  5. %
  6. % Description : A training sequence for a contarstive learning Variational
  7. % Autoencoder for the detection of fluorescence in
  8. % intraoperative neurosurgical images is performed within this script.
  9. % The sequence includes data preprocessing, composition of
  10. % training and validation data sets, initialisation of the
  11. % cl VAE and the training, as well as the training implementation.
  12. %
  13. % Author : Anna Schaufler
  14. % Date : 20.07.2025
  15. % Version : 1.0
  16. %
  17. % Notice : This script requires image and annotation data from the
  18. % publicly available FGS imaging dataset
  19. % (https://doi.org/10.5281/zenodo.15260349). Scripts, images and
  20. % annotation masks need to be organized in a particular file
  21. % structure. The required folder structure is described
  22. % in the README file.
  23. %
  24. % To change the beta factor of the trained variational autoencoder,
  25. % change the variable beta_max in the section "Initialize VAE net."
  26. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  27. script_fullpath = mfilename('fullpath');
  28. [script_dir, ~, ~] = fileparts(script_fullpath);
  29. raw_data_path = fullfile(script_dir, 'Images and Masks');
  30. % preprocess images and generate pixelwise input data
  31. [ALA_visible, ref_all, vals_all] = FD_clVAE_CreateFGSDataset(raw_data_path);
  32. idx = randperm(length(ref_all(:,1)), 550e3); %60k datapoints for from image background for the normal class
  33. normalData = ref_all(idx(1:50e3),:); %10k of the normal class data for pairing with anomalies
  34. data = ref_all(idx(50e3+1:end),:); %50k of the normal class data for unsupervised learning VAE input
  35. % split training and validation data
  36. cv = cvpartition(length(data), 'HoldOut', 0.2);
  37. trainData = data(training(cv), :);
  38. testData = data(test(cv), :);
  39. % anomaly data for contrastive learning
  40. idx = randperm(length(ALA_visible(:,1)), 50e3);
  41. anomalies = ALA_visible(idx,:);
  42. % generate normal-anomaly pairs
  43. pairs = [normalData; anomalies];
  44. labels = [zeros(size(normalData,1), 1); ones(size(anomalies,1), 1)]; % 0 fot normal, 1 for anomaly
  45. disp('finished data initialization');
  46. %% Initialize VAE net
  47. % Net parameters
  48. inputSize = 10;
  49. latentDim = 3;
  50. % Encoder net
  51. encoderLG = layerGraph([
  52. featureInputLayer(inputSize, 'Normalization', 'none', 'Name', 'input_encoder')
  53. tanhLayer("Name", 'tanh1')
  54. fullyConnectedLayer(2 * latentDim, 'Name', 'fc_encoder')
  55. ]);
  56. % Decoder-Netzwerk
  57. decoderLG = layerGraph([
  58. featureInputLayer(latentDim, 'Normalization', 'none', 'Name', 'input_decoder')
  59. tanhLayer("Name",'tanh2')
  60. fullyConnectedLayer(inputSize, 'Name', 'fc_decoder')
  61. ]);
  62. % Convert net to dlnetwork
  63. encoderBeta1_fgs = dlnetwork(encoderLG);
  64. decoderBeta1_fgs = dlnetwork(decoderLG);
  65. % Training options
  66. executionEnvironment = "auto";
  67. numEpochs = 1000;
  68. miniBatchSize = 256;
  69. lr = 1e-4; % learning rate
  70. numIterations = floor(cv.TrainSize / miniBatchSize);
  71. beta_max = 1;
  72. margin = 3;
  73. % initialize the average gradient and the average gradient-square
  74. % decay rates of adam optimizer with empty arrays
  75. avgGradientsEncoder = [];
  76. avgGradientsSquaredEncoder = [];
  77. avgGradientsDecoder = [];
  78. avgGradientsSquaredDecoder = [];
  79. % initialize the evidence lower bound, reconstruction loss,
  80. % kullback-Leiber-Divergence loss
  81. elbo = zeros(numEpochs,1);
  82. rec_loss = zeros(numEpochs,1);
  83. kl_loss = zeros(numEpochs,1);
  84. % Initialize training monitor
  85. monitor = trainingProgressMonitor( ...
  86. Metrics= ["ELBO", "Reconstruction", "KL"],...
  87. Info="Epoch", ...
  88. XLabel="Iteration");
  89. % Initialize training loop
  90. epoch = 0;
  91. iteration = 0;
  92. % Initialize factor for cyclic annealing VAE beta factor
  93. block_len = 39.05e3;
  94. n_blocks = 40;
  95. e = ones(block_len * n_blocks, 1);
  96. for k = 0:n_blocks-1
  97. idx = k * block_len + 1 : (k + 1) * block_len;
  98. if mod(k, 2) == 0
  99. e(idx) = 1:block_len; % ramp
  100. else
  101. e(idx) = block_len; % constant
  102. end
  103. end
  104. disp('finished training initialization');
  105. %%%%%%%%%% TRAINING %%%%%%%%%%
  106. while epoch < numEpochs && ~monitor.Stop
  107. tic;
  108. epoch = epoch + 1;
  109. lr = 0.0010023*exp(-0.002305*epoch); %exponentially decaying learning rate
  110. % Random order of data for Mini-Batch-Training
  111. idx = randperm(cv.TrainSize);
  112. trainData = trainData(idx, :);
  113. for i = 1:numIterations
  114. iteration = iteration + 1;
  115. beta = beta_max./(1 + exp(-3e-4*(e(iteration)-15e3)));
  116. idx = (i-1) * miniBatchSize + 1:i * miniBatchSize;
  117. XBatch = trainData(idx, :);
  118. XBatch = dlarray(single(XBatch)', 'CB');
  119. % Anomaly-Pairing
  120. posPairsIdx = randperm(length(normalData), miniBatchSize);
  121. negPairsIdx = randperm(length(anomalies), miniBatchSize);
  122. posBatch = normalData(posPairsIdx, :);
  123. negBatch = anomalies(negPairsIdx, :);
  124. XPosBatch = dlarray(single(posBatch)', 'CB');
  125. XNegBatch = dlarray(single(negBatch)', 'CB');
  126. % transfer to GPU if possible
  127. if (executionEnvironment == "auto" && canUseGPU) || executionEnvironment == "gpu"
  128. XBatch = gpuArray(XBatch);
  129. XPosBatch = gpuArray(XPosBatch);
  130. XNegBatch = gpuArray(XNegBatch);
  131. end
  132. %% Calculate gradients and update parameters
  133. [infGrad, genGrad, contrastiveGrad] = dlfeval(@FD_clVAE_combinedGradients, encoderBeta1_fgs, decoderBeta1_fgs, XBatch, XPosBatch, XNegBatch, beta, margin);
  134. % Update the decoder
  135. [decoderBeta1_fgs.Learnables, avgGradientsDecoder, avgGradientsSquaredDecoder] = ...
  136. adamupdate(decoderBeta1_fgs.Learnables, genGrad, avgGradientsDecoder, avgGradientsSquaredDecoder, i, lr);
  137. combinedGradients = infGrad;
  138. for j = 1:height(infGrad)
  139. combinedGradients.Value{j} = infGrad.Value{j} + contrastiveGrad.Value{j};
  140. end
  141. % Update des Encoders
  142. [encoderBeta1_fgs.Learnables, avgGradientsEncoder, avgGradientsSquaredEncoder] = ...
  143. adamupdate(encoderBeta1_fgs.Learnables, combinedGradients, avgGradientsEncoder, avgGradientsSquaredEncoder, i, lr);
  144. end
  145. elapsedTime = toc;
  146. % Test after each epoch
  147. XTest = dlarray(single(testData'), 'CB');
  148. if (executionEnvironment == "auto" && canUseGPU) || executionEnvironment == "gpu"
  149. XTest = gpuArray(XTest);
  150. end
  151. [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, XTest);
  152. xPred = sigmoid(forward(decoderBeta1_fgs, z));
  153. [el, rc, kl] = FD_clVAE_ELBOloss(XTest, xPred, zMean, zLogvar, beta);
  154. rec_loss(epoch) = rc;
  155. elbo(epoch) = el;
  156. kl_loss(epoch) = kl;
  157. recordMetrics(monitor,epoch,ELBO=el,Reconstruction=rc, KL=kl);
  158. updateInfo(monitor,Epoch=epoch + " of " + numEpochs);
  159. monitor.Progress = iteration/(numIterations*numEpochs)*100;
  160. end
  161. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  162. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  163. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  164. %% Decision Threshold Calculation
  165. latentTest_all = dlarray(single(vals_all)', 'CB');
  166. [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, latentTest_all);
  167. klDivergence = -0.5 * sum(1 + zLogvar - zMean.^2 - exp(zLogvar), 1);
  168. klDivergence = gather(extractdata(klDivergence));
  169. % figure, scatter (1:length(klDivergence), klDivergence)
  170. % Calculate the maximum and standard deviation of the training data normal
  171. % class to use it for decision threshold determination
  172. diver4th = klDivergence(length(ALA_visible) + 1:end);
  173. diver4th = rmoutliers(diver4th, "mean");
  174. div_std = std(diver4th);
  175. div_max = max(diver4th);
  176. upper_th = 1;
  177. lower_th = div_max + 1*div_std;
  178. %% Application of Model on Test Images
  179. % Specificity test on non-FGS images
  180. % load test image
  181. test_img = imread(fullfile(raw_data_path, 'P008 (3).png'));
  182. test_img = FD_clVAE_ImagePreprocess(test_img);
  183. test_feat = FD_clVAE_extractFeatures(test_img);
  184. test_feat = reshape(test_feat, [], 10);
  185. latentTest_all = dlarray(single(test_feat)', 'CB');
  186. [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, latentTest_all);
  187. % Calculate test image Kullback-Leiber-Divergence per Pixel
  188. klDivergence = -0.5 * sum(1 + zLogvar - zMean.^2 - exp(zLogvar), 1);
  189. klDivergence = gather(extractdata(klDivergence));
  190. % Identify False Positives in non-FGS-images
  191. test_img_div = klDivergence/upper_th;
  192. test_img_div(test_img_div <= lower_th) = 0;
  193. fp = numel(find(test_img_div));
  194. % Overall Specificity
  195. spec_oa = (numel(test_img_div)-fp)/numel(test_img_div);
  196. % Specificity excluding black [0 0 0] pixels
  197. non_black_pixel = numel(find(rgb2gray(test_img)> 0));
  198. spec_bn = (non_black_pixel-fp)/non_black_pixel;
  199. % Reconstruct KL-divergence based image
  200. [m, n, ~] = size(test_img);
  201. div_image = reshape(test_img_div, m, n);
  202. figure;
  203. imshow(div_image, []);
  204. colormap(gray);
  205. colorbar;
  206. title('Reconstructed Test Image based on KL-Divergence Scores');
  207. % Binarisieren des Bildes und Umrandung finden
  208. BW = imbinarize(div_image, 0);
  209. boundaries = bwboundaries(BW);
  210. figure, imshow(test_img)
  211. hold on
  212. for k=1:length(boundaries)
  213. b = boundaries{k};
  214. plot(b(:,2),b(:,1),"g",LineWidth=2);
  215. end
  216. %% Intensity Quantification Visualization
  217. % Load and process FGS image
  218. test_img = imread(fullfile(raw_data_path, 'P004 (1).png'));
  219. test_img = FD_clVAE_ImagePreprocess(test_img);
  220. test_feat = FD_clVAE_extractFeatures(test_img);
  221. test_feat = reshape(test_feat, [], 10);
  222. latentTest_all = dlarray(single(test_feat)', 'CB');
  223. [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, latentTest_all);
  224. % Calculate test image Kullback-Leiber-Divergence per Pixel
  225. klDivergence = -0.5 * sum(1 + zLogvar - zMean.^2 - exp(zLogvar), 1);
  226. klDivergence = gather(extractdata(klDivergence));
  227. % Visualization initialization
  228. x = test_feat(:,1); % Red channel value
  229. y = test_feat(:,6); % proportional green channel value
  230. color_val = 0.0327 + -1.009.*x + 0.6343.*y + 46.99.*x.^2 + -93.46.*x.*y;
  231. data_color_val = reshape(color_val, m, n);
  232. data_color_val(data_color_val < 0) = 0;
  233. data_color_val(data_color_val > 10) = 11;
  234. % figure, imshow(data_color_val);
  235. % Jet Colormap
  236. cmap = hot(256);
  237. cmap = cmap(25:end, :);
  238. % Define Edge Values
  239. value_edges = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Inf];
  240. ... 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, Inf]
  241. %...21, 22, 23, 24, 25, 26, 27, 28, 29, 30, Inf];
  242. % Custom Colormap
  243. num_colors = length(value_edges) - 1; % Number of Colors
  244. custom_cmap = zeros(num_colors, 3);
  245. for i = 1:num_colors
  246. if value_edges(i) < 10
  247. color_index = round((i - 1) * (size(cmap, 1) / num_colors)) + 1;
  248. custom_cmap(i, :) = cmap(color_index, :);
  249. elseif value_edges(i) >= 10
  250. custom_cmap(i, :) = [1.0000 1.0000 0.7500]; % dark red for every value > 10
  251. elseif value_edges(i) <= 1
  252. custom_cmap(i, :) = [0.2500 0 0];
  253. end
  254. end
  255. figure('Position', [1, 1, 1920, 1080]);
  256. axes('Position', [0, 0, 1, 1]);
  257. imsc = imagesc(data_color_val);
  258. axis off;
  259. colormap(custom_cmap); % Apply Custom Colormap
  260. frame = getframe(gca);
  261. rgbImage = imresize(frame.cdata, [1080, 1920]);
  262. % colorbar;
  263. clim([0 10]);
  264. % Reconstruct KL-divergence based image
  265. test_img_div = klDivergence/upper_th;
  266. test_img_div(test_img_div <= lower_th) = 0;
  267. [m, n, ~] = size(test_img);
  268. div_image = reshape(test_img_div, m, n);
  269. figure;
  270. imshow(div_image, []);
  271. colormap(gray);
  272. colorbar;
  273. title('Reconstructed Test Image based on KL-Divergence Scores');
  274. % Binarisieren des Bildes und Umrandung finden
  275. BW = imbinarize(div_image, 0);
  276. boundaries = bwboundaries(BW);
  277. color_ml = [197 198 170]/255;
  278. img_proc = test_img;
  279. for c = 1:3
  280. channel = im2double(rgbImage(:,:,c));
  281. temp = img_proc(:,:,c);
  282. temp(BW) = channel(BW);
  283. img_proc(:,:,c) = temp;
  284. end
  285. figure, imshow(img_proc)
  286. hold on
  287. for k=1:length(boundaries)
  288. b = boundaries{k};
  289. plot(b(:,2),b(:,1),"Color",color_ml,LineWidth=2);
  290. end
  291. figure, imshowpair(test_img, img_proc, 'montage')

fgsFluorescenceDetection_clVAE_main.m at commit 9ad53bc, under MIT · at the source

Overview

  1. Department of Neurosurgery, Faculty of Medicine, Otto-von-Guericke University Magdeburg, Leipziger Strasse 44, 39120 Magdeburg, Germany
  2. INKA Health Tech Innovation Laboratory, Medical Faculty, Otto-von-Guericke University Magdeburg, Leipziger Strasse 44, 39120 Magdeburg, Germany
Journal: Cancers, volume 18, issue 7, article 1125
Dates: received 14 February 2026; accepted 26 March 2026; published online 31 March 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.3390/cancers18071125 · PMID 41976348 · PMCID PMC13072293 · OpenAlex W7143637031
Open access: gold, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: other condition (population)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning, fMRI & imaging
Keywords: glioblastoma surgery, fluorescence-guided surgery, maximally safe resection, machine learning, autoencoder
Topic: Nanoplatforms for cancer theranostics (Biomedical Engineering, Engineering), according to OpenAlex
Citations: not cited yet (Europe PMC); 45 references in the paper

Abstract

Background/Objectives: Glioblastoma is the most common and aggressive primary malignant brain tumor in adults, characterized by infiltrative growth and poor prognosis. Achieving maximal resection without inducing neurological deficits remains a challenge in glioblastoma surgery. While 5-aminolevulinic acid-based fluorescence-guided surgery supports intraoperative tumor visualization, its reliability is limited by patient variability and weak fluorescence signals. This study proposes a machine learning framework to enhance fluorescence-guided surgery sensitivity by analyzing surgical microscope images at the pixel level. Methods: Fluorescence-mode neurosurgical microscope images of synthetic samples with known Protoporphyrin IX (PPIX) concentrations were used to train three classifiers (Support Vector Machine, Naïve Bayes, Neural Network) for pixel-wise fluorescence detection. In parallel, three contrastive-learning-based Variational Autoencoders (VAE, β = 1, 2, 3) were evaluated for detecting weak fluorescence beyond visual perception. Additionally, a regression model was trained to relate pixel features to PPIX concentration. The best-performing VAE (β = 1) was subsequently trained on real intraoperative data, and its detection sensitivity was compared to annotations from four experienced surgeons. Results: The proposed model achieved the highest detection rates on synthetic test data when calibrated for 99% specificity. Applied to real intraoperative images, the model revealed fluorescent areas substantially larger than those marked by experienced surgeons. In non-5-ALA control cases, minimal false positives were observed, indicating a specificity exceeding 99.9%. The regression model reliably quantified PPIX concentration in synthetic samples (R2=0.92). Conclusions: By enabling more sensitive and objective fluorescence detection, this approach offers a valuable tool for improving surgical decision-making and facilitating safer, more extensive tumor resections.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 3 matches between paragraphs and lines of code.

AnnaSchaufler/Fluorescence-Assessment-in-FGS

License: MIT
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Commit: 9ad53bc17719fe7d3dcc084956f2e4cb62b65a0a, 3 August 2025
Languages: MATLAB (10)
Size: 12 files, 10 scripts
Software Heritage: not archived
Found in: “Data Availability Statement”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 30 September 2026: the link answers
  • 30 September 2026: the link answers
12 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 10 scripts, each with its path and the digest of its content;
  • 3 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

Datasets cited

Data Availability Statement

The image data generated and analyzed during the current study are openly available in the Zenodo repository at https://doi.org/10.5281/zenodo.15260349 (accessed on 25 March 2026). The code used for model development in this study is openly accessible on GitHub at https://github.com/AnnaSchaufler/Fluorescence-Assessment-in-FGS (accessed on 25 March 2026).

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 30 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 8 authors, 5 keywords, 42 references.

Cite

This paper

Schaufler, A., Stein, K.-P., Pamnani, S., Dumitru, C. A., Neyazi, B., Rashidi, A., Boese, A., & Sandalcioglu, I. E. (2026). Machine Learning-Based Fluorescence Assessment for Augmented Imaging and Decision Support in Glioblastoma Resections. Cancers, 18(7), 1125. https://doi.org/10.3390/cancers18071125

BibTeX

@article{schaufler2026machine,
author = {Schaufler, Anna and Stein, Klaus-Peter and Pamnani, Sunisha and Dumitru, Claudia A and Neyazi, Belal and Rashidi, Ali and Boese, Axel and Sandalcioglu, I Erol},
title = {{Machine Learning-Based Fluorescence Assessment for Augmented Imaging and Decision Support in Glioblastoma Resections}},
journal = {Cancers},
year = {2026},
month = mar,
volume = {18},
number = {7},
pages = {1125},
publisher = {Multidisciplinary Digital Publishing Institute (MDPI)},
issn = {2072-6694},
doi = {10.3390/cancers18071125},
url = {https://doi.org/10.3390/cancers18071125},
pmid = {41976348},
pmcid = {PMC13072293}
}

RIS

TY - JOUR
AU - Schaufler, Anna
AU - Stein, Klaus-Peter
AU - Pamnani, Sunisha
AU - Dumitru, Claudia A
AU - Neyazi, Belal
AU - Rashidi, Ali
AU - Boese, Axel
AU - Sandalcioglu, I Erol
TI - Machine Learning-Based Fluorescence Assessment for Augmented Imaging and Decision Support in Glioblastoma Resections
T2 - Cancers
J2 - Cancers (Basel)
PY - 2026
DA - 2026/03/31
VL - 18
IS - 7
SP - 1125
SN - 2072-6694
PB - Multidisciplinary Digital Publishing Institute (MDPI)
DO - 10.3390/cancers18071125
UR - https://doi.org/10.3390/cancers18071125
LA - en
ER -

CSL-JSON

{
"id": "10.3390/cancers18071125",
"type": "article-journal",
"title": "Machine Learning-Based Fluorescence Assessment for Augmented Imaging and Decision Support in Glioblastoma Resections",
"container-title": "Cancers",
"author": [
{
"family": "Schaufler",
"given": "Anna"
},
{
"family": "Stein",
"given": "Klaus-Peter"
},
{
"family": "Pamnani",
"given": "Sunisha"
},
{
"family": "Dumitru",
"given": "Claudia A"
},
{
"family": "Neyazi",
"given": "Belal"
},
{
"family": "Rashidi",
"given": "Ali"
},
{
"family": "Boese",
"given": "Axel"
},
{
"family": "Sandalcioglu",
"given": "I Erol"
}
],
"container-title-short": "Cancers (Basel)",
"volume": "18",
"issue": "7",
"page": "1125",
"DOI": "10.3390/cancers18071125",
"PMID": "41976348",
"PMCID": "PMC13072293",
"ISSN": "2072-6694",
"publisher": "Multidisciplinary Digital Publishing Institute (MDPI)",
"URL": "https://doi.org/10.3390/cancers18071125",
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
31
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1371/journal.pone.0276307
Extravascular optical coherence tomography of cerebral vessel walls in vivo.
Journal: PloS one
In common: 2 authors
[2] doi:10.1088/1361-6560/ae45e6 [code]
Quantification of dual-state 5-ALA-induced PpIX fluorescence: methodology and validation in tissue-mimicking phantoms.
Journal: Physics in medicine and biology
In common: other condition, 6 references
[3] doi:10.1016/j.isci.2024.111273 [code]
Deep learning-based hyperspectral image correction and unmixing for brain tumor surgery.
Journal: iScience
In common: other condition, 6 references
[4] doi:10.1038/s43856-024-00562-3
Towards machine learning-based quantitative hyperspectral image guidance for brain tumor resection.
Journal: Communications medicine
In common: other condition, 5 references
[5] doi:10.1364/boe.528535 [code]
Spectral library and method for sparse unmixing of hyperspectral images in fluorescence guided resection of brain tumors.
Journal: Biomedical optics express
In common: other condition, 4 references
[6] doi:10.1038/s41698-023-00475-9 [code]
Hyperspectral imaging benchmark based on machine learning for intraoperative brain tumour detection.
Journal: NPJ precision oncology
In common: Statistics and Machine Learning Toolbox, other condition, 3 references
[7] doi:10.1038/s41467-026-71458-0 [code]
Early differential impact of MeCP2 mutations on functional networks in Rett syndrome patient-derived human cortical organoids.
Journal: Nature communications
In common: Deep Learning Toolbox, Parallel Computing Toolbox, Image Processing Toolbox, 1 other tool, other condition
[8] doi:10.1162/imag.a.924 [code]
Disarming emotional memories using targeted memory reactivation during rapid eye movement sleep.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: Deep Learning Toolbox, Parallel Computing Toolbox, Image Processing Toolbox, 1 other tool, other condition
[9] doi:10.1038/s41467-024-52814-4 [code]
Striato-pallidal oscillatory connectivity correlates with symptom severity in dystonia patients.
Journal: Nature communications
In common: Deep Learning Toolbox, Parallel Computing Toolbox, Image Processing Toolbox, 1 other tool, other condition
[10] doi:10.1002/hbm.70553 [code]
Axon Diameter Mapping in the Living Human Brain with Ultra-High-Gradient Diffusion MRI at 500 mT/m Gradient Strength.
Journal: Human brain mapping
In common: Deep Learning Toolbox, Parallel Computing Toolbox, Image Processing Toolbox, 1 other tool

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Add the badge to the code's README

OSCR: the badge of this paper

If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.

Markdown
<!-- oscr-badge:start -->
[![OSCR](https://openscicode.org/badge/doi/10.3390/cancers18071125.svg)](https://openscicode.org/badge/doi/10.3390/cancers18071125)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.3390/cancers18071125.svg
   :target: https://openscicode.org/badge/doi/10.3390/cancers18071125
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.3390/cancers18071125"><img src="https://openscicode.org/badge/doi/10.3390/cancers18071125.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->

On GitHub, open the README, choose Edit (the pencil), paste the snippet under the title, then "Commit changes".

If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.

Report a mismatch between the code and the paper · Report a code error (signed in)

Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.

Report a reproduction failure (signed in)

Versions of its code: the releases of its code tied to a version of this paper (the preprint, the accepted manuscript, the version of record…), each with the tracing map versioned with it.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.