def __setattr__(self, attr, val): newattr = attr not in self.__dict__ try: # Is attr a generic attribute ? ret = object.__setattr__(self, attr, val) except: # Not a generic attribute: exit if it's not a valid field fielddict = self.dtype.names or {} if attr not in fielddict: exctype, value = sys.exc_info()[:2] raise exctype, value else: if attr not in list(self.dtype.names) + ["_dates", "_mask"]: return ret if newattr: # We just added this one try: # or this setattr worked on an internal # attribute. object.__delattr__(self, attr) except: return ret # Case #1.: Basic field ............ base_fmask = self._fieldmask _names = self.dtype.names if attr in _names: fval = filled(val) mval = getmaskarray(val) if self._hardmask: mval = mask_or(mval, base_fmask.__getattr__(attr)) self._data.__setattr__(attr, fval) base_fmask.__setattr__(attr, mval) return elif attr == "_mask": if self._hardmask: val = make_mask(val) if val is not nomask: # mval = getmaskarray(val) for k in _names: m = mask_or(val, base_fmask.__getattr__(k)) base_fmask.__setattr__(k, m) else: mval = getmaskarray(val) for k in _names: base_fmask.__setattr__(k, mval) return
def __init__(self, x, y): x = marray(x, copy=False, subok=True, dtype=float_, order='F').ravel() y = marray(y, copy=False, subok=True, dtype=float_, order='F').ravel() if x.size != y.size: msg = "Incompatible size between observations (%s) and response (%s)!" raise ValueError(msg % (x.size, y.size)) idx = x.argsort() self._x = x[idx] self._y = y[idx] self._mask = mask_or(self._x._mask, self._y._mask, copy=False, small_mask=False)