A unified FLAIR hyperintensity segmentation model for various CNS tumor types and acquisition time points.
The 2 matches
- [1] § Materials and methods › Data ↔ gui/UtilsWidgets/CustomQDialog/ResearchCommunityDialog.py, lines 22–81 · score 0.70 · Olavs hospital, University Hospital, Boston, Brigham, Norway, Women
- [2] § Materials and methods › Evaluation metrics ↔ raidionicsval/Validation/kfold_model_validation.py, lines 49–75 · score 0.55 · ground truth volume, probability thresholds, fold, metrics, model
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 302 lines · 16 KB · BSD-2-Clause · 1 match
- from PySide6.QtWidgets import QWidget, QLabel, QHBoxLayout, QVBoxLayout, QDialog, QDialogButtonBox, QScrollArea, QGridLayout
- from PySide6.QtCore import Qt, QSize, Signal
- from PySide6.QtGui import QIcon, QPixmap
- import os
- from utils.software_config import SoftwareConfigResources
- class ResearchCommunityDialog(QDialog):
- def __init__(self, parent=None):
- super().__init__(parent)
- self.setWindowTitle("Research community")
- self.__set_interface()
- self.__set_layout_dimensions()
- self.__set_connections()
- self.__set_stylesheets()
- def exec(self) -> int:
- return super().exec()
- def __set_interface(self):
- self.layout = QVBoxLayout(self)
- self.layout.setSpacing(5)
- self.layout.setContentsMargins(0, 0, 0, 0)
- self.main_scrollarea = QScrollArea()
- self.main_scrollarea.show()
- self.main_scrollarea_layout = QGridLayout()
- self.main_scrollarea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
- self.main_scrollarea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
- self.main_scrollarea.setWidgetResizable(True)
- self.main_scrollarea_dummy_widget = QLabel()
- self.main_scrollarea_layout.setSpacing(5)
- self.main_scrollarea_layout.setContentsMargins(10, 0, 10, 0)
- self.main_scrollarea_dummy_widget.setLayout(self.main_scrollarea_layout)
- self.main_scrollarea.setWidget(self.main_scrollarea_dummy_widget)
- self.layout.addWidget(self.main_scrollarea)
- self.title_layout = QHBoxLayout()
- self.title_layout.setSpacing(0)
- self.title_layout.setContentsMargins(0, 0, 0, 0)
- self.title_label = QLabel(" The data used for training the various segmentation models was gathered from:")
- self.title_layout.addStretch(1)
- self.title_layout.addWidget(self.title_label)
- self.title_layout.addStretch(1)
- self.main_scrollarea_layout.addLayout(self.title_layout, 0, 0, 1, 4)
- self.st_olavs_widget = HospitalContributorWidget(self)
- self.st_olavs_widget.set_hospital_name("St. Olavs hospital,Trondheim\nUniversity Hospital, Trondheim, Norway")
- self.st_olavs_widget.set_hospital_participants("Ole Solheim, Lisa M. Sagberg, Sayed Hoseiney,\nEven H. Fyllingen, Camilla Brattbakk")
- self.st_olavs_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/stolavs-logo.png'))
- self.main_scrollarea_layout.addWidget(self.st_olavs_widget, 1, 0, 1, 1)
- self.goth_sahl_widget = HospitalContributorWidget(self)
- self.goth_sahl_widget.set_hospital_name("Sahlgrenska University Hospital,\nGothenburg, Sweden")
- self.goth_sahl_widget.set_hospital_participants("Asgeir Store Jakola")
- self.goth_sahl_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/gothenburg-hospital-icon.png'))
- self.main_scrollarea_layout.addWidget(self.goth_sahl_widget, 1, 1, 1, 1)
- self.olso_ouh_widget = HospitalContributorWidget(self)
- self.olso_ouh_widget.set_hospital_name("Oslo University Hospital,\nOslo, Norway")
- self.olso_ouh_widget.set_hospital_participants("Kyrre Eeg Emblem")
- self.olso_ouh_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/oslo_univeristy_hospital_icon.png'))
- self.main_scrollarea_layout.addWidget(self.olso_ouh_widget, 1, 2, 1, 1)
- self.brigham_boston_widget = HospitalContributorWidget(self)
- self.brigham_boston_widget.set_hospital_name("Brigham and Women’s Hospital,\nBoston, USA")
- self.brigham_boston_widget.set_hospital_participants("Timothy R. Smith,\nVasileios Kavouridis")
- self.brigham_boston_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/brigham-boston-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.brigham_boston_widget, 1, 3, 1, 1)
- self.amsterdam_widget = HospitalContributorWidget(self)
- self.amsterdam_widget.set_hospital_name("Amsterdam University Medical Centers,\nVrije Universiteit, Amsterdam, The Netherlands")
- self.amsterdam_widget.set_hospital_participants("Philip C. De Witt Hamer, Roelant S. Eijgelaar,\nIvar Kommers, Frederik Barkhof,\nDomenique M.J. Müller, Aeilko H. Zwinderman")
- self.amsterdam_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/amsterdam-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.amsterdam_widget, 2, 0, 1, 1)
- self.twee_steden_widget = HospitalContributorWidget(self)
- self.twee_steden_widget.set_hospital_name("Twee Steden Hospital,\nTilburg, The Netherlands")
- self.twee_steden_widget.set_hospital_participants("Hilko Ardon")
- self.twee_steden_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/tweesteden-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.twee_steden_widget, 2, 1, 1, 1)
- self.humanitas_milan_widget = HospitalContributorWidget(self)
- self.humanitas_milan_widget.set_hospital_name("Humanitas Research Hospital, Università\nDegli Studi di Milano, Milano, Italy")
- self.humanitas_milan_widget.set_hospital_participants("Lorenzo Bello, Marco Conti Nibali,\nMarco Rossi, Tommaso Sciortino")
- self.humanitas_milan_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/humanitas-milan-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.humanitas_milan_widget, 2, 2, 1, 1)
- self.ucsf_widget = HospitalContributorWidget(self)
- self.ucsf_widget.set_hospital_name("University of California San Francisco,\nSan Francisco, USA")
- self.ucsf_widget.set_hospital_participants("Mitchel S. Berger,\nShawn Hervey-Jumper")
- self.ucsf_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/ucsf-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.ucsf_widget, 2, 3, 1, 1)
- self.vienna_hospital_widget = HospitalContributorWidget(self)
- self.vienna_hospital_widget.set_hospital_name("Medical University Vienna,\nWien, Austria")
- self.vienna_hospital_widget.set_hospital_participants("Julia Furtner, Barbara Kiesel, \nGeorg Widhalm")
- self.vienna_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/vienna-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.vienna_hospital_widget, 3, 0, 1, 1)
- self.alkmaar_hospital_widget = HospitalContributorWidget(self)
- self.alkmaar_hospital_widget.set_hospital_name("Northwest Clinics, Alkmaar,\nThe Netherlands")
- self.alkmaar_hospital_widget.set_hospital_participants("Albert J. S. Idema")
- self.alkmaar_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/alkmaar-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.alkmaar_hospital_widget, 3, 1, 1, 1)
- self.hague_hospital_widget = HospitalContributorWidget(self)
- self.hague_hospital_widget.set_hospital_name("Haaglanden Medical Center,\nThe Hague, The Netherlands")
- self.hague_hospital_widget.set_hospital_participants("Alfred Kloet")
- self.hague_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/haaglanden-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.hague_hospital_widget, 3, 2, 1, 1)
- self.lariboisiere_hospital_widget = HospitalContributorWidget(self)
- self.lariboisiere_hospital_widget.set_hospital_name("Hôpital Lariboisière,\nParis, France")
- self.lariboisiere_hospital_widget.set_hospital_participants("Emmanuel Mandonnet")
- self.lariboisiere_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/lariboisiere-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.lariboisiere_hospital_widget, 3, 3, 1, 1)
- self.utrecht_hospital_widget = HospitalContributorWidget(self)
- self.utrecht_hospital_widget.set_hospital_name("University Medical Center Utrecht,\nUtrecht, The Netherlands")
- self.utrecht_hospital_widget.set_hospital_participants("Pierre A. Robe")
- self.utrecht_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/utrecht-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.utrecht_hospital_widget, 4, 0, 1, 1)
- self.isala_hospital_widget = HospitalContributorWidget(self)
- self.isala_hospital_widget.set_hospital_name("Isala, Zwolle, The Netherlands")
- self.isala_hospital_widget.set_hospital_participants("Wimar van den Brink")
- self.isala_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/isala-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.isala_hospital_widget, 4, 1, 1, 1)
- self.groningen_hospital_widget = HospitalContributorWidget(self)
- self.groningen_hospital_widget.set_hospital_name("University Medical Center Groningen,\nGroningen, The Netherlands")
- self.groningen_hospital_widget.set_hospital_participants("Michiel Wagemakers")
- self.groningen_hospital_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/groningen-hospital-logo.png'))
- self.main_scrollarea_layout.addWidget(self.groningen_hospital_widget, 4, 2, 1, 1)
- self.cancer_institute_ams_widget = HospitalContributorWidget(self)
- self.cancer_institute_ams_widget.set_hospital_name("The Netherlands Cancer Institute,\nAmsterdam, The Netherlands")
- self.cancer_institute_ams_widget.set_hospital_participants("Marnix G. Witte")
- self.cancer_institute_ams_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/cancer-institute-ams-logo.png'))
- self.main_scrollarea_layout.addWidget(self.cancer_institute_ams_widget, 4, 3, 1, 1)
- self.brats_widget = HospitalContributorWidget(self)
- self.brats_widget.set_hospital_name("The BraTS challenge 2023/2024")
- self.brats_widget.set_hospital_participants("""<a href="https://www.synapse.org/Synapse:syn64153130/wiki">Official website</a>""")
- self.brats_widget.set_logo_icon(os.path.join(os.path.dirname(os.path.realpath(__file__)),
- '../../Images/brats-challenge-logo.png'))
- self.main_scrollarea_layout.addWidget(self.brats_widget, 5, 0, 1, 1)
- self.main_scrollarea_layout.setRowStretch(self.main_scrollarea_layout.rowCount(), 1)
- # Native exit buttons
- self.bottom_exit_layout = QHBoxLayout()
- self.exit_close_pushbutton = QDialogButtonBox(QDialogButtonBox.Close)
- self.bottom_exit_layout.addStretch(1)
- self.bottom_exit_layout.addWidget(self.exit_close_pushbutton)
- self.layout.addLayout(self.bottom_exit_layout)
- def __set_layout_dimensions(self):
- self.setMinimumSize(QSize(600, 300))
- self.title_label.setFixedHeight(40)
- self.main_scrollarea_dummy_widget.setFixedSize(QSize(1500, 500))
- def __set_connections(self):
- self.exit_close_pushbutton.clicked.connect(self.accept)
- def __set_stylesheets(self):
- software_ss = SoftwareConfigResources.getInstance().stylesheet_components
- font_color = software_ss["Color7"]
- background_color = software_ss["Color2"]
- self.setStyleSheet("""
- QDialog{
- background-color: """ + background_color + """;
- }
- """)
- self.main_scrollarea.setStyleSheet("""
- QScrollArea{
- background-color: """ + background_color + """;
- }
- """)
- self.main_scrollarea_dummy_widget.setStyleSheet("""
- QWidget{
- background-color: """ + background_color + """;
- }
- """)
- self.title_label.setStyleSheet("""
- QLabel{
- color: """ + font_color + """;
- background-color: """ + background_color + """;
- font: 18px;
- }""")
- class HospitalContributorWidget(QWidget):
- def __init__(self, parent=None):
- super().__init__(parent)
- self.__set_interface()
- self.__set_layout_dimensions()
- self.__set_connections()
- self.__set_stylesheets()
- def __set_interface(self):
- self.setAttribute(Qt.WA_StyledBackground, True) # Enables to set e.g. background-color for the QWidget
- self.layout = QHBoxLayout(self)
- self.layout.setSpacing(0)
- self.layout.setContentsMargins(5, 5, 5, 5)
- self.hospital_logo_layout = QVBoxLayout()
- self.hospital_logo_layout.setSpacing(0)
- self.hospital_logo_layout.setContentsMargins(0, 0, 0, 0)
- self.hospital_logo_label = QLabel()
- self.hospital_logo_layout.addStretch(1)
- self.hospital_logo_layout.addWidget(self.hospital_logo_label)
- self.hospital_logo_layout.addStretch(1)
- self.hospital_name_label = QLabel()
- self.hospital_name_label.setTextInteractionFlags(Qt.TextSelectableByMouse)
- self.hospital_participants_label = QLabel()
- self.hospital_participants_label.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.TextBrowserInteraction)
- self.hospital_participants_label.setOpenExternalLinks(True)
- self.hospital_location_layout = QVBoxLayout()
- self.hospital_location_layout.setSpacing(0)
- self.hospital_location_layout.setContentsMargins(0, 0, 0, 0)
- self.hospital_location_layout.addWidget(self.hospital_name_label)
- self.hospital_location_layout.addWidget(self.hospital_participants_label)
- self.hospital_location_layout.addStretch(1)
- self.layout.addWidget(self.hospital_logo_label)
- self.layout.addLayout(self.hospital_location_layout)
- def __set_layout_dimensions(self):
- self.setFixedSize(QSize(350, 100))
- self.hospital_logo_label.setFixedSize(QSize(50, 50))
- self.hospital_name_label.setFixedSize(QSize(270, 40))
- self.hospital_participants_label.setFixedSize(QSize(270, 50))
- def __set_connections(self):
- pass
- def __set_stylesheets(self):
- software_ss = SoftwareConfigResources.getInstance().stylesheet_components
- font_color = software_ss["Color7"]
- background_color = software_ss["Color2"]
- self.setStyleSheet("""
- QWidget{
- background-color: """ + background_color + """;
- border: 2px solid black;
- }
- """)
- self.hospital_logo_label.setStyleSheet("""
- QLabel{
- border: none;
- }""")
- self.hospital_name_label.setStyleSheet("""
- QLabel{
- color: """ + font_color + """;
- font-size: 13px;
- border: none;
- }
- """)
- self.hospital_participants_label.setStyleSheet("""
- QLabel{
- color: """ + font_color + """;
- font-size: 13px;
- border: none;
- }
- """)
- def set_logo_icon(self, filename: str) -> None:
- self.hospital_logo_label.setPixmap(QPixmap(filename).scaled(QSize(50, 50)))
- def set_hospital_name(self, name: str) -> None:
- self.hospital_name_label.setText(name)
- def set_hospital_participants(self, participants: str) -> None:
- self.hospital_participants_label.setText(participants)
ResearchCommunityDialog.py at commit fcb5d92, under BSD-2-Clause · at the source
Overview
14 affiliations
- Department of Health Research, SINTEF Digital, Trondheim, Norway
- Department of Clinical Neuroscience, Institute of Neuroscience and Physiology, University of Gothenburg, Gothenburg, Sweden
- Department of Neurosurgery, Sahlgrenska University Hospital, Region Västragötaland, Gothenburg, Sweden
- Department of Neurosurgery, Brigham and Women’s Hospital, Harvard Medical School, Boston, MA USA
- Department Medical Sciences, Section of Neurosurgery, Uppsala University Hospital, Uppsala, Sweden
- Department of Neurosurgery, Karolinska University Hospital, Stockholm, Sweden
- Department of Neurosurgery, Linköping University Hospital, Linköping, Sweden
- Department of Neurosurgery, Skåne University Hospital, Lund, Sweden
- Department of Clinical Science, Umeå University, Umeå, Sweden
- Department of Neurosurgery, Haukeland University Hospital, Bergen, Norway
- Department of Neurosurgery, University Hospital of North Norway, Tromsø, Norway
- Department of Neuromedicine and Movement Science, Norwegian University of Science and Technology, Trondheim, Norway
- Department of Neurosurgery, St. Olavs hospital, Trondheim University Hospital, Trondheim, Norway
- Department of Circulation and Medical Imaging, Norwegian University of Science and Technology, Trondheim, Norway
Abstract
Fluid-attenuated inversion recovery (FLAIR) magnetic resonance imaging (MRI) scans are important for diagnosis, treatment planning, and monitoring of various brain tumors. Depending on the tumor type, the FLAIR hyperintensity volume is an important measure to assess the tumor volume, surrounding vasogenic edema, or treatment induced changes, such as gliosis. Automatic segmentation would therefore be valuable in the clinic and in clinical trials. In this study, around 5000 FLAIR images of various brain tumors types and acquisition time points, from different neurosurgical centers, were used to train a unified FLAIR hyperintensity segmentation model using an Attention U-Net architecture. The performance was compared against dataset-specific models and was validated on different tumor types, acquisition time points, and against BraTS. The unified model achieved an average Dice score of 88.65% for pre-operative meningiomas, 80.08% for pre-operative metastases, 90.92% for pre-operative and 84.60% for post-operative gliomas from BraTS, and 84.47% for pre-operative and 61.27% for post-operative lower grade gliomas. In addition, the results showed that the unified model achieved comparable segmentation performance to the dataset-specific models on their respective datasets. The documented generalization across tumor types and acquisition time points is a strong indicator for efficient deployment in a clinical setting. The model has been integrated into Raidionics, an open-source software for CNS tumor analysis.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 2 matches between paragraphs and lines of code.
raidionics/raidionics-models
78a810e490412614dc554158236ee9930a8193f1, 14 December 2023Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
raidionics/Raidionics
fcb5d92f9ab8150336cd4ba23968823cc49f4aa2, 15 January 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
128 files
- assets/
hooks/ , Python, 9 lineshook-PySide6.py - assets/
hooks/ , Python, 8 lineshook-ants.py - assets/
hooks/ , Python, 6 lineshook-antspyx.py - assets/
hooks/ , Python, 6 lineshook-dipy.py - assets/
hooks/ , Python, 6 lineshook-distutils.py - assets/
hooks/ , Python, 7 lineshook-gdown.py - assets/
hooks/ , Python, 6 lineshook-gevent.py - assets/
hooks/ , Python, 6 lineshook-nibabel.py - assets/
hooks/ , Python, 6 lineshook-pydicom.py - assets/
hooks/ , Python, 7 lineshook-raidionicsrads.py - assets/
hooks/ , Python, 7 lineshook-raidionicsseg.py - assets/
hooks/ , Python, 6 lineshook-rtutils.py - assets/
hooks/ , Python, 6 lineshook-scikit-learn.py - assets/
hooks/ , Python, 6 lineshook-scipy.py - assets/
hooks/ , Python, 6 lineshook-sklearn.py - assets/
hooks/ , Python, 6 lineshook-statsmodels.py - assets/
hooks/ , Python, 3 linesset_recursion_limit.py - build_launcher.py, Python, 13 lines
- gui/
LogReaderThread.py , Python, 34 lines - gui/
RaidionicsMainWindow.py , Python, 551 lines - gui/
SinglePatientComponent/ , Python, 218 linesCentralAreaExecutionWidg et.py - gui/
SinglePatientComponent/ , Python, 145 linesCentralAreaWidget.py - gui/
SinglePatientComponent/ , Python, 348 linesCentralDisplayArea/ CentralDisplayAreaWidget .py - gui/
SinglePatientComponent/ , Python, 20 linesCentralDisplayArea/ Custom3DView.py - gui/
SinglePatientComponent/ , Python, 463 linesCentralDisplayArea/ CustomQGraphicsView.py - gui/
SinglePatientComponent/ , Python, 47 linesCentralDisplayArea/ MultipleTimestamps/ MTSCentralDisplayAreaWid get.py - gui/
SinglePatientComponent/ , Python, 1 lineCentralDisplayArea/ MultipleTimestamps/ __init__.py - gui/
SinglePatientComponent/ , Python, 73 linesCentralDisplayArea/ QCollapsibleView.py - gui/
SinglePatientComponent/ , Python, 1 lineCentralDisplayArea/ __init__.py - gui/
SinglePatientComponent/ , Python, 536 linesLayersInteractorSidePane l/ ActionsInteractor/ ActionsInteractorWidget. py - gui/
SinglePatientComponent/ , Python, 1 lineLayersInteractorSidePane l/ ActionsInteractor/ __init__.py - gui/
SinglePatientComponent/ , Python, 564 linesLayersInteractorSidePane l/ AnnotationLayersInteract or/ AnnotationSingleLayerWid get.py - gui/
SinglePatientComponent/ , Python, 238 linesLayersInteractorSidePane l/ AnnotationLayersInteract or/ AnnotationsLayersInterac tor.py - gui/
SinglePatientComponent/ , Python, 1 lineLayersInteractorSidePane l/ AnnotationLayersInteract or/ __init__.py - gui/
SinglePatientComponent/ , Python, 266 linesLayersInteractorSidePane l/ AtlasLayersInteractor/ AtlasSingleLayerCollapsi bleGroupBox.py - gui/
SinglePatientComponent/ , Python, 208 linesLayersInteractorSidePane l/ AtlasLayersInteractor/ AtlasSingleLayerWidget.p y - gui/
SinglePatientComponent/ , Python, 174 linesLayersInteractorSidePane l/ AtlasLayersInteractor/ AtlasesLayersInteractor. py - gui/
SinglePatientComponent/ , Python, 1 lineLayersInteractorSidePane l/ AtlasLayersInteractor/ __init__.py - gui/
SinglePatientComponent/ , Python, 363 linesLayersInteractorSidePane l/ MRIVolumesInteractor/ MRISeriesLayerWidget.py - gui/
SinglePatientComponent/ , Python, 238 linesLayersInteractorSidePane l/ MRIVolumesInteractor/ MRIVolumesLayerInteracto r.py - gui/
SinglePatientComponent/ , Python, 1 lineLayersInteractorSidePane l/ MRIVolumesInteractor/ __init__.py - gui/
SinglePatientComponent/ , Python, 311 linesLayersInteractorSidePane l/ SinglePatientLayersWidge t.py - gui/
SinglePatientComponent/ , Python, 313 linesLayersInteractorSidePane l/ TimestampsInteractor/ TimestampLayerWidget.py - gui/
SinglePatientComponent/ , Python, 432 linesLayersInteractorSidePane l/ TimestampsInteractor/ TimestampsLayerInteracto r.py - gui/
SinglePatientComponent/ , Python, 1 lineLayersInteractorSidePane l/ TimestampsInteractor/ __init__.py - gui/
SinglePatientComponent/ , Python, 1 lineLayersInteractorSidePane l/ __init__.py - gui/
SinglePatientComponent/ , Python, 470 linesPatientResultsSidePanel/ PatientResultsSinglePati entSidePanelWidget.py - gui/
SinglePatientComponent/ , Python, 436 linesPatientResultsSidePanel/ SinglePatientResultsWidg et.py - gui/
SinglePatientComponent/ , Python, 641 linesPatientResultsSidePanel/ SurgicalReportingWidget. py - gui/
SinglePatientComponent/ , Python, 1,068 linesPatientResultsSidePanel/ TumorCharacteristicsWidg et.py - gui/
SinglePatientComponent/ , Python, 1 linePatientResultsSidePanel/ __init__.py - gui/
SinglePatientComponent/ , Python, 324 linesProcessProgressWidget.py - gui/
SinglePatientComponent/ , Python, 342 linesSinglePatientWidget.py - gui/
SinglePatientComponent/ , Python, 1 line__init__.py - gui/
StudyBatchComponent/ , Python, 166 linesPatientsListingPanel/ PatientListingWidgetItem .py - gui/
StudyBatchComponent/ , Python, 220 linesPatientsListingPanel/ StudyPatientListingWidge t.py - gui/
StudyBatchComponent/ , Python, 1 linePatientsListingPanel/ __init__.py - gui/
StudyBatchComponent/ , Python, 148 linesPatientsSummaryPanel/ StudyPatientsContentSumm aryPanelWidget.py - gui/
StudyBatchComponent/ , Python, 99 linesPatientsSummaryPanel/ StudyPatientsReportingSu mmaryWidget.py - gui/
StudyBatchComponent/ , Python, 149 linesPatientsSummaryPanel/ StudyPatientsSegmentatio nSummaryWidget.py - gui/
StudyBatchComponent/ , Python, 164 linesPatientsSummaryPanel/ StudyPatientsSummaryPane lWidget.py - gui/
StudyBatchComponent/ , Python, 1 linePatientsSummaryPanel/ __init__.py - gui/
StudyBatchComponent/ , Python, 662 linesStudiesSidePanel/ SingleStudyWidget.py - gui/
StudyBatchComponent/ , Python, 310 linesStudiesSidePanel/ StudiesSidePanelWidget.p y - gui/
StudyBatchComponent/ , Python, 1 lineStudiesSidePanel/ __init__.py - gui/
StudyBatchComponent/ , Python, 210 linesStudyBatchWidget.py - gui/
StudyBatchComponent/ , Python, 1 line__init__.py - gui/
UtilsWidgets/ , Python, 113 linesCustomQDialog/ AboutDialog.py - gui/
UtilsWidgets/ , Python, 189 linesCustomQDialog/ ContrastAdjustmentDialog .py - gui/
UtilsWidgets/ , Python, 68 linesCustomQDialog/ DisplayDICOMMetadataDial og.py - gui/
UtilsWidgets/ , Python, 525 linesCustomQDialog/ ImportDICOMDataQDialog.p y - gui/
UtilsWidgets/ , Python, 351 linesCustomQDialog/ ImportDataQDialog.py - gui/
UtilsWidgets/ , Python, 614 linesCustomQDialog/ ImportFoldersQDialog.py - gui/
UtilsWidgets/ , Python, 86 linesCustomQDialog/ KeyboardShortcutsDialog. py - gui/
UtilsWidgets/ , Python, 149 linesCustomQDialog/ LogsViewerDialog.py - gui/
UtilsWidgets/ , Python, 302 lines, 1 matchCustomQDialog/ ResearchCommunityDialog. py - gui/
UtilsWidgets/ , Python, 73 linesCustomQDialog/ SavePatientChangesDialog .py - gui/
UtilsWidgets/ , Python, 1,738 linesCustomQDialog/ SoftwareSettingsDialog.p y - gui/
UtilsWidgets/ , Python, 110 linesCustomQDialog/ TumorTypeSelectionQDialo g.py - gui/
UtilsWidgets/ , Python, 479 linesCustomQDialog/ VolumeStatisticsDialog.p y - gui/
UtilsWidgets/ , Python, 1 lineCustomQDialog/ __init__.py - gui/
UtilsWidgets/ , Python, 125 linesCustomQGroupBox/ QCollapsibleGroupBox.py - gui/
UtilsWidgets/ , Python, 164 linesCustomQGroupBox/ QCollapsibleWidget.py - gui/
UtilsWidgets/ , Python, 1 lineCustomQGroupBox/ __init__.py - gui/
UtilsWidgets/ , Python, 46 linesCustomQTableWidget/ ContextMenuQTableWidget. py - gui/
UtilsWidgets/ , Python, 68 linesCustomQTableWidget/ ImportDICOMQTableWidget. py - gui/
UtilsWidgets/ , Python, 1 lineCustomQTableWidget/ __init__.py - gui/
UtilsWidgets/ , Python, 108 linesQCircularProgressBar.py - gui/
UtilsWidgets/ , Python, 121 linesQCustomIconsPushButton.p y - gui/
UtilsWidgets/ , Python, 75 linesQDoubleIconsPushButton.p y - gui/
UtilsWidgets/ , Python, 52 linesQRightIconPushButton.py - gui/
UtilsWidgets/ , Python, 1 line__init__.py - gui/
WelcomeWidget.py , Python, 374 lines - gui/
__init__.py , Python, 1 line - integration_tests/
__init__.py , Python, 1 line - integration_tests/
batch_study_module/ , Python, 1 line__init__.py - integration_tests/
batch_study_module/ , Python, 121 linestest_bm_creation_and_dat a_import.py - integration_tests/
batch_study_module/ , Python, 121 linestest_bm_creation_and_dic om_import.py - integration_tests/
batch_study_module/ , Python, 87 linestest_bm_creation_and_edi t.py - integration_tests/
batch_study_module/ , Python, 114 linestest_bm_reloading_and_ed it.py - integration_tests/
single_patient_module/ , Python, 1 line__init__.py - integration_tests/
single_patient_module/ , Python, 241 linestest_sp_creation_and_dat a_import.py - integration_tests/
single_patient_module/ , Python, 290 linestest_sp_creation_and_dic om_import.py - integration_tests/
single_patient_module/ , Python, 247 linestest_sp_creation_and_edi t.py - integration_tests/
single_patient_module/ , Python, 177 linestest_sp_reloading_and_ed it.py - main.py, Python, 75 lines
- tests/
__init__.py , Python, 1 line - tests/
software_launch_test.py , Python, 58 lines - utils/
__init__.py , Python, 1 line - utils/
backend_logic.py , Python, 273 lines - utils/
data_structures/ , Python, 583 linesAnnotationStructure.py - utils/
data_structures/ , Python, 462 linesAtlasStructure.py - utils/
data_structures/ , Python, 190 linesInvestigationTimestampSt ructure.py - utils/
data_structures/ , Python, 623 linesMRIVolumeStructure.py - utils/
data_structures/ , Python, 1,262 linesPatientParametersStructu re.py - utils/
data_structures/ , Python, 237 linesReportingStructure.py - utils/
data_structures/ , Python, 389 linesStudyParametersStructure .py - utils/
data_structures/ , Python, 438 linesUserPreferencesStructure .py - utils/
data_structures/ , Python, 1 line__init__.py - utils/
logic/ , Python, 701 linesPipelineCreationHandler. py - utils/
logic/ , Python, 521 linesPipelineResultsCollector .py - utils/
logic/ , Python, 1 line__init__.py - utils/
models_download.py , Python, 173 lines - utils/
patient_dicom.py , Python, 686 lines - utils/
software_config.py , Python, 460 lines - utils/
utilities.py , Python, 182 lines - LICENSE, License, 26 lines
- README.md, Text, 79 lines
dbouget/validation_metrics_computation
22448bb0352984bfc04289954d0f175135e61267, 31 July 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
45 files
- __init__.py, Python, 1 line
- main.py, Python, 47 lines
- notebooks/
compute_study_example.ip , Jupyter, 104 linesynb - notebooks/
compute_validation_examp , Jupyter, 113 linesle.ipynb - raidionicsval/
Computation/ , Python, 1 line__init__.py - raidionicsval/
Computation/ , Python, 35 linesdice_computation.py - raidionicsval/
Computation/ , Python, 59 linesdice_computation_instanc e.py - raidionicsval/
Computation/ , Python, 170 linesmedpy_metrics.py - raidionicsval/
Computation/ , Python, 168 linesstandalone_computation.p y - raidionicsval/
Plotting/ , Python, 1 line__init__.py - raidionicsval/
Plotting/ , Python, 33 linesagreement_plot.py - raidionicsval/
Plotting/ , Python, 17 linesclassification_plot.py - raidionicsval/
Plotting/ , Python, 60 linesconfidence_intervals_plo t.py - raidionicsval/
Plotting/ , Python, 144 linesmetric_versus_binned_box plot.py - raidionicsval/
Studies/ , Python, 788 linesAbstractStudy.py - raidionicsval/
Studies/ , Python, 27 linesClassificationStudy.py - raidionicsval/
Studies/ , Python, 79 linesSegmentationStudy.py - raidionicsval/
Studies/ , Python, 1 line__init__.py - raidionicsval/
Studies/ , Python, 19 linesstudy_connector.py - raidionicsval/
Utils/ , Python, 556 linesPatientMetricsStructure. py - raidionicsval/
Utils/ , Python, 1 line__init__.py - raidionicsval/
Utils/ , Python, 137 linesio_converters.py - raidionicsval/
Utils/ , Python, 232 lineslatex_converter.py - raidionicsval/
Utils/ , Python, 275 linesresources.py - raidionicsval/
Validation/ , Python, 1 line__init__.py - raidionicsval/
Validation/ , Python, 509 linesextra_metrics_computatio n.py - raidionicsval/
Validation/ , Python, 305 linesinstance_segmentation_va lidation.py - raidionicsval/
Validation/ , Python, 598 lines, 1 matchkfold_model_validation.p y - raidionicsval/
Validation/ , Python, 341 lineskfold_model_validation_c lassification.py - raidionicsval/
Validation/ , Python, 357 linesvalidation_utilities.py - raidionicsval/
Validation/ , Python, 180 linesvalidation_utilities_cla ssification.py - raidionicsval/
__init__.py , Python, 1 line - raidionicsval/
__main__.py , Python, 47 lines - raidionicsval/
compute.py , Python, 47 lines - tests/
__init__.py , Python, 1 line - tests/
conftest.py , Python, 19 lines - tests/
download_resources.py , Python, 31 lines - tests/
generic_tests/ , Python, 1 line__init__.py - tests/
generic_tests/ , Python, 86 linestest_studies_pipeline.py - tests/
generic_tests/ , Python, 140 linestest_validation_pipeline .py - tests/
generic_tests/ , Python, 129 linestest_validation_pipeline _advanced.py - tests/
local_docker_tests/ , Python, 1 line__init__.py - tests/
local_docker_tests/ , Python, 90 linestest_docker_validation_p ipeline.py - LICENSE.md, License, 25 lines
- README.md, Text, 146 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:
- 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 169 scripts, each with its path and the digest of its content;
- 2 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
- synapse.org/
synapse:syn51156910 , at Synapse; found in the references - synapse.org/
synapse:syn53708126/ , at Synapse; found in “Data and code availability”wiki - synapse.org/
synapse:syn53708249/ , at Synapse; found in the referenceswiki
Data and code availability
The data analyzed in this study is subject to the following licenses/
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, 14 authors, 4 keywords, 7 MeSH terms, 1 funder, 34 references.
Cite
This paper
Faanes, M. G., Bouget, D., Jakola, A. S., Smith, T. R., Kavouridis, V. K., Latini, F., Jensdottir, M., Milos, P., Redebrandt, H. N., Sjöberg, R. L., Mahesparan, R., Pedersen, L. K., Solheim, O., & Reinertsen, I. (2026). A unified FLAIR hyperintensity segmentation model for various CNS tumor types and acquisition time points. Scientific reports, 16(1), 19707. https://
BibTeX
@article{faanes2026unifi
author = {Faanes, Mathilde Gajda and Bouget, David and Jakola, Asgeir S and Smith, Timothy R and Kavouridis, Vasileios K and Latini, Francesco and Jensdottir, Margret and Milos, Peter and Redebrandt, Henrietta Nittby and Sjöberg, Rickard L and Mahesparan, Rupavathana and Pedersen, Lars Kjelsberg and Solheim, Ole and Reinertsen, Ingerid},
title = {{A unified FLAIR hyperintensity segmentation model for various CNS tumor types and acquisition time points}},
journal = {Scientific reports},
year = {2026},
month = apr,
volume = {16},
number = {1},
pages = {19707},
publisher = {Nature Publishing Group},
issn = {2045-2322},
doi = {10.1038/
url = {https://
pmid = {42031792},
pmcid = {PMC13315698}
}
RIS
TY - JOUR
AU - Faanes, Mathilde Gajda
AU - Bouget, David
AU - Jakola, Asgeir S
AU - Smith, Timothy R
AU - Kavouridis, Vasileios K
AU - Latini, Francesco
AU - Jensdottir, Margret
AU - Milos, Peter
AU - Redebrandt, Henrietta Nittby
AU - Sjöberg, Rickard L
AU - Mahesparan, Rupavathana
AU - Pedersen, Lars Kjelsberg
AU - Solheim, Ole
AU - Reinertsen, Ingerid
TI - A unified FLAIR hyperintensity segmentation model for various CNS tumor types and acquisition time points
T2 - Scientific reports
J2 - Sci Rep
PY - 2026
DA - 2026/
VL - 16
IS - 1
SP - 19707
SN - 2045-2322
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "A unified FLAIR hyperintensity segmentation model for various CNS tumor types and acquisition time points",
"container-title": "Scientific reports",
"author": [
{
"family": "Faanes",
"given": "Mathilde Gajda"
},
{
"family": "Bouget",
"given": "David"
},
{
"family": "Jakola",
"given": "Asgeir S"
},
{
"family": "Smith",
"given": "Timothy R"
},
{
"family": "Kavouridis",
"given": "Vasileios K"
},
{
"family": "Latini",
"given": "Francesco"
},
{
"family": "Jensdottir",
"given": "Margret"
},
{
"family": "Milos",
"given": "Peter"
},
{
"family": "Redebrandt",
"given": "Henrietta Nittby"
},
{
"family": "Sjöberg",
"given": "Rickard L"
},
{
"family": "Mahesparan",
"given": "Rupavathana"
},
{
"family": "Pedersen",
"given": "Lars Kjelsberg"
},
{
"family": "Solheim",
"given": "Ole"
},
{
"family": "Reinertsen",
"given": "Ingerid"
}
],
"container-title-short":
"volume": "16",
"issue": "1",
"page": "19707",
"DOI": "10.1038/
"PMID": "42031792",
"PMCID": "PMC13315698",
"ISSN": "2045-2322",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
24
]
]
}
}
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.1016/j.phro.2026.101056 [code]
- Toward uncertainty-aware manual delineation of brain tumours using eye-tracking and image-derived features.Journal: Physics and imaging in radiation oncologyIn common: scikit-image, Pillow, NiBabel, 6 other tools, synapse.org/synapse:syn51156910, other condition, 2 references
- [2] doi:10.21037/qims-2026-0792 [code]
- An nnU-Net-based framework with adaptive feature representation for 3D brain tumor segmentation.Journal: Quantitative imaging in medicine and surgeryIn common: SimpleITK, scikit-image, NiBabel, 6 other tools, methods / tools, structural MRI / diffusion, other condition, 4 references
- [3] doi:10.1002/alz.71649 [code]
- Postmortem brain MRI reveals differential associations of subcortical and limbic volumes with cortical thinning and neurodegenerative pathologies.Journal: Alzheimer's & dementia : the journal of the Alzheimer's AssociationIn common: SimpleITK, Plotly, scikit-image, 9 other tools, structural MRI / diffusion, other condition
- [4] doi:10.3389/fnins.2026.1870124 [code]
- An end-to-end pipeline for automated fetal brain segmentation and biometry from 3D SSFP MRI.Journal: Frontiers in neuroscienceIn common: SimpleITK, scikit-image, NiBabel, 6 other tools, structural MRI / diffusion, 3 references
- [5] doi:10.3389/frai.2026.1771088 [code]
- Few-shot deployment of pretrained MRI transformers in brain imaging tasks.Journal: Frontiers in artificial intelligenceIn common: SimpleITK, scikit-image, h5py, 8 other tools, methods / tools, structural MRI / diffusion
- [6] doi:10.1038/s41598-026-57519-w [code]
- Automated segmentation of neurons and spinal cord structures in immunofluorescence images using SpineDL.Journal: Scientific reportsIn common: Plotly, scikit-image, h5py, 7 other tools, methods / tools, other condition, 1 reference
- [7] doi:10.1038/s41467-026-72437-1 [code]
- High-speed whole-brain imaging in Drosophila.Journal: Nature communicationsIn common: SimpleITK, Plotly, scikit-image, 8 other tools
- [8] doi:10.1016/j.patter.2026.101538 [code]
- A multi-modal foundation model for brain disease diagnosis and medical imaging.Journal: Patterns (New York, N.Y.)In common: scikit-image, h5py, Pillow, 6 other tools, 2 references
- [9] doi:10.1186/s12880-026-02481-2 [code]
- Deep learning-based neuroanatomical profiling reveals population-specific brain changes in multiple sclerosis: a large-scale Middle Eastern study.Journal: BMC medical imagingIn common: Plotly, scikit-image, Pillow, 7 other tools, structural MRI / diffusion, 1 reference
- [10] doi:10.1016/j.xcrm.2026.102766 [code]
- A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.Journal: Cell reports. MedicineIn common: Plotly, scikit-image, h5py, 7 other tools, other condition, 1 reference
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: 3 repositories of the authors' code, each at its verified commit and with its license, 169 scripts, and 2 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:387cdd2a4b66e507…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
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: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
