Index: check_packages.py
===================================================================
--- check_packages.py	(revision 131d94baf369cee4465f39be26ad9c294608b35f)
+++ check_packages.py	(revision f433e6a338b824ad42f53f2b0bc1a9eac91d8faf)
@@ -2,5 +2,6 @@
 Checking and reinstalling the external packages
 """
-import os
+from __future__ import print_function
+
 import sys
 
@@ -14,91 +15,93 @@
     sys.modules['Image'] = PIL.Image
 
+if sys.version_info[0] > 2:
+    print("To use the sasview GUI you must use Python 2\n")
 
 common_required_package_list = {
-    'setuptools':{'version':'0.6c11','import_name':'setuptools','test':'__version__'},
-    'pyparsing':{'version':'1.5.5','import_name':'pyparsing','test':'__version__'},
-    'html5lib':{'version':'0.95','import_name':'html5lib','test':'__version__'},
-    'reportlab':{'version':'2.5','import_name':'reportlab','test':'Version'},
-    'h5py':{'version':'2.5','import_name':'h5py','test':'__version__'},
-    'lxml':{'version':'2.3','import_name':'lxml.etree','test':'LXML_VERSION'},
-    'PIL':{'version':'1.1.7','import_name':'Image','test':'VERSION'},
-    'pylint':{'version':None,'import_name':'pylint','test':None},
-    'periodictable':{'version':'1.3.0','import_name':'periodictable','test':'__version__'},
-    'bumps':{'version':'0.7.5.9','import_name':'bumps','test':'__version__'},
-    'numpy':{'version':'1.7.1','import_name':'numpy','test':'__version__'},
-    'scipy':{'version':'0.18.0','import_name':'scipy','test':'__version__'},
-    'wx':{'version':'2.8.12.1','import_name':'wx','test':'__version__'},
-    'matplotlib':{'version':'1.1.0','import_name':'matplotlib','test':'__version__'},
-    'xhtml2pdf':{'version':'3.0.33','import_name':'xhtml2pdf','test':'__version__'},
-    'sphinx':{'version':'1.2.1','import_name':'sphinx','test':'__version__'},
-    'unittest-xml-reporting':{'version':'1.10.0','import_name':'xmlrunner','test':'__version__'},
-    'pyopencl':{'version':'2015.1','import_name':'pyopencl','test':'VERSION_TEXT'},
+    'setuptools': {'version': '0.6c11', 'import_name': 'setuptools', 'test': '__version__'},
+    'pyparsing': {'version': '1.5.5', 'import_name': 'pyparsing', 'test': '__version__'},
+    'html5lib': {'version': '0.95', 'import_name': 'html5lib', 'test': '__version__'},
+    'reportlab': {'version': '2.5', 'import_name': 'reportlab', 'test': 'Version'},
+    'h5py': {'version': '2.5', 'import_name': 'h5py', 'test': '__version__'},
+    'lxml': {'version': '2.3', 'import_name': 'lxml.etree', 'test': 'LXML_VERSION'},
+    'PIL': {'version': '1.1.7', 'import_name': 'Image', 'test': 'VERSION'},
+    'pylint': {'version': None, 'import_name': 'pylint', 'test': None},
+    'periodictable': {'version': '1.3.0', 'import_name': 'periodictable', 'test': '__version__'},
+    'bumps': {'version': '0.7.5.9', 'import_name': 'bumps', 'test': '__version__'},
+    'numpy': {'version': '1.7.1', 'import_name': 'numpy', 'test': '__version__'},
+    'scipy': {'version': '0.18.0', 'import_name': 'scipy', 'test': '__version__'},
+    'wx': {'version': '2.8.12.1', 'import_name': 'wx', 'test': '__version__'},
+    'matplotlib': {'version': '1.1.0', 'import_name': 'matplotlib', 'test': '__version__'},
+    'xhtml2pdf': {'version': '3.0.33', 'import_name': 'xhtml2pdf', 'test': '__version__'},
+    'sphinx': {'version': '1.2.1', 'import_name': 'sphinx', 'test': '__version__'},
+    'unittest-xml-reporting': {'version': '1.10.0', 'import_name': 'xmlrunner', 'test': '__version__'},
+    'pyopencl': {'version': '2015.1', 'import_name': 'pyopencl', 'test': 'VERSION_TEXT'},
 }
 win_required_package_list = {
-    'comtypes':{'version':'0.6.2','import_name':'comtypes','test':'__version__'},
-    'pywin':{'version':'217','import_name':'pywin','test':'__version__'},
-    'py2exe':{'version':'0.6.9','import_name':'py2exe','test':'__version__'},
+    'comtypes': {'version': '0.6.2', 'import_name': 'comtypes', 'test': '__version__'},
+    'pywin': {'version': '217', 'import_name': 'pywin', 'test': '__version__'},
+    'py2exe': {'version': '0.6.9', 'import_name': 'py2exe', 'test': '__version__'},
 }
 mac_required_package_list = {
-    'py2app':{'version':None,'import_name':'py2app','test':'__version__'},
+    'py2app': {'version': None, 'import_name': 'py2app', 'test': '__version__'},
 }
 
 deprecated_package_list = {
-    'pyPdf':{'version':'1.13','import_name':'pyPdf','test':'__version__'},
+    'pyPdf': {'version': '1.13', 'import_name': 'pyPdf', 'test': '__version__'},
 }
 
-print "Checking Required Package Versions...."
-print
-print "Common Packages"
-for package_name,test_vals in common_required_package_list.iteritems():
+print("Checking Required Package Versions....\n")
+print("Common Packages")
+
+for package_name, test_vals in common_required_package_list.items():
     try:
-        i = __import__(test_vals['import_name'],fromlist=[''])
+        i = __import__(test_vals['import_name'], fromlist=[''])
         if test_vals['test'] == None:
-            print "%s Installed (Unknown version)" % package_name
+            print("%s Installed (Unknown version)" % package_name)
         elif package_name == 'lxml':
-            verstring = str(getattr(i,'LXML_VERSION'))
-            print "%s Version Installed: %s"% (package_name,verstring.replace(', ','.').lstrip('(').rstrip(')'))
+            verstring = str(getattr(i, 'LXML_VERSION'))
+            print("%s Version Installed: %s"% (package_name, verstring.replace(', ', '.').lstrip('(').rstrip(')')))
         else:
-            print "%s Version Installed: %s"% (package_name,getattr(i,test_vals['test']))
-    except:
-        print '%s NOT INSTALLED'% package_name
+            print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test'])))
+    except ImportError:
+        print('%s NOT INSTALLED'% package_name)
 
 if sys.platform == 'win32':
-    print
-    print "Windows Specific Packages:"
-    for package_name,test_vals in win_required_package_list.iteritems():
+    print("")
+    print("Windows Specific Packages:")
+    for package_name, test_vals in win_required_package_list.items():
         try:
             if package_name == "pywin":
                 import win32api
-                fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__,'\\')
-                print "%s Version Installed: %s"% (package_name,fixed_file_info['FileVersionLS'] >> 16)
+                fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__, '\\')
+                print("%s Version Installed: %s"% (package_name, fixed_file_info['FileVersionLS'] >> 16))
             else:
-                i = __import__(test_vals['import_name'],fromlist=[''])
-                print "%s Version Installed: %s"% (package_name,getattr(i,test_vals['test']))
-        except:
-            print '%s NOT INSTALLED'% package_name
+                i = __import__(test_vals['import_name'], fromlist=[''])
+                print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test'])))
+        except ImportError:
+            print('%s NOT INSTALLED'% package_name)
 
 if sys.platform == 'darwin':
-    print
-    print "MacOS Specific Packages:"
-    for package_name,test_vals in mac_required_package_list.iteritems():
+    print("")
+    print("MacOS Specific Packages:")
+    for package_name, test_vals in mac_required_package_list.items():
         try:
-            i = __import__(test_vals['import_name'],fromlist=[''])
-            print "%s Version Installed: %s"% (package_name,getattr(i,test_vals['test']))
-        except:
-            print '%s NOT INSTALLED'% package_name
+            i = __import__(test_vals['import_name'], fromlist=[''])
+            print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test'])))
+        except ImportError:
+            print('%s NOT INSTALLED'% package_name)
 
 
-print
-print "Deprecated Packages"
-print "You can remove these unless you need them for other reasons!"
-for package_name,test_vals in deprecated_package_list.iteritems():
+print("")
+print("Deprecated Packages")
+print("You can remove these unless you need them for other reasons!")
+for package_name, test_vals in deprecated_package_list.items():
     try:
-        i = __import__(test_vals['import_name'],fromlist=[''])
+        i = __import__(test_vals['import_name'], fromlist=[''])
         if package_name == 'pyPdf':
-            #pyPdf doesn't have the version number internally
-            print 'pyPDF Installed (Version unknown)'
+            # pyPdf doesn't have the version number internally
+            print('pyPDF Installed (Version unknown)')
         else:
-            print "%s Version Installed: %s"% (package_name,getattr(i,test_vals['test']))
-    except:
-        print '%s NOT INSTALLED'% package_name
+            print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test'])))
+    except ImportError:
+        print('%s NOT INSTALLED'% package_name)
Index: src/sas/sascalc/dataloader/manipulations.py
===================================================================
--- src/sas/sascalc/dataloader/manipulations.py	(revision b2b3693291d8e49fd33718753161206c1964548c)
+++ src/sas/sascalc/dataloader/manipulations.py	(revision 36d69e1ba7246dedeb4f530e6542511304379c86)
@@ -80,5 +80,5 @@
 
     """
