Index: src/sas/qtgui/Perspectives/Inversion/DMaxExplorerWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Inversion/DMaxExplorerWidget.py	(revision e90891623672df7713791b32df5d03267be8144a)
+++ src/sas/qtgui/Perspectives/Inversion/DMaxExplorerWidget.py	(revision b0ba43ee4b198d4f5a834c93888985b18c20c071)
@@ -42,5 +42,5 @@
         self.parent = parent
 
-        self.setWindowTitle("Dmax Explorer")
+        self.setWindowTitle("Dââ Explorer")
 
         self.pr_state = pr_state
@@ -116,5 +116,5 @@
         bck = []
         chi2 = []
-        plotable_xs = [] #Introducing this to make sure size of x and y for plotting is the same.8
+
         try:
             dmin = float(self.model.item(W.DMIN).text())
@@ -128,5 +128,4 @@
 
         original = self.pr_state.d_max
-
         for x in xs:
             self.pr_state.d_max = x
@@ -141,5 +140,4 @@
                 bck.append(self.pr_state.background)
                 chi2.append(self.pr_state.chi2)
-                plotable_xs.append(x)
             except Exception as ex:
                 # This inversion failed, skip this D_max value
@@ -190,5 +188,5 @@
             y_unit = "a.u."
 
-        data = Data1D(plotable_xs, ys)
+        data = Data1D(xs, ys)
         if self.hasPlot:
             self.plot.removePlot(None)
Index: src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py	(revision 28965e9019689ebf985cdec983c92ade095a2b54)
+++ src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py	(revision 2b8286c458db137a837452758351f50f63f322d7)
@@ -43,6 +43,4 @@
     estimateSignal = QtCore.pyqtSignal(tuple)
     estimateNTSignal = QtCore.pyqtSignal(tuple)
-    estimateDynamicNTSignal = QtCore.pyqtSignal(tuple)
-    estimateDynamicSignal = QtCore.pyqtSignal(tuple)
     calculateSignal = QtCore.pyqtSignal(tuple)
 
@@ -196,10 +194,6 @@
         self.model.itemChanged.connect(self.model_changed)
         self.estimateNTSignal.connect(self._estimateNTUpdate)
-        self.estimateDynamicNTSignal.connect(self._estimateDynamicNTUpdate)
-        self.estimateDynamicSignal.connect(self._estimateDynamicUpdate)
         self.estimateSignal.connect(self._estimateUpdate)
         self.calculateSignal.connect(self._calculateUpdate)
-
-        self.maxDistanceInput.textEdited.connect(self.performEstimateDynamic)
 
     def setupMapper(self):
@@ -315,5 +309,6 @@
                                             and not self.isCalculating)
         self.removeButton.setEnabled(self.logic.data_is_loaded)
