Machine Learning-Based Fluorescence Assessment for Augmented Imaging and Decision Support in Glioblastoma Resections.
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] § 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. 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] § 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
- %% Contrastive Variational Autoencoder for Fluorescence Detection in
- %% Fluorescence Guided Neurosurgery Imaging - Main
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Script Name : fgsFluorescenceDetection_clVAE_main.m
- %
- % Description : A training sequence for a contarstive learning Variational
- % Autoencoder for the detection of fluorescence in
- % intraoperative neurosurgical images is performed within this script.
- % The sequence includes data preprocessing, composition of
- % training and validation data sets, initialisation of the
- % cl VAE and the training, as well as the training implementation.
- %
- % Author : Anna Schaufler
- % Date : 20.07.2025
- % Version : 1.0
- %
- % Notice : This script requires image and annotation data from the
- % publicly available FGS imaging dataset
- % (https://doi.org/10.5281/zenodo.15260349). Scripts, images and
- % annotation masks need to be organized in a particular file
- % structure. The required folder structure is described
- % in the README file.
- %
- % To change the beta factor of the trained variational autoencoder,
- % change the variable beta_max in the section "Initialize VAE net."
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- script_fullpath = mfilename('fullpath');
- [script_dir, ~, ~] = fileparts(script_fullpath);
- raw_data_path = fullfile(script_dir, 'Images and Masks');
- % preprocess images and generate pixelwise input data
- [ALA_visible, ref_all, vals_all] = FD_clVAE_CreateFGSDataset(raw_data_path);
- idx = randperm(length(ref_all(:,1)), 550e3); %60k datapoints for from image background for the normal class
- normalData = ref_all(idx(1:50e3),:); %10k of the normal class data for pairing with anomalies
- data = ref_all(idx(50e3+1:end),:); %50k of the normal class data for unsupervised learning VAE input
- % split training and validation data
- cv = cvpartition(length(data), 'HoldOut', 0.2);
- trainData = data(training(cv), :);
- testData = data(test(cv), :);
- % anomaly data for contrastive learning
- idx = randperm(length(ALA_visible(:,1)), 50e3);
- anomalies = ALA_visible(idx,:);
- % generate normal-anomaly pairs
- pairs = [normalData; anomalies];
- labels = [zeros(size(normalData,1), 1); ones(size(anomalies,1), 1)]; % 0 fot normal, 1 for anomaly
- disp('finished data initialization');
- %% Initialize VAE net
- % Net parameters
- inputSize = 10;
- latentDim = 3;
- % Encoder net
- encoderLG = layerGraph([
- featureInputLayer(inputSize, 'Normalization', 'none', 'Name', 'input_encoder')
- tanhLayer("Name", 'tanh1')
- fullyConnectedLayer(2 * latentDim, 'Name', 'fc_encoder')
- ]);
- % Decoder-Netzwerk
- decoderLG = layerGraph([
- featureInputLayer(latentDim, 'Normalization', 'none', 'Name', 'input_decoder')
- tanhLayer("Name",'tanh2')
- fullyConnectedLayer(inputSize, 'Name', 'fc_decoder')
- ]);
- % Convert net to dlnetwork
- encoderBeta1_fgs = dlnetwork(encoderLG);
- decoderBeta1_fgs = dlnetwork(decoderLG);
- % Training options
- executionEnvironment = "auto";
- numEpochs = 1000;
- miniBatchSize = 256;
- lr = 1e-4; % learning rate
- numIterations = floor(cv.TrainSize / miniBatchSize);
- beta_max = 1;
- margin = 3;
- % initialize the average gradient and the average gradient-square
- % decay rates of adam optimizer with empty arrays
- avgGradientsEncoder = [];
- avgGradientsSquaredEncoder = [];
- avgGradientsDecoder = [];
- avgGradientsSquaredDecoder = [];
- % initialize the evidence lower bound, reconstruction loss,
- % kullback-Leiber-Divergence loss
- elbo = zeros(numEpochs,1);
- rec_loss = zeros(numEpochs,1);
- kl_loss = zeros(numEpochs,1);
- % Initialize training monitor
- monitor = trainingProgressMonitor( ...
- Metrics= ["ELBO", "Reconstruction", "KL"],...
- Info="Epoch", ...
- XLabel="Iteration");
- % Initialize training loop
- epoch = 0;
- iteration = 0;
- % Initialize factor for cyclic annealing VAE beta factor
- block_len = 39.05e3;
- n_blocks = 40;
- e = ones(block_len * n_blocks, 1);
- for k = 0:n_blocks-1
- idx = k * block_len + 1 : (k + 1) * block_len;
- if mod(k, 2) == 0
- e(idx) = 1:block_len; % ramp
- else
- e(idx) = block_len; % constant
- end
- end
- disp('finished training initialization');
- %%%%%%%%%% TRAINING %%%%%%%%%%
- while epoch < numEpochs && ~monitor.Stop
- tic;
- epoch = epoch + 1;
- lr = 0.0010023*exp(-0.002305*epoch); %exponentially decaying learning rate
- % Random order of data for Mini-Batch-Training
- idx = randperm(cv.TrainSize);
- trainData = trainData(idx, :);
- for i = 1:numIterations
- iteration = iteration + 1;
- beta = beta_max./(1 + exp(-3e-4*(e(iteration)-15e3)));
- idx = (i-1) * miniBatchSize + 1:i * miniBatchSize;
- XBatch = trainData(idx, :);
- XBatch = dlarray(single(XBatch)', 'CB');
- % Anomaly-Pairing
- posPairsIdx = randperm(length(normalData), miniBatchSize);
- negPairsIdx = randperm(length(anomalies), miniBatchSize);
- posBatch = normalData(posPairsIdx, :);
- negBatch = anomalies(negPairsIdx, :);
- XPosBatch = dlarray(single(posBatch)', 'CB');
- XNegBatch = dlarray(single(negBatch)', 'CB');
- % transfer to GPU if possible
- if (executionEnvironment == "auto" && canUseGPU) || executionEnvironment == "gpu"
- XBatch = gpuArray(XBatch);
- XPosBatch = gpuArray(XPosBatch);
- XNegBatch = gpuArray(XNegBatch);
- end
- %% Calculate gradients and update parameters
- [infGrad, genGrad, contrastiveGrad] = dlfeval(@FD_clVAE_combinedGradients, encoderBeta1_fgs, decoderBeta1_fgs, XBatch, XPosBatch, XNegBatch, beta, margin);
- % Update the decoder
- [decoderBeta1_fgs.Learnables, avgGradientsDecoder, avgGradientsSquaredDecoder] = ...
- adamupdate(decoderBeta1_fgs.Learnables, genGrad, avgGradientsDecoder, avgGradientsSquaredDecoder, i, lr);
- combinedGradients = infGrad;
- for j = 1:height(infGrad)
- combinedGradients.Value{j} = infGrad.Value{j} + contrastiveGrad.Value{j};
- end
- % Update des Encoders
- [encoderBeta1_fgs.Learnables, avgGradientsEncoder, avgGradientsSquaredEncoder] = ...
- adamupdate(encoderBeta1_fgs.Learnables, combinedGradients, avgGradientsEncoder, avgGradientsSquaredEncoder, i, lr);
- end
- elapsedTime = toc;
- % Test after each epoch
- XTest = dlarray(single(testData'), 'CB');
- if (executionEnvironment == "auto" && canUseGPU) || executionEnvironment == "gpu"
- XTest = gpuArray(XTest);
- end
- [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, XTest);
- xPred = sigmoid(forward(decoderBeta1_fgs, z));
- [el, rc, kl] = FD_clVAE_ELBOloss(XTest, xPred, zMean, zLogvar, beta);
- rec_loss(epoch) = rc;
- elbo(epoch) = el;
- kl_loss(epoch) = kl;
- recordMetrics(monitor,epoch,ELBO=el,Reconstruction=rc, KL=kl);
- updateInfo(monitor,Epoch=epoch + " of " + numEpochs);
- monitor.Progress = iteration/(numIterations*numEpochs)*100;
- end
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %% Decision Threshold Calculation
- latentTest_all = dlarray(single(vals_all)', 'CB');
- [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, latentTest_all);
- klDivergence = -0.5 * sum(1 + zLogvar - zMean.^2 - exp(zLogvar), 1);
- klDivergence = gather(extractdata(klDivergence));
- % figure, scatter (1:length(klDivergence), klDivergence)
- % Calculate the maximum and standard deviation of the training data normal
- % class to use it for decision threshold determination
- diver4th = klDivergence(length(ALA_visible) + 1:end);
- diver4th = rmoutliers(diver4th, "mean");
- div_std = std(diver4th);
- div_max = max(diver4th);
- upper_th = 1;
- lower_th = div_max + 1*div_std;
- %% Application of Model on Test Images
- % Specificity test on non-FGS images
- % load test image
- test_img = imread(fullfile(raw_data_path, 'P008 (3).png'));
- test_img = FD_clVAE_ImagePreprocess(test_img);
- test_feat = FD_clVAE_extractFeatures(test_img);
- test_feat = reshape(test_feat, [], 10);
- latentTest_all = dlarray(single(test_feat)', 'CB');
- [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, latentTest_all);
- % Calculate test image Kullback-Leiber-Divergence per Pixel
- klDivergence = -0.5 * sum(1 + zLogvar - zMean.^2 - exp(zLogvar), 1);
- klDivergence = gather(extractdata(klDivergence));
- % Identify False Positives in non-FGS-images
- test_img_div = klDivergence/upper_th;
- test_img_div(test_img_div <= lower_th) = 0;
- fp = numel(find(test_img_div));
- % Overall Specificity
- spec_oa = (numel(test_img_div)-fp)/numel(test_img_div);
- % Specificity excluding black [0 0 0] pixels
- non_black_pixel = numel(find(rgb2gray(test_img)> 0));
- spec_bn = (non_black_pixel-fp)/non_black_pixel;
- % Reconstruct KL-divergence based image
- [m, n, ~] = size(test_img);
- div_image = reshape(test_img_div, m, n);
- figure;
- imshow(div_image, []);
- colormap(gray);
- colorbar;
- title('Reconstructed Test Image based on KL-Divergence Scores');
- % Binarisieren des Bildes und Umrandung finden
- BW = imbinarize(div_image, 0);
- boundaries = bwboundaries(BW);
- figure, imshow(test_img)
- hold on
- for k=1:length(boundaries)
- b = boundaries{k};
- plot(b(:,2),b(:,1),"g",LineWidth=2);
- end
- %% Intensity Quantification Visualization
- % Load and process FGS image
- test_img = imread(fullfile(raw_data_path, 'P004 (1).png'));
- test_img = FD_clVAE_ImagePreprocess(test_img);
- test_feat = FD_clVAE_extractFeatures(test_img);
- test_feat = reshape(test_feat, [], 10);
- latentTest_all = dlarray(single(test_feat)', 'CB');
- [z, zMean, zLogvar] = FD_clVAE_sampling(encoderBeta1_fgs, latentTest_all);
- % Calculate test image Kullback-Leiber-Divergence per Pixel
- klDivergence = -0.5 * sum(1 + zLogvar - zMean.^2 - exp(zLogvar), 1);
- klDivergence = gather(extractdata(klDivergence));
- % Visualization initialization
- x = test_feat(:,1); % Red channel value
- y = test_feat(:,6); % proportional green channel value
- color_val = 0.0327 + -1.009.*x + 0.6343.*y + 46.99.*x.^2 + -93.46.*x.*y;
- data_color_val = reshape(color_val, m, n);
- data_color_val(data_color_val < 0) = 0;
- data_color_val(data_color_val > 10) = 11;
- % figure, imshow(data_color_val);
- % Jet Colormap
- cmap = hot(256);
- cmap = cmap(25:end, :);
- % Define Edge Values
- value_edges = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Inf];
- ... 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, Inf]
- %...21, 22, 23, 24, 25, 26, 27, 28, 29, 30, Inf];
- % Custom Colormap
- num_colors = length(value_edges) - 1; % Number of Colors
- custom_cmap = zeros(num_colors, 3);
- for i = 1:num_colors
- if value_edges(i) < 10
- color_index = round((i - 1) * (size(cmap, 1) / num_colors)) + 1;
- custom_cmap(i, :) = cmap(color_index, :);
- elseif value_edges(i) >= 10
- custom_cmap(i, :) = [1.0000 1.0000 0.7500]; % dark red for every value > 10
- elseif value_edges(i) <= 1
- custom_cmap(i, :) = [0.2500 0 0];
- end
- end
- figure('Position', [1, 1, 1920, 1080]);
- axes('Position', [0, 0, 1, 1]);
- imsc = imagesc(data_color_val);
- axis off;
- colormap(custom_cmap); % Apply Custom Colormap
- frame = getframe(gca);
- rgbImage = imresize(frame.cdata, [1080, 1920]);
- % colorbar;
- clim([0 10]);
- % Reconstruct KL-divergence based image
- test_img_div = klDivergence/upper_th;
- test_img_div(test_img_div <= lower_th) = 0;
- [m, n, ~] = size(test_img);
- div_image = reshape(test_img_div, m, n);
- figure;
- imshow(div_image, []);
- colormap(gray);
- colorbar;
- title('Reconstructed Test Image based on KL-Divergence Scores');
- % Binarisieren des Bildes und Umrandung finden
- BW = imbinarize(div_image, 0);
- boundaries = bwboundaries(BW);
- color_ml = [197 198 170]/255;
- img_proc = test_img;
- for c = 1:3
- channel = im2double(rgbImage(:,:,c));
- temp = img_proc(:,:,c);
- temp(BW) = channel(BW);
- img_proc(:,:,c) = temp;
- end
- figure, imshow(img_proc)
- hold on
- for k=1:length(boundaries)
- b = boundaries{k};
- plot(b(:,2),b(:,1),"Color",color_ml,LineWidth=2);
- end
- figure, imshowpair(test_img, img_proc, 'montage')
fgsFluorescenceDetection_clVAE_main.m at commit 9ad53bc, under MIT · at the source
Overview
- Department of Neurosurgery, Faculty of Medicine, Otto-von-Guericke University Magdeburg, Leipziger Strasse 44, 39120 Magdeburg, Germany
- INKA Health Tech Innovation Laboratory, Medical Faculty, Otto-von-Guericke University Magdeburg, Leipziger Strasse 44, 39120 Magdeburg, Germany
Abstract
Background/
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
9ad53bc17719fe7d3dcc084956f2e4cb62b65a0a, 3 August 2025Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
12 files
- FD_clVAE_CreateDataset.m
, MATLAB, 139 lines - FD_clVAE_CreateFGSDatase
t.m , MATLAB, 82 lines - FD_clVAE_ELBOloss.m, MATLAB, 8 lines
- FD_clVAE_ImagePreprocess
.m , MATLAB, 66 lines, 1 match - FD_clVAE_combinedGradien
ts.m , MATLAB, 19 lines - FD_clVAE_extractFeatures
.m , MATLAB, 58 lines - FD_clVAE_sampling.m, MATLAB, 11 lines
- FD_contrastiveLossFunc.m
, MATLAB, 13 lines - fgsFluorescenceDetection
_clVAE_main.m , MATLAB, 347 lines, 1 match - synthFluorescenceDetecti
on_clVAE_main.m , MATLAB, 228 lines, 1 match - LICENSE, License, 21 lines
- README.md, Text, 36 lines
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
- zenodo:15260349, at Zenodo; found in “Data Availability Statement”
Data Availability Statement
The image data generated and analyzed during the current study are openly available in the Zenodo repository at https://
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://
BibTeX
@article{schaufler2026ma
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/
url = {https://
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/
VL - 18
IS - 7
SP - 1125
SN - 2072-6694
PB - Multidisciplinary Digital Publishing Institute (MDPI)
DO - 10.3390/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.3390/
"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":
"volume": "18",
"issue": "7",
"page": "1125",
"DOI": "10.3390/
"PMID": "41976348",
"PMCID": "PMC13072293",
"ISSN": "2072-6694",
"publisher": "Multidisciplinary Digital Publishing Institute (MDPI)",
"URL": "https://
"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 oneIn 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 biologyIn 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: iScienceIn 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 medicineIn 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 expressIn 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 oncologyIn 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 communicationsIn 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 communicationsIn 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 mappingIn 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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 10 scripts, and 3 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:14d22f4e45751465…
Add the badge to the code's README
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 -->
[](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:endHTML
<!-- 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.
