Пример #1
0
 def test_image_store(self):
     fits_object = fits.open(FITS_FILE)
     expected_data = cPickle.dumps(fits_object[0].data)
     expected_header = fits_object[0].header
     store_fits([self.image], [expected_data], [str(expected_header)])
     fetched_image = self.db.session.query(Image).filter(Image.id==self.image.id).first()
     returned_data = cPickle.loads(fetched_image.data.fits_data)
     returned_header = Header.fromstring(fetched_image.data.fits_header)
     self.assertTrue((returned_data, expected_data))
     self.assertEqual(returned_header, expected_header)
Пример #2
0
 def test_image_store(self):
     fits_object = fits.open(FITS_FILE)
     expected_data = cPickle.dumps(fits_object[0].data)
     expected_header = fits_object[0].header
     store_fits([self.image], [expected_data], [str(expected_header)])
     fetched_image = self.db.session.query(Image).filter(
         Image.id == self.image.id).first()
     returned_data = cPickle.loads(fetched_image.data.fits_data)
     returned_header = Header.fromstring(fetched_image.data.fits_header)
     self.assertTrue((returned_data, expected_data))
     self.assertEqual(returned_header, expected_header)
Пример #3
0
def reconstruct_fits(db_image):
    try:
        if not db_image.data.fits_header or not db_image.data.fits_data:
            return None
    except Imagedata.DoesNotExist as e:
        return None
    hdu_header = Header.fromstring(db_image.data.fits_header)
    data = cPickle.loads(str(db_image.data.fits_data))
    hdu = fits.PrimaryHDU(data)
    hdu.header = hdu_header
    hdulist = fits.HDUList([hdu])
    return hdulist
Пример #4
0
        # load previously extracted data from file
        ext = SlotModeExtract.fileExtensionHeaderInfo
        try:
            info_file = next(out_path.glob(f'*{ext}'))
        except StopIteration as err:
            raise IOError(
                    'Previously extracted header info file (extension %r) '
                    'could not be found at location: %r' %
                    (str(ext), out_path)) from err

        # noinspection PyTypeChecker
        info = np.rec.array(np.load(info_file, 'r'))
    else:
        # Extract the data
        subset = slice(*args.subset)
        data, header, info = fx.to_fits(args.channels, start=subset.start,
                                        stop=subset.stop)

    # Object coordinates (for barycentrization)
    header = Header.fromstring(fx.headers[0].decode())
    ra, dec, equinox = map(header.get, ('ra', 'dec', 'equinox'))
    coords = SkyCoord(ra, dec, unit=('h', 'deg'))  # equinox=equinox

    # fix timestamps
    time_file = str(fx.basename.with_suffix('.time'))
    t, ui = fix_timing(info, coords, time_file, args.plot)

    if ui:
        ui[0].show()
    plt.show()
Пример #5
0
path = sys.argv[1]

obsdur = defaultdict(list)
obsdates = defaultdict(list)
for root, dirs, files in os.walk(path):
    fitsfinder = lambda f: (f.startswith('bxgp') & f.endswith('.fits'))
    fitsfiles = sorted(filter(fitsfinder, files))
    if len(fitsfiles) > 1 and not root.endswith(('raw', 'finders', 'new')):
        try:
            first, last = [os.path.join(root, f) for f in
                           (fitsfiles[0], fitsfiles[-1])]
            nfiles = len(fitsfiles)

            ext_start, mhead, ext1head, header_size = _parse_head(first)
            header = Header.fromstring(mhead)
            n_ex = header['NEXTEND']
            texp = header['EXPTIME']

            nframes = nfiles * n_ex / 4
            tot_time = texp * nframes

            print()
            print('-' * 100)
            print('OBJECT', motley.green(header['OBJECT']))
            print('DATE-OBS', header['DATE-OBS'])
            print('EXPTIME', texp)
            print('NFRAMES', nframes)
            print('TOT TIME:', tot_time)
            print('-' * 100)
            print()