-    if data2d.data == None or data2d.x_bins == None or data2d.y_bins == None:
+    if data2d.data is None or data2d.x_bins is None or data2d.y_bins is None:
         raise ValueError, "Can't convert this data: data=None..."
     new_x = numpy.tile(data2d.x_bins, (len(data2d.y_bins), 1))
@@ -90,5 +90,5 @@
     qy_data = new_y.flatten()
     q_data = numpy.sqrt(qx_data * qx_data + qy_data * qy_data)
-    if data2d.err_data == None or numpy.any(data2d.err_data <= 0):
+    if data2d.err_data is None or numpy.any(data2d.err_data <= 0):
         new_err_data = numpy.sqrt(numpy.abs(new_data))
     else:
Index: src/sas/sascalc/dataloader/readers/IgorReader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/IgorReader.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/dataloader/readers/IgorReader.py	(revision 36d69e1ba7246dedeb4f530e6542511304379c86)
@@ -13,10 +13,9 @@
 #############################################################################
 import os
-import numpy
-import math
-#import logging
+
 from sas.sascalc.dataloader.data_info import Data2D
 from sas.sascalc.dataloader.data_info import Detector
 from sas.sascalc.dataloader.manipulations import reader2D_converter
+import numpy as np
 
 # Look for unit converter
