示例#1
0
def _read_gen(saveFlags, UVDatDataSet, maxchan):
    from mirtask._miriad_f import uvdatopn, uvdatrd
    from numpy import zeros, double, complex64, int32

    inp = None
    preamble = zeros(5, dtype=double)
    data = zeros(maxchan, dtype=complex64)
    flags = zeros(maxchan, dtype=int32)

    try:
        if saveFlags:
            while True:
                if inp is not None and inp.isOpen():
                    inp.close()

                (status, tin) = uvdatopn()
                if not status:
                    break

                inp = UVDatDataSet(tin)
                rewrite = inp.rewriteFlags

                while True:
                    nread = uvdatrd(preamble, data, flags, maxchan)
                    if nread == 0:
                        break

                    f = flags[:nread]
                    yield inp, preamble, data[:nread], f
                    rewrite(f)
        else:
            while True:
                if inp is not None and inp.isOpen():
                    inp.close()

                (status, tin) = uvdatopn()
                if not status:
                    break

                inp = UVDatDataSet(tin)

                while True:
                    nread = uvdatrd(preamble, data, flags, maxchan)
                    if nread == 0:
                        break

                    yield inp, preamble, data[:nread], flags[:nread]
    finally:
        if inp is not None and inp.isOpen():
            inp.close()
def _read_gen (saveFlags, UVDatDataSet, maxchan):
    from mirtask._miriad_f import uvdatopn, uvdatrd
    from numpy import zeros, double, complex64, int32

    inp = None
    preamble = zeros (5, dtype=double)
    data = zeros (maxchan, dtype=complex64)
    flags = zeros (maxchan, dtype=int32)

    try:
        if saveFlags:
            while True:
                if inp is not None and inp.isOpen ():
                    inp.close ()

                (status, tin) = uvdatopn ()
                if not status:
                    break

                inp = UVDatDataSet (tin)
                rewrite = inp.rewriteFlags

                while True:
                    nread = uvdatrd (preamble, data, flags, maxchan)
                    if nread == 0:
                        break

                    f = flags[:nread]
                    yield inp, preamble, data[:nread], f
                    rewrite (f)
        else:
            while True:
                if inp is not None and inp.isOpen ():
                    inp.close ()

                (status, tin) = uvdatopn ()
                if not status:
                    break

                inp = UVDatDataSet (tin)

                while True:
                    nread = uvdatrd (preamble, data, flags, maxchan)
                    if nread == 0:
                        break

                    yield inp, preamble, data[:nread], flags[:nread]
    finally:
        if inp is not None and inp.isOpen ():
            inp.close ()
示例#3
0
    def lowlevelRead (self, preamble, data, flags, length=None):
        if length is None:
            length = flags.size

        self._checkOpen ()
        return _miriad_f.uvdatrd (preamble, data, flags, length)