-        self.explorerButton.setEnabled(self.logic.data_is_loaded)
+        self.explorerButton.setEnabled(self.logic.data_is_loaded
+                                       and np.all(self.logic.data.dy != 0))
         self.stopButton.setVisible(self.isCalculating)
         self.regConstantSuggestionButton.setEnabled(
@@ -506,15 +501,4 @@
         self.dataPlot = self._dataList[data_ref].get(DICT_KEYS[2])
         self.performEstimate()
-
-    def updateDynamicGuiValues(self):
-        pr = self._calculator
-        alpha = self._calculator.suggested_alpha
-        self.model.setItem(WIDGETS.W_MAX_DIST,
-                            QtGui.QStandardItem("{:.4g}".format(pr.get_dmax())))
-        self.regConstantSuggestionButton.setText("{:-3.2g}".format(alpha))
-        self.noOfTermsSuggestionButton.setText(
-             "{:n}".format(self.nTermsSuggested))
-
-        self.enableButtons()
 
     def updateGuiValues(self):
@@ -536,4 +520,7 @@
         self.model.setItem(WIDGETS.W_MAX_DIST,
                            QtGui.QStandardItem("{:.4g}".format(pr.get_dmax())))
+        self.regConstantSuggestionButton.setText("{:-3.2g}".format(alpha))
+        self.noOfTermsSuggestionButton.setText(
+            "{:n}".format(self.nTermsSuggested))
 
         if isinstance(pr.chi2, np.ndarray):
@@ -684,29 +671,4 @@
         self.estimationThreadNT.ready(2.5)
 
-    def performEstimateDynamicNT(self):
-        """
-        Perform parameter estimation
-        """
-        from .Thread import EstimateNT
-
-        self.updateCalculator()
-
-        # If a thread is already started, stop it
-        self.stopEstimateNTThread()
-
-        pr = self._calculator.clone()
-        # Skip the slit settings for the estimation
-        # It slows down the application and it doesn't change the estimates
-        pr.slit_height = 0.0
-        pr.slit_width = 0.0
-        nfunc = self.getNFunc()
-
-        self.estimationThreadNT = EstimateNT(pr, nfunc,
-                                             error_func=self._threadError,
-                                             completefn=self._estimateDynamicNTCompleted,
-                                             updatefn=None)
-        self.estimationThreadNT.queue()
-        self.estimationThreadNT.ready(2.5)
-
     def stopEstimateNTThread(self):
         if (self.estimationThreadNT is not None and
@@ -731,21 +693,4 @@
         self.estimationThread.ready(2.5)
 
-    def performEstimateDynamic(self):
-        """
-            Perform parameter estimation
-        """
-        from .Thread import EstimatePr
-
-        # If a thread is already started, stop it
-        self.stopEstimationThread()
-
-        self.estimationThread = EstimatePr(self._calculator.clone(),
-                                           self.getNFunc(),
-                                           error_func=self._threadError,
-                                           completefn=self._estimateDynamicCompleted,
-                                           updatefn=None)
-        self.estimationThread.queue()
-        self.estimationThread.ready(2.5)
-
     def stopEstimationThread(self):
         """ Stop the estimation thread if it exists and is running """
@@ -760,8 +705,4 @@
         ''' Send a signal to the main thread for model update'''
         self.estimateSignal.emit((alpha, message, elapsed))
-
-    def _estimateDynamicCompleted(self, alpha, message, elapsed):
-        ''' Send a signal to the main thread for model update'''
-        self.estimateDynamicSignal.emit((alpha, message, elapsed))
 
     def _estimateUpdate(self, output_tuple):
@@ -779,28 +720,8 @@
             logger.info(message)
         self.performEstimateNT()
-        self.performEstimateDynamicNT()
-
-    def _estimateDynamicUpdate(self, output_tuple):
-        """
-        Parameter estimation completed,
-        display the results to the user
-
-        :param alpha: estimated best alpha
-        :param elapsed: computation time
-        """
-        alpha, message, elapsed = output_tuple
-        self._calculator.alpha = alpha
-        self._calculator.elapsed += self._calculator.elapsed
-        if message:
-            logger.info(message)
-        self.performEstimateDynamicNT()
 
     def _estimateNTCompleted(self, nterms, alpha, message, elapsed):
         ''' Send a signal to the main thread for model update'''
         self.estimateNTSignal.emit((nterms, alpha, message, elapsed))
-
-    def _estimateDynamicNTCompleted(self, nterms, alpha, message, elapsed):
-        ''' Send a signal to the main thread for model update'''
-        self.estimateDynamicNTSignal.emit((nterms, alpha, message, elapsed))
 
     def _estimateNTUpdate(self, output_tuple):
@@ -826,26 +747,4 @@
             self.startThread()
 
-    def _estimateDynamicNTUpdate(self, output_tuple):
-        """
-        Parameter estimation completed,
-        display the results to the user
-
-        :param alpha: estimated best alpha
-        :param nterms: estimated number of terms
-        :param elapsed: computation time
-        """
-        nterms, alpha, message, elapsed = output_tuple
-        self._calculator.elapsed += elapsed
-        self._calculator.suggested_alpha = alpha
-        self.nTermsSuggested = nterms
-        # Save useful info
-        self.updateDynamicGuiValues()
-        if message:
-            logger.info(message)
-        if self.isBatch:
-            self.acceptAlpha()
-            self.acceptNoTerms()
-            self.startThread()
-
     def _calculateCompleted(self, out, cov, pr, elapsed):
         ''' Send a signal to the main thread for model update'''
Index: src/sas/sascalc/pr/invertor.py
===================================================================
--- src/sas/sascalc/pr/invertor.py	(revision 6701a0bdc223be19c260b4f642416660e47f7089)
+++ src/sas/sascalc/pr/invertor.py	(revision b8080e1affadb04559f0597dfddc5506d2044e9d)
@@ -71,5 +71,5 @@
         A[j][i] = (Fourier transformed base function for point j)
 
-    We then choose a number of r-points, n_r, to evaluate the second
+    We them choose a number of r-points, n_r, to evaluate the second
     derivative of P(r) at. This is used as our regularization term.
     For a vector r of length n_r, the following n_r rows are set to ::
@@ -144,5 +144,5 @@
         x, y, err, d_max, q_min, q_max and alpha
         """
-        if name == 'x':
+        if   name == 'x':
             if 0.0 in value:
                 msg = "Invertor: one of your q-values is zero. "
@@ -227,18 +227,4 @@
         return None
 
-    def add_errors(self, yvalues):
-        """
-        Adds errors to data set is they are not avaialble
-        :return:
-        """
-        stats_errors = np.zeros(len(yvalues))
-        for i in range(len(yvalues)):
-            # Scale the error so that we can fit over several decades of Q
-            scale = 0.05 * np.sqrt(yvalues[i])
-            min_err = 0.01 * yvalues[i]
-            stats_errors[i] = scale * np.sqrt(np.fabs(yvalues[i])) + min_err
-        logger.warning("Simulated errors have been added to the data set\n")
-        return stats_errors
-
     def clone(self):
         """
@@ -258,8 +244,5 @@
         invertor.x = self.x
         invertor.y = self.y
-        if np.size(self.err) == 0 or np.all(self.err) == 0:
-            invertor.err = self.add_errors(self.y)
-        else:
-            invertor.err = self.err
+        invertor.err = self.err
         invertor.est_bck = self.est_bck
         invertor.background = self.background
@@ -285,5 +268,5 @@
             A[i][j] = (Fourier transformed base function for point j)
 
-        We then choose a number of r-points, n_r, to evaluate the second
+        We them choose a number of r-points, n_r, to evaluate the second
         derivative of P(r) at. This is used as our regularization term.
         For a vector r of length n_r, the following n_r rows are set to ::
