diff --git a/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/PeakSelector/peak_selector_view.py b/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/PeakSelector/peak_selector_view.py
index 07cf209ca061524b69fc9739ca0e1cb0991d27a7..77695b3e8fb33597701b192e771ca26fd448fe09 100644
--- a/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/PeakSelector/peak_selector_view.py
+++ b/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/PeakSelector/peak_selector_view.py
@@ -8,12 +8,23 @@ from __future__ import (absolute_import, division, unicode_literals)
 from qtpy import QtWidgets, QtCore
 
 from six import iteritems
+import numpy as np
 
 from Muon.GUI.Common.checkbox import Checkbox
 
 
-# Check that the new data format contains at least A, Z, primary (they can be empty)
+def value_in_bounds(val, lower, upper):
+    if val is None or val == {}:
+        return True
+
+    if lower <= val <= upper:
+        return True
+
+    return False
+
+
 def valid_data(peak_data):
+    # Check that the new data format contains at least A, Z, primary (they can be empty)
     data_label = peak_data.keys()
     if any([
             'Z' not in data_label, 'A' not in data_label, 'Primary' not in data_label,
@@ -21,6 +32,28 @@ def valid_data(peak_data):
     ]):
         return False
 
+    # Check that the data is a sensible number (high bound set by element Oganesson, heaviest known element as of 2019)
+    if not value_in_bounds(peak_data['Z'], 1, 119):
+        return False
+    if not value_in_bounds(peak_data['A'], 1.0, 296.0):
+        return False
+    if peak_data['Primary'] is not None:
+        for x_pos in peak_data['Primary'].values():
+            if not value_in_bounds(x_pos, 0.0, np.Inf):
+                return False
+    if peak_data['Secondary'] is not None:
+        for x_pos in peak_data['Secondary'].values():
+            if not value_in_bounds(x_pos, 0.0, np.Inf):
+                return False
+    if 'Gammas' in data_label and peak_data['Gammas'] is not None:
+        for x_pos in peak_data['Gammas'].values():
+            if not value_in_bounds(x_pos, 0.0, np.Inf):
+                return False
+    if 'Electrons' in data_label and peak_data['Electrons'] is not None:
+        for x_pos in peak_data['Electrons'].values():
+            if not value_in_bounds(x_pos, 0.0, np.Inf):
+                return False
+
     return True
 
 
@@ -33,7 +66,7 @@ class PeakSelectorView(QtWidgets.QListWidget):
 
         self.new_data = {}
         if not valid_data(peak_data):
-            raise ValueError
+            raise ValueError('Element {} does not contain valid data'.format(element))
 
         self.element = element
         self.update_new_data(peak_data)
