91 lines
3.3 KiB
Python
91 lines
3.3 KiB
Python
from django.core.management.base import BaseCommand, CommandError
|
|
|
|
from datetime import date
|
|
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
|
|
|
|
from heasarc.tdat import tDat
|
|
from heasarc.models import HeasarcTable, TableColumn, HeasarcObjectClass, NSIDE_SOURCES, ORDER
|
|
from srgcat.models import ArtCat, ArtSource
|
|
from astropy.table import Table
|
|
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
|
|
|
|
# XMMU JHHMMSS.s+/-DDMMSS.
|
|
# www.cosmos.esa.int/web/xmm-newton/source-naming-convention
|
|
def make_source_name(key, ra, dec):
|
|
c = SkyCoord(ra, dec, frame=FK5(), unit="deg")
|
|
str1 = c.to_string('hmsdms',alwayssign=False,pad=False,precision=1).split()
|
|
str2 = c.to_string('hmsdms',alwayssign=False,pad=False,precision=0).split()
|
|
name = key+" J%s%s" % (str1[0].replace('h','').replace('m','').replace('s',''),
|
|
str2[1].replace('d','').replace('m','').replace('s',''))
|
|
|
|
return name
|
|
|
|
|
|
def load_gc_table(filename, name, e1, e2):
|
|
datafile='/export/django/srg/data/Rodion_GC/'+filename
|
|
|
|
cat = ArtCat(name=name, e1=e1, e2=e2)
|
|
cat.save()
|
|
|
|
table = Table.read(datafile, format='ascii')
|
|
# ra dec sig cnts/s erg/s/cm^2
|
|
for item in table:
|
|
ra=item['ra']
|
|
dec=item['dec']
|
|
src_name = make_source_name('IKIa', ra, dec)
|
|
crd = SkyCoord(ra, dec, frame=FK5(), unit="deg")
|
|
print(ra,dec,crd.galactic.l,crd.galactic.b)
|
|
src = ArtSource(catalog=cat,
|
|
name=src_name,
|
|
radec_error=30.0,
|
|
ra=item['ra'],
|
|
dec=item['dec'],
|
|
rate=item['cnts/s'],
|
|
flux=item['erg/s/cm^2'],
|
|
sign=item['sig'])
|
|
src.save()
|
|
print('--> Successfully loaded "%s"' % name)
|
|
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):
|
|
|
|
# create sqlalchemy engine
|
|
# engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
|
|
# .format(user="heauser",
|
|
# pw="srg2019@L2_heasarc",
|
|
# db="heasarc_db"))
|
|
|
|
cats = ArtCat.objects.all()
|
|
cats.delete()
|
|
|
|
load_gc_table('src.list', "ArtCat GC e04to12keV v1.0", 4.0, 12.0)
|
|
load_gc_table('src_10_20.list', "ArtCat GC e10to20keV v1.0", 10.0, 20.0)
|
|
load_gc_table('src_20_30.list', "ArtCat GC e20to30keV v1.0", 20.0, 30.0)
|
|
|
|
hp = HEALPix(nside=NSIDE_SOURCES, order=ORDER, frame=FK5())
|
|
# update healpix indexes
|
|
srcs = ArtSource.objects.all()
|
|
for src in srcs:
|
|
crd = SkyCoord(src.ra, src.dec, frame="fk5", unit="deg")
|
|
src.healpix = hp.skycoord_to_healpix(crd)
|
|
src.save()
|
|
|
|
|
|
self.stdout.write(self.style.SUCCESS('Done'))
|