added mask_radius_deg field to nearby source dict
This commit is contained in:
parent
42c63547b1
commit
e01941f06b
@ -156,7 +156,7 @@ class Command(BaseCommand):
|
|||||||
self.stdout.write("All catalog rows already exist in the database.")
|
self.stdout.write("All catalog rows already exist in the database.")
|
||||||
|
|
||||||
# hard coded nside and flux-radius mapping
|
# hard coded nside and flux-radius mapping
|
||||||
# maybe change that
|
# maybe change
|
||||||
|
|
||||||
nside = 4096
|
nside = 4096
|
||||||
npix = hp.nside2npix(nside)
|
npix = hp.nside2npix(nside)
|
||||||
|
59
views.py
59
views.py
@ -12,7 +12,18 @@ from astropy.stats import poisson_conf_interval
|
|||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
from django.db.models import Sum, Max
|
from django.db.models import (
|
||||||
|
Max,
|
||||||
|
Sum,
|
||||||
|
F,
|
||||||
|
IntegerField,
|
||||||
|
BooleanField,
|
||||||
|
ExpressionWrapper,
|
||||||
|
Case,
|
||||||
|
When,
|
||||||
|
Value,
|
||||||
|
)
|
||||||
|
from django.db.models.functions import Cast
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
@ -366,10 +377,21 @@ class UpperLimitView(APIView):
|
|||||||
|
|
||||||
nearby_sources = []
|
nearby_sources = []
|
||||||
|
|
||||||
|
radius_map = {0: 0.06, 125: 0.15, 250: 0.5, 2000: 0.9, 20000: 2.5}
|
||||||
|
|
||||||
|
sorted_bounds = sorted(radius_map.keys())
|
||||||
|
|
||||||
# refine belt to circular region using astropy separation
|
# refine belt to circular region using astropy separation
|
||||||
for catsrc in belt_sources:
|
for catsrc in belt_sources:
|
||||||
catsrc_coord = SkyCoord(catsrc.ra_deg, catsrc.dec_deg, unit="deg")
|
catsrc_coord = SkyCoord(catsrc.ra_deg, catsrc.dec_deg, unit="deg")
|
||||||
if center_coord.separation(catsrc_coord).deg <= radius_deg:
|
if center_coord.separation(catsrc_coord).deg > radius_deg:
|
||||||
|
continue
|
||||||
|
f = catsrc.flux or 0.0
|
||||||
|
for lb in reversed(sorted_bounds):
|
||||||
|
if f >= lb:
|
||||||
|
mask_radius = radius_map[lb]
|
||||||
|
break
|
||||||
|
|
||||||
nearby_sources.append(
|
nearby_sources.append(
|
||||||
{
|
{
|
||||||
"srcid": catsrc.srcid,
|
"srcid": catsrc.srcid,
|
||||||
@ -383,6 +405,7 @@ class UpperLimitView(APIView):
|
|||||||
"catalog_name": catsrc.catalog_name,
|
"catalog_name": catsrc.catalog_name,
|
||||||
"new_xray": catsrc.new_xray,
|
"new_xray": catsrc.new_xray,
|
||||||
"source_type": catsrc.source_type,
|
"source_type": catsrc.source_type,
|
||||||
|
"mask_radius_deg": mask_radius,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -407,11 +430,26 @@ class UpperLimitView(APIView):
|
|||||||
# fetch those pixels for the requested surveys
|
# fetch those pixels for the requested surveys
|
||||||
# summing counts and sorting by hpid
|
# summing counts and sorting by hpid
|
||||||
|
|
||||||
|
# map_pixels_qs = (
|
||||||
|
# Pixel.objects.filter(hpid__in=map_pixel_list, survey__in=survey_numbers)
|
||||||
|
# .values("hpid")
|
||||||
|
# .annotate(counts=Sum("counts"))
|
||||||
|
# .order_by("hpid")
|
||||||
|
# )
|
||||||
|
|
||||||
map_pixels_qs = (
|
map_pixels_qs = (
|
||||||
Pixel.objects.filter(hpid__in=map_pixel_list, survey__in=survey_numbers)
|
Pixel.objects.filter(hpid__in=map_pixel_list, survey__in=survey_numbers)
|
||||||
.values("hpid")
|
.values("hpid")
|
||||||
.annotate(
|
.annotate(
|
||||||
counts=Sum("counts"),
|
total_counts=Sum("counts"),
|
||||||
|
max_contaminated_int=Max(Cast("contaminated", IntegerField())),
|
||||||
|
)
|
||||||
|
.annotate(
|
||||||
|
contaminated=Case(
|
||||||
|
When(max_contaminated_int=1, then=Value(True)),
|
||||||
|
default=Value(False),
|
||||||
|
output_field=BooleanField(),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
.order_by("hpid")
|
.order_by("hpid")
|
||||||
)
|
)
|
||||||
@ -421,15 +459,16 @@ class UpperLimitView(APIView):
|
|||||||
|
|
||||||
# get lists of healpix indices and count values
|
# get lists of healpix indices and count values
|
||||||
map_healpix_list = [d["hpid"] for d in map_pixels_list]
|
map_healpix_list = [d["hpid"] for d in map_pixels_list]
|
||||||
map_counts_list = [d["counts"] for d in map_pixels_list]
|
map_counts_list = [d["total_counts"] for d in map_pixels_list]
|
||||||
|
map_contaminated_list = [d["contaminated"] for d in map_pixels_list]
|
||||||
|
|
||||||
cont_dict = dict(
|
# cont_dict = dict(
|
||||||
Pixel.objects.filter(hpid__in=map_healpix_list, survey__in=survey_numbers)
|
# Pixel.objects.filter(hpid__in=map_healpix_list, survey__in=survey_numbers)
|
||||||
.values_list("hpid", "contaminated")
|
# .values_list("hpid", "contaminated")
|
||||||
.distinct()
|
# .distinct()
|
||||||
)
|
# )
|
||||||
|
|
||||||
map_contaminated_list = [cont_dict[h] for h in map_healpix_list]
|
# map_contaminated_list = [cont_dict[h] for h in map_healpix_list]
|
||||||
|
|
||||||
# set map nside
|
# set map nside
|
||||||
map_nside = 4096
|
map_nside = 4096
|
||||||
|
Loading…
x
Reference in New Issue
Block a user