srg/srglib/update_erotrans_tables.py
2024-04-26 12:43:00 +03:00

45 lines
2.1 KiB
Python

from ErositaDailySourceCatalogues import views as eviews
from ErositaDailySourceCatalogues.models import *
from genericsource.models import *
from srglib import genericsourceutils as gsu
from srglib.load_transinets import SurveyCatName
from django.db.models import F, Q, Max, Subquery, OuterRef, Min, Count, Value
from functools import reduce
def getalltransients():
query = reduce(lambda a, b: a | b, [Q(id__in=GenericCatalog.objects.get(name=survname).genericsource_set.all()) for survname in SurveyCatName.values()])
return ErositaSource.objects.filter(query)
def get_transients(cat, tcat):
cat = eviews.create_annotations(cat)
cat = eviews.addErositaSrcannotattion(cat)
cat = cat.filter(ratio_to_maxxflux > 1.1)
removed = ErositaSource.objects.filter(tcat.genericsource_set.exclude(id__in=cat))
tcat.genericsource_set.remove(tcat.genericsource_set.all())
def set_transient_data(ecat):
ecat = eviews.create_annotations(ecat)
ecat = eviews.addErositaSrcannotattion(ecat)
ecat = ecat.filter(ratio_to_maxxflux__gt=1.)
for src in ecat:
try:
ErositaTransient.objects.create(src=src, plx=src.plx, plxe=src.plxe,
z=src.ssz if src.ssz else src.sdssz,
ssep=src.ssep,
sname=src.sname if src.sname else "",
ztfcl=src.ztfcl if src.ztfcl else "",
ztfnm=src.ztfnm if src.ztfnm else "",
zsep=src.zsep, plx_sep=src.plx_sep,
plx_mag=src.plx_mag,
sclass=src.sclass if src.sclass else "",
ratio_to_maxxflux=src.ratio_to_maxxflux,
ratio_to_minxflux=src.ratio_to_minxflux)
except:
print(src.name, " already has transints")
else:
print("transient for %s created" % src.name)