Example #1
0
def create_new_filterbank(fnfil, telescope='Apertif'):
    if telescope in ('ASKAP', 'Askap', 'askap'):
        filhdr = filhdr_ASKAP
    elif telescope in ('Apertif', 'APERTIF', 'apertif'):
        filhdr = filhdr_Apertif
    elif telescope in ('CHIME', 'Chime', 'chime'):
        filhdr = filhdr_CHIME
    else:
        raise ValueError("Could not find telescope name")

    try:
        import sigproc
        filhdr['rawdatafile'] = fnfil

        newhdr = ""
        newhdr += sigproc.addto_hdr("HEADER_START", None)
        for k, v in filhdr.items():
            newhdr += sigproc.addto_hdr(k, v)
        newhdr += sigproc.addto_hdr("HEADER_END", None)
        print("Writing new header to '%s'" % fnfil)
        outfile = open(fnfil, 'wb')
        outfile.write(newhdr)
        spectrum = np.zeros([filhdr['nchans']], dtype=np.uint8)
        outfile.write(spectrum)
        outfile.close()
    except:
        print("Either could not load sigproc or create filterbank")
Example #2
0
def create_filterbank_file(outfn,
                           header,
                           spectra=None,
                           nbits=8,
                           verbose=False):
    """Write filterbank header and spectra to file.

        Input:
            outfn: The outfile filterbank file's name.
            header: A dictionary of header paramters and values.
            spectra: Spectra to write to file. (Default: don't write
                any spectra - i.e. write out header only)
            nbits: The number of bits per sample of the filterbank file.
                (Default: 8 - i.e. each sample is an 8-bit integer)
            verbose: If True, be verbose (Default: be quiet)

        Output:
            fbfile: The resulting FilterbankFile object opened
                in read-write mode.
    """
    dtype = get_dtype(nbits)  # Get dtype. This will check to ensure
    # 'nbits' is valid.
    header['nbits'] = nbits
    outfile = open(outfn, 'wb')
    outfile.write(sigproc.addto_hdr("HEADER_START", None))
    for paramname in header.keys():
        if verbose:
            print "Writing header param (%s)" % paramname
        value = header[paramname]
        outfile.write(sigproc.addto_hdr(paramname, value))
    outfile.write(sigproc.addto_hdr("HEADER_END", None))
    if spectra:
        spectra.flatten().astype(dtype).tofile(outfile)
    outfile.close()
    return FilterbankFile(outfn, read_only=False)
Example #3
0
def create_new_filterbank(fnh5, fn_fil_out, telescope='LOFAR'):
   f = h5py.File(fnh5,'r')
   dt=f['SUB_ARRAY_POINTING_000/BEAM_000/COORDINATES/COORDINATE_0/'].attrs['INCREMENT']
   freqaxis=f['SUB_ARRAY_POINTING_000/BEAM_000/COORDINATES/COORDINATE_1/'].attrs['AXIS_VALUES_WORLD']
   freqaxis *= 1e-6
   nchans=len(freqaxis)
   foff=np.diff(freqaxis)[0]

   filhdr['tsamp'] = dt
   filhdr['nchans'] = nchans
   filhdr['fch1'] = freqaxis[-1]
   filhdr['foff'] = foff
   filhdr['nbits'] = 32

   print(filhdr)
   print(freqaxis)
   try:
      import sigproc
      filhdr['rawdatafile'] = fn_fil_out

      newhdr = ""
      newhdr += sigproc.addto_hdr("HEADER_START", None)
      for k,v in filhdr.items():
          newhdr += sigproc.addto_hdr(k, v)
      newhdr += sigproc.addto_hdr("HEADER_END", None)
      print("Writing new header to '%s'" % fn_fil_out)
      outfile = open(fn_fil_out, 'wb')
      outfile.write(newhdr)
      spectrum = np.zeros([filhdr['nchans']], dtype='f4')
      outfile.write(spectrum)
      outfile.close()
   except:
      print("Either could not load sigproc or create filterbank")
Example #4
0
def create_filterbank_file(outfn, header, spectra=None, nbits=8, verbose=False):
    """Write filterbank header and spectra to file.

        Input:
            outfn: The outfile filterbank file's name.
            header: A dictionary of header paramters and values.
            spectra: Spectra to write to file. (Default: don't write
                any spectra - i.e. write out header only)
            nbits: The number of bits per sample of the filterbank file.
                (Default: 8 - i.e. each sample is an 8-bit integer)
            verbose: If True, be verbose (Default: be quiet)

        Output:
            fbfile: The resulting FilterbankFile object opened
                in read-write mode.
    """
    dtype = get_dtype(nbits) # Get dtype. This will check to ensure
                             # 'nbits' is valid.
    header['nbits'] = nbits
    outfile = open(outfn, 'wb')
    outfile.write(sigproc.addto_hdr("HEADER_START", None))
    for paramname in header.keys():
        if verbose:
            print "Writing header param (%s)" % paramname
        value = header[paramname]
        outfile.write(sigproc.addto_hdr(paramname, value))
    outfile.write(sigproc.addto_hdr("HEADER_END", None))
    if spectra:
        spectra.flatten().astype(dtype).tofile(outfile)
    outfile.close()
    return FilterbankFile(outfn, read_only=False)
