[Scipy-svn] r2693 - trunk/Lib/io

scipy-svn at scipy.org scipy-svn at scipy.org
Thu Feb 8 12:07:55 EST 2007


Author: matthew.brett at gmail.com
Date: 2007-02-08 11:07:46 -0600 (Thu, 08 Feb 2007)
New Revision: 2693

Modified:
   trunk/Lib/io/mio.py
   trunk/Lib/io/mio4.py
   trunk/Lib/io/mio5.py
   trunk/Lib/io/miobase.py
   trunk/Lib/io/npfile.py
Log:
Clean up namespace imports; this removesfromfile/tofile from io namespace - they are from numpy

Modified: trunk/Lib/io/mio.py
===================================================================
--- trunk/Lib/io/mio.py	2007-02-08 13:48:57 UTC (rev 2692)
+++ trunk/Lib/io/mio.py	2007-02-08 17:07:46 UTC (rev 2693)
@@ -7,10 +7,10 @@
 import os
 import sys
 
-from numpy import *
+from scipy.io.mio4 import MatFile4Reader, MatFile4Writer
+from scipy.io.mio5 import MatFile5Reader, MatFile5Writer
 
-from mio4 import MatFile4Reader, MatFile4Writer
-from mio5 import MatFile5Reader, MatFile5Writer
+__all__ = ['find_mat_file','mat_reader_factory','loadmat', 'savemat']
 
 def find_mat_file(file_name, appendmat=True):
     ''' Try to find .mat file on system path

Modified: trunk/Lib/io/mio4.py
===================================================================
--- trunk/Lib/io/mio4.py	2007-02-08 13:48:57 UTC (rev 2692)
+++ trunk/Lib/io/mio4.py	2007-02-08 17:07:46 UTC (rev 2693)
@@ -1,9 +1,9 @@
 ''' Classes for read / write of matlab (TM) 4 files
 '''
 
-from numpy import *
+import numpy as N
 
-from miobase import *
+from scipy.io.miobase import *
 
 miDOUBLE = 0
 miSINGLE = 1
@@ -76,7 +76,7 @@
         header['mclass'] = T
         header['dims'] = (data['mrows'], data['ncols'])
         header['is_complex'] = data['imagf'] == 1
-        remaining_bytes = header['dtype'].itemsize * product(header['dims'])
+        remaining_bytes = header['dtype'].itemsize * N.product(header['dims'])
         if header['is_complex'] and not header['mclass'] == mxSPARSE_CLASS:
             remaining_bytes *= 2
         next_pos = self.mat_stream.tell() + remaining_bytes
@@ -109,7 +109,7 @@
         num_bytes = dt.itemsize
         for d in dims:
             num_bytes *= d
-        arr = ndarray(shape=dims,
+        arr = N.ndarray(shape=dims,
                       dtype=dt,
                       buffer=self.mat_stream.read(num_bytes),
                       order='F')
@@ -122,9 +122,9 @@
     def __init__(self, array_reader, header):
         super(Mat4FullGetter, self).__init__(array_reader, header)
         if header['is_complex']:
-            self.mat_dtype = dtype(complex128)
+            self.mat_dtype = N.dtype(N.complex128)
         else:
-            self.mat_dtype = dtype(float64)
+            self.mat_dtype = N.dtype(N.float64)
         
     def get_raw_array(self):
         if self.header['is_complex']:
@@ -137,12 +137,12 @@
 
 class Mat4CharGetter(Mat4MatrixGetter):
     def get_raw_array(self):
-        arr = self.read_array().astype(uint8)
+        arr = self.read_array().astype(N.uint8)
         # ascii to unicode
         S = arr.tostring().decode('ascii')
-        return ndarray(shape=self.header['dims'],
-                       dtype=dtype('U1'),
-                       buffer = array(S)).copy()
+        return N.ndarray(shape=self.header['dims'],
+                       dtype=N.dtype('U1'),
+                       buffer = N.array(S)).copy()
 
 
 class Mat4SparseGetter(Mat4MatrixGetter):
@@ -166,7 +166,7 @@
         res = self.read_array()
         tmp = res[:-1,:]
         dims = res[-1,0:2]
-        ij = transpose(tmp[:,0:2]) - 1 # for 1-based indexing
+        ij = N.transpose(tmp[:,0:2]) - 1 # for 1-based indexing
         vals = tmp[:,2]
         if res.shape[1] == 4:
             vals = vals + res[:-1,3] * 1j
@@ -196,15 +196,15 @@
     def format_looks_right(self):
         # Mat4 files have a zero somewhere in first 4 bytes
         self.mat_stream.seek(0)
-        mopt_bytes = ndarray(shape=(4,),
-                             dtype=uint8,
+        mopt_bytes = N.ndarray(shape=(4,),
+                             dtype=N.uint8,
                              buffer = self.mat_stream.read(4))
         self.mat_stream.seek(0)
         return 0 in mopt_bytes
     
     def guess_byte_order(self):
         self.mat_stream.seek(0)
-        mopt = self.read_dtype(dtype('i4'))
+        mopt = self.read_dtype(N.dtype('i4'))
         self.mat_stream.seek(0)
         if mopt < 0 or mopt > 5000:
             return ByteOrder.swapped_code
@@ -222,7 +222,7 @@
         '''
         if dims is None:
             dims = self.arr.shape