diff --git a/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/periodic_table.py b/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/periodic_table.py
index 01b9d7cabfe55ddb9fcf013f064f3794481c24ca..cf0bd1374379544fabbbea54f13ce33098d92ade 100644
--- a/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/periodic_table.py
+++ b/scripts/Muon/GUI/ElementalAnalysis/PeriodicTable/periodic_table.py
@@ -175,7 +175,6 @@ class PeriodicTableItem(object):
     :param str subcategory: Subcategory, based on physical properties
         (e.g. "alkali metal", "noble gas"...)
     """
-
     def __init__(self, symbol, Z, col, row, name, mass, subcategory=""):
         self.symbol = symbol
         """Atomic symbol (e.g. H, He, Li...)"""
@@ -227,7 +226,6 @@ class ColoredPeriodicTableItem(PeriodicTableItem):
         "": "#FFFFFF"  # white
     }
     """Dictionary defining RGB colors for each subcategory."""
-
     def __init__(self, symbol, Z, col, row, name, mass, subcategory="", bgcolor=None):
         PeriodicTableItem.__init__(self, symbol, Z, col, row, name, mass, subcategory)
 
@@ -243,7 +241,28 @@ class ColoredPeriodicTableItem(PeriodicTableItem):
             self.bgcolor = bgcolor
 
 
-_defaultTableItems = [ColoredPeriodicTableItem(*info) for info in _elements]
+# Sometimes the mass of an element can be slightly different to the one in the peak data file, if so use that one
+def _correct_with_peak_data_file():
+    from periodic_table_model import PeriodicTableModel
+    import json
+    import copy
+    with open(PeriodicTableModel().get_default_peak_data_file(), 'r') as data_file:
+        data = json.load(data_file)
+
+    for i, element in enumerate(copy.deepcopy(_elements)):
+        data_element = data.get(element[0], None)
+        if data_element is not None and data_element['A'] is not None:
+            if abs(data_element['A'] - element[5]) > 1e-6:
+                if len(element) > 6:
+                    _elements[i] = (element[0], data_element['Z'], element[2], element[3],
+                                    element[4], data_element['A'], element[6])
+                else:
+                    _elements[i] = (element[0], data_element['Z'], element[2], element[3],
+                                    element[4], data_element['A'])
+
+
+_correct_with_peak_data_file()
+_default_table_items = [ColoredPeriodicTableItem(*info) for info in _elements]
 
 
 class _ElementButton(QtWidgets.QPushButton):
@@ -257,7 +276,6 @@ class _ElementButton(QtWidgets.QPushButton):
     """Signal emitted when the widget is left clicked"""
     sigElementRightClicked = QtCore.Signal(object)
     """Signal emitted when the widget is right clicked"""
-
     def __init__(self, item, parent=None):
         """
 
@@ -273,8 +291,8 @@ class _ElementButton(QtWidgets.QPushButton):
         self.setFlat(True)
         self.setCheckable(False)
 
-        self.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
-                                                 QtWidgets.QSizePolicy.Expanding))
+        self.setSizePolicy(
+            QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding))
 
         self.selected = False
         self.current = False
@@ -447,9 +465,7 @@ class PeriodicTable(QtWidgets.QWidget):
         selected by clicking with the mouse. If *False* (default),
         selection is only possible with method :meth:`setSelection`.
     """
-
-    def __init__(self, parent=None, name="PeriodicTable", elements=None,
-                 selectable=False):
+    def __init__(self, parent=None, name="PeriodicTable", elements=None, selectable=False):
         self.selectable = selectable
         QtWidgets.QWidget.__init__(self, parent)
         self.setWindowTitle(name)
@@ -478,7 +494,7 @@ class PeriodicTable(QtWidgets.QWidget):
         ("H", "He", "Li"...)"""
 
         if elements is None:
-            elements = _defaultTableItems
+            elements = _default_table_items
         # fill cells with elements
         for elmt in elements:
             self._addElement(elmt)
@@ -632,13 +648,12 @@ class PeriodicCombo(QtWidgets.QComboBox):
     :class:`PeriodicTableItem` object representing selected
     element
     """
-
     def __init__(self, parent=None, detailed=True, elements=None):
         QtWidgets.QComboBox.__init__(self, parent)
 
         # add all elements from global list
         if elements is None:
-            elements = _defaultTableItems
+            elements = _default_table_items
         for i, elmt in enumerate(elements):
             if detailed:
                 txt = "%2s (%d) - %s" % (elmt.symbol, elmt.Z, elmt.name)
@@ -650,7 +665,7 @@ class PeriodicCombo(QtWidgets.QComboBox):
 
     def _selectionChanged(self, idx):
         """Emit :attr:`sigSelectionChanged`"""
-        self.sigSelectionChanged.emit(_defaultTableItems[idx])
+        self.sigSelectionChanged.emit(_default_table_items[idx])
 
     def getSelection(self):
         """Get selected element
@@ -658,7 +673,7 @@ class PeriodicCombo(QtWidgets.QComboBox):
         :return: Selected element
         :rtype: PeriodicTableItem
         """
-        return _defaultTableItems[self.currentIndex()]
+        return _default_table_items[self.currentIndex()]
 
     def setSelection(self, symbol):
         """Set selected item in combobox by giving the atomic symbol