Example #5
0
def create_filterbank_file(outfn, header, spectra=None, nbits=8, \
                           verbose=False, mode='append'):
    """Write filterbank header and spectra to file.
        Input:
            outfn: The outfile filterbank file's name.
            header: A dictionary of header paramters and values.
            spectra: Spectra to write to file. (Default: don't write
                any spectra - i.e. write out header only)
            nbits: The number of bits per sample of the filterbank file.
                This value always overrides the value in the header dictionary.
                (Default: 8 - i.e. each sample is an 8-bit integer)
            verbose: If True, be verbose (Default: be quiet)
            mode: Mode for writing (can be 'append' or 'write')
        Output:
            fbfile: The resulting FilterbankFile object opened
                in read-write mode.
    """
    dtype = get_dtype(nbits) # Get dtype. This will check to ensure
                             # 'nbits' is valid.
    header['nbits'] = nbits
    outfile = open(outfn, 'wb')
    outfile.write(sigproc.addto_hdr("HEADER_START", None))
    for paramname in header.keys():
        if paramname not in sigproc.header_params:
            # Only add recognized parameters
            continue
        if verbose:
            print "Writing header param (%s)" % paramname
        value = header[paramname]
        outfile.write(sigproc.addto_hdr(paramname, value))
    outfile.write(sigproc.addto_hdr("HEADER_END", None))
    if spectra is not None:
        spectra.flatten().astype(dtype).tofile(outfile)
    outfile.close()
    return FilterbankFile(outfn, mode=mode)
def write_header(outfbfile, header_params, header):
    """Given list of input filterbank objects and an output
        file object write the new filterbank header.
    """
    for hp in header_params:
        hdrval = sigproc.addto_hdr(hp, header[hp])
        outfbfile.write(hdrval)
Example #7
0
def write_header(outfbfile, header_params, header):
    """Given list of header flags and values and an output
        file object write the new filterbank header.
    """
    for hp in header_params:
        hdrval = sigproc.addto_hdr(hp, header[hp])
        outfbfile.write(hdrval)
def create_new_filterbank(fnfil):
    try:
        import sigproc

        newhdr = ""
        newhdr += sigproc.addto_hdr("HEADER_START", None)
        for k, v in filhdr.items():
            newhdr += sigproc.addto_hdr(k, v)
        newhdr += sigproc.addto_hdr("HEADER_END", None)
        print("Writing new header to '%s'" % fnfil)
        outfile = open(fnfil, 'wb')
        outfile.write(newhdr)
        spectrum = np.zeros([filhdr['nchans']], dtype=np.uint8)
        outfile.write(spectrum)
        outfile.close()
    except:
        print("Either could not load sigproc or create filterbank")
Example #9
0
def write_header(infbfiles, outfbfile):
    """Given list of input filterbank objects and an output
        file object write the new filterbank header.
    """
    infbfiles = sort_fb_files(infbfiles)
    for hp in infbfiles[0].header_params:
        if hp == 'nchans':
            val = sum([f.header['nchans'] for f in infbfiles])
        else:
            val = infbfiles[0].header[hp]
        hdrval = sigproc.addto_hdr(hp, val)
        outfbfile.write(hdrval)
Example #10
0
def write_header(infbfiles, outfbfile):
    """Given list of input filterbank objects and an output
        file object write the new filterbank header.
    """
    infbfiles = sort_fb_files(infbfiles)
    for hp in infbfiles[0].header_params:
        if hp == 'nchans':
            val = sum([f.header['nchans'] for f in infbfiles])
        else:
            val = infbfiles[0].header[hp]
        hdrval = sigproc.addto_hdr(hp, val)
        outfbfile.write(hdrval)
Example #11
0
def create_filterbank_file(outfn, header, spectra=None, nbits=8, \
                           verbose=False, mode='append'):
    """Write filterbank header and spectra to file.

        Input:
            outfn: The outfile filterbank file's name.
            header: A dictionary of header paramters and values.
            spectra: Spectra to write to file. (Default: don't write
                any spectra - i.e. write out header only)
            nbits: The number of bits per sample of the filterbank file.
                This value always overrides the value in the header dictionary.
                (Default: 8 - i.e. each sample is an 8-bit integer)
            verbose: If True, be verbose (Default: be quiet)
            mode: Mode for writing (can be 'append' or 'write')

        Output:
            fbfile: The resulting FilterbankFile object opened
                in read-write mode.
    """
    dtype = get_dtype(nbits) # Get dtype. This will check to ensure
                             # 'nbits' is valid.
    header['nbits'] = nbits
    outfile = open(outfn, 'wb')
    outfile.write(sigproc.addto_hdr("HEADER_START", None))
    for paramname in header.keys():
        if paramname not in sigproc.header_params:
            # Only add recognized parameters
            continue
        if verbose:
            print "Writing header param (%s)" % paramname
        value = header[paramname]
        outfile.write(sigproc.addto_hdr(paramname, value))
    outfile.write(sigproc.addto_hdr("HEADER_END", None))
    if spectra is not None:
        spectra.flatten().astype(dtype).tofile(outfile)
    outfile.close()
    return FilterbankFile(outfn, mode=mode)
Example #12
0
    infile.seek(0, 2)
    infilelen = infile.tell()
    infile.seek(0, 0)
    
    outfile = open(basefilenm+"_DS%d.fil"%DS_fact, 'wb')

    # Loop over the values in the .fil file
    while 1:
        param, val = sigproc.read_hdr_val(infile, stdout=False)
        filhdr[param] = val

        if param=="tsamp":
            val *= DS_fact

        # Append to the new hdr string
        newhdr += sigproc.addto_hdr(param, val)

        # Break out of the loop if the header is over
        if param=="HEADER_END":
            break

    # Write the new header to the output file
    outfile.write(newhdr)

    nchans = filhdr['nchans']

    # Remove the header length from infilelen and then
    # determine how many spectra are in the file
    infilelen -= infile.tell()
    numspec = infilelen / nchans
    if infilelen % nchans: