コード例 #1
0
ファイル: dim.py プロジェクト: jsonbao/hftools
 def outputformat(self):
     if self._outputformat is None:
         if is_integer(self._data[0]):
             return "%d"
         elif is_numlike(self._data[0]):
             return "%.16e"
         else:
             return "%s"
     return self._outputformat
コード例 #2
0
 def outputformat(self):
     if self._outputformat is None:
         if is_integer(self._data[0]):
             return "%d"
         elif is_numlike(self._data[0]):
             return "%.16e"
         else:
             return "%s"
     return self._outputformat
コード例 #3
0
    def __new__(subtype, data, dims=None, dtype=None, copy=True, order=None,
                subok=False, ndmin=0, unit=None, outputformat=None, info=None):

        if info is not None:
            deprecate("hfarray, use dims not info")
            if dims is not None:
                raise ValueError("Can not specify both info and dims")
            dims = info

        # Make sure we are working with an array, and copy the data
        # if requested
        subarr = np.array(data, dtype=dtype, copy=copy,
                          order=order, subok=subok,
                          ndmin=ndmin)

        # Transform 'subarr' from an ndarray to our new subclass.
        subarr = subarr.view(subtype)

        # Use the specified 'dims' parameter if given
        if dims is None:
            if hasattr(data, 'dims'):
                dims = tuple(data.dims)
            elif subarr.ndim == 0:
                dims = tuple()
            elif len(subarr.shape) <= len(subtype.default_dim):
                dims = tuple(x.__class__(x.name, range(size))
                             for (x, size) in zip(subtype.default_dim,
                                                  subarr.shape))
            else:
                msg = ("On creation of %s *dims* "
                       "must be specified" % subtype.__name__)
                raise DimensionMismatchError(msg)

        subarr._dims = Dims(dims)
        # Check to see that dims matches shape
        subarr.verify_dimension()
        if outputformat is not None:
            subarr.outputformat = outputformat
        elif hasattr(data, "outputformat"):
            subarr.outputformat = data.outputformat
        else:
            if is_integer(subarr):
                subarr.outputformat = "%d"
            elif is_numlike(subarr):
                subarr.outputformat = "%.16e"
            elif np.issubdtype(subarr.dtype, np.datetime64):
                subarr.outputformat = "%s"
            else:
                subarr.outputformat = "%s"

        # Finally, we must return the newly created object:
        if unit is None and hasattr(data, "unit"):
            subarr.__dict__["unit"] = data.unit
        else:
            subarr.__dict__["unit"] = unit
        return subarr
コード例 #4
0
ファイル: citi.py プロジェクト: jsonbao/hftools
def format_citi_block(inblock):
    block = DataBlock()
    for k, v in inblock.vardata.items():
        block[k] = v
    block.blockname = inblock.blockname
    block.comments = inblock.comments
    yield "CITIFILE A.01.01"

    if block.comments:
        for comment in block.comments.fullcomments:
            yield "!" + comment.lstrip("!")
    else:
        pass
    yield "NAME %s" % block.blockname

    for name, value in block.ivardata.items():
        if is_numlike(value.data) and not isinstance(value, _DimMatrix):
            yield "VAR %s MAG %s" % (name, value.data.shape[0])

    for name, value in block.vardata.items():
        if is_numlike(value):
            if hftools.dataset.ismatrix(value):
                names = []
                for i in hfarray(value.dims[-2]):
                    for j in hfarray(value.dims[-1]):
                        names.append("%s%s%s" % (name, i + 1, j + 1))
            else:
                names = [name]
            for n in names:
                if iscomplexobj(value):
                    yield "DATA %s RI" % (n)
                else:
                    yield "DATA %s MAG" % (n)

    for name, value in block.ivardata.items():
        if is_numlike(value.data) and not isinstance(value, _DimMatrix):
            yield "VAR_LIST_BEGIN"
            fmt = value.outputformat
            for rad in value.data:
                yield fmt % rad
            yield "VAR_LIST_END"

    for name, value in block.vardata.items():
        if is_numlike(value):
            if hftools.dataset.ismatrix(value):
                values = []
                for i in hfarray(value.dims[-2]):
                    for j in hfarray(value.dims[-1]):
                        values.append(value[..., i, j])
            else:
                values = [value]
            for val in values:
                yield "BEGIN"
                if iscomplexobj(val):
                    fmt = "%s,%s" % (val.outputformat, val.outputformat)
                    for rad in val.flat:
                        yield fmt % (rad.real, rad.imag)
                else:
                    fmt = val.outputformat
                    for rad in val.flat:
                        yield fmt % rad
                yield "END"
コード例 #5
0
ファイル: citi.py プロジェクト: ychaim/hftools
def format_citi_block(inblock):
    block = DataBlock()
    for k, v in inblock.vardata.items():
        block[k] = v
    block.blockname = inblock.blockname
    block.comments = inblock.comments
    yield "CITIFILE A.01.01"

    if block.comments:
        for comment in block.comments.fullcomments:
            yield "!" + comment.lstrip("!")
    else:
        pass
    yield "NAME %s" % block.blockname

    for name, value in block.ivardata.items():
        if is_numlike(value.data) and not isinstance(value, _DimMatrix):
            yield "VAR %s MAG %s" % (name, value.data.shape[0])

    for name, value in block.vardata.items():
        if is_numlike(value):
            if hftools.dataset.ismatrix(value):
                names = []
                for i in hfarray(value.dims[-2]):
                    for j in hfarray(value.dims[-1]):
                        names.append("%s%s%s" % (name, i + 1, j + 1))
            else:
                names = [name]
            for n in names:
                if iscomplexobj(value):
                    yield "DATA %s RI" % (n)
                else:
                    yield "DATA %s MAG" % (n)

    for name, value in block.ivardata.items():
        if is_numlike(value.data) and not isinstance(value, _DimMatrix):
            yield "VAR_LIST_BEGIN"
            fmt = value.outputformat
            for rad in value.data:
                yield fmt % rad
            yield "VAR_LIST_END"

    for name, value in block.vardata.items():
        if is_numlike(value):
            if hftools.dataset.ismatrix(value):
                values = []
                for i in hfarray(value.dims[-2]):
                    for j in hfarray(value.dims[-1]):
                        values.append(value[..., i, j])
            else:
                values = [value]
            for val in values:
                yield "BEGIN"
                if iscomplexobj(val):
                    fmt = "%s,%s" % (val.outputformat, val.outputformat)
                    for rad in val.flat:
                        yield fmt % (rad.real, rad.imag)
                else:
                    fmt = val.outputformat
                    for rad in val.flat:
                        yield fmt % rad
                yield "END"