melage 0.0.68__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- assets/copyright.png +0 -0
- assets/resource/color/FreeSurferColorLUT.txt +2006 -0
- assets/resource/color/LUT_30.txt +31 -0
- assets/resource/color/SynthSeg.txt +34 -0
- resource/color/Simple.txt → assets/resource/color/lut_prostate.txt +20 -18
- assets/resource/horizontalview.png +0 -0
- assets/resource/theme/create_ticks.py +85 -0
- assets/resource/theme/rc/checkbox_checked.png +0 -0
- assets/resource/theme/rc/checkbox_checked@2x.png +0 -0
- assets/resource/theme/rc/checkbox_checked_disabled.png +0 -0
- assets/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
- assets/resource/theme/rc/checkbox_checked_focus.png +0 -0
- assets/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
- assets/resource/theme/rc/checkbox_checked_pressed.png +0 -0
- assets/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
- assets/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
- assets/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
- assets/resource/verticalview.png +0 -0
- assets/resource/zoom_in.png +0 -0
- assets/resource/zoom_neutral (copy).png +0 -0
- assets/resource/zoom_neutral.png +0 -0
- assets/resource/zoom_out.png +0 -0
- data/MNI/mni_icbm152_t1_tal_nlin_sym_09a.nii +0 -0
- data/MNI/mni_icbm152_t1_tal_nlin_sym_09a_masked.nii.gz +0 -0
- data/MNI/mni_icbm152_t1_tal_nlin_sym_09a_seg.nii.gz +0 -0
- melage/__init__.py +1 -1
- melage/config/__init__.py +100 -0
- melage/core/Registration/registration.py +54 -0
- melage/{utils/readData.py → core/io.py} +12 -4
- melage/{widgets/melageAbout.py → dialogs/AboutDialog.py} +1 -1
- melage/dialogs/MaskOperationsDialog.py +146 -0
- melage/dialogs/MaskingDialog.py +139 -0
- melage/dialogs/RegistrationDialog.py +311 -0
- melage/{widgets/ImageThresholding.py → dialogs/ThresholdingDialog.py} +2 -2
- melage/dialogs/TransformationDialog.py +275 -0
- melage/dialogs/__init__.py +9 -0
- melage/dialogs/dynamic_gui.py +327 -0
- melage/{widgets/fileDialog_widget.py → dialogs/helpers/FileDialog.py} +226 -1
- melage/dialogs/helpers/__init__.py +5 -0
- melage/main.py +13 -13
- melage/{widgets/mainwindow_widget.py → mainwindow_widget.py} +1434 -1408
- melage/plugins/N4_bias/N4.py +115 -0
- melage/plugins/N4_bias/N4_schema.py +40 -0
- melage/plugins/N4_bias/main/utils.py +46 -0
- melage/plugins/__init__.py +2 -0
- melage/plugins/bet/bet.py +176 -0
- melage/plugins/bet/bet_schema.py +73 -0
- melage/{widgets/brain_extraction.py → plugins/bet/main/BET.py} +51 -316
- melage/plugins/change_coord/change_coord.py +197 -0
- melage/plugins/change_coord/change_coord_schema.py +31 -0
- melage/plugins/change_coord/main/utils.py +15 -0
- melage/{widgets/Segmentation → plugins/esfcm/main}/FCM.py +3 -5
- melage/plugins/esfcm/main/test.py +57 -0
- melage/{widgets/Segmentation → plugins/esfcm/main}/utils.py +20 -0
- melage/plugins/esfcm/tissue_segmentation.py +124 -0
- melage/plugins/esfcm/tissue_segmentation_schema.py +33 -0
- melage/plugins/masking_operation/mo.py +115 -0
- melage/plugins/masking_operation/mo_schema.py +33 -0
- melage/plugins/mga_net/MGA_Net.py +145 -0
- melage/plugins/mga_net/MGA_Net_schema.py +29 -0
- melage/plugins/mga_net/main/figures/Network.txt +1 -0
- melage/{widgets/DeepLModels/new_unet.py → plugins/mga_net/main/model/mga_net.py} +3 -3
- melage/plugins/mga_net/main/model/utils.py +258 -0
- melage/plugins/mga_net/main/test_mgaNet.py +134 -0
- melage/plugins/resize/resize.py +136 -0
- melage/plugins/resize/resize_schema.py +41 -0
- melage/plugins/ui_helpers.py +144 -0
- melage/plugins/warpseg/WarpSeg.py +195 -0
- melage/plugins/warpseg/WarpSeg_schema.py +41 -0
- melage/plugins/warpseg/__init__.py +2 -0
- melage/plugins/warpseg/warpseg_main/data_reader/DDSet.py +303 -0
- melage/plugins/warpseg/warpseg_main/data_reader/DDSetSeg.py +279 -0
- melage/plugins/warpseg/warpseg_main/data_reader/__init__.py +60 -0
- melage/plugins/warpseg/warpseg_main/data_reader/baseData.py +18 -0
- melage/plugins/warpseg/warpseg_main/data_reader/utils.py +267 -0
- melage/plugins/warpseg/warpseg_main/dist_utils.py +18 -0
- melage/plugins/warpseg/warpseg_main/requirements.txt +10 -0
- melage/plugins/warpseg/warpseg_main/test.py +272 -0
- melage/plugins/warpseg/warpseg_main/train.py +432 -0
- melage/plugins/warpseg/warpseg_main/train_reg.py +373 -0
- melage/plugins/warpseg/warpseg_main/verify_post_process.py +73 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/__init__.py +45 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/py/__init__.py +1 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/py/utils.py +99 -0
- melage/{widgets/Synthstrip.py → plugins/warpseg/warpseg_main/voxelmorph/torch/Unet.py} +71 -51
- melage/plugins/warpseg/warpseg_main/voxelmorph/torch/__init__.py +4 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/torch/layers.py +97 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/torch/losses.py +462 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/torch/modelio.py +77 -0
- melage/{widgets/DeepLModels/InfantSegment/Unet.py → plugins/warpseg/warpseg_main/voxelmorph/torch/multi_stage_net.py} +76 -52
- melage/plugins/warpseg/warpseg_main/voxelmorph/torch/networks.py +308 -0
- melage/plugins/warpseg/warpseg_main/voxelmorph/torch/utils.py +470 -0
- melage/{utils/DispalyIm.py → rendering/DisplayIm.py} +67 -79
- melage/{utils → rendering}/glScientific.py +1 -1
- melage/utils/__init__.py +1 -0
- melage/utils/utils.py +343 -196
- melage/widgets/{dockWidgets.py → DockWidgets.py} +123 -55
- melage/widgets/SettingsWidget.py +98 -0
- melage/widgets/__init__.py +49 -0
- melage/widgets/openglWidgets.py +344 -156
- melage/widgets/openglWidgets_bu.py +645 -0
- melage/widgets/plugin_manager.py +62 -0
- melage-1.0.0.dist-info/METADATA +953 -0
- melage-1.0.0.dist-info/RECORD +571 -0
- melage-1.0.0.dist-info/entry_points.txt +2 -0
- melage-1.0.0.dist-info/top_level.txt +4 -0
- melage/requirements22.txt +0 -25
- melage/requirements_old.txt +0 -28
- melage/resource/theme/rc/checkbox_checked.png +0 -0
- melage/resource/theme/rc/checkbox_checked@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
- melage/some_notes.txt +0 -3
- melage/utils/GMM.py +0 -720
- melage/utils/Shaders_bu.py +0 -314
- melage/utils/__init__0.py +0 -7
- melage/utils/glScientific_bc.py +0 -1585
- melage/utils/registration.py +0 -512
- melage/utils/source_folder.py +0 -18
- melage/version.txt +0 -1
- melage/widgets/ApplyMask.py +0 -212
- melage/widgets/ChangeSystem.py +0 -152
- melage/widgets/DeepLModels/NPP/dataset/mri_dataset_affine.py +0 -149
- melage/widgets/DeepLModels/NPP/models/checkpoints/npp_v1.pth.py +0 -0
- melage/widgets/DeepLModels/NPP/models/losses.py +0 -146
- melage/widgets/DeepLModels/NPP/models/model.py +0 -272
- melage/widgets/DeepLModels/NPP/models/utils.py +0 -303
- melage/widgets/DeepLModels/NPP/npp.py +0 -116
- melage/widgets/DeepLModels/NPP/requirements.txt +0 -8
- melage/widgets/DeepLModels/NPP/train/train.py +0 -116
- melage/widgets/DeepLModels/Unet3DAtt.py +0 -657
- melage/widgets/DeepLModels/Unet3D_basic.py +0 -648
- melage/widgets/DeepLModels/new_unet_old.py +0 -639
- melage/widgets/DeepLModels/new_unet_old2.py +0 -658
- melage/widgets/MaskOperations.py +0 -147
- melage/widgets/N4Dialog.py +0 -241
- melage/widgets/Segmentation/__init__.py +0 -588
- melage/widgets/SemiAutoSeg.py +0 -666
- melage/widgets/__init__0.py +0 -5
- melage/widgets/about.py +0 -246
- melage/widgets/activator.py +0 -147
- melage/widgets/be_dl.py +0 -409
- melage/widgets/be_dl_unet3d.py +0 -441
- melage/widgets/brain_extraction_dl.py +0 -887
- melage/widgets/brain_extraction_dl_bu.py +0 -869
- melage/widgets/registrationWidget.py +0 -342
- melage/widgets/settings_widget.py +0 -77
- melage/widgets/tranformationWidget.py +0 -275
- melage-0.0.68.dist-info/METADATA +0 -740
- melage-0.0.68.dist-info/RECORD +0 -916
- melage-0.0.68.dist-info/entry_points.txt +0 -2
- melage-0.0.68.dist-info/top_level.txt +0 -2
- resource/0circle.png +0 -0
- resource/0circle_faded.png +0 -0
- resource/3d.png +0 -0
- resource/3d.psd +0 -0
- resource/3dFaded.png +0 -0
- resource/Eraser.png +0 -0
- resource/EraserFaded.png +0 -0
- resource/EraserX.png +0 -0
- resource/EraserXFaded.png +0 -0
- resource/Eraser_icon.svg +0 -79
- resource/Hand.png +0 -0
- resource/HandIcons_0.png +0 -0
- resource/Hand_IX.png +0 -0
- resource/Hand_IXFaded.png +0 -0
- resource/Handsqueezed.png +0 -0
- resource/Handwriting (copy).png +0 -0
- resource/Handwriting.png +0 -0
- resource/HandwritingMinus.png +0 -0
- resource/HandwritingMinusX.png +0 -0
- resource/HandwritingPlus.png +0 -0
- resource/HandwritingPlusX.png +0 -0
- resource/Move_icon.svg +0 -8
- resource/PngItem_2422924.png +0 -0
- resource/about.png +0 -0
- resource/about_logo.png +0 -0
- resource/about_logo0.png +0 -0
- resource/action_check.png +0 -0
- resource/action_check_OFF.png +0 -0
- resource/arrow).png +0 -0
- resource/arrow.png +0 -0
- resource/arrowFaded.png +0 -0
- resource/arrow_org.png +0 -0
- resource/arrow_org.png.png +0 -0
- resource/arrows.png +0 -0
- resource/authors.mp4 +0 -0
- resource/box.png +0 -0
- resource/check-image-icon-0.jpg +0 -0
- resource/circle.png +0 -0
- resource/circle_faded.png +0 -0
- resource/circle_or.png +0 -0
- resource/close.png +0 -0
- resource/close_bg.png +0 -0
- resource/color/Tissue.txt +0 -24
- resource/color/Tissue12.txt +0 -27
- resource/color/albert_LUT.txt +0 -102
- resource/color/mcrib_LUT.txt +0 -102
- resource/color/pediatric1.txt +0 -29
- resource/color/pediatric1_old.txt +0 -27
- resource/color/pediatric2.txt +0 -87
- resource/color/pediatric3.txt +0 -29
- resource/color/pediatrics (copy).csv +0 -103
- resource/color/tissue_seg.txt +0 -4
- resource/contour.png +0 -0
- resource/contour.svg +0 -2
- resource/contourFaded.png +0 -0
- resource/contourX.png +0 -0
- resource/contourXFaded.png +0 -0
- resource/dti.png +0 -0
- resource/dti0.png +0 -0
- resource/dti222.png +0 -0
- resource/dti_or.png +0 -0
- resource/eco.png +0 -0
- resource/eco22.png +0 -0
- resource/eco_old.png +0 -0
- resource/eco_or.png +0 -0
- resource/eco_or2.png +0 -0
- resource/eco_seg.png +0 -0
- resource/eco_seg_old.png +0 -0
- resource/export.png +0 -0
- resource/hand-grab-icon-10.jpg +0 -0
- resource/hand-grab-icon-25.jpg +0 -0
- resource/info.png +0 -0
- resource/line.png +0 -0
- resource/linefaded.png +0 -0
- resource/load.png +0 -0
- resource/melage_top.ico +0 -0
- resource/melage_top.png +0 -0
- resource/melage_top0.png +0 -0
- resource/melage_top1.png +0 -0
- resource/melage_top4.png +0 -0
- resource/mri (copy).png +0 -0
- resource/mri.png +0 -0
- resource/mri0.png +0 -0
- resource/mri000.png +0 -0
- resource/mri22.png +0 -0
- resource/mri_big.png +0 -0
- resource/mri_old.png +0 -0
- resource/mri_seg.png +0 -0
- resource/mri_seg_old.png +0 -0
- resource/new.png +0 -0
- resource/open.png +0 -0
- resource/open2.png +0 -0
- resource/pan.png +0 -0
- resource/pencil.png +0 -0
- resource/pencilFaded.png +0 -0
- resource/points.png +0 -0
- resource/pointsFaded.png +0 -0
- resource/rotate.png +0 -0
- resource/ruler.png +0 -0
- resource/rulerFaded.png +0 -0
- resource/s.png +0 -0
- resource/s.psd +0 -0
- resource/save.png +0 -0
- resource/saveas.png +0 -0
- resource/seg_mri.png +0 -0
- resource/seg_mri2.png +0 -0
- resource/settings.png +0 -0
- resource/synch.png +0 -0
- resource/synchFaded.png +0 -0
- resource/theme/rc/.keep +0 -1
- resource/theme/rc/arrow_down.png +0 -0
- resource/theme/rc/arrow_down@2x.png +0 -0
- resource/theme/rc/arrow_down_disabled.png +0 -0
- resource/theme/rc/arrow_down_disabled@2x.png +0 -0
- resource/theme/rc/arrow_down_focus.png +0 -0
- resource/theme/rc/arrow_down_focus@2x.png +0 -0
- resource/theme/rc/arrow_down_pressed.png +0 -0
- resource/theme/rc/arrow_down_pressed@2x.png +0 -0
- resource/theme/rc/arrow_left.png +0 -0
- resource/theme/rc/arrow_left@2x.png +0 -0
- resource/theme/rc/arrow_left_disabled.png +0 -0
- resource/theme/rc/arrow_left_disabled@2x.png +0 -0
- resource/theme/rc/arrow_left_focus.png +0 -0
- resource/theme/rc/arrow_left_focus@2x.png +0 -0
- resource/theme/rc/arrow_left_pressed.png +0 -0
- resource/theme/rc/arrow_left_pressed@2x.png +0 -0
- resource/theme/rc/arrow_right.png +0 -0
- resource/theme/rc/arrow_right@2x.png +0 -0
- resource/theme/rc/arrow_right_disabled.png +0 -0
- resource/theme/rc/arrow_right_disabled@2x.png +0 -0
- resource/theme/rc/arrow_right_focus.png +0 -0
- resource/theme/rc/arrow_right_focus@2x.png +0 -0
- resource/theme/rc/arrow_right_pressed.png +0 -0
- resource/theme/rc/arrow_right_pressed@2x.png +0 -0
- resource/theme/rc/arrow_up.png +0 -0
- resource/theme/rc/arrow_up@2x.png +0 -0
- resource/theme/rc/arrow_up_disabled.png +0 -0
- resource/theme/rc/arrow_up_disabled@2x.png +0 -0
- resource/theme/rc/arrow_up_focus.png +0 -0
- resource/theme/rc/arrow_up_focus@2x.png +0 -0
- resource/theme/rc/arrow_up_pressed.png +0 -0
- resource/theme/rc/arrow_up_pressed@2x.png +0 -0
- resource/theme/rc/base_icon.png +0 -0
- resource/theme/rc/base_icon@2x.png +0 -0
- resource/theme/rc/base_icon_disabled.png +0 -0
- resource/theme/rc/base_icon_disabled@2x.png +0 -0
- resource/theme/rc/base_icon_focus.png +0 -0
- resource/theme/rc/base_icon_focus@2x.png +0 -0
- resource/theme/rc/base_icon_pressed.png +0 -0
- resource/theme/rc/base_icon_pressed@2x.png +0 -0
- resource/theme/rc/branch_closed.png +0 -0
- resource/theme/rc/branch_closed@2x.png +0 -0
- resource/theme/rc/branch_closed_disabled.png +0 -0
- resource/theme/rc/branch_closed_disabled@2x.png +0 -0
- resource/theme/rc/branch_closed_focus.png +0 -0
- resource/theme/rc/branch_closed_focus@2x.png +0 -0
- resource/theme/rc/branch_closed_pressed.png +0 -0
- resource/theme/rc/branch_closed_pressed@2x.png +0 -0
- resource/theme/rc/branch_end.png +0 -0
- resource/theme/rc/branch_end@2x.png +0 -0
- resource/theme/rc/branch_end_disabled.png +0 -0
- resource/theme/rc/branch_end_disabled@2x.png +0 -0
- resource/theme/rc/branch_end_focus.png +0 -0
- resource/theme/rc/branch_end_focus@2x.png +0 -0
- resource/theme/rc/branch_end_pressed.png +0 -0
- resource/theme/rc/branch_end_pressed@2x.png +0 -0
- resource/theme/rc/branch_line.png +0 -0
- resource/theme/rc/branch_line@2x.png +0 -0
- resource/theme/rc/branch_line_disabled.png +0 -0
- resource/theme/rc/branch_line_disabled@2x.png +0 -0
- resource/theme/rc/branch_line_focus.png +0 -0
- resource/theme/rc/branch_line_focus@2x.png +0 -0
- resource/theme/rc/branch_line_pressed.png +0 -0
- resource/theme/rc/branch_line_pressed@2x.png +0 -0
- resource/theme/rc/branch_more.png +0 -0
- resource/theme/rc/branch_more@2x.png +0 -0
- resource/theme/rc/branch_more_disabled.png +0 -0
- resource/theme/rc/branch_more_disabled@2x.png +0 -0
- resource/theme/rc/branch_more_focus.png +0 -0
- resource/theme/rc/branch_more_focus@2x.png +0 -0
- resource/theme/rc/branch_more_pressed.png +0 -0
- resource/theme/rc/branch_more_pressed@2x.png +0 -0
- resource/theme/rc/branch_open.png +0 -0
- resource/theme/rc/branch_open@2x.png +0 -0
- resource/theme/rc/branch_open_disabled.png +0 -0
- resource/theme/rc/branch_open_disabled@2x.png +0 -0
- resource/theme/rc/branch_open_focus.png +0 -0
- resource/theme/rc/branch_open_focus@2x.png +0 -0
- resource/theme/rc/branch_open_pressed.png +0 -0
- resource/theme/rc/branch_open_pressed@2x.png +0 -0
- resource/theme/rc/checkbox_checked.png +0 -0
- resource/theme/rc/checkbox_checked0.png +0 -0
- resource/theme/rc/checkbox_checked@2x.png +0 -0
- resource/theme/rc/checkbox_checked@2x0.png +0 -0
- resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
- resource/theme/rc/checkbox_checked_disabled.png +0 -0
- resource/theme/rc/checkbox_checked_disabled0.png +0 -0
- resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
- resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
- resource/theme/rc/checkbox_checked_focus.png +0 -0
- resource/theme/rc/checkbox_checked_focus0.png +0 -0
- resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
- resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
- resource/theme/rc/checkbox_checked_pressed.png +0 -0
- resource/theme/rc/checkbox_checked_pressed0.png +0 -0
- resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
- resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
- resource/theme/rc/checkbox_indeterminate.png +0 -0
- resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
- resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
- resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
- resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
- resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
- resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
- resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
- resource/theme/rc/checkbox_unchecked.png +0 -0
- resource/theme/rc/checkbox_unchecked0.png +0 -0
- resource/theme/rc/checkbox_unchecked00.png +0 -0
- resource/theme/rc/checkbox_unchecked@2x.png +0 -0
- resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
- resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
- resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
- resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
- resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
- resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
- resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
- resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
- resource/theme/rc/checkbox_unchecked_focus.png +0 -0
- resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
- resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
- resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
- resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
- resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
- resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
- resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
- resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
- resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
- resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
- resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
- resource/theme/rc/line_horizontal.png +0 -0
- resource/theme/rc/line_horizontal@2x.png +0 -0
- resource/theme/rc/line_horizontal_disabled.png +0 -0
- resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
- resource/theme/rc/line_horizontal_focus.png +0 -0
- resource/theme/rc/line_horizontal_focus@2x.png +0 -0
- resource/theme/rc/line_horizontal_pressed.png +0 -0
- resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
- resource/theme/rc/line_vertical.png +0 -0
- resource/theme/rc/line_vertical@2x.png +0 -0
- resource/theme/rc/line_vertical_disabled.png +0 -0
- resource/theme/rc/line_vertical_disabled@2x.png +0 -0
- resource/theme/rc/line_vertical_focus.png +0 -0
- resource/theme/rc/line_vertical_focus@2x.png +0 -0
- resource/theme/rc/line_vertical_pressed.png +0 -0
- resource/theme/rc/line_vertical_pressed@2x.png +0 -0
- resource/theme/rc/radio_checked.png +0 -0
- resource/theme/rc/radio_checked@2x.png +0 -0
- resource/theme/rc/radio_checked_disabled.png +0 -0
- resource/theme/rc/radio_checked_disabled@2x.png +0 -0
- resource/theme/rc/radio_checked_focus.png +0 -0
- resource/theme/rc/radio_checked_focus@2x.png +0 -0
- resource/theme/rc/radio_checked_pressed.png +0 -0
- resource/theme/rc/radio_checked_pressed@2x.png +0 -0
- resource/theme/rc/radio_unchecked.png +0 -0
- resource/theme/rc/radio_unchecked@2x.png +0 -0
- resource/theme/rc/radio_unchecked_disabled.png +0 -0
- resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
- resource/theme/rc/radio_unchecked_focus.png +0 -0
- resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
- resource/theme/rc/radio_unchecked_pressed.png +0 -0
- resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
- resource/theme/rc/toolbar_move_horizontal.png +0 -0
- resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
- resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
- resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
- resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
- resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
- resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
- resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
- resource/theme/rc/toolbar_move_vertical.png +0 -0
- resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
- resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
- resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
- resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
- resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
- resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
- resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
- resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
- resource/theme/rc/toolbar_separator_vertical.png +0 -0
- resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
- resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
- resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
- resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
- resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
- resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
- resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
- resource/theme/rc/transparent.png +0 -0
- resource/theme/rc/transparent@2x.png +0 -0
- resource/theme/rc/transparent_disabled.png +0 -0
- resource/theme/rc/transparent_disabled@2x.png +0 -0
- resource/theme/rc/transparent_focus.png +0 -0
- resource/theme/rc/transparent_focus@2x.png +0 -0
- resource/theme/rc/transparent_pressed.png +0 -0
- resource/theme/rc/transparent_pressed@2x.png +0 -0
- resource/theme/rc/window_close.png +0 -0
- resource/theme/rc/window_close@2x.png +0 -0
- resource/theme/rc/window_close_disabled.png +0 -0
- resource/theme/rc/window_close_disabled@2x.png +0 -0
- resource/theme/rc/window_close_focus.png +0 -0
- resource/theme/rc/window_close_focus@2x.png +0 -0
- resource/theme/rc/window_close_pressed.png +0 -0
- resource/theme/rc/window_close_pressed@2x.png +0 -0
- resource/theme/rc/window_grip.png +0 -0
- resource/theme/rc/window_grip@2x.png +0 -0
- resource/theme/rc/window_grip_disabled.png +0 -0
- resource/theme/rc/window_grip_disabled@2x.png +0 -0
- resource/theme/rc/window_grip_focus.png +0 -0
- resource/theme/rc/window_grip_focus@2x.png +0 -0
- resource/theme/rc/window_grip_pressed.png +0 -0
- resource/theme/rc/window_grip_pressed@2x.png +0 -0
- resource/theme/rc/window_minimize.png +0 -0
- resource/theme/rc/window_minimize@2x.png +0 -0
- resource/theme/rc/window_minimize_disabled.png +0 -0
- resource/theme/rc/window_minimize_disabled@2x.png +0 -0
- resource/theme/rc/window_minimize_focus.png +0 -0
- resource/theme/rc/window_minimize_focus@2x.png +0 -0
- resource/theme/rc/window_minimize_pressed.png +0 -0
- resource/theme/rc/window_minimize_pressed@2x.png +0 -0
- resource/theme/rc/window_undock.png +0 -0
- resource/theme/rc/window_undock@2x.png +0 -0
- resource/theme/rc/window_undock_disabled.png +0 -0
- resource/theme/rc/window_undock_disabled@2x.png +0 -0
- resource/theme/rc/window_undock_focus.png +0 -0
- resource/theme/rc/window_undock_focus@2x.png +0 -0
- resource/theme/rc/window_undock_pressed.png +0 -0
- resource/theme/rc/window_undock_pressed@2x.png +0 -0
- resource/theme/style.qss +0 -2223
- resource/tract.png +0 -0
- resource/view1.png +0 -0
- resource/view1_eco.png +0 -0
- resource/view1_mri.png +0 -0
- resource/view1_seg.png +0 -0
- resource/view2.png +0 -0
- resource/view2_seg.png +0 -0
- resource/w.png +0 -0
- resource/zoom_in.png +0 -0
- resource/zoom_inFaded.png +0 -0
- resource/zoom_out.png +0 -0
- resource/zoom_outFaded.png +0 -0
- {melage/resource → assets}/main.ico +0 -0
- {melage → assets}/resource/0circle.png +0 -0
- {melage → assets}/resource/0circle_faded.png +0 -0
- {melage → assets}/resource/3d.png +0 -0
- {melage → assets}/resource/3d.psd +0 -0
- {melage → assets}/resource/3dFaded.png +0 -0
- {melage → assets}/resource/Eraser.png +0 -0
- {melage → assets}/resource/EraserFaded.png +0 -0
- {melage → assets}/resource/EraserX.png +0 -0
- {melage → assets}/resource/EraserXFaded.png +0 -0
- {melage → assets}/resource/Eraser_icon.svg +0 -0
- {melage → assets}/resource/Hand.png +0 -0
- {melage → assets}/resource/HandIcons_0.png +0 -0
- {melage → assets}/resource/Hand_IX.png +0 -0
- {melage → assets}/resource/Hand_IXFaded.png +0 -0
- {melage → assets}/resource/Handsqueezed.png +0 -0
- {melage → assets}/resource/Handwriting (copy).png +0 -0
- {melage → assets}/resource/Handwriting.png +0 -0
- {melage → assets}/resource/HandwritingMinus.png +0 -0
- {melage → assets}/resource/HandwritingMinusX.png +0 -0
- {melage → assets}/resource/HandwritingPlus.png +0 -0
- {melage → assets}/resource/HandwritingPlusX.png +0 -0
- {melage → assets}/resource/Move_icon.svg +0 -0
- {melage → assets}/resource/PngItem_2422924.png +0 -0
- {melage → assets}/resource/about.png +0 -0
- {melage → assets}/resource/about_logo.png +0 -0
- {melage → assets}/resource/about_logo0.png +0 -0
- {melage → assets}/resource/action_check.png +0 -0
- {melage → assets}/resource/action_check_OFF.png +0 -0
- {melage → assets}/resource/arrow).png +0 -0
- {melage → assets}/resource/arrow.png +0 -0
- {melage → assets}/resource/arrowFaded.png +0 -0
- {melage → assets}/resource/arrow_org.png +0 -0
- {melage → assets}/resource/arrow_org.png.png +0 -0
- {melage → assets}/resource/arrows.png +0 -0
- {melage → assets}/resource/authors.mp4 +0 -0
- {melage → assets}/resource/box.png +0 -0
- {melage → assets}/resource/check-image-icon-0.jpg +0 -0
- {melage → assets}/resource/circle.png +0 -0
- {melage → assets}/resource/circle_faded.png +0 -0
- {melage → assets}/resource/circle_or.png +0 -0
- {melage → assets}/resource/close.png +0 -0
- {melage → assets}/resource/close_bg.png +0 -0
- {melage → assets}/resource/color/Simple.txt +0 -0
- {melage → assets}/resource/color/Tissue.txt +0 -0
- {melage → assets}/resource/color/Tissue12.txt +0 -0
- {melage → assets}/resource/color/albert_LUT.txt +0 -0
- {melage → assets}/resource/color/mcrib_LUT.txt +0 -0
- {melage → assets}/resource/color/pediatric1.txt +0 -0
- {melage → assets}/resource/color/pediatric1_old.txt +0 -0
- {melage → assets}/resource/color/pediatric2.txt +0 -0
- {melage → assets}/resource/color/pediatric3.txt +0 -0
- {melage → assets}/resource/color/pediatrics (copy).csv +0 -0
- {melage → assets}/resource/color/tissue_seg.txt +0 -0
- {melage → assets}/resource/contour.png +0 -0
- {melage → assets}/resource/contour.svg +0 -0
- {melage → assets}/resource/contourFaded.png +0 -0
- {melage → assets}/resource/contourX.png +0 -0
- {melage → assets}/resource/contourXFaded.png +0 -0
- {melage → assets}/resource/dti.png +0 -0
- {melage → assets}/resource/dti0.png +0 -0
- {melage → assets}/resource/dti222.png +0 -0
- {melage → assets}/resource/dti_or.png +0 -0
- {melage → assets}/resource/eco.png +0 -0
- {melage → assets}/resource/eco22.png +0 -0
- {melage → assets}/resource/eco_old.png +0 -0
- {melage → assets}/resource/eco_or.png +0 -0
- {melage → assets}/resource/eco_or2.png +0 -0
- {melage → assets}/resource/eco_seg.png +0 -0
- {melage → assets}/resource/eco_seg_old.png +0 -0
- {melage → assets}/resource/export.png +0 -0
- {melage → assets}/resource/hand-grab-icon-10.jpg +0 -0
- {melage → assets}/resource/hand-grab-icon-25.jpg +0 -0
- {melage → assets}/resource/info.png +0 -0
- {melage → assets}/resource/line.png +0 -0
- {melage → assets}/resource/linefaded.png +0 -0
- {melage → assets}/resource/load.png +0 -0
- {resource → assets/resource}/main.ico +0 -0
- {melage → assets}/resource/manual_images/3D_rightc.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_goto.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_draw1.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_draw2.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_render.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_render2.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_render3.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_render4.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_render5.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_paint_render6.png +0 -0
- {melage → assets}/resource/manual_images/3D_rightc_seg.png +0 -0
- {melage → assets}/resource/manual_images/exit_toolbar.png +0 -0
- {melage → assets}/resource/manual_images/load_image_file.png +0 -0
- {melage → assets}/resource/manual_images/load_image_file_openp.png +0 -0
- {melage → assets}/resource/manual_images/main_page.png +0 -0
- {melage → assets}/resource/manual_images/menu_file.png +0 -0
- {melage → assets}/resource/manual_images/menu_file_export.png +0 -0
- {melage → assets}/resource/manual_images/menu_file_import.png +0 -0
- {melage → assets}/resource/manual_images/menu_file_settings.png +0 -0
- {melage → assets}/resource/manual_images/menu_file_ss.png +0 -0
- {melage → assets}/resource/manual_images/open_save_load.png +0 -0
- {melage → assets}/resource/manual_images/panning_toolbar.png +0 -0
- {melage → assets}/resource/manual_images/segmentation_toolbar.png +0 -0
- {melage → assets}/resource/manual_images/tab_mri.png +0 -0
- {melage → assets}/resource/manual_images/tab_us.png +0 -0
- {melage → assets}/resource/manual_images/tabs.png +0 -0
- {melage → assets}/resource/manual_images/toolbar_tools.png +0 -0
- {melage → assets}/resource/manual_images/tools_basic.png +0 -0
- {melage → assets}/resource/manual_images/tools_bet.png +0 -0
- {melage → assets}/resource/manual_images/tools_cs.png +0 -0
- {melage → assets}/resource/manual_images/tools_deepbet.png +0 -0
- {melage → assets}/resource/manual_images/tools_imageinfo.png +0 -0
- {melage → assets}/resource/manual_images/tools_maskO.png +0 -0
- {melage → assets}/resource/manual_images/tools_masking.png +0 -0
- {melage → assets}/resource/manual_images/tools_n4b.png +0 -0
- {melage → assets}/resource/manual_images/tools_resize.png +0 -0
- {melage → assets}/resource/manual_images/tools_ruler.png +0 -0
- {melage → assets}/resource/manual_images/tools_seg.png +0 -0
- {melage → assets}/resource/manual_images/tools_threshold.png +0 -0
- {melage → assets}/resource/manual_images/tools_tools.png +0 -0
- {melage → assets}/resource/manual_images/widget_color.png +0 -0
- {melage → assets}/resource/manual_images/widget_color_add.png +0 -0
- {melage → assets}/resource/manual_images/widget_color_add2.png +0 -0
- {melage → assets}/resource/manual_images/widget_color_additional.png +0 -0
- {melage → assets}/resource/manual_images/widget_images.png +0 -0
- {melage → assets}/resource/manual_images/widget_images2.png +0 -0
- {melage → assets}/resource/manual_images/widget_images3.png +0 -0
- {melage → assets}/resource/manual_images/widget_marker.png +0 -0
- {melage → assets}/resource/manual_images/widget_mri.png +0 -0
- {melage → assets}/resource/manual_images/widget_mri2.png +0 -0
- {melage → assets}/resource/manual_images/widget_segintensity.png +0 -0
- {melage → assets}/resource/manual_images/widget_tab_mutualview.png +0 -0
- {melage → assets}/resource/manual_images/widget_tab_mutualview2.png +0 -0
- {melage → assets}/resource/manual_images/widget_table.png +0 -0
- {melage → assets}/resource/manual_images/widget_table2.png +0 -0
- {melage → assets}/resource/manual_images/widget_us.png +0 -0
- {melage → assets}/resource/melage_top.ico +0 -0
- {melage → assets}/resource/melage_top.png +0 -0
- {melage → assets}/resource/melage_top0.png +0 -0
- {melage → assets}/resource/melage_top1.png +0 -0
- {melage → assets}/resource/melage_top4.png +0 -0
- {melage → assets}/resource/mri (copy).png +0 -0
- {melage → assets}/resource/mri.png +0 -0
- {melage → assets}/resource/mri0.png +0 -0
- {melage → assets}/resource/mri000.png +0 -0
- {melage → assets}/resource/mri22.png +0 -0
- {melage → assets}/resource/mri_big.png +0 -0
- {melage → assets}/resource/mri_old.png +0 -0
- {melage → assets}/resource/mri_seg.png +0 -0
- {melage → assets}/resource/mri_seg_old.png +0 -0
- {melage → assets}/resource/new.png +0 -0
- {melage → assets}/resource/open.png +0 -0
- {melage → assets}/resource/open2.png +0 -0
- {melage → assets}/resource/pan.png +0 -0
- {melage → assets}/resource/pencil.png +0 -0
- {melage → assets}/resource/pencilFaded.png +0 -0
- {melage → assets}/resource/points.png +0 -0
- {melage → assets}/resource/pointsFaded.png +0 -0
- {melage → assets}/resource/rotate.png +0 -0
- {melage → assets}/resource/ruler.png +0 -0
- {melage → assets}/resource/rulerFaded.png +0 -0
- {melage → assets}/resource/s.png +0 -0
- {melage → assets}/resource/s.psd +0 -0
- {melage → assets}/resource/save.png +0 -0
- {melage → assets}/resource/saveas.png +0 -0
- {melage → assets}/resource/seg_mri.png +0 -0
- {melage → assets}/resource/seg_mri2.png +0 -0
- {melage → assets}/resource/settings.png +0 -0
- {melage → assets}/resource/synch.png +0 -0
- {melage → assets}/resource/synchFaded.png +0 -0
- {melage → assets}/resource/theme/rc/.keep +0 -0
- {melage → assets}/resource/theme/rc/arrow_down.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down_focus.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_down_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left_focus.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_left_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right_focus.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_right_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up_focus.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/arrow_up_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon@2x.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon_focus.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/base_icon_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed_focus.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/branch_closed_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end_focus.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/branch_end_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line_focus.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/branch_line_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more_focus.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/branch_more_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open_focus.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/branch_open_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/checkbox_checked0.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal_focus.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical_focus.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/line_vertical_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked_focus.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/radio_checked_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked_focus.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/transparent.png +0 -0
- {melage → assets}/resource/theme/rc/transparent@2x.png +0 -0
- {melage → assets}/resource/theme/rc/transparent_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/transparent_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/transparent_focus.png +0 -0
- {melage → assets}/resource/theme/rc/transparent_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/transparent_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/transparent_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_close.png +0 -0
- {melage → assets}/resource/theme/rc/window_close@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_close_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/window_close_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_close_focus.png +0 -0
- {melage → assets}/resource/theme/rc/window_close_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_close_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/window_close_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip_focus.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/window_grip_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize_focus.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/window_minimize_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock_disabled.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock_disabled@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock_focus.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock_focus@2x.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock_pressed.png +0 -0
- {melage → assets}/resource/theme/rc/window_undock_pressed@2x.png +0 -0
- {melage → assets}/resource/theme/style.qss +0 -0
- {melage → assets}/resource/tract.png +0 -0
- {melage → assets}/resource/view1.png +0 -0
- {melage → assets}/resource/view1_eco.png +0 -0
- {melage → assets}/resource/view1_mri.png +0 -0
- {melage → assets}/resource/view1_seg.png +0 -0
- {melage → assets}/resource/view2.png +0 -0
- {melage → assets}/resource/view2_seg.png +0 -0
- {melage → assets}/resource/w.png +0 -0
- {melage → assets}/resource/zoom_inFaded.png +0 -0
- /melage/resource/zoom_in.png → /assets/resource/zoom_in_old.png +0 -0
- {melage → assets}/resource/zoom_outFaded.png +0 -0
- /melage/resource/zoom_out.png → /assets/resource/zoom_out_old.png +0 -0
- {resource → docs}/manual_images/3D_rightc.png +0 -0
- {resource → docs}/manual_images/3D_rightc_goto.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_draw1.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_draw2.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_render.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_render2.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_render3.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_render4.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_render5.png +0 -0
- {resource → docs}/manual_images/3D_rightc_paint_render6.png +0 -0
- {resource → docs}/manual_images/3D_rightc_seg.png +0 -0
- {resource → docs}/manual_images/exit_toolbar.png +0 -0
- {resource → docs}/manual_images/load_image_file.png +0 -0
- {resource → docs}/manual_images/load_image_file_openp.png +0 -0
- {resource → docs}/manual_images/main_page.png +0 -0
- {resource → docs}/manual_images/menu_file.png +0 -0
- {resource → docs}/manual_images/menu_file_export.png +0 -0
- {resource → docs}/manual_images/menu_file_import.png +0 -0
- {resource → docs}/manual_images/menu_file_settings.png +0 -0
- {resource → docs}/manual_images/menu_file_ss.png +0 -0
- {resource → docs}/manual_images/open_save_load.png +0 -0
- {resource → docs}/manual_images/panning_toolbar.png +0 -0
- {resource → docs}/manual_images/segmentation_toolbar.png +0 -0
- {resource → docs}/manual_images/tab_mri.png +0 -0
- {resource → docs}/manual_images/tab_us.png +0 -0
- {resource → docs}/manual_images/tabs.png +0 -0
- {resource → docs}/manual_images/toolbar_tools.png +0 -0
- {resource → docs}/manual_images/tools_basic.png +0 -0
- {resource → docs}/manual_images/tools_bet.png +0 -0
- {resource → docs}/manual_images/tools_cs.png +0 -0
- {resource → docs}/manual_images/tools_deepbet.png +0 -0
- {resource → docs}/manual_images/tools_imageinfo.png +0 -0
- {resource → docs}/manual_images/tools_maskO.png +0 -0
- {resource → docs}/manual_images/tools_masking.png +0 -0
- {resource → docs}/manual_images/tools_n4b.png +0 -0
- {resource → docs}/manual_images/tools_resize.png +0 -0
- {resource → docs}/manual_images/tools_ruler.png +0 -0
- {resource → docs}/manual_images/tools_seg.png +0 -0
- {resource → docs}/manual_images/tools_threshold.png +0 -0
- {resource → docs}/manual_images/tools_tools.png +0 -0
- {resource → docs}/manual_images/widget_color.png +0 -0
- {resource → docs}/manual_images/widget_color_add.png +0 -0
- {resource → docs}/manual_images/widget_color_add2.png +0 -0
- {resource → docs}/manual_images/widget_color_additional.png +0 -0
- {resource → docs}/manual_images/widget_images.png +0 -0
- {resource → docs}/manual_images/widget_images2.png +0 -0
- {resource → docs}/manual_images/widget_images3.png +0 -0
- {resource → docs}/manual_images/widget_marker.png +0 -0
- {resource → docs}/manual_images/widget_mri.png +0 -0
- {resource → docs}/manual_images/widget_mri2.png +0 -0
- {resource → docs}/manual_images/widget_segintensity.png +0 -0
- {resource → docs}/manual_images/widget_tab_mutualview.png +0 -0
- {resource → docs}/manual_images/widget_tab_mutualview2.png +0 -0
- {resource → docs}/manual_images/widget_table.png +0 -0
- {resource → docs}/manual_images/widget_table2.png +0 -0
- {resource → docs}/manual_images/widget_us.png +0 -0
- /melage/{widgets/activation.py → dialogs/ActivationDialog.py} +0 -0
- /melage/{widgets/HistImage.py → dialogs/HistogramDialog.py} +0 -0
- /melage/{widgets/iminfo.py → dialogs/ImInfoDialog.py} +0 -0
- /melage/{widgets/colorwidget.py → dialogs/helpers/ColorDialog.py} +0 -0
- /melage/{utils/custom_QScrollBar.py → dialogs/helpers/CustomScrollbar.py} +0 -0
- /melage/{widgets/repeat_widget.py → dialogs/helpers/RepeatDialog.py} +0 -0
- /melage/{widgets/screenshot_widget.py → dialogs/helpers/ScreenshotDialog.py} +0 -0
- /melage/{cli.py → melage.py} +0 -0
- /melage/{utils/brain_extraction_helper.py → plugins/bet/main/utils.py} +0 -0
- /melage/{graphics → rendering}/GLGraphicsItem.py +0 -0
- /melage/{graphics → rendering}/GLViewWidget.py +0 -0
- /melage/{graphics → rendering}/Transform3D.py +0 -0
- /melage/{graphics → rendering}/__init__.py +0 -0
- /melage/{graphics → rendering}/functions.py +0 -0
- /melage/{utils → rendering/helpers}/Shaders_120.py +0 -0
- /melage/{utils → rendering/helpers}/Shaders_330.py +0 -0
- /melage/{graphics → rendering}/items/GLAxisItem.py +0 -0
- /melage/{graphics → rendering}/items/GLGridItem.py +0 -0
- /melage/{graphics → rendering}/items/GLPolygonItem.py +0 -0
- /melage/{graphics → rendering}/items/GLScatterPlotItem.py +0 -0
- /melage/{graphics → rendering}/items/GLVolumeItem.py +0 -0
- /melage/{graphics → rendering}/items/GLVolumeItem_b.py +0 -0
- /melage/{graphics → rendering}/items/__init__.py +0 -0
- /melage/{graphics → rendering}/shaders.py +0 -0
- /melage/widgets/{enhanceImWidget.py → EnhanceImageWidget.py} +0 -0
- {melage-0.0.68.dist-info → melage-1.0.0.dist-info}/WHEEL +0 -0
melage/utils/GMM.py
DELETED
|
@@ -1,720 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
from scipy.special import logsumexp
|
|
3
|
-
from scipy import linalg
|
|
4
|
-
from sklearn.cluster import KMeans
|
|
5
|
-
"""
|
|
6
|
-
GMM has been used from
|
|
7
|
-
https://atavory.github.io/ibex/_modules/sklearn/mixture/gaussian_mixture.html
|
|
8
|
-
with some modification
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
def _check_precision_positivity(precision, covariance_type):
|
|
12
|
-
"""Check a precision vector is positive-definite."""
|
|
13
|
-
if np.any(np.less_equal(precision, 0.0)):
|
|
14
|
-
raise ValueError("'%s precision' should be "
|
|
15
|
-
"positive" % covariance_type)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def _check_precision_matrix(precision, covariance_type):
|
|
19
|
-
"""Check a precision matrix is symmetric and positive-definite."""
|
|
20
|
-
if not (np.allclose(precision, precision.T) and
|
|
21
|
-
np.all(linalg.eigvalsh(precision) > 0.)):
|
|
22
|
-
raise ValueError("'%s precision' should be symmetric, "
|
|
23
|
-
"positive-definite" % covariance_type)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def _check_precisions_full(precisions, covariance_type):
|
|
27
|
-
"""Check the precision matrices are symmetric and positive-definite."""
|
|
28
|
-
for prec in precisions:
|
|
29
|
-
_check_precision_matrix(prec, covariance_type)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
###############################################################################
|
|
35
|
-
# Gaussian mixture parameters estimators (used by the M-Step)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class GaussianMixture(object):
|
|
40
|
-
"""Gaussian Mixture.
|
|
41
|
-
|
|
42
|
-
Representation of a Gaussian mixture model probability distribution.
|
|
43
|
-
This class allows to estimate the parameters of a Gaussian mixture
|
|
44
|
-
distribution.
|
|
45
|
-
|
|
46
|
-
Read more in the :ref:`User Guide <gmm>`.
|
|
47
|
-
|
|
48
|
-
.. versionadded:: 0.18
|
|
49
|
-
|
|
50
|
-
Parameters
|
|
51
|
-
----------
|
|
52
|
-
n_components : int, default=1
|
|
53
|
-
The number of mixture components.
|
|
54
|
-
|
|
55
|
-
covariance_type : {'full', 'tied', 'diag', 'spherical'}, default='full'
|
|
56
|
-
String describing the type of covariance parameters to use.
|
|
57
|
-
Must be one of:
|
|
58
|
-
|
|
59
|
-
'full'
|
|
60
|
-
each component has its own general covariance matrix
|
|
61
|
-
'tied'
|
|
62
|
-
all components share the same general covariance matrix
|
|
63
|
-
'diag'
|
|
64
|
-
each component has its own diagonal covariance matrix
|
|
65
|
-
'spherical'
|
|
66
|
-
each component has its own single variance
|
|
67
|
-
|
|
68
|
-
tol : float, default=1e-3
|
|
69
|
-
The convergence threshold. EM iterations will stop when the
|
|
70
|
-
lower bound average gain is below this threshold.
|
|
71
|
-
|
|
72
|
-
reg_covar : float, default=1e-6
|
|
73
|
-
Non-negative regularization added to the diagonal of covariance.
|
|
74
|
-
Allows to assure that the covariance matrices are all positive.
|
|
75
|
-
|
|
76
|
-
max_iter : int, default=100
|
|
77
|
-
The number of EM iterations to perform.
|
|
78
|
-
|
|
79
|
-
n_init : int, default=1
|
|
80
|
-
The number of initializations to perform. The best results are kept.
|
|
81
|
-
|
|
82
|
-
init_params : {'kmeans', 'random'}, default='kmeans'
|
|
83
|
-
The method used to initialize the weights, the means and the
|
|
84
|
-
precisions.
|
|
85
|
-
Must be one of::
|
|
86
|
-
|
|
87
|
-
'kmeans' : responsibilities are initialized using kmeans.
|
|
88
|
-
'random' : responsibilities are initialized randomly.
|
|
89
|
-
|
|
90
|
-
weights_init : array-like of shape (n_components, ), default=None
|
|
91
|
-
The user-provided initial weights.
|
|
92
|
-
If it is None, weights are initialized using the `init_params` method.
|
|
93
|
-
|
|
94
|
-
means_init : array-like of shape (n_components, n_features), default=None
|
|
95
|
-
The user-provided initial means,
|
|
96
|
-
If it is None, means are initialized using the `init_params` method.
|
|
97
|
-
|
|
98
|
-
precisions_init : array-like, default=None
|
|
99
|
-
The user-provided initial precisions (inverse of the covariance
|
|
100
|
-
matrices).
|
|
101
|
-
If it is None, precisions are initialized using the 'init_params'
|
|
102
|
-
method.
|
|
103
|
-
The shape depends on 'covariance_type'::
|
|
104
|
-
|
|
105
|
-
(n_components,) if 'spherical',
|
|
106
|
-
(n_features, n_features) if 'tied',
|
|
107
|
-
(n_components, n_features) if 'diag',
|
|
108
|
-
(n_components, n_features, n_features) if 'full'
|
|
109
|
-
|
|
110
|
-
random_state : int, RandomState instance or None, default=None
|
|
111
|
-
Controls the random seed given to the method chosen to initialize the
|
|
112
|
-
parameters (see `init_params`).
|
|
113
|
-
In addition, it controls the generation of random samples from the
|
|
114
|
-
fitted distribution (see the method `sample`).
|
|
115
|
-
Pass an int for reproducible output across multiple function calls.
|
|
116
|
-
See :term:`Glossary <random_state>`.
|
|
117
|
-
|
|
118
|
-
warm_start : bool, default=False
|
|
119
|
-
If 'warm_start' is True, the solution of the last fitting is used as
|
|
120
|
-
initialization for the next call of fit(). This can speed up
|
|
121
|
-
convergence when fit is called several times on similar problems.
|
|
122
|
-
In that case, 'n_init' is ignored and only a single initialization
|
|
123
|
-
occurs upon the first call.
|
|
124
|
-
See :term:`the Glossary <warm_start>`.
|
|
125
|
-
|
|
126
|
-
verbose : int, default=0
|
|
127
|
-
Enable verbose output. If 1 then it prints the current
|
|
128
|
-
initialization and each iteration step. If greater than 1 then
|
|
129
|
-
it prints also the log probability and the time needed
|
|
130
|
-
for each step.
|
|
131
|
-
|
|
132
|
-
verbose_interval : int, default=10
|
|
133
|
-
Number of iteration done before the next print.
|
|
134
|
-
|
|
135
|
-
Attributes
|
|
136
|
-
----------
|
|
137
|
-
weights_ : array-like of shape (n_components,)
|
|
138
|
-
The weights of each mixture components.
|
|
139
|
-
|
|
140
|
-
means_ : array-like of shape (n_components, n_features)
|
|
141
|
-
The mean of each mixture component.
|
|
142
|
-
|
|
143
|
-
covariances_ : array-like
|
|
144
|
-
The covariance of each mixture component.
|
|
145
|
-
The shape depends on `covariance_type`::
|
|
146
|
-
|
|
147
|
-
(n_components,) if 'spherical',
|
|
148
|
-
(n_features, n_features) if 'tied',
|
|
149
|
-
(n_components, n_features) if 'diag',
|
|
150
|
-
(n_components, n_features, n_features) if 'full'
|
|
151
|
-
|
|
152
|
-
precisions_ : array-like
|
|
153
|
-
The precision matrices for each component in the mixture. A precision
|
|
154
|
-
matrix is the inverse of a covariance matrix. A covariance matrix is
|
|
155
|
-
symmetric positive definite so the mixture of Gaussian can be
|
|
156
|
-
equivalently parameterized by the precision matrices. Storing the
|
|
157
|
-
precision matrices instead of the covariance matrices makes it more
|
|
158
|
-
efficient to compute the log-likelihood of new samples at test time.
|
|
159
|
-
The shape depends on `covariance_type`::
|
|
160
|
-
|
|
161
|
-
(n_components,) if 'spherical',
|
|
162
|
-
(n_features, n_features) if 'tied',
|
|
163
|
-
(n_components, n_features) if 'diag',
|
|
164
|
-
(n_components, n_features, n_features) if 'full'
|
|
165
|
-
|
|
166
|
-
precisions_cholesky_ : array-like
|
|
167
|
-
The cholesky decomposition of the precision matrices of each mixture
|
|
168
|
-
component. A precision matrix is the inverse of a covariance matrix.
|
|
169
|
-
A covariance matrix is symmetric positive definite so the mixture of
|
|
170
|
-
Gaussian can be equivalently parameterized by the precision matrices.
|
|
171
|
-
Storing the precision matrices instead of the covariance matrices makes
|
|
172
|
-
it more efficient to compute the log-likelihood of new samples at test
|
|
173
|
-
time. The shape depends on `covariance_type`::
|
|
174
|
-
|
|
175
|
-
(n_components,) if 'spherical',
|
|
176
|
-
(n_features, n_features) if 'tied',
|
|
177
|
-
(n_components, n_features) if 'diag',
|
|
178
|
-
(n_components, n_features, n_features) if 'full'
|
|
179
|
-
|
|
180
|
-
converged_ : bool
|
|
181
|
-
True when convergence was reached in fit(), False otherwise.
|
|
182
|
-
|
|
183
|
-
n_iter_ : int
|
|
184
|
-
Number of step used by the best fit of EM to reach the convergence.
|
|
185
|
-
|
|
186
|
-
lower_bound_ : float
|
|
187
|
-
Lower bound value on the log-likelihood (of the training data with
|
|
188
|
-
respect to the model) of the best fit of EM.
|
|
189
|
-
|
|
190
|
-
Examples
|
|
191
|
-
--------
|
|
192
|
-
>>> import numpy as np
|
|
193
|
-
>>> from sklearn.mixture import GaussianMixture
|
|
194
|
-
>>> X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
|
|
195
|
-
>>> gm = GaussianMixture(n_components=2, random_state=0).fit(X)
|
|
196
|
-
>>> gm.means_
|
|
197
|
-
array([[10., 2.],
|
|
198
|
-
[ 1., 2.]])
|
|
199
|
-
>>> gm.predict([[0, 0], [12, 3]])
|
|
200
|
-
array([1, 0])
|
|
201
|
-
|
|
202
|
-
See Also
|
|
203
|
-
--------
|
|
204
|
-
BayesianGaussianMixture : Gaussian mixture model fit with a variational
|
|
205
|
-
inference.
|
|
206
|
-
"""
|
|
207
|
-
#@_deprecate_positional_args
|
|
208
|
-
def __init__(self, n_components=1, *, covariance_type='full', tol=1e-3,
|
|
209
|
-
reg_covar=1e-6, max_iter=100, n_init=1, init_params='kmeans',
|
|
210
|
-
weights_init=None, means_init=None, precisions_init=None,
|
|
211
|
-
random_state=None, warm_start=False,
|
|
212
|
-
verbose=0, verbose_interval=10):
|
|
213
|
-
# super().__init__(
|
|
214
|
-
# n_components=n_components, tol=tol, reg_covar=reg_covar,
|
|
215
|
-
# max_iter=max_iter, n_init=n_init, init_params=init_params,
|
|
216
|
-
# random_state=random_state, warm_start=warm_start,
|
|
217
|
-
# verbose=verbose, verbose_interval=verbose_interval)
|
|
218
|
-
|
|
219
|
-
self.covariance_type = covariance_type
|
|
220
|
-
self.weights_init = weights_init
|
|
221
|
-
self.means_init = means_init
|
|
222
|
-
self.precisions_init = precisions_init
|
|
223
|
-
|
|
224
|
-
self.n_components = n_components
|
|
225
|
-
self.tol = tol
|
|
226
|
-
self.reg_covar = reg_covar
|
|
227
|
-
self.max_iter = max_iter
|
|
228
|
-
self.n_init = n_init
|
|
229
|
-
self.init_params = init_params
|
|
230
|
-
self.random_state = random_state
|
|
231
|
-
self.warm_start = warm_start
|
|
232
|
-
self.verbose = verbose
|
|
233
|
-
self.verbose_interval = verbose_interval
|
|
234
|
-
|
|
235
|
-
def _estimate_gaussian_covariances_full(self, resp, X, nk, means, reg_covar):
|
|
236
|
-
"""Estimate the full covariance matrices.
|
|
237
|
-
|
|
238
|
-
Parameters
|
|
239
|
-
----------
|
|
240
|
-
resp : array-like of shape (n_samples, n_components)
|
|
241
|
-
|
|
242
|
-
X : array-like of shape (n_samples, n_features)
|
|
243
|
-
|
|
244
|
-
nk : array-like of shape (n_components,)
|
|
245
|
-
|
|
246
|
-
means : array-like of shape (n_components, n_features)
|
|
247
|
-
|
|
248
|
-
reg_covar : float
|
|
249
|
-
|
|
250
|
-
Returns
|
|
251
|
-
-------
|
|
252
|
-
covariances : array, shape (n_components, n_features, n_features)
|
|
253
|
-
The covariance matrix of the current components.
|
|
254
|
-
"""
|
|
255
|
-
n_components, n_features = means.shape
|
|
256
|
-
covariances = np.empty((n_components, n_features, n_features))
|
|
257
|
-
for k in range(n_components):
|
|
258
|
-
diff = X - means[k]
|
|
259
|
-
covariances[k] = np.dot(resp[:, k] * diff.T, diff) / nk[k]
|
|
260
|
-
covariances[k].flat[::n_features + 1] += reg_covar
|
|
261
|
-
return covariances
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
def _estimate_gaussian_covariances_diag(self, resp, X, nk, means, reg_covar):
|
|
266
|
-
"""Estimate the diagonal covariance vectors.
|
|
267
|
-
|
|
268
|
-
Parameters
|
|
269
|
-
----------
|
|
270
|
-
responsibilities : array-like of shape (n_samples, n_components)
|
|
271
|
-
|
|
272
|
-
X : array-like of shape (n_samples, n_features)
|
|
273
|
-
|
|
274
|
-
nk : array-like of shape (n_components,)
|
|
275
|
-
|
|
276
|
-
means : array-like of shape (n_components, n_features)
|
|
277
|
-
|
|
278
|
-
reg_covar : float
|
|
279
|
-
|
|
280
|
-
Returns
|
|
281
|
-
-------
|
|
282
|
-
covariances : array, shape (n_components, n_features)
|
|
283
|
-
The covariance vector of the current components.
|
|
284
|
-
"""
|
|
285
|
-
#X = X * self._counts
|
|
286
|
-
avg_X2 = np.dot((resp).T, (X * X*self._counts) ) / nk[:, np.newaxis]
|
|
287
|
-
avg_means2 = means ** 2
|
|
288
|
-
avg_X_means = means * np.dot(resp.T, X*self._counts) / nk[:, np.newaxis]
|
|
289
|
-
return avg_X2 - 2 * avg_X_means + avg_means2 + reg_covar
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
def _estimate_gaussian_parameters(self, X, resp, reg_covar, covariance_type):
|
|
293
|
-
"""Estimate the Gaussian distribution parameters.
|
|
294
|
-
|
|
295
|
-
Parameters
|
|
296
|
-
----------
|
|
297
|
-
X : array-like of shape (n_samples, n_features)
|
|
298
|
-
The input data array.
|
|
299
|
-
|
|
300
|
-
resp : array-like of shape (n_samples, n_components)
|
|
301
|
-
The responsibilities for each data sample in X.
|
|
302
|
-
|
|
303
|
-
reg_covar : float
|
|
304
|
-
The regularization added to the diagonal of the covariance matrices.
|
|
305
|
-
|
|
306
|
-
covariance_type : {'full', 'tied', 'diag', 'spherical'}
|
|
307
|
-
The type of precision matrices.
|
|
308
|
-
|
|
309
|
-
Returns
|
|
310
|
-
-------
|
|
311
|
-
nk : array-like of shape (n_components,)
|
|
312
|
-
The numbers of data samples in the current components.
|
|
313
|
-
|
|
314
|
-
means : array-like of shape (n_components, n_features)
|
|
315
|
-
The centers of the current components.
|
|
316
|
-
|
|
317
|
-
covariances : array-like
|
|
318
|
-
The covariance matrix of the current components.
|
|
319
|
-
The shape depends of the covariance_type.
|
|
320
|
-
"""
|
|
321
|
-
nk = (resp*self._counts).sum(axis=0) + 10 * np.finfo(resp.dtype).eps
|
|
322
|
-
means = np.dot(resp.T, X*self._counts)/nk[:,np.newaxis]
|
|
323
|
-
covariances = {"diag": self._estimate_gaussian_covariances_diag
|
|
324
|
-
}[covariance_type](resp, X, nk, means, reg_covar)
|
|
325
|
-
return nk, means, covariances
|
|
326
|
-
|
|
327
|
-
def _compute_precision_cholesky(self, covariances, covariance_type):
|
|
328
|
-
"""Compute the Cholesky decomposition of the precisions.
|
|
329
|
-
|
|
330
|
-
Parameters
|
|
331
|
-
----------
|
|
332
|
-
covariances : array-like
|
|
333
|
-
The covariance matrix of the current components.
|
|
334
|
-
The shape depends of the covariance_type.
|
|
335
|
-
|
|
336
|
-
covariance_type : {'full', 'tied', 'diag', 'spherical'}
|
|
337
|
-
The type of precision matrices.
|
|
338
|
-
|
|
339
|
-
Returns
|
|
340
|
-
-------
|
|
341
|
-
precisions_cholesky : array-like
|
|
342
|
-
The cholesky decomposition of sample precisions of the current
|
|
343
|
-
components. The shape depends of the covariance_type.
|
|
344
|
-
"""
|
|
345
|
-
estimate_precision_error_message = (
|
|
346
|
-
"Fitting the mixture model failed because some components have "
|
|
347
|
-
"ill-defined empirical covariance (for instance caused by singleton "
|
|
348
|
-
"or collapsed samples). Try to decrease the number of components, "
|
|
349
|
-
"or increase reg_covar.")
|
|
350
|
-
|
|
351
|
-
if covariance_type == 'full':
|
|
352
|
-
n_components, n_features, _ = covariances.shape
|
|
353
|
-
precisions_chol = np.empty((n_components, n_features, n_features))
|
|
354
|
-
for k, covariance in enumerate(covariances):
|
|
355
|
-
try:
|
|
356
|
-
cov_chol = linalg.cholesky(covariance, lower=True)
|
|
357
|
-
except linalg.LinAlgError:
|
|
358
|
-
raise ValueError(estimate_precision_error_message)
|
|
359
|
-
precisions_chol[k] = linalg.solve_triangular(cov_chol,
|
|
360
|
-
np.eye(n_features),
|
|
361
|
-
lower=True).T
|
|
362
|
-
elif covariance_type == 'tied':
|
|
363
|
-
_, n_features = covariances.shape
|
|
364
|
-
try:
|
|
365
|
-
cov_chol = linalg.cholesky(covariances, lower=True)
|
|
366
|
-
except linalg.LinAlgError:
|
|
367
|
-
raise ValueError(estimate_precision_error_message)
|
|
368
|
-
precisions_chol = linalg.solve_triangular(cov_chol, np.eye(n_features),
|
|
369
|
-
lower=True).T
|
|
370
|
-
else:
|
|
371
|
-
if np.any(np.less_equal(covariances, 0.0)):
|
|
372
|
-
raise ValueError(estimate_precision_error_message)
|
|
373
|
-
precisions_chol = 1. / np.sqrt(covariances)
|
|
374
|
-
return precisions_chol
|
|
375
|
-
|
|
376
|
-
###############################################################################
|
|
377
|
-
# Gaussian mixture probability estimators
|
|
378
|
-
def _compute_log_det_cholesky(self, matrix_chol, covariance_type, n_features):
|
|
379
|
-
"""Compute the log-det of the cholesky decomposition of matrices.
|
|
380
|
-
"""
|
|
381
|
-
|
|
382
|
-
if covariance_type == 'diag':
|
|
383
|
-
log_det_chol = (np.sum(np.log(matrix_chol), axis=1))
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
return log_det_chol
|
|
387
|
-
|
|
388
|
-
def _estimate_log_gaussian_prob(self, X, means, precisions_chol, covariance_type):
|
|
389
|
-
"""Estimate the log Gaussian probability.
|
|
390
|
-
|
|
391
|
-
Parameters
|
|
392
|
-
----------
|
|
393
|
-
X : array-like of shape (n_samples, n_features)
|
|
394
|
-
|
|
395
|
-
means : array-like of shape (n_components, n_features)
|
|
396
|
-
|
|
397
|
-
precisions_chol : array-like
|
|
398
|
-
Cholesky decompositions of the precision matrices.
|
|
399
|
-
'full' : shape of (n_components, n_features, n_features)
|
|
400
|
-
'tied' : shape of (n_features, n_features)
|
|
401
|
-
'diag' : shape of (n_components, n_features)
|
|
402
|
-
'spherical' : shape of (n_components,)
|
|
403
|
-
|
|
404
|
-
covariance_type : {'full', 'tied', 'diag', 'spherical'}
|
|
405
|
-
|
|
406
|
-
Returns
|
|
407
|
-
-------
|
|
408
|
-
log_prob : array, shape (n_samples, n_components)
|
|
409
|
-
"""
|
|
410
|
-
_, n_features = X.shape
|
|
411
|
-
n_components, _ = means.shape
|
|
412
|
-
# det(precision_chol) is half of det(precision)
|
|
413
|
-
log_det = self._compute_log_det_cholesky(
|
|
414
|
-
precisions_chol, covariance_type, n_features)
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
if covariance_type == 'diag':
|
|
418
|
-
precisions = precisions_chol ** 2
|
|
419
|
-
#if self._counts is not None:
|
|
420
|
-
# X = X*self._counts
|
|
421
|
-
log_prob = (np.sum((means ** 2 * precisions), 1) -
|
|
422
|
-
2. * np.dot(X, (means * precisions).T) +
|
|
423
|
-
np.dot(X ** 2, precisions.T))
|
|
424
|
-
if self._counts is not None:
|
|
425
|
-
log_prob *= self._counts
|
|
426
|
-
|
|
427
|
-
return -.5 * (n_features * np.log(2 * np.pi) + log_prob) + log_det
|
|
428
|
-
|
|
429
|
-
def fit(self, X, y=None, counts = None, total_data_kmeans=None):
|
|
430
|
-
"""Estimate model parameters with the EM algorithm.
|
|
431
|
-
"""
|
|
432
|
-
if counts is not None:
|
|
433
|
-
self._counts = counts.reshape(-1,1)
|
|
434
|
-
self._total_data_kmeans = total_data_kmeans
|
|
435
|
-
self.fit_predict(X, y, counts)
|
|
436
|
-
self._counts = None
|
|
437
|
-
return self
|
|
438
|
-
|
|
439
|
-
def score_samples(self, X):
|
|
440
|
-
"""Compute the weighted log probabilities for each sample.
|
|
441
|
-
|
|
442
|
-
"""
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
return logsumexp(self._estimate_weighted_log_prob(X), axis=1)
|
|
446
|
-
|
|
447
|
-
def _print_verbose_msg_init_beg(self, n_init):
|
|
448
|
-
"""Print verbose message on initialization."""
|
|
449
|
-
if self.verbose == 1:
|
|
450
|
-
print("Initialization %d" % n_init)
|
|
451
|
-
elif self.verbose >= 2:
|
|
452
|
-
print("Initialization %d" % n_init)
|
|
453
|
-
self._init_prev_time = time()
|
|
454
|
-
self._iter_prev_time = self._init_prev_time
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
def _print_verbose_msg_iter_end(self, n_iter, diff_ll):
|
|
459
|
-
"""Print verbose message on initialization."""
|
|
460
|
-
if n_iter % self.verbose_interval == 0:
|
|
461
|
-
if self.verbose == 1:
|
|
462
|
-
print(" Iteration %d" % n_iter)
|
|
463
|
-
elif self.verbose >= 2:
|
|
464
|
-
cur_time = time()
|
|
465
|
-
print(" Iteration %d\t time lapse %.5fs\t ll change %.5f" % (
|
|
466
|
-
n_iter, cur_time - self._iter_prev_time, diff_ll))
|
|
467
|
-
self._iter_prev_time = cur_time
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
def _initialize_parameters(self, X, random_state):
|
|
471
|
-
"""Initialize the model parameters.
|
|
472
|
-
|
|
473
|
-
Parameters
|
|
474
|
-
----------
|
|
475
|
-
X : array-like of shape (n_samples, n_features)
|
|
476
|
-
|
|
477
|
-
random_state : RandomState
|
|
478
|
-
A random number generator instance that controls the random seed
|
|
479
|
-
used for the method chosen to initialize the parameters.
|
|
480
|
-
"""
|
|
481
|
-
n_samples, _ = X.shape
|
|
482
|
-
|
|
483
|
-
if self.init_params == 'kmeans':
|
|
484
|
-
resp = np.zeros((n_samples, self.n_components))
|
|
485
|
-
km = KMeans(n_clusters=self.n_components, n_init=1,
|
|
486
|
-
random_state=random_state).fit(self._total_data_kmeans)
|
|
487
|
-
label = km.predict(X)
|
|
488
|
-
resp[np.arange(n_samples), label] = 1
|
|
489
|
-
elif self.init_params == 'random':
|
|
490
|
-
resp = random_state.rand(n_samples, self.n_components)
|
|
491
|
-
resp /= resp.sum(axis=1)[:, np.newaxis]
|
|
492
|
-
else:
|
|
493
|
-
raise ValueError("Unimplemented initialization method '%s'"
|
|
494
|
-
% self.init_params)
|
|
495
|
-
|
|
496
|
-
self._initialize(X, resp)
|
|
497
|
-
|
|
498
|
-
def _print_verbose_msg_init_end(self, ll):
|
|
499
|
-
"""Print verbose message on the end of iteration."""
|
|
500
|
-
if self.verbose == 1:
|
|
501
|
-
print("Initialization converged: %s" % self.converged_)
|
|
502
|
-
elif self.verbose >= 2:
|
|
503
|
-
print("Initialization converged: %s\t time lapse %.5fs\t ll %.5f" %
|
|
504
|
-
(self.converged_, time() - self._init_prev_time, ll))
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
def fit_predict(self, X, y=None, counts = None):
|
|
508
|
-
"""Estimate model parameters using X and predict the labels for X.
|
|
509
|
-
"""
|
|
510
|
-
#X = _check_X(X, self.n_components, ensure_min_samples=2)
|
|
511
|
-
#self._check_n_features(X, reset=True)
|
|
512
|
-
#self._check_initial_parameters(X)
|
|
513
|
-
|
|
514
|
-
# if we enable warm_start, we will have a unique initialisation
|
|
515
|
-
do_init = not(self.warm_start and hasattr(self, 'converged_'))
|
|
516
|
-
n_init = self.n_init if do_init else 1
|
|
517
|
-
|
|
518
|
-
max_lower_bound = -np.infty
|
|
519
|
-
self.converged_ = False
|
|
520
|
-
|
|
521
|
-
random_state = np.random.RandomState(self.random_state)
|
|
522
|
-
|
|
523
|
-
n_samples, _ = X.shape
|
|
524
|
-
for init in range(n_init):
|
|
525
|
-
self._print_verbose_msg_init_beg(init)
|
|
526
|
-
|
|
527
|
-
if do_init:
|
|
528
|
-
self._initialize_parameters(X, random_state)
|
|
529
|
-
|
|
530
|
-
lower_bound = (-np.infty if do_init else self.lower_bound_)
|
|
531
|
-
|
|
532
|
-
for n_iter in range(1, self.max_iter + 1):
|
|
533
|
-
prev_lower_bound = lower_bound
|
|
534
|
-
|
|
535
|
-
log_prob_norm, log_resp = self._e_step(X, counts=counts)
|
|
536
|
-
self._m_step(X, log_resp)
|
|
537
|
-
lower_bound = self._compute_lower_bound(
|
|
538
|
-
log_resp, log_prob_norm)
|
|
539
|
-
|
|
540
|
-
change = lower_bound - prev_lower_bound
|
|
541
|
-
self._print_verbose_msg_iter_end(n_iter, change)
|
|
542
|
-
|
|
543
|
-
if abs(change) < self.tol:
|
|
544
|
-
self.converged_ = True
|
|
545
|
-
break
|
|
546
|
-
|
|
547
|
-
self._print_verbose_msg_init_end(lower_bound)
|
|
548
|
-
|
|
549
|
-
if lower_bound > max_lower_bound:
|
|
550
|
-
max_lower_bound = lower_bound
|
|
551
|
-
best_params = self._get_parameters()
|
|
552
|
-
best_n_iter = n_iter
|
|
553
|
-
|
|
554
|
-
if not self.converged_:
|
|
555
|
-
print('Initialization %d did not converge. '
|
|
556
|
-
'Try different init parameters, '
|
|
557
|
-
'or increase max_iter, tol '
|
|
558
|
-
'or check for degenerate data.'
|
|
559
|
-
% (init + 1))
|
|
560
|
-
|
|
561
|
-
self._set_parameters(best_params)
|
|
562
|
-
self.n_iter_ = best_n_iter
|
|
563
|
-
self.lower_bound_ = max_lower_bound
|
|
564
|
-
|
|
565
|
-
# Always do a final e-step to guarantee that the labels returned by
|
|
566
|
-
# fit_predict(X) are always consistent with fit(X).predict(X)
|
|
567
|
-
# for any value of max_iter and tol (and any random_state).
|
|
568
|
-
_, log_resp = self._e_step(X)
|
|
569
|
-
|
|
570
|
-
return log_resp.argmax(axis=1)
|
|
571
|
-
|
|
572
|
-
def _e_step(self, X, counts=None):
|
|
573
|
-
"""E step.
|
|
574
|
-
"""
|
|
575
|
-
log_prob_norm, log_resp = self._estimate_log_prob_resp(X)
|
|
576
|
-
return log_prob_norm.sum()/self._counts.sum(), log_resp
|
|
577
|
-
|
|
578
|
-
def _estimate_log_prob_resp(self, X):
|
|
579
|
-
"""Estimate log probabilities and responsibilities for each sample.
|
|
580
|
-
"""
|
|
581
|
-
weighted_log_prob = self._estimate_weighted_log_prob(X)
|
|
582
|
-
#if self._counts is not None:
|
|
583
|
-
# weighted_log_prob = self._counts * weighted_log_prob
|
|
584
|
-
log_prob_norm = logsumexp(weighted_log_prob, axis=1)
|
|
585
|
-
with np.errstate(under='ignore'):
|
|
586
|
-
# ignore underflow
|
|
587
|
-
log_resp = weighted_log_prob - log_prob_norm[:, np.newaxis]
|
|
588
|
-
return log_prob_norm, log_resp
|
|
589
|
-
|
|
590
|
-
def _estimate_weighted_log_prob(self, X):
|
|
591
|
-
"""Estimate the weighted log-probabilities, log P(X | Z) + log weights.
|
|
592
|
-
"""
|
|
593
|
-
return self._estimate_log_prob(X) + self._estimate_log_weights()
|
|
594
|
-
|
|
595
|
-
def _initialize(self, X, resp):
|
|
596
|
-
"""Initialization of the Gaussian mixture parameters.
|
|
597
|
-
|
|
598
|
-
Parameters
|
|
599
|
-
----------
|
|
600
|
-
X : array-like of shape (n_samples, n_features)
|
|
601
|
-
|
|
602
|
-
resp : array-like of shape (n_samples, n_components)
|
|
603
|
-
"""
|
|
604
|
-
n_samples= self._counts.sum()#X.shape
|
|
605
|
-
|
|
606
|
-
weights, means, covariances = self._estimate_gaussian_parameters(
|
|
607
|
-
X, resp, self.reg_covar, self.covariance_type)
|
|
608
|
-
weights /= n_samples
|
|
609
|
-
|
|
610
|
-
self.weights_ = (weights if self.weights_init is None
|
|
611
|
-
else self.weights_init)
|
|
612
|
-
self.means_ = means if self.means_init is None else self.means_init
|
|
613
|
-
|
|
614
|
-
if self.precisions_init is None:
|
|
615
|
-
self.covariances_ = covariances
|
|
616
|
-
self.precisions_cholesky_ = self._compute_precision_cholesky(
|
|
617
|
-
covariances, self.covariance_type)
|
|
618
|
-
elif self.covariance_type == 'full':
|
|
619
|
-
self.precisions_cholesky_ = np.array(
|
|
620
|
-
[linalg.cholesky(prec_init, lower=True)
|
|
621
|
-
for prec_init in self.precisions_init])
|
|
622
|
-
elif self.covariance_type == 'tied':
|
|
623
|
-
self.precisions_cholesky_ = linalg.cholesky(self.precisions_init,
|
|
624
|
-
lower=True)
|
|
625
|
-
else:
|
|
626
|
-
self.precisions_cholesky_ = self.precisions_init
|
|
627
|
-
|
|
628
|
-
def _m_step(self, X, log_resp):
|
|
629
|
-
"""M step.
|
|
630
|
-
|
|
631
|
-
Parameters
|
|
632
|
-
----------
|
|
633
|
-
X : array-like of shape (n_samples, n_features)
|
|
634
|
-
|
|
635
|
-
log_resp : array-like of shape (n_samples, n_components)
|
|
636
|
-
Logarithm of the posterior probabilities (or responsibilities) of
|
|
637
|
-
the point of each sample in X.
|
|
638
|
-
"""
|
|
639
|
-
n_samples = self._counts.sum()#X.shape
|
|
640
|
-
self.weights_, self.means_, self.covariances_ = (
|
|
641
|
-
self._estimate_gaussian_parameters(X, np.exp(log_resp), self.reg_covar,
|
|
642
|
-
self.covariance_type))
|
|
643
|
-
self.weights_ /= n_samples
|
|
644
|
-
self.precisions_cholesky_ = self._compute_precision_cholesky(
|
|
645
|
-
self.covariances_, self.covariance_type)
|
|
646
|
-
|
|
647
|
-
def _estimate_log_prob(self, X):
|
|
648
|
-
return self._estimate_log_gaussian_prob(
|
|
649
|
-
X, self.means_, self.precisions_cholesky_, self.covariance_type)
|
|
650
|
-
|
|
651
|
-
def _estimate_log_weights(self):
|
|
652
|
-
return np.log(self.weights_)
|
|
653
|
-
|
|
654
|
-
def _compute_lower_bound(self, _, log_prob_norm):
|
|
655
|
-
return log_prob_norm
|
|
656
|
-
|
|
657
|
-
def _get_parameters(self):
|
|
658
|
-
return (self.weights_, self.means_, self.covariances_,
|
|
659
|
-
self.precisions_cholesky_)
|
|
660
|
-
|
|
661
|
-
def _set_parameters(self, params):
|
|
662
|
-
(self.weights_, self.means_, self.covariances_,
|
|
663
|
-
self.precisions_cholesky_) = params
|
|
664
|
-
|
|
665
|
-
# Attributes computation
|
|
666
|
-
_, n_features = self.means_.shape
|
|
667
|
-
|
|
668
|
-
if self.covariance_type == 'full':
|
|
669
|
-
self.precisions_ = np.empty(self.precisions_cholesky_.shape)
|
|
670
|
-
for k, prec_chol in enumerate(self.precisions_cholesky_):
|
|
671
|
-
self.precisions_[k] = np.dot(prec_chol, prec_chol.T)
|
|
672
|
-
|
|
673
|
-
elif self.covariance_type == 'tied':
|
|
674
|
-
self.precisions_ = np.dot(self.precisions_cholesky_,
|
|
675
|
-
self.precisions_cholesky_.T)
|
|
676
|
-
else:
|
|
677
|
-
self.precisions_ = self.precisions_cholesky_ ** 2
|
|
678
|
-
|
|
679
|
-
def _n_parameters(self):
|
|
680
|
-
"""Return the number of free parameters in the model."""
|
|
681
|
-
_, n_features = self.means_.shape
|
|
682
|
-
if self.covariance_type == 'full':
|
|
683
|
-
cov_params = self.n_components * n_features * (n_features + 1) / 2.
|
|
684
|
-
elif self.covariance_type == 'diag':
|
|
685
|
-
cov_params = self.n_components * n_features
|
|
686
|
-
elif self.covariance_type == 'tied':
|
|
687
|
-
cov_params = n_features * (n_features + 1) / 2.
|
|
688
|
-
elif self.covariance_type == 'spherical':
|
|
689
|
-
cov_params = self.n_components
|
|
690
|
-
mean_params = n_features * self.n_components
|
|
691
|
-
return int(cov_params + mean_params + self.n_components - 1)
|
|
692
|
-
|
|
693
|
-
def bic(self, X):
|
|
694
|
-
"""Bayesian information criterion for the current model on the input X.
|
|
695
|
-
|
|
696
|
-
Parameters
|
|
697
|
-
----------
|
|
698
|
-
X : array of shape (n_samples, n_dimensions)
|
|
699
|
-
|
|
700
|
-
Returns
|
|
701
|
-
-------
|
|
702
|
-
bic : float
|
|
703
|
-
The lower the better.
|
|
704
|
-
"""
|
|
705
|
-
return (-2 * self.score(X) * X.shape[0] +
|
|
706
|
-
self._n_parameters() * np.log(X.shape[0]))
|
|
707
|
-
|
|
708
|
-
def aic(self, X):
|
|
709
|
-
"""Akaike information criterion for the current model on the input X.
|
|
710
|
-
|
|
711
|
-
Parameters
|
|
712
|
-
----------
|
|
713
|
-
X : array of shape (n_samples, n_dimensions)
|
|
714
|
-
|
|
715
|
-
Returns
|
|
716
|
-
-------
|
|
717
|
-
aic : float
|
|
718
|
-
The lower the better.
|
|
719
|
-
"""
|
|
720
|
-
return -2 * self.score(X) * X.shape[0] + 2 * self._n_parameters()
|