correct exposure handling across multiple surveys

This commit is contained in:
Никита Тырин 2025-05-23 18:31:33 +03:00
parent 5e0ecc9cc9
commit fdc26bc4c4

View File

@ -10,6 +10,8 @@ import scipy.special as sp
from astropy.coordinates import SkyCoord, Angle
from astropy.stats import poisson_conf_interval
from collections import defaultdict
from django.db.models import Sum
from django.shortcuts import get_object_or_404
from rest_framework.views import APIView
@ -225,6 +227,7 @@ class UpperLimitView(APIView):
# COMPUTE COUNTS, BACKGROUND ESTIMATE, EXPOSURE
# **************************************************************
# summing counts across all surveys
N = sum(obj.counts for obj in source_pixels)
Nnpix = len(source_pixels)
@ -235,9 +238,21 @@ class UpperLimitView(APIView):
B = Bcounts / Bnpix * Nnpix
tsum = sum(obj.exposure for obj in source_pixels)
# create a dict of exposures keyed by survey
t_by_survey = defaultdict(list)
t = tsum / Nnpix
for pixel in source_pixels:
t_by_survey[pixel.survey].append(pixel.exposure)
# create and populate a list of average exposures per survey
survey_averages = []
for survey_id, exposures in t_by_survey.items():
average_exposure = sum(exposures) / len(exposures)
survey_averages.append(average_exposure)
# sum them up across surveys
t = sum(survey_averages)
# CONSTANTS
# **************************************************************