--- a/MCEView.cpp
+++ b/MCEView.cpp
@@ -21,6 +21,10 @@
 #include "MyFileBrowser.h"
 #include "OptimizeAtomPositionInMap.h"
 #include <atlconv.h>
+
+#include <array>
+#include "CMCEOnnxEngine.h"
+#include "CMapSplitter.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -106,6 +110,7 @@
     ON_COMMAND(ID_CALCULATE_CALCULATENEWMAP, OnCalculateNewMap)
     //ON_COMMAND(ID_TOOLS_CALCULATEVOIDMAP_VDW, OnCalculateVoidMapVdW)
     ON_COMMAND(ID_TOOLS_CALCULATELAYER_VOLUME, OnCalculateVolume)
+	ON_COMMAND(ID_CALCULATE_DEBLURMAP, OnDeblurMap)
     ON_COMMAND(ID_BUTTON_RESET_3D_VIEW, OnResetView)
     ON_COMMAND(ID_FRAGMENT_OVERLAYFRAGMENTWITHATOMS, OnOverlayAtoms)
     ON_UPDATE_COMMAND_UI(ID_TOOLS_CALCULATEVOIDMAP_DIST, OnUpdateCalculateVoidMap)
@@ -2563,6 +2568,56 @@
     dlg.pMap[1] = pMap[1];
     dlg.DoModal();
     m_bNeedRecalculateMap = TRUE;
+}
+void CMCEView::OnDeblurMap()
+{
+	/*
+	CString selectedPath;
+	CFolderPickerDialog dlg(nullptr, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, this);
+    if (dlg.DoModal() == IDOK) {
+        selectedPath = dlg.GetPathName();
+    } else {
+		return;
+	}
+	*/
+	/*
+	CMapSplitter MS(pMap[0], 48, 0.2);
+	MS.SplitToCubes(8);
+	//MS.saveCubes(selectedPath);
+	*/
+	
+	//get application directory
+	wchar_t szString[255];
+	VERIFY(::GetModuleFileName(AfxGetInstanceHandle(), szString, _MAX_PATH));
+	CString sPath = (CString)szString;
+	sPath = sPath.Left(sPath.ReverseFind('\\'));	
+	sPath=sPath+L"\\deepcondresunet3d.onnx";
+	
+	if (pMap[1]) delete pMap[1];
+
+	CMCEOnnxEngine OE(sPath);
+	pMap[1] = new VoxelMap(OE.DeblurMap(pMap[0], 1));
+
+	if(pUnit[1]) delete pUnit[1];
+	pUnit[1] = new UnitCell(*pUnit[0]);
+	pUnit[1]->SetSpaceGroup("P1");
+	pMap[1]->mType = pMap[0]->mType;
+	pMap[1]->SetLayerLimitsFromVoxel(m_default_layer_limits[1]);
+	pMap[1]->SetColors(DisplayStyleSetup.MapsColors[1], DisplayStyleSetup.MapsMSHColors[1]);
+    pMap[1]->generateMapEdges();
+
+	/*
+	array<int64_t, 3> sh = {48, 48, 48};
+	pMap[0]->Voxel = CMCEOnnxEngine::ONNXInference_Deepcondresunet3d(L"f:\\PiGi\\MCE\\deepcondresunet3d.onnx", pMap[0]->Voxel, 1.0f, sh);
+	pMap[0]->SetLayerLimitsFromVoxel(m_default_layer_limits[0]);
+	m_bNeedRecalculateMap = TRUE;
+	Invalidate(TRUE);
+	*/
+
+	m_bNeedRecalculateMap = TRUE;
+	Invalidate(TRUE);
+
+
 }
 void CMCEView::OnCalculateNewMap()
 {