@@ -668,7 +683,7 @@ class PeriodicCombo(QtWidgets.QComboBox):
         # accept PeriodicTableItem for getter/setter consistency
         if isinstance(symbol, PeriodicTableItem):
             symbol = symbol.symbol
-        symblist = [elmt.symbol for elmt in _defaultTableItems]
+        symblist = [elmt.symbol for elmt in _default_table_items]
         self.setCurrentIndex(symblist.index(symbol))
 
 
@@ -688,7 +703,6 @@ class PeriodicList(QtWidgets.QTreeWidget):
     this signal and sends a list of currently selected
     :class:`PeriodicTableItem` objects.
     """
-
     def __init__(self, parent=None, detailed=True, single=False, elements=None):
         QtWidgets.QTreeWidget.__init__(self, parent)
 
@@ -705,8 +719,8 @@ class PeriodicList(QtWidgets.QTreeWidget):
 
         self.setRootIsDecorated(0)
         self.itemClicked.connect(self._selectionChanged)
-        self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection if single
-                              else QtWidgets.QAbstractItemView.ExtendedSelection)
+        self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection if single else QtWidgets.
+                              QAbstractItemView.ExtendedSelection)
         self._fill_widget(elements)
         self.resizeColumnToContents(0)
         self.resizeColumnToContents(1)
@@ -716,7 +730,7 @@ class PeriodicList(QtWidgets.QTreeWidget):
     def _fill_widget(self, elements):
         """Fill tree widget with elements """
         if elements is None:
-            elements = _defaultTableItems
+            elements = _default_table_items
 
         self.tree_items = []
 
@@ -744,8 +758,10 @@ class PeriodicList(QtWidgets.QTreeWidget):
 
         :return: Selected elements
         :rtype: List[PeriodicTableItem]"""
-        return [_defaultTableItems[idx] for idx in range(len(self.tree_items))
-                if self.tree_items[idx].isSelected()]
+        return [
+            _default_table_items[idx] for idx in range(len(self.tree_items))
+            if self.tree_items[idx].isSelected()
+        ]
 
     # setSelection is a bad name (name of a QTreeWidget method)
     def setSelectedElements(self, symbolList):
@@ -758,4 +774,4 @@ class PeriodicList(QtWidgets.QTreeWidget):
         if isinstance(symbolList[0], PeriodicTableItem):
             symbolList = [elmt.symbol for elmt in symbolList]
         for idx in range(len(self.tree_items)):
-            self.tree_items[idx].setSelected(_defaultTableItems[idx].symbol in symbolList)
+            self.tree_items[idx].setSelected(_default_table_items[idx].symbol in symbolList)
diff --git a/scripts/test/Muon/elemental_analysis/detectors_presenter_test.py b/scripts/test/Muon/elemental_analysis/detectors_presenter_test.py
index 5734fcba261b860c1b9d013b42cdffc7abc3afaf..896327f91c571dea1a70fe0acea5983ff9d1060b 100644
--- a/scripts/test/Muon/elemental_analysis/detectors_presenter_test.py
+++ b/scripts/test/Muon/elemental_analysis/detectors_presenter_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/element_button_test.py b/scripts/test/Muon/elemental_analysis/element_button_test.py
index 01829a3c1445e3ab03e3a501ff21deeab425df91..5682d3bc4cb1fc21d303194f7c50889daee68fab 100644
--- a/scripts/test/Muon/elemental_analysis/element_button_test.py
+++ b/scripts/test/Muon/elemental_analysis/element_button_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/elemental_analysis_test.py b/scripts/test/Muon/elemental_analysis/elemental_analysis_test.py
index c23d604270406388c16c12847d4f486b9636b63c..b40ebbe2046fecdadcf90e9b19b80337140f9937 100644
--- a/scripts/test/Muon/elemental_analysis/elemental_analysis_test.py
+++ b/scripts/test/Muon/elemental_analysis/elemental_analysis_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
@@ -242,22 +242,22 @@ class ElementalAnalysisTest(unittest.TestCase):
         self.assertEqual(mock_rm_line.call_count, 2)
 
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.MultiPlotWindow')
-    def test_load_run_opens_new_plot_window_if_none_open(self, mock_MultiPlotWindow):
+    def test_load_run_opens_new_plot_window_if_none_open(self, mock_multi_plot_window):
         self.gui.add_detector_to_plot = mock.Mock()
         self.gui.load_run('GE1', '2695')