@@ -40,205 +39,139 @@
         """ Read file """
         if not os.path.isfile(filename):
-            raise ValueError, \
-            "Specified file %s is not a regular file" % filename
-        
-        # Read file
-        f = open(filename, 'r')
-        buf = f.read()
-        
-        # Instantiate data object
+            raise ValueError("Specified file %s is not a regular "
+                             "file" % filename)
+        
         output = Data2D()
+
         output.filename = os.path.basename(filename)
         detector = Detector()
-        if len(output.detector) > 0:
-            print str(output.detector[0])
+        if len(output.detector):
+            print(str(output.detector[0]))
         output.detector.append(detector)
-                
-        # Get content
-        dataStarted = False
-        
-        lines = buf.split('\n')
-        itot = 0
-        x = []
-        y = []
-        
-        ncounts = 0
-        
-        xmin = None
-        xmax = None
-        ymin = None
-        ymax = None
-        
-        i_x = 0
-        i_y = -1
-        i_tot_row = 0
-        
-        isInfo = False
-        isCenter = False
-       
-        data_conv_q = None
-        data_conv_i = None
-        
-        if has_converter == True and output.Q_unit != '1/A':
+
+        data_conv_q = data_conv_i = None
+        
+        if has_converter and output.Q_unit != '1/A':
             data_conv_q = Converter('1/A')
             # Test it
             data_conv_q(1.0, output.Q_unit)
             
-        if has_converter == True and output.I_unit != '1/cm':
+        if has_converter and output.I_unit != '1/cm':
             data_conv_i = Converter('1/cm')
             # Test it
             data_conv_i(1.0, output.I_unit)
