From 64a44b34b7dfe665a72cf4fe1f5093bd9d20f371 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Sat, 26 Nov 2022 01:09:15 +0800 Subject: [PATCH] disperse speed improve --- .../MockObject/SpecDisperser/disperse_c/disperse.pyx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ObservationSim/MockObject/SpecDisperser/disperse_c/disperse.pyx b/ObservationSim/MockObject/SpecDisperser/disperse_c/disperse.pyx index 165450f..f5be0b2 100644 --- a/ObservationSim/MockObject/SpecDisperser/disperse_c/disperse.pyx +++ b/ObservationSim/MockObject/SpecDisperser/disperse_c/disperse.pyx @@ -53,7 +53,6 @@ def disperse_grism_object(np.ndarray[FTYPE_t, ndim=2] flam, nk = len(idxl) nl = len(full) - yfrac_off = 1-yfrac if (flat is not None): nlamb = len(wlambda) @@ -92,7 +91,7 @@ def disperse_grism_object(np.ndarray[FTYPE_t, ndim=2] flam, k2 = idxl[k]+(j-1)*shg[1]+i if (k2 >= 0) & (k2 < nl): flat_ids = k2*nlamb+k - full[k2] += fl_ij*yfrac_off[k]*flat_eff_all[flat_ids] + full[k2] += fl_ij*(1-yfrac[k])*flat_eff_all[flat_ids] else: for i in range(0-x0[1], x0[1]): @@ -110,11 +109,11 @@ def disperse_grism_object(np.ndarray[FTYPE_t, ndim=2] flam, for k in range(nk): k1 = idxl[k]+j*shg[1]+i if (k1 >= 0) & (k1 < nl): - full[k1] += fl_ij*yfrac[k]*ysens[k] + full[k1] += ysens[k]*fl_ij*yfrac[k] k2 = idxl[k]+(j-1)*shg[1]+i if (k2 >= 0) & (k2 < nl): - full[k2] += fl_ij*yfrac_off[k]*ysens[k] + full[k2] += ysens[k]*fl_ij*(1-yfrac[k]) return True -- GitLab