-        header = empty((), mdtypes_template['header'])
+        header = N.empty((), mdtypes_template['header'])
         M = not ByteOrder.little_endian
         O = 0
         header['mopt'] = (M * 1000 +
@@ -237,10 +237,10 @@
         self.write_string(self.name + '\0')
         
     def arr_to_2d(self):
-        self.arr = atleast_2d(self.arr)
+        self.arr = N.atleast_2d(self.arr)
         dims = self.arr.shape
         if len(dims) > 2:
-            dims = [product(dims[:-1]), dims[-1]]
+            dims = [N.product(dims[:-1]), dims[-1]]
             self.arr = reshape(self.arr, dims)
             
     def write(self):
@@ -280,12 +280,12 @@
                           T=mxCHAR_CLASS)
         if self.arr.dtype.kind == 'U':
             # Recode unicode to ascii
-            n_chars = product(dims)
-            st_arr = ndarray(shape=(),
+            n_chars = N.product(dims)
+            st_arr = N.ndarray(shape=(),
                              dtype=self.arr_dtype_number(n_chars),
                              buffer=self.arr)
             st = st_arr.item().encode('ascii')
-            self.arr = ndarray(shape=dims, dtype='S1', buffer=st)
+            self.arr = N.ndarray(shape=dims, dtype='S1', buffer=st)
         self.write_bytes(self.arr)
 
 
@@ -296,9 +296,9 @@
         See docstring for Mat4SparseGetter
         '''
         imagf = self.arr.dtype.kind == 'c'
-        N = self.arr.nnz
-        ijd = zeros((N+1, 3+imagf), dtype='f8')
-        for i in range(N):
+        nnz = self.arr.nnz
+        ijd = N.zeros((nnz+1, 3+imagf), dtype='f8')
+        for i in range(nnz):
             ijd[i,0], ijd[i,1] = self.arr.rowcol(i)
         ijd[:-1,0:2] += 1 # 1 based indexing
         if imagf:
@@ -322,13 +322,13 @@
     if have_sparse:
         if scipy.sparse.issparse(arr):
             return Mat4SparseWriter(stream, arr, name)
-    arr = array(arr)
+    arr = N.array(arr)
     dtt = arr.dtype.type
-    if dtt is object_:
+    if dtt is N.object_:
         raise TypeError, 'Cannot save object arrays in Mat4'
-    elif dtt is void:
+    elif dtt is N.void:
         raise TypeError, 'Cannot save void type arrays'
-    elif dtt in (unicode_, string_):
+    elif dtt in (N.unicode_, N.string_):
         return Mat4CharWriter(stream, arr, name)
     else:
         return Mat4NumericWriter(stream, arr, name)

Modified: trunk/Lib/io/mio5.py
===================================================================
--- trunk/Lib/io/mio5.py	2007-02-08 13:48:57 UTC (rev 2692)
+++ trunk/Lib/io/mio5.py	2007-02-08 17:07:46 UTC (rev 2693)
@@ -29,9 +29,9 @@
 import zlib
 from copy import copy as pycopy
 from cStringIO import StringIO
-from numpy import *
+import numpy as N
 
-from miobase import *
+from scipy.io.miobase import *
 
 try:  # Python 2.3 support
     from sets import Set as set
@@ -154,7 +154,7 @@
 
     def read_element(self, copy=True):
         raw_tag = self.mat_stream.read(8)
-        tag = ndarray(shape=(),
+        tag = N.ndarray(shape=(),
                       dtype=self.dtypes['tag_full'],
                       buffer = raw_tag)
         mdtype = tag['mdtype']
@@ -165,7 +165,7 @@
             mdtype = mdtype & 0xFFFF
             dt = self.dtypes[mdtype]
             el_count = byte_count / dt.itemsize
-            return ndarray(shape=(el_count,),
+            return N.ndarray(shape=(el_count,),
                            dtype=dt,
                            buffer=raw_tag[4:])
         byte_count = tag['byte_count']
@@ -180,7 +180,7 @@
         else: # numeric data
             dt = self.dtypes[mdtype]
             el_count = byte_count / dt.itemsize
-            el = ndarray(shape=(el_count,),
+            el = N.ndarray(shape=(el_count,),
                          dtype=dt,
                          buffer=self.mat_stream.read(byte_count))
             if copy:
@@ -285,7 +285,7 @@
         self.mat_dtype = 'f8'
     
     def get_raw_array(self):
-        return array([[]])
+        return N.array([[]])
 
 
 class Mat5NumericMatrixGetter(Mat5MatrixGetter):
@@ -293,7 +293,7 @@
     def __init__(self, array_reader, header):
         super(Mat5NumericMatrixGetter, self).__init__(array_reader, header)
         if header['is_logical']:
-            self.mat_dtype = dtype('bool')
+            self.mat_dtype = N.dtype('bool')
         else:
             self.mat_dtype = self.class_dtypes[header['mclass']]
 
@@ -305,7 +305,7 @@
             res = res + (res_j * 1j)
         else:
             res = self.read_element()
-        return ndarray(shape=self.header['dims'],
+        return N.ndarray(shape=self.header['dims'],
                        dtype=res.dtype,
                        buffer=res,
                        order='F')
@@ -334,14 +334,14 @@
         stored in column order, this gives the column corresponding to
         each rowind
         '''
-        cols = empty((len(res)), dtype=rowind.dtype)
-        col_counts = diff(colind)
+        cols = N.empty((len(res)), dtype=rowind.dtype)
+        col_counts = N.diff(colind)
         start_row = 0
-        for i in where(col_counts)[0]:
+        for i in N.where(col_counts)[0]:
             end_row = start_row + col_counts[i]
             cols[start_row:end_row] = i
             start_row = end_row
-        ij = vstack((rowind[:len(res)], cols))
+        ij = N.vstack((rowind[:len(res)], cols))
         if have_sparse:
             result = scipy.sparse.csc_matrix((res,ij),
                                              self.header['dims'])
@@ -354,19 +354,19 @@
     def get_raw_array(self):
         res = self.read_element()
         # Convert non-string types to unicode
-        if isinstance(res, ndarray):
-            if res.dtype.type == uint16:
+        if isinstance(res, N.ndarray):
+            if res.dtype.type == N.uint16:
                 codec = miUINT16_codec
                 if self.codecs['uint16_len'] == 1:
-                    res = res.astype(uint8)
-            elif res.dtype.type in (uint8, int8):
+                    res = res.astype(N.uint8)
+            elif res.dtype.type in (N.uint8, N.int8):
                 codec = 'ascii'
             else:
                 raise TypeError, 'Did not expect type %s' % res.dtype
             res = res.tostring().decode(codec)
-        return ndarray(shape=self.header['dims'],
-                       dtype=dtype('U1'),
-                       buffer=array(res),
+        return N.ndarray(shape=self.header['dims'],
+                       dtype=N.dtype('U1'),
+                       buffer=N.array(res),
                        order='F').copy()
 
 
@@ -374,12 +374,11 @@
     def get_raw_array(self):
         # Account for fortran indexing of cells
         tupdims = tuple(self.header['dims'][::-1])
-        length = product(tupdims)
-        result = empty(length, dtype=object)
+        length = N.product(tupdims)
+        result = N.empty(length, dtype=object)
         for i in range(length):
             result[i] = self.get_item()
-        result = transpose(reshape(result,tupdims))
-        return result
+        return result.reshape(tupdims).T
 
     def get_item(self):
         return self.read_element()
@@ -516,8 +515,8 @@
     def format_looks_right(self):
         # Mat4 files have a zero somewhere in first 4 bytes
         self.mat_stream.seek(0)
-        mopt_bytes = ndarray(shape=(4,),
-                             dtype=uint8,
+        mopt_bytes = N.ndarray(shape=(4,),
+                             dtype=N.uint8,
                              buffer = self.mat_stream.read(4))
         self.mat_stream.seek(0)
         return 0 not in mopt_bytes
@@ -525,7 +524,7 @@
 
 class Mat5MatrixWriter(MatStreamWriter):
 
-    mat_tag = zeros((), mdtypes_template['tag_full'])
+    mat_tag = N.zeros((), mdtypes_template['tag_full'])
     mat_tag['mdtype'] = miMATRIX
 
     def __init__(self, file_stream, arr, name, is_global=False):
@@ -555,14 +554,14 @@
         self._mat_tag_pos = self.file_stream.tell()
         self.write_dtype(self.mat_tag)
         # write array flags (complex, global, logical, class, nzmax)
-        af = zeros((), mdtypes_template['array_flags'])
+        af = N.zeros((), mdtypes_template['array_flags'])
         af['data_type'] = miUINT32
         af['byte_count'] = 8
         flags = is_complex << 3 | is_global << 2 | is_logical << 1
         af['flags_class'] = mclass | flags << 8
         af['nzmax'] = nzmax
         self.write_dtype(af)
-        self.write_element(array(self.arr.shape, dtype='i4'))
+        self.write_element(N.array(self.arr.shape, dtype='i4'))
         self.write_element(self.name)
 
     def update_matrix_tag(self):
@@ -598,12 +597,12 @@
                           T=mxCHAR_CLASS)
         if self.arr.dtype.kind == 'U':
             # Recode unicode to ascii
-            n_chars = product(dims)
-            st_arr = ndarray(shape=(),
+            n_chars = N.product(dims)
+            st_arr = N.ndarray(shape=(),
                              dtype=self.arr_dtype_number(n_chars),
                              buffer=self.arr)
             st = st_arr.item().encode('ascii')
-            self.arr = ndarray(shape=dims, dtype='S1', buffer=st)
+            self.arr = N.ndarray(shape=dims, dtype='S1', buffer=st)
         self.write_bytes(self.arr)
 
 
@@ -615,7 +614,7 @@
         '''
         imagf = self.arr.dtype.kind == 'c'
         N = self.arr.nnz
-        ijd = zeros((N+1, 3+imagf), dtype='f8')
+        ijd = N.zeros((N+1, 3+imagf), dtype='f8')
         for i in range(N):
             ijd[i,0], ijd[i,1] = self.arr.rowcol(i)
         ijd[:-1,0:2] += 1 # 1 based indexing
@@ -649,7 +648,7 @@
         if have_sparse:
             if scipy.sparse.issparse(arr):
                 return Mat5SparseWriter(self.stream, arr, name, is_global)
-        arr = array(arr)
+        arr = N.array(arr)
         if arr.dtype.hasobject:
             types, arr_type = classify_mobjects(arr)
             if arr_type == 'c':
@@ -680,13 +679,13 @@
                         o  - object array
         '''
         N = objarr.size
-        types = empty((N,), dtype='S1')
+        types = N.empty((N,), dtype='S1')
         types[:] = 'i'
         type_set = set()
         flato = objarr.flat
         for i in range(N):
             obj = flato[i]
-            if isinstance(obj, ndarray):
+            if isinstance(obj, N.ndarray):
                 types[i] = 'a'
                 continue
             try:
@@ -743,7 +742,7 @@
                 ).write()
             if self.do_compression:
                 str = zlib.compress(stream.getvalue())
-                tag = empty((), mdtypes_template['tag_full'])
+                tag = N.empty((), mdtypes_template['tag_full'])
                 tag['mdtype'] = miCOMPRESSED
                 tag['byte_count'] = len(str)
                 self.file_stream.write(tag.tostring() + str)

Modified: trunk/Lib/io/miobase.py
===================================================================
--- trunk/Lib/io/miobase.py	2007-02-08 13:48:57 UTC (rev 2692)
+++ trunk/Lib/io/miobase.py	2007-02-08 17:07:46 UTC (rev 2693)
@@ -6,7 +6,7 @@
 
 import sys
 
-from numpy import *
+import numpy as N
 
 try:
     import scipy.sparse
@@ -71,10 +71,10 @@
         a_dtype is assumed to be correct endianness
         '''
         num_bytes = a_dtype.itemsize
-        arr = ndarray(shape=(),
-                      dtype=a_dtype,
-                      buffer=self.mat_stream.read(num_bytes),
-                      order='F')
+        arr = N.ndarray(shape=(),
+                        dtype=a_dtype,
+                        buffer=self.mat_stream.read(num_bytes),
+                        order='F')
         return arr
 
     def read_ztstring(self, num_bytes):
@@ -184,7 +184,7 @@
     def convert_dtypes(self, dtype_template):
         dtypes = dtype_template.copy()
         for k in dtypes:
-            dtypes[k] = dtype(dtypes[k]).newbyteorder(
+            dtypes[k] = N.dtype(dtypes[k]).newbyteorder(
                 self.order_code)
         return dtypes
     
@@ -227,10 +227,10 @@
                 if len(dims) >= 2: # return array of strings
                     dtt = self.order_code + 'U'
                     n_dims = dims[:-1]
-                    str_arr = reshape(arr,
-                                    (small_product(n_dims),
-                                     dims[-1]))
-                    arr = empty(n_dims, dtype=object)
+                    str_arr = arr.reshape(
+                        (small_product(n_dims),
+                         dims[-1]))
+                    arr = N.empty(n_dims, dtype=object)
                     for i in range(0, n_dims[-1]):
                         arr[...,i] = self.chars_to_str(str_arr[i])
                 else: # return string
@@ -241,9 +241,9 @@
                 if getter.mat_dtype is not None:
                     arr = arr.astype(getter.mat_dtype)
             if self.squeeze_me:
-                arr = squeeze(arr)
+                arr = N.squeeze(arr)
                 if not arr.size:
-                    arr = array([])
+                    arr = N.array([])
                 elif not arr.shape: # 0d coverted to scalar
                     arr = arr.item()
             return arr
@@ -251,8 +251,8 @@
 
     def chars_to_str(self, str_arr):
         ''' Convert string array to string '''
-        dt = dtype('U' + str(small_product(str_arr.shape)))
-        return ndarray(shape=(),
+        dt = N.dtype('U' + str(small_product(str_arr.shape)))
+        return N.ndarray(shape=(),
                        dtype = dt,
                        buffer = str_arr.copy()).item()
 
@@ -354,7 +354,7 @@
         
     def arr_dtype_number(self, num):
         ''' Return dtype for given number of items per element'''
-        return dtype(self.arr.dtype.str[:2] + str(num))
+        return N.dtype(self.arr.dtype.str[:2] + str(num))
 
     def arr_to_chars(self):
         ''' Convert string array to char array '''
@@ -362,7 +362,7 @@
         if not dims:
             dims = [1]
         dims.append(int(self.arr.dtype.str[2:]))
-        self.arr = ndarray(shape=dims,
+        self.arr = N.ndarray(shape=dims,
                            dtype=self.arr_dtype_number(1),
                            buffer=self.arr)
 

Modified: trunk/Lib/io/npfile.py
===================================================================
--- trunk/Lib/io/npfile.py	2007-02-08 13:48:57 UTC (rev 2692)
+++ trunk/Lib/io/npfile.py	2007-02-08 17:07:46 UTC (rev 2693)
@@ -8,6 +8,8 @@
 
 import numpy as N
 
+__all__ = ['sys_endian_code', 'npfile']
+
 sys_endian_code = (sys.byteorder == 'little') and '<' or '>'
 
 class npfile(object):




More information about the Scipy-svn mailing list