-         
-        for line in lines:
-            
-            # Find setup info line
-            if isInfo:
-                isInfo = False
-                line_toks = line.split()
-                # Wavelength in Angstrom
-                try:
-                    wavelength = float(line_toks[1])
-                except:
-                    msg = "IgorReader: can't read this file, missing wavelength"
-                    raise ValueError, msg
-                
-            #Find # of bins in a row assuming the detector is square.
-            if dataStarted == True:
-                try:
-                    value = float(line)
-                except:
-                    # Found a non-float entry, skip it
-                    continue
-                
-                # Get total bin number
-                
-            i_tot_row += 1
-        i_tot_row = math.ceil(math.sqrt(i_tot_row)) - 1
-        #print "i_tot", i_tot_row
-        size_x = i_tot_row  # 192#128
-        size_y = i_tot_row  # 192#128
-        output.data = numpy.zeros([size_x, size_y])
-        output.err_data = numpy.zeros([size_x, size_y])
-     
-        #Read Header and 2D data
-        for line in lines:
-            # Find setup info line
-            if isInfo:
-                isInfo = False
-                line_toks = line.split()
-                # Wavelength in Angstrom
-                try:
-                    wavelength = float(line_toks[1])
-                except:
-                    msg = "IgorReader: can't read this file, missing wavelength"
-                    raise ValueError, msg
-                # Distance in meters
-                try:
-                    distance = float(line_toks[3])
-                except:
-                    msg = "IgorReader: can't read this file, missing distance"
-                    raise ValueError, msg
-                
-                # Distance in meters
-                try:
-                    transmission = float(line_toks[4])
-                except:
-                    msg = "IgorReader: can't read this file, "
-                    msg += "missing transmission"
-                    raise ValueError, msg
-                                            
-            if line.count("LAMBDA") > 0:
-                isInfo = True
-                
-            # Find center info line
-            if isCenter:
-                isCenter = False
-                line_toks = line.split()
-                
-                # Center in bin number: Must substrate 1 because
-                #the index starts from 1
-                center_x = float(line_toks[0]) - 1
-                center_y = float(line_toks[1]) - 1
-
-            if line.count("BCENT") > 0:
-                isCenter = True
-                
-            # Find data start
-            if line.count("***")>0:
-                dataStarted = True
-                
-                # Check that we have all the info
-                if wavelength == None \
-                    or distance == None \
-                    or center_x == None \
-                    or center_y == None:
-                    msg = "IgorReader:Missing information in data file"
-                    raise ValueError, msg
-                
-            if dataStarted == True:
-                try:
-                    value = float(line)
-                except:
-                    # Found a non-float entry, skip it
-                    continue
-                
-                # Get bin number
-                if math.fmod(itot, i_tot_row) == 0:
-                    i_x = 0
-                    i_y += 1
-                else:
-                    i_x += 1
-                    
-                output.data[i_y][i_x] = value
-                ncounts += 1
-                
-                # Det 640 x 640 mm
-                # Q = 4pi/lambda sin(theta/2)
-                # Bin size is 0.5 cm 
-                #REmoved +1 from theta = (i_x-center_x+1)*0.5 / distance
-                # / 100.0 and 
-                #REmoved +1 from theta = (i_y-center_y+1)*0.5 /
-                # distance / 100.0
-                #ToDo: Need  complete check if the following
-                # covert process is consistent with fitting.py.
-                theta = (i_x - center_x) * 0.5 / distance / 100.0
-                qx = 4.0 * math.pi / wavelength * math.sin(theta/2.0)
-
-                if has_converter == True and output.Q_unit != '1/A':
-                    qx = data_conv_q(qx, units=output.Q_unit)
-
-                if xmin == None or qx < xmin:
-                    xmin = qx
-                if xmax == None or qx > xmax:
-                    xmax = qx
-                
-                theta = (i_y - center_y) * 0.5 / distance / 100.0
-                qy = 4.0 * math.pi / wavelength * math.sin(theta / 2.0)
-
-                if has_converter == True and output.Q_unit != '1/A':
-                    qy = data_conv_q(qy, units=output.Q_unit)
-                
-                if ymin == None or qy < ymin:
-                    ymin = qy
-                if ymax == None or qy > ymax:
-                    ymax = qy
-                
-                if not qx in x:
-                    x.append(qx)
-                if not qy in y:
-                    y.append(qy)
-                
-                itot += 1
-                  
-                  
+
+        data_row = 0
+        wavelength = distance = center_x = center_y = None
+        dataStarted = isInfo = isCenter = False
+
+        with open(filename, 'r') as f:
+            for line in f:
+                data_row += 1
+                # Find setup info line
+                if isInfo:
+                    isInfo = False
+                    line_toks = line.split()
+                    # Wavelength in Angstrom
+                    try:
+                        wavelength = float(line_toks[1])
+                    except ValueError:
+                        msg = "IgorReader: can't read this file, missing wavelength"
+                        raise ValueError(msg)
+                    # Distance in meters
+                    try:
+                        distance = float(line_toks[3])
+                    except ValueError:
+                        msg = "IgorReader: can't read this file, missing distance"
+                        raise ValueError(msg)
+
+                    # Distance in meters
+                    try:
+                        transmission = float(line_toks[4])
+                    except:
+                        msg = "IgorReader: can't read this file, "
+                        msg += "missing transmission"
+                        raise ValueError(msg)
+
+                if line.count("LAMBDA"):
+                    isInfo = True
+
+                # Find center info line
+                if isCenter:
+                    isCenter = False
+                    line_toks = line.split()
+
+                    # Center in bin number: Must subtract 1 because
+                    # the index starts from 1
+                    center_x = float(line_toks[0]) - 1
+                    center_y = float(line_toks[1]) - 1
+
+                if line.count("BCENT"):
+                    isCenter = True
+
+                # Find data start
+                if line.count("***"):
+                    # now have to continue to blank line
+                    dataStarted = True
+
+                    # Check that we have all the info
+                    if (wavelength is None
+                            or distance is None
+                            or center_x is None
+                            or center_y is None):
+                        msg = "IgorReader:Missing information in data file"
+                        raise ValueError(msg)
+
+                if dataStarted:
+                    if len(line.rstrip()):
+                        continue
+                    else:
+                        break
+
+        # The data is loaded in row major order (last index changing most
+        # rapidly). However, the original data is in column major order (first
+        # index changing most rapidly). The swap to column major order is done
+        # in reader2D_converter at the end of this method.
+        data = np.loadtxt(filename, skiprows=data_row)
+        size_x = size_y = int(np.rint(np.sqrt(data.size)))
+        output.data = np.reshape(data, (size_x, size_y))
+        output.err_data = np.zeros_like(output.data)
+
+        # Det 640 x 640 mm
+        # Q = 4 * pi/lambda * sin(theta/2)
+        # Bin size is 0.5 cm
+        # Removed +1 from theta = (i_x - center_x + 1)*0.5 / distance
+        # / 100.0 and
+        # Removed +1 from theta = (i_y - center_y + 1)*0.5 /
+        # distance / 100.0
+        # ToDo: Need  complete check if the following
+        # convert process is consistent with fitting.py.
+
+        # calculate qx, qy bin centers of each pixel in the image
+        theta = (np.arange(size_x) - center_x) * 0.5 / distance / 100.
+        qx = 4 * np.pi / wavelength * np.sin(theta/2)
+
+        theta = (np.arange(size_y) - center_y) * 0.5 / distance / 100.
+        qy = 4 * np.pi / wavelength * np.sin(theta/2)
+
+        if has_converter and output.Q_unit != '1/A':
+            qx = data_conv_q(qx, units=output.Q_unit)
+            qy = data_conv_q(qx, units=output.Q_unit)
+
+        xmax = np.max(qx)
+        xmin = np.min(qx)
+        ymax = np.max(qy)
+        ymin = np.min(qy)
+
+        # calculate edge offset in q.
         theta = 0.25 / distance / 100.0
