from django.core.management.base import BaseCommand, CommandError from datetime import date from heasarc.models import INPUT_DATA_DIR import datetime from django.utils import timezone import astropy from astropy.io import ascii import pandas as pd import pymysql from sqlalchemy import create_engine import numpy.ma as ma from heasarc.tdat import tDat from heasarc.models import HeasarcTable, TableColumn, Heasarc3MAXI, HeasarcObjectClass from heasarc.models import NSIDE_SOURCES, ORDER from monthplan.models import NSIDE_PLATES from astropy_healpix import HEALPix from astropy.coordinates import SkyCoord # High-level coordinates from astropy.coordinates import ICRS, Galactic, FK4, FK5 # Low-level frames from astropy.coordinates import Angle, Latitude, Longitude # Angles import astropy.units as u from astropy.io import fits import math def load_heasarc_table(filename): """ ['Seq', '3MAXI', 'RAdeg', 'DEdeg', 'ePos', 's4-10keV', 'F4-10keV', 'e_F4-10keV', 's3-4keV', 'F3-4keV', 'l_F3-4keV', 'e_F3-4keV', 's10-20keV', 'F10-20keV', 'l_F10-20keV', 'e_F10-20keV', 'F3-10keV', 'e_F3-10keV', 'HR1', 'e_HR1', 'HR2', 'e_HR2', 'HR3', 'e_HR3', 'TSVar', 'XVA', 'e_XVA'] """ hdul = fits.open(filename) data = hdul[1].data cols = hdul[1].columns print(cols.names) #tables = HeasarcSwiftBAT105m.objects.all() #tables.delete() hp = HEALPix(nside=NSIDE_SOURCES, order=ORDER, frame=FK5()) hp_plate = HEALPix(nside=NSIDE_PLATES, order=ORDER, frame=FK5()) for item in data: healpix = 0 ra = 0.0 dec = 0.0 lon = 0.0 lat = 0.0 if not (ma.is_masked(item['RAdeg']) or ma.is_masked(item['DEdeg'])): ra = float(item['RAdeg']) dec = float(item['DEdeg']) crd = SkyCoord(ra, dec, frame=FK5(), unit="deg") lon = crd.galactic.l.value lat = crd.galactic.b.value healpix = hp.skycoord_to_healpix(crd) healpix_plate = hp_plate.skycoord_to_healpix(crd) else: continue sign=item['s4-10keV'] obj = Heasarc3MAXI.objects.create(healpix=healpix, healpix_plate=healpix_plate, ra=ra, dec=dec, lii = lon, bii = lat, name="3MAXI {}".format(item['3MAXI']), error_radius = float(item['ePos'])*60*60, sign = sign, flux = float(item['F4-10keV']),) obj.save() print('--> Successfully loaded "%s"' % filename) pass class Command(BaseCommand): help = 'Initiates data dase' def handle(self, *args, **options): load_heasarc_table('/data/VizieR/3MAXI/table1.fits') self.stdout.write(self.style.SUCCESS('Done'))