Version history
Version increment rules
major version increment:
new python interpreter version
20 minor version increments
minor version increment:
new module, new external module, external module upgrade
20 patch version increments
patch version increment:
update html documentation
new file, file update
module update
version 0.9.1, build 26/07/2025
First distributed version.
Github page deployment: https://github.com/PySisyphe/Sisyphe
First PyInstaller stand alone frozen version for Windows and MacOS platforms (x64 CPU)
Shared link to Mega repository for downloading frozen versions: https://mega.nz/folder/hKEBzRTR#MUodQFh4N8LeukE2hbkzNA
version 0.12.9, build 05/08/2025
new files
gui/darkroi/texture.png
gui/lightroi/texture.png
updated files
settings/settings.xml
add DicomHost section
settings/tooltips.xml
add DicomHost section
new external module
pynetdicom 3.0.4
upgraded external module
pydicom, upgrade 2.3.1 to 3.0.1
generate a bug in core.sisypheDicom.ImportFromRTStruct.execute() method
new module
gui.dialogDicomQuery
Dialog box for Dicom Query/retreive
updated modules
core.sisypheDicom
gui.dialogSplash
gui.dialogDicomRTImport
core.sisypheImageIO
gui.dialogGenericResults
gui.windowSisyphe
gui.attributesWidgets
gui.dialogSplash
new classes
gui.dialogDicomQuery.DialogDicomQueryRetrieve
Dialog box for Dicom Query/retreive
gui.dialogTexture.Dialog.DialogROITexture
Dialog box for texture analysis in ROI
new methods
gui.windowSisyphe.WindowSisyphe.queryDicom
gui.windowSisyphe.WindowSisyphe.texture2
new functions
gui.dialogDicomQuery.getDicomDirectory
gui.dialogDicomQuery.handle_store
updated classes
core.sisypheDicom.ImportFromRTStruct
update execute() method
gui.dialogDicomRTImport.DialogRTimport
update _convert() method
gui.dialogGenericResults.DialogGenericResults
update _getDataFrame() method
gui.windowSisyphe.WindowSisyphe
add queryDicom() method to exec gui.dialogDicomQuery.DialogDicomQueryRetrieve dialog
add texture2() method to exec gui.dialogTexture.Dialog.DialogROITexture dialog
gui.attributesWidgets.ListROIAttributesWidget
add features() method to exec gui.dialogTexture.Dialog.DialogROITexture dialog
update __init__() method
gui.dialogSplash.DialogSplash
update __init__() method
updated methods
core.sisypheDicom.ImportFromRTStruct.execute()
bug fix, since version 3.0.1 of pydicom, the VM attribute of a sequence (SQ) is always 1,
to get the number of elements in a sequence (SQ), use len(DataElement.value)
bug fix, set reference volume origin to default (0.0, 0.0, 0.0)
bug fix, test if the dicom ROIContourSequence field exists
bug fix, add multiple folders management
gui.dialogDicomRTImport.DialogRTimport._convert()
gui.dialogGenericResults.DialogGenericResults._getDataFrame()
replace n by space of the dataFrame header row
gui.attributesWidgets.ListROIAttributesWidget.__init__()
add features IconPushButton (_features)
gui.dialogSplash.DialogSplash.__init__()
display pynetdicom version in dialog splash
updated function
core.sisypheImageIO.isDicom
bug fix, return value, from str to bool
version 0.12.11, build 28/08/2025
updated modules
widgets.attributesWidget
widgets.tabToolsWidgets
updated classes
widgets.attributesWidget.ItemMeshAttributesWidget
widgets.attributesWidget.ItemToolAttributesWidget
widgets.attributesWidget.ItemBundleAttributesWidget
widgets.attributesWidget.ListMeshAttributesWidget
widgets.attributesWidget.ListToolAttributesWidget
widgets.attributesWidget.ListBundleAttributesWidget
widgets.tabToolsWidgets.TabROIToolsWidget
widgets.tabToolsWidgets.TabTrackingWidget
updated methods
widgets.attributesWidget.ItemMeshAttributesWidget.settings()
widgets.attributesWidget.ItemToolAttributesWidget.properties()
widgets.attributesWidget.ItemToolAttributesWidget.target()
widgets.attributesWidget.ItemToolAttributesWidget.length()
widgets.attributesWidget.ItemBundleAttributesWidget._editColor()
widgets.attributesWidget.ListMeshAttributesWidget.addIsosurface()
widgets.attributesWidget.ListToolAttributesWidget.newHandle()
widgets.attributesWidget.ListToolAttributesWidget.newLine()
widgets.attributesWidget.ListToolAttributesWidget.duplicate()
widgets.attributesWidget.ListToolAttributesWidget.features()
widgets.attributesWidget.ListToolAttributesWidget.features2()
widgets.attributesWidget.ListBundleAttributesWidget.dissection()
widgets.attributesWidget.ListBundleAttributesWidget.filter()
widgets.attributesWidget.ListBundleAttributesWidget.centroid()
widgets.attributesWidget.ListBundleAttributesWidget.cluster()
widgets.attributesWidget.ListBundleAttributesWidget.statistics()
widgets.tabToolsWidgets.TabROIToolsWidget._dialogActiveContour()
widgets.tabToolsWidgets.TabTrackingWidget.atlas()
widgets.tabToolsWidgets.TabTrackingWidget.dissection()
update dialog title bar color for Win32 platform
version 0.12.16, build 30/08/2025
updated modules
core.sisypheROI
update cython compilation
widgets.thresholdWidgets
widgets.tabToolsWidgets
gui.dialogFiducialBox
gui.windowSisyphe
updated classes
core.sisypheROI.SisypheROIDraw
update setMorphologyRadius() method
update getMorphologyRadius() method
widgets.thresholdWidgets.ThresholdViewWidget
add _onButtonResetEvent() method
add setResetButtonVisibility() method
add getResetButtonVisibility() method
update __init__() method
widgets.tabToolsWidgets.TabROIToolsWidget
add _menuThresholdShow() method
update _brushThresholdChanged() method
gui.dialogFiducialBox.DialogFiducialBox
update __init__() method
gui.windowSisyphe.WindowSisyphe
update frameDetection() method
new methods
widgets.thresholdWidgets._onButtonResetEvent()
event method to reset widget thresholds
widgets.thresholdWidgets.setResetButtonVisibility()
set reset button visibility
widgets.thresholdWidgets.setResetButtonVisibility()
get reset button visibility
widgets.tabToolsWidgets.TabROIToolsWidget._menuThresholdShow()
bug fix, loss of volume display in darwin platform when popup menu is shown
updated methods
core.sisypheROI.SisypheROIDraw.setMorphologyRadius()
bug fix, add int parameter type
core.sisypheROI.SisypheROIDraw.getMorphologyRadius()
bug fix, change return type from float to int
widgets.thresholdWidgets.ThresholdViewWidget.__init__()
add reset button (self._resetbutton attribute), to reset widget thresholds
widgets.tabToolsWidgets.TabROIToolsWidget._brushThresholdChanged()
bug fix, loss of volume display in darwin platform when popup menu is shown
gui.dialogFiducialBox.DialogFiducialBox.__init__()
bug fix, remove setModal(True)
Qt5 bug of modal dialog on darwin platform, popup menu items cannot be selected
gui.windowSisyphe.WindowSisyphe.frameDetection()
Qt5 bug of modal dialog on darwin platform, popup menu items cannot be selected, modal simulation to fix it
version 0.16.5, build 13/10/2025
updated html documentation
add texture.png icon
update PySisyphe_dockroi.rst
add full menu documentation
menu Diffusion: PySisyphe_Diffusion.rst
menu File PySisyphe:_File.rst
menu Functions: PySisyphe_Functions.rst
menu Mapping: PySisyphe_Mapping.rst
menu Registration: PySisyphe_Registration.rst
menu Segmentation: PySisyphe_Segmentation.rst
menu Window PySisyphe:_Window.rst
add version-histrory.rst
update API documentation, docstring corrections
rebuild sphinx documentation
updated files
/Sisyphe/settings/MR.xdcm
fix error, line 79, in PixelSpacing value, from 1.0/1.L0 to 1.0/1.0
/Sisyphe/settings/dialogs.xml
/Sisyphe/settings/tootips.xml
/Sisyphe/settings/functions.xml
updated modules
core.sisypheDicom
core.sliceViewFiducialBoxWidget
core.sisypheTools
core.sisypheStatitics
core.sisypheSettings
processing.dipyFunctions
gui.dialogEditLabels
gui.dialogExport
gui.dialogDicomExport
gui.dialogDicomQuery
gui.dialogLabel
gui.windowSisyphe
gui.dialogWorkflow
gui.dialogReorient
gui.dialogGenericResults
gui.dialogRegistration
gui.dialogSegmentation
gui.dialogDeepSegmentation
gui.dialogDiffusionPreprocessing
gui.dialogDiffusionTracking
gui.dialogStatConstrast
gui.dialogStatModel
gui.dialogStatResult
gui.windowSisyphe
widgets.imageWidgets
widgets.functionsSettingsWidget
widgets.tabToolsWidgets
updated functions
core.sisypheSettings.initPySisypheUserPath()
line 143, apply DPI scale factor to some settings
core.sisypheSettings.setUserSettingsToDefault()
line 196, apply DPI scale factor to some settings
processing.dipyFunctions.dwiPreprocessing()
line 435, change the default value of the blockradius parameter
updated classes
core.sisypheDicom.ExportToDicom
update execute() method
core.sliceViewFiducialBoxWidget.SliceViewFiducialBoxWidget
update __init__() method
core.sisypheTools.HandleWidget
update setFontSize() method
update getFontSize() method
core.sisypheTools.LineWidget
update setFontSize() method
update getFontSize() method
core.sisypheStatitics.SisypheDesign
update __str__() method
update addGlobalCovariable() method
core.sisypheSettings.SisypheSettings
getUserSettings() method
gui.dialogEditLabels.DialogEditLabels
update __init__() method
gui.dialogExport.DialogExport
update __init__() meaddGlobalCovariable() method
gui.dialogDicomExport.DialogDicomExport
update __init__() method
gui.dialogDicomQuery.DialogDicomQueryRetrieve
update __init__() method
gui.dialogLabel.DialogVOLtoLabel
update __init__() method
gui.dialogLabel.DialogROItoLabel
update __init__() method
gui.dialogLabel.DialogLabeltoROI
update __init__() method
gui.windowSisyphe.WindowSisyphe
update _initRegistrationMenu() method
gui.dialogWorkflow.WorkflowItem
update __init__() method
gui.dialogReorient.DialogReorient
update __init__() method
gui.dialogGenericResults.DialogGenericResults
add showEvent() method
gui.dialogRegistration.DialogAsymmetry
update __init__() method
update execute() method
gui.dialogSegmentation.DialogRegistrationBasedSegmentation
update _updateAvailability() method
gui.dialogDeepSegmentation.DialogDeepTumorSegmentation
update execute() method
gui.dialogDiffusionPreprocessing.DialogDiffusionPreprocessing
update __init__() method
gui.dialogDiffusionTracking.DialogDiffusionTracking
update _stoppingChanged() method
gui.dialogStatConstrast.DialogContrast
update __init__() method
gui.dialogStatConstrast.DialogConjunction
update __init__() method
gui.dialogStatConstrast.DialogTMapToZMap
update __init__() method
gui.dialogStatModel.DialogModel
update __init__() method
gui.dialogStatModel.DialogObs
update __init__() method
gui.dialogStatModel.DialogfMRIObs
update __init__() method
gui.dialogStatResult.DialogResult
update setMap() method
gui.windowSisyphe.WindowSisyphe
display documentation for each menu
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget
update editAttributes() method
update viewDicomAttributes() method
update editLabels() method
update statistics() method
widgets.functionsSettingsWidget.SettingsWidget
update formatLabel() method
widgets.tabToolsWidgets.TabHelpWidget
add setUrl() method
add setPage() method
updated methods
core.sisypheDicom.ExportToDicom.execute()
bug fix, value incrementation of ds[‘ImagePositionPatient’] and ds[‘SliceLocation’]
core.sliceViewFiducialBoxWidget.SliceViewFiducialBoxWidget.__init__()
HandleWidget font size from GUI settings
core.sisypheTools.HandleWidget.setFontSize()
font size f(dpi), add usedpi parameter
core.sisypheTools.HandleWidget.getFontSize()
font size f(dpi), add usedpi parameter
core.sisypheTools.LineWidget.setFontSize()
font size f(dpi), add usedpi parameter
core.sisypheTools.LineWidget.getFontSize()
font size f(dpi), add usedpi parameter
core.sisypheStatitics.SisypheDesign.__str__()
line 2483, translation error, “covariable” to “covariate”
core.sisypheSettings.SisypheSettings.getUserSettings()
line 296, apply DPI scale factor to some settings
core.sisypheStatitics.SisypheDesign.addGlobalCovariable()
line 3681, add covariate always at the last column of the design matrix (not before global factor)
gui.dialogEditLabels.DialogEditLabels.__init__()
remove fixed size of ‘Clear labels’ and ‘Import/export’ buttons
gui.dialogExport.DialogExport.__init__()
change the name of the ‘Convert’ button to ‘Export’
gui.dialogDicomExport.DialogDicomExport.__init__()
change the name of the ‘Convert’ button to ‘Export’ and remove icon
gui.dialogDicomQuery.DialogDicomQueryRetrieve.__init__()
change the name of the ‘Modality date’ to ‘Acq. date’
gui.dialogLabel.DialogVOLtoLabel.__init__() method
change dialog width
gui.dialogLabel.DialogROItoLabel.__init__() method
change dialog width
gui.dialogLabel.DialogLabeltoROI.__init__() method
change dialog width
gui.windowSisyphe.WindowSisyphe._initRegistrationMenu()
change menu name ‘ICBM normalization’ to ‘ICBM spatial normalization’
gui.dialogWorkflow.WorkflowItem.__init__()
replace fixed size of _input1 and _input2 QSpinBox attributes, from 60 to 100
gui.dialogReorient.DialogReorient.__init__()
remove fixedWidth for all buttons
remove auto button
gui.dialogRegistration.DialogAsymmetry.__init__()
add jacobian determinant settings
gui.dialogRegistration.DialogAsymmetry.execute()
get prefix suffix from jacobian determinant settings
gui.dialogSegmentation.DialogRegistrationBasedSegmentation._updateAvailability()
visibility of StructureTissue and PMAPCorrection setting parameters
gui.dialogDeepSegmentation.DialogDeepTumorSegmentation.execute()
bug fix, wrong label index and name in .xlabel file
gui.dialogDiffusionPreprocessing.DialogDiffusionPreprocessing.__init__()
bug fix, line 134, self._supervised.setSettingsButtonText(‘Self Supervised Denoising’)
gui.dialogDiffusionTracking.DialogDiffusionTracking._stoppingChanged()
bug fix, line 202, v = self._combo3.currentText() == ‘GM/WM/CSF’ (not ‘MAP’)
gui.dialogStatConstrast.DialogContrast.__init__()
cancel button, remove fixed size, set autodefault and default
gui.dialogStatConstrast.DialogConjunction.__init__()
cancel button, remove fixed size, set autodefault and default
gui.dialogStatConstrast.DialogTMapToZMap.__init__()
cancel button, remove fixed size, set autodefault and default
gui.dialogStatModel.DialogModel.__init__()
cancel button, remove fixed size
gui.dialogStatModel.DialogObs.__init__()
cancel button, remove fixed size
gui.dialogStatModel.DialogfMRIObs.__init__()
cancel button, remove fixed size
gui.dialogStatResult.DialogResult.setMap()
bug fix, line 1393, replace .setCursorOpacity(0.25) by .setLineOpacity(0.25)
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget.viewDicomAttributes()
update dialog title bar color for Win32 platform
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget.editLabels()
update dialog title bar color for Win32 platform
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget.statistics()
update dialog title bar color for Win32 platform
update dialog title bar color for Win32 platform
widgets.functionsSettingsWidget.SettingsWidget.formatLabel()
buf fix, capitalized word management
new function
core.sisypheSettings.getDPIScaleFactor()
Calculate the scale factor that is used to define the size of icons and some widgets.
new methods
gui.dialogGenericResults.DialogGenericResults.showEvent()
adjust the size of the dialog box to fit the content
widgets.tabToolsWidgets.TabHelpWidget
add setUrl() method
Display an url
add setPage() method
Display a local page
version 0.18.3, build 16/10/2025
updated html documentation
add “Label volume to mask” dialog box documentation in PySisyphe_File.rst & PySisyphe:_menubar.rst
add “Remaps label volume” dialog box documentation in PySisyphe_File.rst & PySisyphe:_menubar.rst
add “Laterality index” dialog box documentation in PySisyphe_Mapping.rst & PySisyphe:_menubar.rst
PySisyphe_File.rst update
PySisyphe_Versions.rst update
API documentation update
version-histrory.rst update
rebuild sphinx documentation
updated files
/Sisyphe/settings/functions.xml
updated modules
core.sisypheImageAttributes
core.sisypheDownload
gui.dialogLabel
gui.dialogContrast
gui.windowSisyphe
gui.dialogRegistration
gui.dialogEditLabel
gui.dialogFileSelection
gui.dialogDataType
gui.dialogFlipAxes
gui.dialogSwapAxes
gui.dialogFunction
gui.dialogWorkflow
gui.dialogStatContrast
gui.dialogTimeSeries
gui.dialogDiffusionGradients
updated classes
core.sisypheImageAttributes.SisypheAcquisition
add clearLabels() method
gui.windowSisyphe.WindowSisyphe
add labelToMask() method
add relabel() method
add lateralityIndex() method
update __inti__() method
update getUserDirectory() method
gui.dialogRegistration.DialogRegistration
update execute() method
gui.dialogEditLabels.DialogEditLabels
update __inti__() method
add _moveTo() method
add getFileSelectionWidget() method
gui.dialogFileSelection.DialogFileSelection
gui.dialogFileSelection.DialogFilesSelection
gui.dialogDataType.DialogDataType
gui.dialogFlipAxes.DialogFlipAxes
gui.dialogSwapAxes.DialogSwapAxes
gui.dialogFunction.DialogHistogramIntensityMatching
gui.dialogFunction.DialogRegressionIntensityMatching
gui.dialogWorkflow.DialogWorkflow
gui.dialogStatContrast.DialogConjunction
gui.dialogStatContrast.DialogTMapToZMap
gui.dialogStatContrast.DialogLateralityIndex
gui.dialogTimeSeries.DialogSeriesPreprocessing
gui.dialogTimeSeries.DialogSeriesCanICA
gui.dialogDiffusionGradients.DialogDiffusionGradients
add getFileSelectionWidget() / getFilesSelectionWidget() / getReferenceSelectionWidget() methods
updated methods
gui.dialogRegistration.DialogRegistration.execute()
line 880, bug fix, interpolator setting
gui.dialogEditLabels.DialogEditLabels.__init__()
line 117, connect _tree double-click signal to _moveTo() method
gui.windowSisyphe.WindowSisyphe.__inti__()
line 244, call getUserDirectory method
gui.windowSisyphe.WindowSisyphe.getUserDirectory()
line 185, update PySisyphe user folder functions.xml and settings.xml files when running a new installation for the first time
updated functions
core.sisypheDownload.installFromHost()
new version installation: copy new functions.xml and settings.xml files to the PySisyphe user folder ($User/.PySisyphe)
core.sisypheDownload.updatePySisyphe()
new version url in section <host><updatepy> (host.xml file) if venv execution, <host><updatepyc> if frozen execution
new classes
gui.dialogLabel.DialogLabeltoMask
dialog box to create a mask as a combination of labels from a label volume.
gui.dialogLabel.DialogRelabel
dialog box to remaps label indexes of a label volume.
gui.dialogContrast.DialogLateralityIndex
dialog box to calculate laterality index of a statistical map.
new methods
core.sisypheImageAttributes.SisypheAcquisition.clearLabels()
remove all labels from a label volume
gui.windowSisyphe.WindowSisyphe.labelToMask()
call gui.dialogLabel.DialogLabeltoMask dialog box
gui.windowSisyphe.WindowSisyphe.relabel()
call gui.dialogLabel.DialogRelabel dialog box
gui.dialogEditLabels.DialogEditLabels._moveTo()
center cursor on double-cliked label
version 0.20.16, build 01/11/2025
new html documentation
/API2/api_dialog_generic_results.rst
/API2/api_dialog_wait.rst
/API2/api_understanding_views.rst
/API2/api_widgets_iconbar.rst
/API2/api_widgets_lut.rst
/API2/api_widgets_multiple_view.rst
/API2/api_widgets_select_file.rst
/API2/api_widgets_settings.rst
/API2/api_widgets_single_view.rst
/API2/index.rst
updated html documentation
PySisyphe_Mapping.rst update
updated files
/Sisyphe/settings/tooltips.xml
/Sisyphe/settings/functions.xml
updated docstrings & typing
Sisyphe.widgets.multiViewWidgets
Sisyphe.widgets.volumeViewWidget
Sisyphe.widgets.sliceViewWidgets
Sisyphe.widgets.sliceTrajectoryViewWidget
Sisyphe.widgets.selectFileWidgets
Sisyphe.widgets.projectionViewWidget
Sisyphe.widgets.multiComponentViewWidget
Sisyphe.widgets.iconBarViewWidgets
Sisyphe.widgets.LUTWidgets
Sisyphe.widgets.functionsSettingsWidget
Sisyphe.widgets.abstractViewWidget
Sisyphe.widgets.dicomWidgets
Sisyphe.widgets.sliceViewFiducialBoxWidget
Sisyphe.widgets.thresholdWidgets
Sisyphe.gui.dialogFileSelection
Sisyphe.gui.dialogWait
Sisyphe.gui.dialogGenericResults
updated modules
core.sisypheDownload
gui.windowSisyphe
gui.dialogSegmentation
gui.dialogTexture
widgets.sliceViewWidgets
widgets.multiViewWidgets
widgets.volumeViewWidget
widgets.iconBarViewWidgets
widgets.selectFileWidgets
updated function
core.sisypheDownload.updatePySisyphe()
line 238, Try/except block to protect the call to InstallFromHost() method
updated classes
gui.windowSisyphe.WindowSisyphe
update checkUpdate() method
gui.dialogSegmentation.DialogPriorBasedSegmentation
update _priorsChanged() method
gui.dialogTexture.DialogROITexture
update _validateROI() method
widgets.sliceViewWidgets.SliceViewWidget
update _getInfoValuesText() method
widgets.multiViewWidgets.OrthogonalSliceViewWidget
update getMeshCollection() method
widgets.volumeViewWidget.VolumeViewWidget
update getSlice0Visibility() method
update getSlice1Visibility() method
update getSlice2Visibility() method
update getSurfaceVisibility() method
update getTextureVisibility() method
widgets.iconBarViewWidgets.IconBarOrthogonalRegistrationViewWidget2
update setMoveOverlayOff() method
widgets.selectFileWidgets.FilesSelectionWidget
update getItemFromIndex() method
updated methods
gui.windowSisyphe.WindowSisyphe.checkUpdate()
message box to exit after installation
gui.dialogSegmentation.DialogPriorBasedSegmentation._priorsChanged()
bug fix, line 1027, from ‘Custom’ to ‘CUSTOM’ to display file selection widgets (T1, Mask, GMPrior, CGMPrior, WMPrior, CSFPrior, BrainstemPrior, CerebellumPrior)
gui.dialogTexture.DialogROITexture._validateROI()
bug fix, line 651/661, row index of a ROI filename
widgets.sliceViewWidgets.SliceViewWidget._getInfoValuesText()
bug fix, lines 690 and 696, PC and midACPC infos
widgets.multiViewWidgets.OrthogonalSliceViewWidget.getMeshCollection()
bug fix, line 830, no return value
widgets.volumeViewWidget.VolumeViewWidget.getSlice0Visibility()
widgets.volumeViewWidget.VolumeViewWidget.getSlice1Visibility()
widgets.volumeViewWidget.VolumeViewWidget.getSlice2Visibility()
widgets.volumeViewWidget.VolumeViewWidget.getSurfaceVisibility()
widgets.volumeViewWidget.VolumeViewWidget.getTextureVisibility()
bug fix, lines 1021, 1027, 1033, no return value
widgets.iconBarViewWidgets.IconBarOrthogonalRegistrationViewWidget2.setMoveOverlayOff()
bug fix, line 2530, replace widget.setMoveOverlayOff() by widget.setMoveOverlayFlag(False)
widgets.selectFileWidgets.FilesSelectionWidget.getItemFromIndex()
bug fix, return value type (QListWidgetItem, not str)