-        self.assertEqual(mock_MultiPlotWindow.call_count, 1)
+        self.assertEqual(mock_multi_plot_window.call_count, 1)
 
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.MultiPlotWindow')
-    def test_load_run_does_not_open_new_plot_window_if_one_is_open(self, mock_MultiPlotWindow):
+    def test_load_run_does_not_open_new_plot_window_if_one_is_open(self, mock_multi_plot_window):
         self.gui.add_detector_to_plot = mock.Mock()
         self.gui.plot_window = MultiPlotWindow(str('2695'))
         self.gui.load_run('GE1', 2695)
-        self.assertEqual(mock_MultiPlotWindow.call_count, 0)
+        self.assertEqual(mock_multi_plot_window.call_count, 0)
 
     @mock.patch('Muon.GUI.ElementalAnalysis.Detectors.detectors_view.QtWidgets.QWidget')
-    def test_loading_finished_returns_nothing_if_no_run_loaded(self, mock_QWidget):
+    def test_loading_finished_returns_nothing_if_no_run_loaded(self, mock_qwidget):
         self.gui.load_widget.last_loaded_run = mock.Mock(return_value=None)
-        mock_QWidget.return_value = True
+        mock_qwidget.return_value = True
         self.gui.plot_window = mock.Mock()
         self.gui.plotting = mock.Mock()
 
@@ -265,14 +265,13 @@ class ElementalAnalysisTest(unittest.TestCase):
         self.assertEqual(self.gui.plotting.remove_subplot.call_count, 0)
 
     @mock.patch('Muon.GUI.ElementalAnalysis.Detectors.detectors_view.QtWidgets.QWidget')
-    def test_loading_finished_returns_correctly_if_no_plot_window_but_has_to_plot(
-            self, mock_QWidget):
+    def test_loading_finished_returns_correctly_if_no_plot_window_but_has_to_plot(self, mock_qwidget):
         self.gui.load_widget.last_loaded_run = mock.Mock(return_value=['run1', 'run2', 'run3'])
         self.gui.detectors.getNames.return_value = ['1', '2', '3']
         self.gui.plot_window = None
         self.gui.plotting = mock.Mock()
         self.gui.plotting.get_subplots.return_value = ['1', '2', '3']
-        mock_QWidget.return_value = True
+        mock_qwidget.return_value = True
 
         self.gui.loading_finished()
         self.assertEqual(self.gui.detectors.setStateQuietly.call_count, 3)
@@ -281,10 +280,10 @@ class ElementalAnalysisTest(unittest.TestCase):
 
     @mock.patch('Muon.GUI.ElementalAnalysis.Detectors.detectors_view.QtWidgets.QWidget')
     def test_loading_finished_returns_correctly_if_no_to_plot_but_has_plot_window(
-            self, mock_QWidget):
+            self, mock_qwidget):
         self.gui.load_widget.last_loaded_run = mock.Mock(return_value=['run1', 'run2', 'run3'])
         self.gui.detectors.getNames.return_value = ['1', '2', '3']
-        mock_QWidget.return_value = True
+        mock_qwidget.return_value = True
         self.gui.plot_window = mock.Mock()
 
         self.gui.loading_finished()
@@ -433,20 +432,24 @@ class ElementalAnalysisTest(unittest.TestCase):
         self.assertEqual(self.gui.detectors.setStateQuietly.call_count, 1)
         self.assertEqual(self.gui.plot_window, None)
 