-        xstep = 4.0 * math.pi / wavelength * math.sin(theta / 2.0)
+        xstep = 4.0 * np.pi / wavelength * np.sin(theta / 2.0)
         
         theta = 0.25 / distance / 100.0
-        ystep = 4.0 * math.pi/ wavelength * math.sin(theta / 2.0)
+        ystep = 4.0 * np.pi/ wavelength * np.sin(theta / 2.0)
         
         # Store all data ######################################
         # Store wavelength
-        if has_converter == True and output.source.wavelength_unit != 'A':
+        if has_converter and output.source.wavelength_unit != 'A':
             conv = Converter('A')
             wavelength = conv(wavelength, units=output.source.wavelength_unit)
@@ -246,5 +179,5 @@
 
         # Store distance
-        if has_converter == True and detector.distance_unit != 'm':
+        if has_converter and detector.distance_unit != 'm':
             conv = Converter('m')
             distance = conv(distance, units=detector.distance_unit)
@@ -254,7 +187,7 @@
         output.sample.transmission = transmission
         
-        # Store pixel size
+        # Store pixel size (mm)
         pixel = 5.0
-        if has_converter == True and detector.pixel_size_unit != 'mm':
+        if has_converter and detector.pixel_size_unit != 'mm':
             conv = Converter('mm')
             pixel = conv(pixel, units=detector.pixel_size_unit)
@@ -267,9 +200,9 @@
         
         # Store limits of the image (2D array)
