Version history
Version increment rules
major version increment:
new python interpreter version
50 minor version increments
minor version increment:
new module, new external module, external module upgrade
25 patch version increments
patch version increment:
update html documentation
new file, file update
new function
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
version-histrory.rst update
rebuild sphinx documentation
updated html documentation
PySisyphe_Mapping.rst update
rebuild sphinx documentation
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)
version 0.21.08, build 18/11/2025
updated html documentation
PySisyphe_dockroi.rst
PySisyphe_dockmesh.rst
PySisyphe_docktarget.rst
PySisyphe_docktracking.rst
/API/api_settings.rst
/API/api_volume.rst
/API2/api_widgets_select_file.rst
/API2/api_widgets_settings.rst
version-histrory.rst update
rebuild sphinx documentation
updated files
/Sisyphe/settings/settings.xml
updated modules
core.sisypheSettings
core.sisypheImage
core.sisypheDownload
core.sisypheTools
widgets.selectFileWidgets
widgets.functionsSettingsWidget
widgets.attributesWidgets
widgets.abstractViewWidget
widgets.multiViewWidgets
widgets.sliceViewWidgets
widgets.sliceTrajectoryViewWidget
update import: add from Sisyphe.core.sisypheTools import HandleWidget
update import: add from Sisyphe.core.sisypheTools import LineWidget
remove these imports from TYPE_CHECKING
widgets.abstractViewWidget
widgets.attributesWidgets
widgets.iconBarViewWidgets
widgets.tabToolsWidgets
gui.dialogSkullStripping
updated classes
core.sisypheImage.SisypheImage
update getMin() method
update getValueAtContiuousIndex() method
new method getValueAtContiuousIndex()
core.sisypheTools.HandleWidget
core.sisypheTools.HLineWidget
update setFontSize() & getFontSize() methods
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget
update setSisypheVolumeFilters() method
update setSequenceFilters() method
update setModalityFilters() method
update setSuffixFilters() method
update setPrefixFilters() method
update setContainsStringFilters() method
widgets.selectFileWidgets.SettingsWidget
update _initSettingsLayout() method
widgets.attributesWidgets.ListAttributesWidget
update __init__() method
update _addItem() method
widgets.attributesWidgets.ListROIAttributesWidget
add wait.open() to all methods
widgets.sliceViewWidgets.SliceROIViewWidget
update _updateCameraOrientation() method
update _onLeftPressEvent() method
update _onMouseMoveEvent() method
new methods to get flag of ROI tools
widgets.abstractViewWidget.AbstractViewWidget
update _updateToolMenu() method
update synchroniseCursorPositionChanged() method
widgets.multiViewWidgets.GridViewWidget
update setNumberOfVisibleViews() method
widgets.attributesWidgets.ListToolAttributesWidget
update __init__() method
update open() method
update setIconSize() method
new visibility() method
widgets.attributesWidgets.ListROIAttributesWidget
widgets.attributesWidgets.ListMeshAttributesWidget
widgets.attributesWidgets.ListBundleAttributesWidget
update __init__() method
update setIconSize() method
new visibility() method
widgets.iconBarViewWidgets.IconBarWidget
update _onExpand method()
widgets.iconBarViewWidgets.IconBarViewWidgetCollection
new methods to get flag of ROI tools
widgets.tabToolsWidgets.SliceROIViewWidget
update Slice ROI actions, slice blob actions, volume ROI actions, volume blob actions methods
gui.dialogSkullStripping.DialogSkullStripping
update function() method
updated methods
core.sisypheImage.SisypheImage.getMin()
bug fix, lines 4042 & 4055, returns std and not min, replace std(img) by img.min()
core.sisypheImage.SisypheImage.getValueAtContiuousIndex()
add ndarray type for p parameter
core.sisypheTools.HandleWidget.getFontSize()
core.sisypheTools.HandleWidget.setFontSize()
core.sisypheTools.LineWidget.getFontSize()
core.sisypheTools.LineWidget.setFontSize()
exception handling for dpi
core.sisypheTools.DistanceWidget.__init__()
core.sisypheTools.OrthogonalDistanceWidget.__init__()
core.sisypheTools.AngleWidget.__init__()
core.sisypheTools.BoxWidget.__init__()
core.sisypheTools.TextWidget.__init__()
core.sisypheTools.HandleWidget.__init__()
core.sisypheTools.LineWidget.__init__()
add self.SetObjectName(), used in widgets.abstractViewWidget.AbstractViewWidget._updateToolMenu(), see below
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setSisypheVolumeFilters() method
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setSequenceFilters() method
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setModalityFilters() method
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setSuffixFilters() method
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setPrefixFilters() method
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setContainsStringFilters() method
Typing correction
widgets.selectFileWidgets.SettingsWidget._initSettingsLayout()
bug fix, lines 768/785/803/820, vols/rois/dcms/dirs add filenames to FilesSelectionWidget
widgets.iconBarViewWidgets.IconBarWidget._onExpand()
line 713 & 723, disable synchronization when displaying a single (expanded) view to speed up rendering
widgets.sliceViewWidgets.SliceROIViewWidget._updateCameraOrientation()
line 7191, remove anisotropic testing to update ROI visibility
widgets.sliceViewWidgets.SliceROIViewWidget._onLeftPressEvent()
line 9883, no ROImodified synchronisation for 2D brush
widgets.sliceViewWidgets.SliceROIViewWidget._onMouseMoveEvent()
line 9653, no ROImodified signal for the 2D brush, which is responsible for considerable acceleration of the brush tool
widgets.abstractViewWidget.AbstractViewWidget._updateToolMenu()
bug fix, lines 1441, replace isinstance(tool, HandleWidget) by tool.GetObjectName() == ‘HandleWidget’
bug fix, lines 1448, replace isinstance(tool, LineWidget) by tool.GetObjectName() == ‘LineWidget’
widgets.abstractViewWidget.AbstractViewWidget.synchroniseCursorPositionChanged()
line 1447, use synchronisation flag attribute (no cursor synchronization if flag is False), used to speed up display
widgets.multiViewWidgets.GridViewWidget.setNumberOfVisibleViews()
lines 2861 & 2868, no synchronization of hidden views, used to speed up display
widgets.attributesWidgets.ListAttributesWidget.__init__()
line 2365, change the background colour of the selected item
widgets.attributesWidgets.ListAttributesWidget._addItem()
line 2472, change the background colour of the selected item
widgets.attributesWidgets.ListToolAttributesWidget.__init__()
create lock and visibility buttons
widgets.attributesWidgets.ListToolAttributesWidget.setIconSize()
set icon size of the lock and visibility buttons
widgets.attributesWidgets.ListROIAttributesWidget.__init__()
widgets.attributesWidgets.ListMeshAttributesWidget.__init__()
widgets.attributesWidgets.ListBundleAttributesWidget.__init__()
create visibility buttons
widgets.attributesWidgets.ListROIAttributesWidget.setIconSize()
widgets.attributesWidgets.ListMeshAttributesWidget.setIconSize()
widgets.attributesWidgets.ListBundleAttributesWidget.setIconSize()
set icon size of the visibility button
widgets.attributesWidgets.ListToolAttributesWidget.open()
lines 5002, 5023, 5063, 5100, opened tools are locked by default
lines 4984, 5014, 5038, 5043, wait progress when opening .xtools file
gui.dialogSkullStripping.DialogSkullStripping.function()
bug fix, line 202, replace copyFromNumpyArray(mask) by copyFromNumpyArray(mask, spacing=s, defaultshape=False)
updated function
core.sisypheDownload.installFromHost()
bug fix, line 194, new directory
new classes
core.sisypheSettings.SisypheCustomSettings
management of settings from a custom XML file
widgets.functionsSettingsWidget.CustomSettingsWidget
widget to manage settings from a custom XML file
new methods
core.sisypheImage.SisypheImage.getValueAtContiuousIndex()
get an interpolated scalar value from continuous coordinates
widgets.attributesWidgets.ListToolAttributesWidget.lock()
method called by lock button
widgets.attributesWidgets.ListROIAttributesWidget.visibility()
widgets.attributesWidgets.ListMeshAttributesWidget.visibility()
widgets.attributesWidgets.ListToolAttributesWidget.visibility()
widgets.attributesWidgets.ListBundleAttributesWidget.visibility()
method called by visibility button
version 0.22.11, build 05/12/2025
updated html documentation
PySisyphe_dockroi.rst
PySisyphe_ipython.rst
PySisyphe_dockroi.rst
PySisyphe_dockmesh.rst
PySisyphe_docktarget.rst
PySisyphe_docktracking.rst
PySisyphe_thumbnailbar.rst
version-histrory.rst update
rebuild sphinx documentation
updated files
/Sisyphe/settings/settings.xml
/Sisyphe/settings/dialogs.xml
/Sisyphe/gui/doc/ipython.txt
new files
/Sisyphe/gui/lightroi/console.png
/Sisyphe/gui/darkroi/console.png
updated modules
version
core.sisypheImage
core.sisypheROI
core.sisypheSettings
core.sisypheLUT
core.sisypheTools
cythonize updated core.sisypheROI module
gui.dialogRegistration
gui.dialogGenericResults
gui.dialogRegistration
gui.dialogSegmentation
gui.dialogROIStatistics
gui.windowSisyphe
widgets.attributesWidgets
widgets.iconBarViewWidgets
widgets.functionsSettingsWidget
widgets.consoleWidget
widgets.imageWidgets
widgets.selectFileWidgets
widgets.consoleWidget
widgets.LUTWidgets
widgets.tabToolsWidgets
widgets.abstractViewWidget
updated classes
core.sisypheImage.SisypheImage
refactor the method name from ‘getValueAtContiuousIndex’ to ‘getValueAtContinuousIndex’
update getHistogram() method
core.sisypheTools.ToolWidgetCollection
update __init__() method
update createXML() method
update parseXML() method
add setPurpose() method
add getPurpose() method
add hasPurpose() method
add hasSamePurpose() method
core.sisypheTools.HandleWidget
core.sisypheTools.LineWidget
update copyAttributesTo() and copyAttributesFrom() methods
update setTubeVisibility() method
core.sisypheTools.ToolWidgetCollection
update parseXML() method
core.sisypheROI.SisypheROI
update getDistanceMap() method
core.sisypheSettings.SisypheSettings
update getFieldValue() method
update setFieldValue() method
core.sisypheLUT.SisypheLUT
add getInternalColormapFromName() method
gui.dialogRegistration.DialogRegistration
add setFilesToApply() method
add getFilesToApply() method
gui.dialogGenericResults.DialogGenericResults
update __init__() method
update newTab() method
add _onCopyConsole() method
add setConsoleWidget() method
add getConsoleWidget() method
add hasConsoleWidget() method
gui.dialogRegistration.DialogICBMNormalization
update _updateTemplate() method
gui.dialogSegmentation.DialogCorticalThickness
update getFilenames() method
gui.dialogROIStatistics.DialogROIStatistics
update __init__()
add setConsoleWidget() method
add getConsoleWidget() method
add hasConsoleWidget() method
add _copyStatsToConsole() method
add _copyHistogramsToConsole() method
gui.windowSisyphe.WindowSisyphe
update __init__() method
widgets.attributesWidgets.ListAttributesWidget
update __init__() method
update setIconSize() method
add copyToConsole() method
widgets.attributesWidgets.ListROIAttributesWidget
update __init__() method
update toDistance() method
add copyToConsole() method
widgets.attributesWidgets.ListToolAttributesWidget
update __init__() method
update setIconSize() method
add properties() method
update features() method
add copyToConsole() method
widgets.attributesWidgets.ListMeshAttributesWidget
update features() method
add copyToConsole() method
widgets.attributesWidgets.ListBundleAttributesWidget
update statistics() method
add copyToConsole() method
widgets.attributesWidgets.ItemMeshAttributesWidget
widgets.attributesWidgets.ItemToolAttributesWidget
widgets.attributesWidgets.ItemBundleAttributesWidget
update __init__() method
widgets.attributesWidgets.ItemToolAttributesWidget
update setDefaultAttributesFromSettings() method
widgets.iconBarViewWidgets.IconBarWidget
update _onExpand() method
add isTimerEnabled() method
widgets.iconBarViewWidgets.conBarViewWidgetCollection
update getSelectedSliceIndex() method
widgets.functionsSettingsWidget.SettingsWidget
update __init__() method
update toggleSettingsVisibility() method
update settingsVisibilityOn() method
update settingsVisibilityOff() method
update resetSettings() method
update _initSettingsLayout() method
update getParameterValue() method
widgets.consoleWidget.ConsoleWidget
update __init__()
add hasVariable() method
add _popupGlobals() method
add _plot() method
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget
update __init__() method
add copyToConsole() method
widgets.selectFileWidgets.FileSelectionWidget
update open() method
widgets.selectFileWidgets.FilesSelectionWidget
update add() method
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget
update getFilenames() method
update setFilenames() method
widgets.consoleWidget.ConsoleWidget
update __init__() method
widgets.LUTWidgets.ComboBoxLut
add removeFilesLut() method
widgets.tabToolsWidgets.TabWidget
update __init__() method
add setMainWindow() method
add getMainWindow() method
add hasMainWindow() method
widgets.tabToolsWidgets.TabROIToolsWidget
update statistics() method
widgets.abstractViewWidget.AbstractViewWidget
update copyToolAttributes() method
updated methods
core.sisypheImage.SisypheImage.getHistogram()
add intervals to the returned value
core.sisypheTools.ToolWidgetCollection.__init__()
add the purpose attribute (_purpose)
core.sisypheTools.ToolWidgetCollection.createXML()
core.sisypheTools.ToolWidgetCollection.parseXML()
add the purpose field in the .xtools file format
core.sisypheTools.HandleWidget.copyAttributesTo()
core.sisypheTools.LineWidget.copyAttributesTo()
core.sisypheTools.HandleWidget.copyAttributesFrom()
core.sisypheTools.LineWidget.copyAttributesFrom()
copy legend, suffix, prefix, and name attributes rather than text
core.sisypheTools.ToolWidgetCollection.parseXML()
lines 7001 & 7007, set an empty legend parameter rather than using the default values (i.e. ‘Target’ for HandleWidget and (‘Target’, ‘Entry’) for LineWidget)
core.sisypheTools.LineWidget.setTubeVisibility()
bug fix, restore self._contourActor and self._tubeActor visibility management
core.sisypheROI.SisypheROI.getDistanceMap()
add outside parameter to calculate distance map with positive values outside (True) or positive values inside (False)
core.sisypheSettings.SisypheSettings.getFieldValue()
line 869, path xml attribute management for ‘vol’ vartype
line 915, returns an empty list for ‘dirs’, ‘vols’, ‘rois’, ‘dcms’ vartype if data node is empty (returned ‘’ previouly)
core.sisypheSettings.SisypheSettings.setFieldValue()
line 964, path xml attribute management for ‘vol’ vartype
widgets.attributesWidgets.ListAttributesWidget.__init__()
create ‘Copy to console’ button
widgets.attributesWidgets.ListAttributesWidget.setIconSize()
set size of the ‘Copy to console’ button
widgets.attributesWidgets.ListROIAttributesWidget.__init__()
add popup menu to _dist button (‘outside positive’ and ‘inside positive’)
add tooltip for the ‘Copy to console’ button
widgets.attributesWidgets.ListROIAttributesWidget.toDistance()
add outside parameter to calculate distance map with positive values outside (True) or positive values inside (False)
widgets.attributesWidgets.ListToolAttributesWidget.__init__()
create properties button
add tooltip for the ‘Copy to console’ button
widgets.attributesWidgets.ListToolAttributesWidget.setIconSize()
set icon size of the properties button
widgets.attributesWidgets.ListToolAttributesWidget.features()
widgets.attributesWidgets.ListToolAttributesWidget.features2()
lines 5472 & 5691, add ‘copy to console button’ to DialogGenericResults
widgets.attributesWidgets.ListMeshAttributesWidget.__init__()
add tooltip for the ‘Copy to console’ button
widgets.attributesWidgets.ListMeshAttributesWidget.features()
line 4537, add ‘copy to console’ button to DialogGenericResults
widgets.attributesWidgets.ListBundleAttributesWidget.__init__()
add tooltip for the ‘Copy to console’ button
widgets.attributesWidgets.ListBundleAttributesWidget.statistics()
line 7239, add ‘copy to console’ button to DialogGenericResults
widgets.attributesWidgets.ItemMeshAttributesWidget.__init__()
widgets.attributesWidgets.ItemToolAttributesWidget.__init__()
widgets.attributesWidgets.ItemBundleAttributesWidget.__init__()
change the title bar color of the child dialogs (win32 platform)
widgets.attributesWidgets.ItemToolAttributesWidget.setDefaultAttributesFromSettings()
bug fix, line 1525, add self._color.setFloatColor(v[0], v[1], v[2], signal=False) to update button color
widgets.iconBarViewWidgets.IconBarWidget._onExpand()
hide the grid icon when the view is expanded (expand icon selected)
widgets.iconBarViewWidgets.conBarViewWidgetCollection.getSelectedSliceIndex()
bug fix, line 3963, widget that is displayed
bug fix, line 3971, select the first cell if no cell is selected
widgets.functionsSettingsWidget.SettingsWidget.__init__()
line 345, replace self._button.clicked.connect(self.toggleSettingsVisibility) by self._button.clicked.connect(lambda _: self.toggleSettingsVisibility(True))
widgets.functionsSettingsWidget.SettingsWidget.toggleSettingsVisibility()
widgets.functionsSettingsWidget.SettingsWidget.settingsVisibilityOn()
widgets.functionsSettingsWidget.SettingsWidget.settingsVisibilityOff()
add a signal parameter that will indicate whether or not the VisibilityToggled Qt signal is emitted
widgets.functionsSettingsWidget.SettingsWidget.resetSettings()
line 1275, path xml attribute management for ‘vol’ vartype
widgets.functionsSettingsWidget.SettingsWidget._initSettingsLayout()
line 723 path xml attribute management for ‘vol’ vartype
widgets.functionsSettingsWidget.SettingsWidget.getParameterValue()
line 1013, bug fix, isinstance(self._parameters[parameter], ComboBoxLut) before isinstance(self._parameters[parameter], ComboBox)
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget.__init__()
add ‘Copy to console’ QAction
widgets.selectFileWidgets.FileSelectionWidget.open()
lines 1478, 1492, 1515, 1730, 1817, 1881, 1995, 2050, 2099, change default folder of QFileDialog
widgets.selectFileWidgets.FilesSelectionWidget.add()
change typing of the filenames parameter, from str to str | list[str]
line 2988, management of list[str] filenames parameter
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.getFilenames()
widgets.selectFileWidgets.SynchronizedFilesSelectionWidget.setFilenames()
typing corretion, from dict[str, dict[str, str]] to dict[str, dict[str, str | list[str]]]
widgets.consoleWidget.ConsoleWidget.__init__()
line 148, replace _console type from RichJupyterWidget to RichJupyterWidget2
RichJupyterWidget2 is a subclass of RichJupyterWidget that adds key events
key . triggers the complete widget display
key ( displays ()
key [ displays []
key { displays {}
key quote displays ‘’
key double-quote displays “”
line 196, add _globals QTreeWidget popup menu management
widgets.tabToolsWidgets.TabWidget.__init__()
line 120, add _mainwindow attribute
widgets.tabToolsWidgets.TabROIToolsWidget.statistics()
line 2251, add self._statistics.setConsoleWidget(self._mainwindow.getConsole())
gui.dialogGenericResults.DialogGenericResults.__init__()
add _console ConsoleWidget attribute, used to create dataset variable in the console
gui.dialogGenericResults.DialogGenericResults.newTab()
add ‘Copy to console’ button
add tooltips to buttons
gui.dialogRegistration.DialogICBMNormalization._updateTemplate()
line 1078, change abspath position
gui.dialogSegmentation.DialogCorticalThickness.getFilenames()
typing corretion, from list[str] to dict[str, str | list[str]]
line 1811, change return value from return self._select.getFilenames() to return self._select.getFilenames()[‘multiple’]
gui.dialogROIStatistics.DialogROIStatistics.__init__()
add ‘Copy to console’ button
gui.windowSisyphe.WindowSisyphe.__init__()
line 456, add self._tabROITools.setMainWindow(self)
new methods
core.sisypheTools.ToolWidgetCollection.setPurpose()
core.sisypheTools.ToolWidgetCollection.getPurpose()
core.sisypheTools.ToolWidgetCollection.hasPurpose()
core.sisypheTools.ToolWidgetCollection.hasSamePurpose()
methods to manage the new purpose attribute
core.sisypheLUT.SisypheLUT.getInternalColormapFromName()
returns internal name of a Look-Up table colormap (matplotlib name) from its public name
gui.dialogRegistration.DialogRegistration.setFilesToApply()
gui.dialogRegistration.DialogRegistration.getFilesToApply()
set/get additionnal volume(s) to resample
gui.dialogGenericResults.DialogGenericResults._onCopyConsole()
method called by ‘Copy to console’ button to copy dataset as variable in the console widget.
gui.dialogGenericResults.DialogGenericResults.setConsoleWidget()
gui.dialogGenericResults.DialogGenericResults.getConsoleWidget()
gui.dialogGenericResults.DialogGenericResults.hasConsoleWidget()
set & get _console ConsoleWidget attribute
gui.dialogROIStatistics.DialogROIStatistics.setConsoleWidget()
gui.dialogROIStatistics.DialogROIStatistics.getConsoleWidget()
gui.dialogROIStatistics.DialogROIStatistics.hasConsoleWidget()
set & get _console ConsoleWidget attribute
gui.dialogROIStatistics.DialogROIStatistics._copyStatsToConsole()
called by ‘Copy to console’ button menu event. Copy ROI descriptive and shape statistics to the concole
gui.dialogROIStatistics.DialogROIStatistics._copyHistogramsToConsole
called by ‘Copy to console’ button menu event. Copy ROI histograms to the console
widgets.attributesWidgets.ListAttributesWidget.copyToConsole()
widgets.attributesWidgets.ListROIAttributesWidget.copyToConsole()
widgets.attributesWidgets.ListMeshAttributesWidget.copyToConsole()
widgets.attributesWidgets.ListToolAttributesWidget.copyToConsole()
widgets.attributesWidgets.ListBundleAttributesWidget.copyToConsole()
copy checked items to the console
widgets.attributesWidgets.ListToolAttributesWidget.properties()
change properties of checked ItemToolAttributesWidget
widgets.consoleWidget.ConsoleWidget.hasVariable()
check if a variable already exists in the console
widgets.consoleWidget.ConsoleWidget._popupGlobals()
displays popup menu after right-click event on Globals QTreeWidgetItem (numpy, list and sitkImage variables)
widgets.consoleWidget.ConsoleWidget._plot()
called by Globals QTreeWidgetItem popup menu
displays various matplotlib pyplot charts (line, bar, stairs, Box-and-Whisker, violin, histogram, scatter, matrix and image plots) in the console
widgets.imageWidgets.SisypheVolumeThumbnailButtonWidget.copyToConsole()
copy self._volume to PySisyphe console
widgets.LUTWidgets.ComboBoxLut.removeFilesLut()
remove files lut (keep only internal lut)
widgets.tabToolsWidgets.TabWidget.setMainWindow()
widgets.tabToolsWidgets.TabWidget.getMainWindow()
widgets.tabToolsWidgets.TabWidget.hasMainWindow()
methods to get/set _mainwindow attribute
widgets.abstractViewWidget.AbstractViewWidget.copyToolAttributes()
bug fix, line 4736, add self._renderwindow.Render() to update VolumeView display
widgets.iconBarViewWidgets.IconBarWidget.isTimerEnabled()
updated function
version.isNewerThan()
bug fix, line 100, replace < by > between current[2] and version[2]
version 0.24.14, build 12/01/2026
updated html documentation
PySisyphe_ipython.rst
PySisyphe_Registration.rst
PySisyphe_dockroitools.rst
PySisyphe_Mapping.rst
version-histrory.rst update
rebuild sphinx documentation
updated files
/Sisyphe/gui/doc/ipython.txt
add %gemini command documentation
/Sisyphe/settings/settings.xml
add <Gemini> section, <APIKey> field
/Sisyphe/templates/ICBM152/icbm152_sym_template_mask.xvol
/Sisyphe/templates/ICBM152/icbm152_asym_template_mask.xvol
datatype conversion, from float32 to uint8
new external module
google-genai
esayocr
pymupdf
rebuild pyinstaller with upx=False (EXE and COLLECT) options
new plugins
SEEG
REPORT
new modules
core.sisyphePDF
new SisyphePDF class
gui.dialogGemini
new DialogGemini class
updated modules
core.sisypheSettings
core.sisypheDatabase
core.sisypheImage
core.sisypheVolume
core.sisypheROI
new cython compilation of the updated core.sisypheROI module
core.sisypheTools
core.sisypheFiducialBox
processing.simpleItkFilters
widgets.consoleWidget
widgets.iconBarWidgets
widgets.tabToolsWidgets
widgets.sliceViewWidgets
widgets.projectionViewWidget
widgets.sliceViewFiducialBoxWidget
widgets.multiComponentViewWidget
widgets.attributesWidgets
widgets.selectFileWidgets
processing.dscFunctions
gui.dialogDownload
gui.dialogVolumeAttributes
gui.dialogFunction
gui.dialogDatatype
gui.dialogSettings
gui.dialogSplash
gui.dialogManualRegistration
gui.dialogRegistration
gui.dialogPerfusion
gui.windowSisyphe
PySisyphe
line 15, hide console in frozen mode
new functions
processing.dscFunctions.gamma_variate()
processing.dscFunctions.fit_gamma_variate()
processing.dscFunctions.generate_ttp()
processing.dscFunctions.generate_leakage()
processing.dscFunctions.generate_perfusion_maps()
processing.dscFunctions.oSVD()
processing.dscFunctions.boxNLR()
processing.dscFunctions.fit_boxNLR()
processing.dscFunctions.dscMaps2()
new MR perfusion processing using PyPeT implementation, dramatic improvement in processing time (less than 10s)
updated functions
core.sisypheSettings.initPySisypheUserPath()
line 185, set current and default database paths (~/.PySisyphe/database) in the settings file
line 136, add ~/.PySisyphe/prompts directory
core.sisypheSettings.setUserSettingsToDefault()
line 245, set current and default database paths (~/.PySisyphe/database) in the settings file
processing.simpleItkFilters.regressionIntensityMatching()
line 891, remove unnecessary flatten()
line 910, cast result to original datatype
new classes
core core.sisypheFiducialBox.LeksellProcessings
arc & ring angles conversion between Leksell orientations
calculate entry point from arc, ring, orientation, target point and trajectory length.
gui.dialogGemini.DialogGemini
GUI dialog window, gemini LLM prompt for segmentation
gui.dialogRegistration.DialogFrameBasedRegistration
GUI dialog window for frame-based registration
gui.dialogPerfusion.DialogPerfusion2
new MR perfusion processing using PyPeT implementation, dramatic improvement in processing time (less than 10s)
updated classes
core.sisypheSettings.SisypheSettings
update getUserSettings() method
core.sisypheDatabase.SisypheDatabase
update setDefaultDatabasePath() method
core.sisypheImage.SisypheImage
update getMaskROI() method
add copyFromPillowImage() method
add copyToPillowImage() method
update getMask2() method
update getMaskROI2() method
update setOrigin() method
update setDirections() method
update getNumpy() method
core.sisypheVolume.SisypheVolume
add copyToPillowImage() method
update getMask2() method
update getMaskROI2() method
core.sisypheROI.SisypheROI
update drawRectangle() method
core.sisypheTools.DistanceWidget
core.sisypheTools.OrthogonalDistanceWidget
core.sisypheTools.AngleWidget
core.sisypheTools.BoxWidget
core.sisypheTools.TextWidget
update getVisibility() method
core.sisypheFiducialBox.SisypheFiducialBox
update _markersSearch() method
widgets.consoleWidget.ConsoleWidget
update _popupGlobals() method
update __init__() method
widgets.consoleWidget.RichJupyterWidget2
update __init__() method
update execute() method
widgets.iconBarWidgets.IconBarWidget
update _onExpand() method
update setViewWidget() method
widgets.widgets.tabToolsWidgets.TabROIToolsWidget
update __init__() method
add _popupGeminiMenu() method
add _geminiClicked() method
widgets.sliceViewWidgets.SliceOverlayViewWidget
update _addToMenuVoxelOverlayValue() method
update _getInfoValuesText() method
widgets.projectionViewWidget.ProjectionViewWidget
update __init__() method
update _updateProjection() method
update setVolume() method
update removeVolume() method
widgets.projectionViewWidget.MultiProjectionViewWidget
update __init__() method
update setVolume() method
update removeVolume() method
widgets.sliceViewFiducialBoxWidget.SliceViewFiducialBoxWidget
update __init__() method
widgets.multiComponentViewWidget.MultiComponentViewWidget
update __init__() method
widgets.attributesWidgets.ListToolAttributesWidget
update open() method
update saveall() method
update removeall() method
update remove() method
update removeItem() method
widgets.attributesWidgets.ItemToolAttributesWidget
update setLock() method
widgets.selectFileWidgets.FilesSelectionWidget
update add() method
widgets.selectFileWidgets.SelectionFilter
update init() method
add filterTransform() method
add getTransformFilter() method
update clearFilters() method
widgets.selectFileWidgets.FileSelectionWidget
update open() method
widgets.selectFileWidgets.FilesSelectionWidget
update add() method
gui.dialogDownload.DialogDownload
update download() method
gui.dialogVolumeAttributes.DialogVolumeAttributes
update __init__() method
add _unlockSpacing() method
add _unlockOrigin() method
gui.dialogFunction.DialogRegressionIntensityMatching
update __init__() method
update function() method
gui.dialogDatatype.DialogEditID
update execute() method
add getreferenceSelectionWidget() method
add setreferenceSelectionWidget() method
gui.dialogSettings.DialogSettings
update apply() method
gui.dialogSplash.DialogSplash
update __init__() method
gui.dialogManualRegistration.DialogManualRegistration
update __init__() method
gui.windowSisyphe.WindowSisyphe
update __init__() method
update editID() method
add frameRegistration() method
update checkUpdate() method
updated methods
core.sisypheSettings.SisypheSettings.getUserSettings()
line 376, set current and default database paths (~/.PySisyphe/database) if the user file settings do not exist
core.sisypheDatabase.SisypheDatabase.setDefaultDatabasePath()
line 381, set default database path from ‘DefaultPath’ field of the settings file. If this field is empty, set the PySisyphe patient database folder to ~/.PySisyphe/Database (in user folder)
core.sisypheImage.SisypheImage.getMaskROI()
line 2613, bug fix, avoid exception if morpho = ‘’
core.sisypheImage.SisypheImage.getMask2()
core.sisypheImage.SisypheImage.getMaskROI2()
add objstep parameter
replace morphological operator iteration by the size of the structuring element
core.sisypheImage.SisypheVolume.getMask2()
core.sisypheImage.SisypheVolume.getMaskROI2()
add objstep parameter
core.sisypheImage.SisypheImage.setOrigin()
bug fix, line 2357, replace self._sitk_image.GetDepth() with self._sitk_image.GetDimension()
core.sisypheImage.SisypheImage.setDirections()
bug fix, line 2304, 2D image management
core.sisypheImage.SisypheImage.getnumpy()
bug fix, line 1552, replace self._numpy_array.ndim == 3 with self._numpy_array.ndim in (2, 3)
core.sisypheROI.drawRectangle()
bug fix, line 1922, replace extent[:,:,-1] with extent[::-1]
core.sisypheTools.DistanceWidget.getVisibility()
core.sisypheTools.OrthogonalDistanceWidget.getVisibility()
core.sisypheTools.AngleWidget.getVisibility()
core.sisypheTools.BoxWidget.getVisibility()
core.sisypheTools.TextWidget.getVisibility()
Converting the return value from int to a bool
core.sisypheFiducialBox.SisypheFiducialBox._markersSearch()
bug fix, line 670, expand the search for the first slice with the accurate number (6 or 9) of fiducial markers
widgets.consoleWidget.ConsoleWidget.__init__()
line 418, to avoid displaying “chcp 65001” on the console
widgets.consoleWidget.ConsoleWidget._popupGlobals()
lines 483 & 494, test data type, no popup for non-numeric types
widgets.consoleWidget.RichJupyterWidget2.__init__()
add self._aikey attribute: str, google gemini api key
add self._aimodel attribute: str, google gemini model
add self._client attribute: genai.Client, google gemini client class
widgets.consoleWidget.RichJupyterWidget2.execute()
‘%gemini’ magic command management
widgets.iconBarWidgets.IconBarWidget._onExpand()
line 710, if no view is selected, select the first one and expand it
widgets.iconBarWidgets.IconBarWidget.setViewWidget()
lines 1166, 1235 & 1286, change iconbar button order
widgets.widgets.tabToolsWidgets.TabROIToolsWidget.__init__()
add gemini button (self._btn[‘gemini’])
widgets.sliceViewWidgets.SliceOverlayViewWidget._addToMenuVoxelOverlayValue()
line 3801, remove self._ovlvalue = volume
widgets.sliceViewWidgets.SliceOverlayViewWidget._getInfoValuesText()
line 3759, display overlay value if overlay size match with reference
widgets.projectionViewWidget.ProjectionViewWidget.__init__()
add self._mask attribute
widgets.projectionViewWidget.ProjectionViewWidget._updateProjection()
add self._mask processing
widgets.projectionViewWidget.ProjectionViewWidget.setVolume()
add self._mask processing
widgets.projectionViewWidget.ProjectionViewWidget.removeVolume()
add self._mask = None
widgets.projectionViewWidget.MultiProjectionViewWidget.__init__()
add self._mask attribute
widgets.projectionViewWidget.MultiProjectionViewWidget.setVolume()
add self._mask processing
widgets.projectionViewWidget.MultiProjectionViewWidget.removeVolume()
add self._mask = None
widgets.attributesWidgets.ListToolAttributesWidget.open()
widgets.attributesWidgets.ListToolAttributesWidget.saveall()
widgets.attributesWidgets.ListToolAttributesWidget.removeall()
widgets.attributesWidgets.ListToolAttributesWidget.remove()
widgets.attributesWidgets.ListToolAttributesWidget.removeItem()
self._collection purpose attribute management
widgets.sliceViewFiducialBoxWidget.SliceViewFiducialBoxWidget.__init__()
line 92, add tool.setHandleSize(5.0)
widgets.multiComponentViewWidget.MultiComponentViewWidget.__init__()
line 143, increases the relative chart area
widgets.attributesWidgets.ItemToolAttributesWidget.setLock()
bug fix, line 1589, unlock tool
widgets.selectFileWidgets.SelectionFilter.__init__()
widgets.selectFileWidgets.SelectionFilter.clearFilters()
add transform filter attribute (self._reftrf)
widgets.selectFileWidgets.FileSelectionWidget.open()
line 1743, add transform filter management
widgets.selectFileWidgets.FilesSelectionWidget.add()
line 3448, add transform filter management
gui.dialogDownload.DialogDownload.download()
line 261, add information dialog boxes after the download is complete
gui.dialogVolumeAttributes.DialogVolumeAttributes.__init__()
add QCheckBox self._unlocksp and self._unlocko before spacing/origin
gui.dialogFunction.DialogRegressionIntensityMatching.__init__()
add self._mask attribute
gui.dialogFunction.DialogRegressionIntensityMatching.function()
line 870, use self._mask attribute to store mask to avoid recalculating it
gui.dialogDatatype.DialogEditID.execute()
line 446, replace self._files.clear() by self._files.clearall()
gui.dialogSettings.DialogSettings.apply()
line 553, gemini button visibility in WindowSisyphe._tabROIList
gui.dialogSplash.DialogSplash.__init__()
line 180, add device context info (context = renderer.ReportCapabilities())
gui.dialogManualRegistration.DialogManualRegistration.__init__()
Reverse the order of the ‘OK’ and ‘Cancel’ buttons.
gui.windowSisyphe.WindowSisyphe.__init__()
line 459, gemini button visibility in self._tabROIList
gui.windowSisyphe.WindowSisyphe.editID()
line 3375, setToolbarThumbnail to dialog file selection widgets
gui.windowSisyphe.WindowSisyphe.checkUpdate()
line 3761, message for new modules
new methods
core.sisypheImage.SisypheImage.copyFromPillowImage()
core.sisypheImage.SisypheImage.copyToPillowImage()
copy to Pillow image
core.sisypheVolume.SisypheImage.copyToPillowImage()
copy to Pillow image
widgets.widgets.tabToolsWidgets.TabROIToolsWidget._popupGeminiMenu()
widgets.widgets.tabToolsWidgets.TabROIToolsWidget._geminiClicked()
gemini button menu management
widgets.selectFileWidgets.SelectionFilter.filterTransform()
widgets.selectFileWidgets.SelectionFilter.getTransformFilter()
set and get transform filter methods
gui.dialogVolumeAttributes.DialogVolumeAttributes._unlockSpacing()
called by QCheckBox self._unlocksp toggled event
gui.dialogVolumeAttributes.DialogVolumeAttributes._unlockOrigin()
called by QCheckBox self._unlocko toggled event
gui.dialogDatatype.DialogEditID.getreferenceSelectionWidget()
gui.dialogDatatype.DialogEditID.setreferenceSelectionWidget()
gui.windowSisyphe.WindowSisyphe.frameRegistration()
call the frame-based registration dialog box