+    @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.message_box.warning')
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.PeriodicTablePresenter.set_peak_datafile')
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.QtWidgets.QFileDialog.getOpenFileName')
     def test_that_set_peak_datafile_is_called_with_select_data_file(self,
-                                                                    mock_getOpenFileName,
-                                                                    mock_set_peak_datafile):
-        mock_getOpenFileName.return_value = 'filename'
+                                                                    mock_get_open_file_name,
+                                                                    mock_set_peak_datafile,
+                                                                    mock_warning):
+        mock_get_open_file_name.return_value = 'filename'
         self.gui.select_data_file()
         mock_set_peak_datafile.assert_called_with('filename')
+        self.assertEqual(0, mock_warning.call_count)
 
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.PeriodicTablePresenter.set_peak_datafile')
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.QtWidgets.QFileDialog.getOpenFileName')
-    def test_that_select_data_file_uses_the_first_element_of_a_tuple_when_given_as_a_filename(
-            self, mock_getOpenFileName, mock_set_peak_datafile):
-        mock_getOpenFileName.return_value = ('string1', 'string2')
+    def test_that_select_data_file_uses_the_first_element_of_a_tuple_when_given_as_a_filename(self,
+                                                                                              mock_get_open_file_name,
+                                                                                              mock_set_peak_datafile):
+        mock_get_open_file_name.return_value = ('string1', 'string2')
         self.gui.select_data_file()
         mock_set_peak_datafile.assert_called_with('string1')
 
@@ -454,10 +457,10 @@ class ElementalAnalysisTest(unittest.TestCase):
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.ElementalAnalysisGui._generate_element_widgets')
     @mock.patch('Muon.GUI.ElementalAnalysis.elemental_analysis.QtWidgets.QFileDialog.getOpenFileName')
     def test_that_select_data_file_raises_warning_with_correct_text(self,
-                                                                    mock_getOpenFileName,
+                                                                    mock_get_open_file_name,
                                                                     mock_generate_element_widgets,
                                                                     mock_warning):
-        mock_getOpenFileName.return_value = 'filename'
+        mock_get_open_file_name.return_value = 'filename'
         mock_generate_element_widgets.side_effect = self.raise_ValueError_once
         self.gui.select_data_file()
         warning_text = 'The file does not contain correctly formatted data, resetting to default data file.'\
diff --git a/scripts/test/Muon/elemental_analysis/lmodel_test.py b/scripts/test/Muon/elemental_analysis/lmodel_test.py
index 812750e50a65fa3b0835d15be0c6f33f1ae35122..f292c9641c8274228cf963fcc87f66dd46d9ce13 100644
--- a/scripts/test/Muon/elemental_analysis/lmodel_test.py
+++ b/scripts/test/Muon/elemental_analysis/lmodel_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/load_model_test.py b/scripts/test/Muon/elemental_analysis/load_model_test.py
index 0eb5ad10b67ccf5dd18fd17fba75eb587158eaa3..a7e4272e2d768479dc55a47c2daad03166fa24aa 100644
--- a/scripts/test/Muon/elemental_analysis/load_model_test.py
+++ b/scripts/test/Muon/elemental_analysis/load_model_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/name_generator_test.py b/scripts/test/Muon/elemental_analysis/name_generator_test.py
index dd00f2f4e00712ede2673dce488665e82d9a4592..1c0b151dd93daa43a99bafb01a33bdb6a4c72b0c 100644
--- a/scripts/test/Muon/elemental_analysis/name_generator_test.py
+++ b/scripts/test/Muon/elemental_analysis/name_generator_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/peak_selector_view_test.py b/scripts/test/Muon/elemental_analysis/peak_selector_view_test.py
index 2aa3d7e9c57afdddd6c758bb40fa0455a9816f7a..7b9e7005138cee2033acc10682cef4eaede859d0 100644
--- a/scripts/test/Muon/elemental_analysis/peak_selector_view_test.py
+++ b/scripts/test/Muon/elemental_analysis/peak_selector_view_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/periodic_combo_test.py b/scripts/test/Muon/elemental_analysis/periodic_combo_test.py
index 46e611dbcd1a8b2792386cb358796201a7521278..459a75097aa55015551067cdc7961e9538198f75 100644
--- a/scripts/test/Muon/elemental_analysis/periodic_combo_test.py
+++ b/scripts/test/Muon/elemental_analysis/periodic_combo_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
@@ -49,13 +49,13 @@ class PeriodicComboTest(unittest.TestCase):
         combo.sigSelectionChanged = mock.Mock()
         combo._selectionChanged(1)
 
