Revision: 6373
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6373&view=rev
Author: jswhit
Date: 2008-11-07 16:53:31 +0000 (Fri, 07 Nov 2008)
Log Message:
-----------
update to version 1.0.6
Modified Paths:
--------------
trunk/toolkits/basemap/lib/mpl_toolkits/basemap/pupynere.py
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/pupynere.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/pupynere.py 2008-11-07
14:52:04 UTC (rev 6372)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/pupynere.py 2008-11-07
16:53:31 UTC (rev 6373)
@@ -127,9 +127,10 @@
attribute of the ``netcdf_file`` object.
"""
- def __init__(self, filename, mode='r', maskandscale=False):
+ def __init__(self, filename, mode='r', mmap=True, maskandscale=False):
+ self.filename = filename
+ self.use_mmap = mmap
self._maskandscale = maskandscale
- self.filename = filename
assert mode in 'rw', "Mode must be either 'r' or 'w'."
self.mode = mode
@@ -202,7 +203,7 @@
def _write_numrecs(self):
# Get highest record count from all record variables.
for var in self.variables.values():
- if not var._shape[0] and len(var.data) > self._recs:
+ if var.isrec and len(var.data) > self._recs:
self.__dict__['_recs'] = len(var.data)
self._pack_int(self._recs)
@@ -210,8 +211,9 @@
if self.dimensions:
self.fp.write(NC_DIMENSION)
self._pack_int(len(self.dimensions))
- for name, length in self.dimensions.items():
+ for name in self._dims:
self._pack_string(name)
+ length = self.dimensions[name]
self._pack_int(length or 0) # replace None with 0 for record
dimension
else:
self.fp.write(ABSENT)
@@ -236,7 +238,7 @@
# Sort variables non-recs first, then recs.
variables = self.variables.items()
- variables.sort(key=lambda (k, v): v._shape and v._shape[0] is not
None)
+ variables.sort(key=lambda (k, v): v._shape and not v.isrec)
variables.reverse()
variables = [k for (k, v) in variables]
@@ -247,7 +249,7 @@
# each record variable, so we can calculate recsize.
self.__dict__['_recsize'] = sum([
var._vsize for var in self.variables.values()
- if var._shape[0] is None])
+ if var.isrec])
# Set the data for all variables.
for name in variables:
self._write_var_data(name)
@@ -268,13 +270,16 @@
nc_type = REVERSE[var.typecode()]
self.fp.write(nc_type)
- if var._shape[0]:
+ if not var.isrec:
vsize = var.data.size * var.data.itemsize
vsize += -vsize % 4
else: # record variable
- vsize = var.data[0].size * var.data.itemsize
+ try:
+ vsize = var.data[0].size * var.data.itemsize
+ except IndexError:
+ vsize = 0
rec_vars = len([var for var in self.variables.values()
- if var._shape[0] is None])
+ if var.isrec])
if rec_vars > 1:
vsize += -vsize % 4
self.variables[name].__dict__['_vsize'] = vsize
@@ -294,7 +299,7 @@
self.fp.seek(the_beguine)
# Write data.
- if var._shape[0]:
+ if not var.isrec:
self.fp.write(var.data.tostring())
count = var.data.size * var.data.itemsize
self.fp.write('0' * (var._vsize - count))
@@ -405,9 +410,16 @@
# Data will be set later.
data = None
else:
- mm = mmap(self.fp.fileno(), begin_+vsize, access=ACCESS_READ)
- data = ndarray.__new__(ndarray, shape, dtype=dtype_,
- buffer=mm, offset=begin_, order=0)
+ if self.use_mmap:
+ mm = mmap(self.fp.fileno(), begin_+vsize,
access=ACCESS_READ)
+ data = ndarray.__new__(ndarray, shape, dtype=dtype_,
+ buffer=mm, offset=begin_, order=0)
+ else:
+ pos = self.fp.tell()
+ self.fp.seek(begin_)
+ data = fromstring(self.fp.read(vsize), dtype=dtype_)
+ data.shape = shape
+ self.fp.seek(pos)
# Add variable.
self.variables[name] = netcdf_variable(
@@ -420,9 +432,16 @@
dtypes['formats'] = dtypes['formats'][:1]
# Build rec array.
- mm = mmap(self.fp.fileno(), begin+self._recs*self._recsize,
access=ACCESS_READ)
- rec_array = ndarray.__new__(ndarray, (self._recs,), dtype=dtypes,
- buffer=mm, offset=begin, order=0)
+ if self.use_mmap:
+ mm = mmap(self.fp.fileno(), begin+self._recs*self._recsize,
access=ACCESS_READ)
+ rec_array = ndarray.__new__(ndarray, (self._recs,),
dtype=dtypes,
+ buffer=mm, offset=begin, order=0)
+ else:
+ pos = self.fp.tell()
+ self.fp.seek(begin)
+ rec_array = fromstring(self.fp.read(self._recs*self._recsize),
dtype=dtypes)
+ rec_array.shape = (self._recs,)
+ self.fp.seek(pos)
for var in rec_vars:
self.variables[var].__dict__['data'] = rec_array[var]
@@ -546,6 +565,10 @@
self.__dict__[attr] = value
@property
+ def isrec(self):
+ return self.data.shape and not self._shape[0]
+
+ @property
def shape(self):
return self.data.shape
@@ -569,7 +592,7 @@
if self._maskandscale:
data = _maskandscale(self,data)
# Expand data for record vars?
- if not self._shape[0]:
+ if self.isrec:
if isinstance(index, tuple):
rec_index = index[0]
else:
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins