srg/artsurvey/management/commands/00_artsurvey_catalog_sigma.py
2024-04-26 12:43:00 +03:00

94 lines
2.4 KiB
Python

from django.core.management.base import BaseCommand, CommandError
from django.db.models import Q
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.models import HeasarcBase
from artsurvey.models import ArtSurveySource, ArtSurvey, EnergyBand, Catalog, MetaSource
from srglib.utils import load_vizier_nvss
from srglib.utils import load_vizier_first
from srglib.utils import load_vizier_sumss
from astrobasis.models import GAIADR3
from srglib.utils import find_counterparts
from srglib.utils import load_vizier_allwise
def get_survey(version):
try:
survey = ArtSurvey.objects.get(version=version)
print("use ArtSurvey {}".format(survey))
return survey
except ArtSurvey.DoesNotExist:
print("ArtSurvey {} not found".format(version))
return None
def get_band(slug):
try:
band = EnergyBand.objects.get(slug=slug)
print("use EnergyBand {}".format(band))
return band
except EnergyBand.DoesNotExist:
print("EnergyBand not found")
return None
def select(catalog,survey,band,threshold):
srcs = ArtSurveySource.objects.all().filter(survey=survey).filter(band=band).filter(Q(sig__gte=threshold) | Q(ext__gte=1))
for src in srcs:
src.catalog.add(catalog)
ms = src.metasource
ms.catalog=catalog
ms.save()
src.save()
count=srcs.count()
print("{} {}, sign. threshold {}, selected {}".format(survey,band.slug,threshold,count))
def select_catalog():
minrad=40
maxdist=120
s1s2=get_survey(12.5)
s1=get_survey(1.7)
s2=get_survey(2.7)
e0=get_band('E0')
e1=get_band('E1')
e2=get_band('E2')
e3=get_band('E3')
cat=Catalog.objects.get(year=2021)
"""
RUN METASOURCE FIRST
"""
""" clean links in MetaSource """
msrcs = MetaSource.objects.all()
for ms in msrcs:
ms.catalog = None
ms.save()
srcs = ArtSurveySource.objects.all()
for src in srcs:
src.catalog.clear()
select(cat,s1s2,e0,4.818)
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):
select_catalog()
self.stdout.write(self.style.SUCCESS('Done'))