-        combo.sigSelectionChanged.emit.assert_called_with(periodic_table._defaultTableItems[1])
+        combo.sigSelectionChanged.emit.assert_called_with(periodic_table._default_table_items[1])
 
     def test_that_selected_item_is_correct(self):
         combo = PeriodicCombo()
         combo.currentIndex = mock.Mock(return_value=1)
 
-        self.assertEqual(combo.getSelection(), periodic_table._defaultTableItems[1])
+        self.assertEqual(combo.getSelection(), periodic_table._default_table_items[1])
 
     def test_that_setSelection_sets_correct_selection_if_given_symbol(self):
         combo = PeriodicCombo()
diff --git a/scripts/test/Muon/elemental_analysis/periodic_list_test.py b/scripts/test/Muon/elemental_analysis/periodic_list_test.py
index d74f8653f5ddf3b2da573f00f0a14e304c0b14e0..d3051c708887358c57d7b9a568123d75991736ab 100644
--- a/scripts/test/Muon/elemental_analysis/periodic_list_test.py
+++ b/scripts/test/Muon/elemental_analysis/periodic_list_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
@@ -37,14 +37,14 @@ class PeriodicListTest(unittest.TestCase):
     def test_that_fill_widget_uses_defaultTableItems_when_argument_is_none(self, mock_items):
         self.plist._fill_widget(None)
 
-        exp_num_calls = len(periodic_table._defaultTableItems)
+        exp_num_calls = len(periodic_table._default_table_items)
         self.assertEqual(mock_items.call_count, exp_num_calls)
         self.assertEqual(len(self.plist.tree_items), exp_num_calls)
 
     @mock.patch('Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table.QtWidgets.QTreeWidgetItem')
     def test_that_fill_widget_uses_custom_items_when_argument_is_not_none(self, mock_items):
         exp_num_calls = 3
-        self.plist._fill_widget(periodic_table._defaultTableItems[:exp_num_calls])
+        self.plist._fill_widget(periodic_table._default_table_items[:exp_num_calls])
 
         self.assertEqual(mock_items.call_count, exp_num_calls)
         self.assertEqual(len(self.plist.tree_items), exp_num_calls)
@@ -58,9 +58,9 @@ class PeriodicListTest(unittest.TestCase):
         self.plist._fill_widget(None)
 
         assert all([self.plist.tree_items[i].text(0) == str(el.Z)
-                    for i, el in enumerate(periodic_table._defaultTableItems)])
+                    for i, el in enumerate(periodic_table._default_table_items)])
         assert all([self.plist.tree_items[i].text(1) == el.symbol
-                    for i, el in enumerate(periodic_table._defaultTableItems)])
+                    for i, el in enumerate(periodic_table._default_table_items)])
 
     def test_that_selectionChanged_emits_correct_signal(self):
         self.plist.sigSelectionChanged = mock.Mock()
@@ -75,9 +75,9 @@ class PeriodicListTest(unittest.TestCase):
         ret = self.plist.getSelection()
 
         self.assertEqual(len(ret), 3)
-        self.assertEqual(ret, [periodic_table._defaultTableItems[0],
-                               periodic_table._defaultTableItems[1],
-                               periodic_table._defaultTableItems[2]])
+        self.assertEqual(ret, [periodic_table._default_table_items[0],
+                               periodic_table._default_table_items[1],
+                               periodic_table._default_table_items[2]])
 
     def test_that_setSelectedElements_throws_when_given_no_elements(self):
         with self.assertRaises(IndexError):
