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'))