78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
from django.core.management.base import BaseCommand, CommandError
|
|
from django.db.models import Count
|
|
from django.db.models import OuterRef, Subquery, Exists
|
|
|
|
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, MetaSource
|
|
from srglib.utils import find_counterparts
|
|
from srgcat.models import SrgDataDump
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Initiates data dase'
|
|
|
|
def handle(self, *args, **options):
|
|
|
|
#srcs = ArtSurveySource.objects.all()
|
|
|
|
""" Find first survey """
|
|
version=12.2
|
|
|
|
try:
|
|
survey = ArtSurvey.objects.get(version=version)
|
|
except ArtSurvey.DoesNotExist:
|
|
return
|
|
|
|
print("use ArtSurvey {}".format(survey))
|
|
|
|
|
|
try:
|
|
exclude_survey = ArtSurvey.objects.get(version=2.4)
|
|
except ArtSurvey.DoesNotExist:
|
|
return
|
|
|
|
print("exclude ArtSurvey {}".format(exclude_survey))
|
|
|
|
|
|
try:
|
|
band = EnergyBand.objects.get(slug='E0')
|
|
print("use EnergyBand {}".format(band))
|
|
except EnergyBand.DoesNotExist:
|
|
print("EnergyBand bot found")
|
|
return
|
|
|
|
try:
|
|
exclude_band = EnergyBand.objects.get(slug='E0')
|
|
print("use exclude EnergyBand {}".format(exclude_band))
|
|
except EnergyBand.DoesNotExist:
|
|
print("EnergyBand bot found")
|
|
return
|
|
|
|
|
|
srcs = ArtSurveySource.objects.all().filter(survey=survey)
|
|
srcs=srcs.filter(band=band)
|
|
|
|
subquery=MetaSource.objects.filter(artsurveysource=OuterRef("pk")).filter(artsurveysource__survey=exclude_survey).filter(artsurveysource__band=exclude_band)
|
|
#srcs=srcs.annotate(exclude=Subquery(subquery.values("name")[:1]))
|
|
srcs=srcs.annotate(exclude=Exists(subquery))
|
|
|
|
for s in srcs:
|
|
print(s,s.exclude)
|
|
|
|
print(srcs.count())
|
|
|
|
"""
|
|
msrcs=MetaSource.objects.annotate(num_sources=Count("artsurveysource"))
|
|
for m in msrcs:
|
|
print(m, m.num_sources)
|
|
"""
|
|
self.stdout.write(self.style.SUCCESS('Done'))
|