diff --git a/scripts/test/Muon/elemental_analysis/periodic_table_item_test.py b/scripts/test/Muon/elemental_analysis/periodic_table_item_test.py
index c6dcdf45972a4f8ebe410829142559e82da283a6..937851bffe2236778173e44c8d484b45518f3cc3 100644
--- a/scripts/test/Muon/elemental_analysis/periodic_table_item_test.py
+++ b/scripts/test/Muon/elemental_analysis/periodic_table_item_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/periodic_table_test.py b/scripts/test/Muon/elemental_analysis/periodic_table_test.py
index 64ebf1c0af88568964f49c06f48cbf2550b61582..d4782e2bf6e1dc6f1d9e3003445b9ee7f2ffcf20 100644
--- a/scripts/test/Muon/elemental_analysis/periodic_table_test.py
+++ b/scripts/test/Muon/elemental_analysis/periodic_table_test.py
@@ -1,6 +1,6 @@
 # Mantid Repository : https://github.com/mantidproject/mantid
 #
-# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
 #     NScD Oak Ridge National Laboratory, European Spallation Source
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
diff --git a/scripts/test/Muon/elemental_analysis/test_peak_data_file.py b/scripts/test/Muon/elemental_analysis/test_peak_data_file.py
new file mode 100644
index 0000000000000000000000000000000000000000..f02648d5584eb4f6daebbbb49f59ff3406e6f933
--- /dev/null
+++ b/scripts/test/Muon/elemental_analysis/test_peak_data_file.py
@@ -0,0 +1,65 @@
+# Mantid Repository : https://github.com/mantidproject/mantid
+#
+# Copyright &copy; 2019 ISIS Rutherford Appleton Laboratory UKRI,
+#     NScD Oak Ridge National Laboratory, European Spallation Source
+#     & Institut Laue - Langevin
+# SPDX - License - Identifier: GPL - 3.0 +
+
+from __future__ import print_function, absolute_import
+
+from qtpy.QtGui import QCloseEvent
+import matplotlib
+import unittest
+import json
+import pprint
+
+from mantid.py3compat import mock
+from mantidqt.utils.qt.testing import start_qapplication
+from testhelpers import assertRaisesNothing
+
+from Muon.GUI.ElementalAnalysis.elemental_analysis import ElementalAnalysisGui
+from Muon.GUI.ElementalAnalysis.elemental_analysis import gen_name
+from MultiPlotting.multi_plotting_widget import MultiPlotWindow
+from MultiPlotting.multi_plotting_widget import MultiPlotWidget
+from MultiPlotting.label import Label
+from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table_model import PeriodicTableModel
+from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table import _elements
+from Muon.GUI.ElementalAnalysis.PeriodicTable.PeakSelector.peak_selector_view import valid_data
+
+
+class PeakDataFileTest(unittest.TestCase):
+    def setUp(self):
+        self.file_name = PeriodicTableModel().get_default_peak_data_file()
+        with open(self.file_name, 'r') as _file:
+            self.data = json.load(_file)
+        self.el_names = [data[0] for data in _elements]
+
+    def test_every_peak_is_assigned_to_an_element(self):
+        for key in self.data.keys():
+            self.assertIn(key, self.el_names)
+
+    def test_every_element_contains_valid_data(self):
+        for element, data in self.data.items():
+            if not valid_data(data):
+                raise Exception("Element '{}' does not contain valid data".format(element))
+
+    def test_some_elements_have_gamma_peaks(self):
+        if not any(['Gammas' in data.keys() for _, data in self.data.items()]):
+            raise Exception('No element has gamma peaks')
+
+    def test_some_elements_have_electron_peaks(self):
+        if not any(['Electrons' in data.keys() for _, data in self.data.items()]):
+            raise Exception('No element has electron peaks')
+
+    def test_atomic_number_matches_the_one_in_periodic_table(self):
+        for element in _elements:
+            from_file = self.data.get(element[0], None)
+            if from_file is not None:
+                self.assertEqual(element[1], from_file['Z'])
+
+    def test_atomic_mass_matches_the_one_in_periodic_table(self):
+        for element in _elements:
+            from_file = self.data.get(element[0], None)
+            if from_file is not None and from_file['A'] is not None:
+                self.assertAlmostEqual(element[5], from_file['A'])
+