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)