150 lines
6.5 KiB
Python
150 lines
6.5 KiB
Python
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, Heasarc4XMMDR12, HeasarcObjectClass
|
|
from heasarc.models import NSIDE_SOURCES, ORDER
|
|
|
|
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
|
|
|
|
def load_heasarc_table(filename):
|
|
|
|
|
|
data = astropy.table.Table.read(filename, format='ascii.csv',encoding='latin1')
|
|
print(data.info)
|
|
|
|
"""
|
|
keywords = data.meta['keywords']
|
|
cols = data.meta['cols']
|
|
for key, value in cols.items():
|
|
column = TableColumn(table=table)
|
|
column.name=key
|
|
column.tdat_type=value['type']
|
|
column.description=value['description']
|
|
column.save()
|
|
print(key, '->', value)
|
|
|
|
,0.525479,0,,-0.523192,,,0,56086.7429513889,56087.5881944444,,,1,f,http://xmm-catalog.irap.omp.eu/source/206931901010113/
|
|
|
|
"""
|
|
|
|
|
|
tables = Heasarc4XMMDR12.objects.all()
|
|
tables.delete()
|
|
|
|
hp = HEALPix(nside=NSIDE_SOURCES, order=ORDER, frame=FK5())
|
|
for item in data:
|
|
|
|
#crd = SkyCoord(item['ra'], item['dec'], frame=FK5(), unit="deg")
|
|
#healpix = hp.skycoord_to_healpix(crd)
|
|
url=''
|
|
if not (ma.is_masked(item['webpage_url'])):
|
|
url=item['webpage_url']
|
|
|
|
n_detections=0
|
|
if not (ma.is_masked(item['n_detections'])):
|
|
m_detections=item['n_detections']
|
|
|
|
healpix = 0
|
|
ra = 0.0
|
|
dec = 0.0
|
|
lon = 0.0
|
|
lat = 0.0
|
|
if not (ma.is_masked(item['sc_ra']) or ma.is_masked(item['sc_dec'])):
|
|
ra = float(item['sc_ra'])
|
|
dec = float(item['sc_dec'])
|
|
crd = SkyCoord(ra, dec, frame=FK5(), unit="deg")
|
|
lon = crd.galactic.l.value
|
|
lat = crd.galactic.b.value
|
|
|
|
healpix = hp.skycoord_to_healpix(crd)
|
|
else:
|
|
continue
|
|
|
|
obj = Heasarc4XMMDR12.objects.create(healpix=healpix,
|
|
ra=ra,
|
|
dec=dec,
|
|
lii = lon,
|
|
bii = lat,
|
|
name=item['iauname'],
|
|
error_radius = item['sc_poserr'],
|
|
SRCID = item['srcid'],
|
|
radec_error = item['sc_poserr'],
|
|
DET_ML = item['sc_det_ml'],
|
|
EP_1_FLUX = item['sc_ep_1_flux'],
|
|
EP_1_FLUX_ERR = item['sc_ep_1_flux_err'],
|
|
EP_2_FLUX= item['sc_ep_2_flux'],
|
|
EP_2_FLUX_ERR =item['sc_ep_2_flux_err'],
|
|
EP_3_FLUX = item['sc_ep_3_flux'],
|
|
EP_3_FLUX_ERR = item['sc_ep_3_flux_err'],
|
|
EP_4_FLUX = item['sc_ep_4_flux'],
|
|
EP_4_FLUX_ERR = item['sc_ep_4_flux_err'],
|
|
EP_5_FLUX = item['sc_ep_5_flux'],
|
|
EP_5_FLUX_ERR = item['sc_ep_5_flux_err'],
|
|
EP_8_FLUX = item['sc_ep_8_flux'],
|
|
EP_8_FLUX_ERR = item['sc_ep_8_flux_err'],
|
|
EP_9_FLUX = item['sc_ep_9_flux'],
|
|
EP_9_FLUX_ERR = item['sc_ep_9_flux_err'],
|
|
HR1 = item['sc_hr1'],
|
|
HR1_ERR = item['sc_hr1_err'],
|
|
HR2 = item['sc_hr2'],
|
|
HR2_ERR = item['sc_hr2_err'],
|
|
HR3 = item['sc_hr3'],
|
|
HR3_ERR = item['sc_hr3_err'],
|
|
HR4 = item['sc_hr4'],
|
|
HR4_ERR = item['sc_hr4_err'],
|
|
EXTENT = item['sc_extent'],
|
|
EXT_ERR = item['sc_ext_err'],
|
|
#EXT_ML = item['sc_ext_ml'],
|
|
#CHI2PROB = item['sc_chi2prob'],
|
|
FVAR = item['sc_fvar'],
|
|
FVARERR = item['sc_fvarerr'],
|
|
#VAR_FLAG = item['sc_var_flag'],
|
|
SUM_FLAG = item['sc_sum_flag'],
|
|
EP_8_FMIN = item['sc_ep_8_fmin'],
|
|
EP_8_FMIN_ERR = item['sc_ep_8_fmin_err'],
|
|
EP_8_FMAX = item['sc_ep_8_fmax'],
|
|
EP_8_FMAX_ERR = item['sc_ep_8_fmax_err'],
|
|
MJD_FIRST = item['mjd_first'],
|
|
MJD_LAST = item['mjd_last'],
|
|
N_DETECTIONS = n_detections,
|
|
CONFUSED = item['confused'],
|
|
WEBPAGE_URL = url,)
|
|
|
|
obj.save()
|
|
|
|
print('--> Successfully loaded "%s"' % filename)
|
|
pass
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Initiates data dase'
|
|
|
|
# def add_arguments(self, parser):
|
|
# parser.add_argument('poll_id', nargs='+', type=int)
|
|
|
|
def handle(self, *args, **options):
|
|
|
|
tables = Heasarc4XMMDR12.objects.all()
|
|
|
|
print("Selected {} in total".format(tables.count()))
|
|
|
|
#load_heasarc_table('/data/4XMM/4XMM_DR9cat_slim_v1.0.csv.gz')
|
|
#load_heasarc_table('/data/4XMM/4XMM_DR10cat_slim_v1.0.csv.gz')
|
|
load_heasarc_table('/data/4XMM/4XMM_DR12cat_slim_v1.0.csv.gz')
|
|
|
|
|
|
self.stdout.write(self.style.SUCCESS('Done'))
|