-        xmin = xmin - xstep / 2.0
-        xmax = xmax + xstep / 2.0
-        ymin = ymin - ystep / 2.0
-        ymax = ymax + ystep / 2.0
-        if has_converter == True and output.Q_unit != '1/A':
+        xmin -= xstep / 2.0
+        xmax += xstep / 2.0
+        ymin -= ystep / 2.0
+        ymax += ystep / 2.0
+        if has_converter and output.Q_unit != '1/A':
             xmin = data_conv_q(xmin, units=output.Q_unit)
             xmax = data_conv_q(xmax, units=output.Q_unit)
@@ -282,6 +215,6 @@
         
         # Store x and y axis bin centers
-        output.x_bins = x
-        output.y_bins = y
+        output.x_bins = qx.tolist()
+        output.y_bins = qy.tolist()
         
         # Units
Index: test/corfunc/test/utest_corfunc.py
===================================================================
--- test/corfunc/test/utest_corfunc.py	(revision acefa2b7b00d8d908758f184828fbf18d106e742)
+++ test/corfunc/test/utest_corfunc.py	(revision 253eb6c67e1e6610e872a17727530be787222114)
@@ -8,5 +8,5 @@
 from sas.sascalc.corfunc.corfunc_calculator import CorfuncCalculator
 from sas.sascalc.dataloader.data_info import Data1D
-import matplotlib.pyplot as plt
+
 
 class TestCalculator(unittest.TestCase):
@@ -69,5 +69,4 @@
         self.assertLess(abs(params['max']-75), 2.5) # L_p ~= 75
 
-
     # Ensure tests are ran in correct order;
     # Each test depends on the one before it
Index: test/sasdataloader/test/utest_abs_reader.py
===================================================================
--- test/sasdataloader/test/utest_abs_reader.py	(revision 5f26aa48a5e34765d73c20fa10024d5319567854)
+++ test/sasdataloader/test/utest_abs_reader.py	(revision 36d69e1ba7246dedeb4f530e6542511304379c86)
@@ -4,6 +4,8 @@
 
 import unittest
-import numpy, math
-from sas.sascalc.dataloader.loader import  Loader
+import math
+import numpy as np
+from sas.sascalc.dataloader.loader import Loader
+from sas.sascalc.dataloader.readers.IgorReader import Reader as IgorReader
 from sas.sascalc.dataloader.data_info import Data1D
  
@@ -86,6 +88,9 @@
     
     def setUp(self):
-        self.data = Loader().load("MAR07232_rest.ASC")
-        
+        # the IgorReader should be able to read this filetype
+        # if it can't, stop here.
+        reader = IgorReader()
+        self.data = reader.read("MAR07232_rest.ASC")
+
     def test_igor_checkdata(self):
         """
@@ -108,14 +113,25 @@
         
         self.assertEqual(self.data.detector[0].beam_center_unit, 'mm')
-        center_x = (68.76-1)*5.0
-        center_y = (62.47-1)*5.0
+        center_x = (68.76 - 1)*5.0
+        center_y = (62.47 - 1)*5.0
         self.assertEqual(self.data.detector[0].beam_center.x, center_x)
         self.assertEqual(self.data.detector[0].beam_center.y, center_y)
         
         self.assertEqual(self.data.I_unit, '1/cm')
-        self.assertEqual(self.data.data[0], 0.279783)
-        self.assertEqual(self.data.data[1], 0.28951)
-        self.assertEqual(self.data.data[2], 0.167634)
-        
+        # 3 points should be suffcient to check that the data is in column
+        # major order.
+        np.testing.assert_almost_equal(self.data.data[0:3],
+                                       [0.279783, 0.28951, 0.167634])
+        np.testing.assert_almost_equal(self.data.qx_data[0:3],
+                                       [-0.01849072, -0.01821785, -0.01794498])
+        np.testing.assert_almost_equal(self.data.qy_data[0:3],
+                                       [-0.01677435, -0.01677435, -0.01677435])
+
+    def test_generic_loader(self):
+        # the generic loader should direct the file to IgorReader as well
+        data = Loader().load("MAR07232_rest.ASC")
+        self.assertEqual(data.meta_data['loader'], "IGOR 2D")
+
+
 class danse_reader(unittest.TestCase):
     
@@ -313,7 +329,7 @@
         from sas.sascalc.dataloader.readers.cansas_reader import Reader
         r = Reader()
-        x = numpy.ones(5)
-        y = numpy.ones(5)
-        dy = numpy.ones(5)
+        x = np.ones(5)
+        y = np.ones(5)
+        dy = np.ones(5)
         
         filename = "write_test.xml"
