00001 """ numerix imports either Numeric or numarray based on various selectors. 0. If the value "--numpy","--numarray" or "--Numeric" is specified on the command line, then numerix imports the specified array package. 1. The value of numerix in matplotlibrc: either Numeric or numarray 2. If none of the above is done, the default array package is Numeric. Because the matplotlibrc always provides *some* value for numerix (it has it's own system of default values), this default is most likely never used. To summarize: the commandline is examined first, the rc file second, and the default array package is Numeric. """ import sys, os, struct from matplotlib import rcParams, verbose which = None, None use_maskedarray = None # First, see if --numarray or --Numeric was specified on the command # line: for a in sys.argv: if a in ["--Numeric", "--numeric", "--NUMERIC", "--Numarray", "--numarray", "--NUMARRAY", "--NumPy", "--numpy", "--NUMPY", "--Numpy", ]: which = a[2:], "command line" if a == "--maskedarray": use_maskedarray = True if a == "--ma": use_maskedarray = False try: del a except NameError: pass if which[0] is None: try: # In theory, rcParams always has *some* value for numerix. which = rcParams['numerix'], "rc" except KeyError: pass if use_maskedarray is None: try: use_maskedarray = rcParams['maskedarray'] except KeyError: use_maskedarray = False # If all the above fail, default to Numeric. Most likely not used. if which[0] is None: which = "numeric", "defaulted" which = which[0].strip().lower(), which[1] if which[0] not in ["numeric", "numarray", "numpy"]: raise ValueError("numerix selector must be either 'Numeric', 'numarray', or 'numpy' but the value obtained from the %s was '%s'." % (which[1], which[0])) if which[0] == "numarray": import warnings warnings.warn("numarray use as a numerix backed for matplotlib is deprecated", DeprecationWarning, stacklevel=1) #from na_imports import * from numarray import * from _na_imports import nx, inf, infinity, Infinity, Matrix, isnan, all from numarray.numeric import nonzero from numarray.convolve import cross_correlate, convolve import numarray version = 'numarray %s'%numarray.__version__ nan = struct.unpack('d', struct.pack('Q', 0x7ff8000000000000))[0] elif which[0] == "numeric": import warnings warnings.warn("Numeric use as a numerix backed for matplotlib is deprecated", DeprecationWarning, stacklevel=1) #from nc_imports import * from Numeric import * from _nc_imports import nx, inf, infinity, Infinity, isnan, all, any from Matrix import Matrix import Numeric version = 'Numeric %s'%Numeric.__version__ nan = struct.unpack('d', struct.pack('Q', 0x7ff8000000000000))[0] elif which[0] == "numpy": try: import numpy.oldnumeric as numpy from numpy.oldnumeric import * except ImportError: import numpy from numpy import * print 'except asarray', asarray from _sp_imports import nx, infinity, rand, randn, isnan, all, any from _sp_imports import UInt8, UInt16, UInt32, Infinity try: from numpy.oldnumeric.matrix import Matrix except ImportError: Matrix = matrix version = 'numpy %s' % numpy.__version__ from numpy import nan else: raise RuntimeError("invalid numerix selector") # Some changes are only applicable to the new numpy: if (which[0] == 'numarray' or which[0] == 'numeric'): from mlab import amin, amax newaxis = NewAxis def typecode(a): return a.typecode() def iscontiguous(a): return a.iscontiguous() def byteswapped(a): return a.byteswapped() def itemsize(a): return a.itemsize() def angle(a): return arctan2(a.imag, a.real) else: # We've already checked for a valid numerix selector, # so assume numpy. from mlab import amin, amax newaxis = NewAxis from numpy import angle def typecode(a): return a.dtype.char def iscontiguous(a): return a.flags.contiguous def byteswapped(a): return a.byteswap() def itemsize(a): return a.itemsize verbose.report('numerix %s'%version) # a bug fix for blas numeric suggested by Fernando Perez matrixmultiply=dot asum = sum 00146 def _import_fail_message(module, version): """Prints a message when the array package specific version of an extension fails to import correctly. """ _dict = { "which" : which[0], "module" : module, "specific" : version + module } print """ The import of the %(which)s version of the %(module)s module, %(specific)s, failed. This is is either because %(which)s was unavailable when matplotlib was compiled, because a dependency of %(specific)s could not be satisfied, or because the build flag for this module was turned off in setup.py. If it appears that %(specific)s was not built, make sure you have a working copy of %(which)s and then re-install matplotlib. Otherwise, the following traceback gives more details:\n""" % _dict g = globals() l = locals() __import__('ma', g, l) __import__('fft', g, l) __import__('linear_algebra', g, l) __import__('random_array', g, l) __import__('mlab', g, l) la = linear_algebra ra = random_array