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 ()
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)