gbrammer / eazy-py

Pythonic photometric redshift tools based on EAZY
MIT License
35 stars 23 forks source link

Unable to enforce TEMPLATE_COMBOS #32

Closed ralphy1017 closed 1 year ago

ralphy1017 commented 1 year ago

I've been trying to set TEMPLATE_COMBOS = -2, per the eazy manual and the source code for eazypy. However, including this parameter in my params dictionary that I pass to the PhotoZ object fails to actually enforce this template restriction. I have even tried it with TEMPLATE_COMBOS = 2 and TEMPLATE_COMBOS = 1, and the PhotoZ.showfit() output still reveals that eazypy is using as many templates as it wants.

I have even gone so far as to change zphot.param.default under /eazy/data and eazypy still does not enforce TEMPLATE_COMBOS.

Please let me know what I might be missing

Thx

gbrammer commented 1 year ago

That mode is not implemented in eazy-py. The parameter file is meant to be back compatible in that eazy-py reads the old zphot.param files without complaint, but not all of the parameters actually do anything in the Python code!

The default behavior in fit_catalog is to fit all of the templates with non-negative least squares (scipy.optimize.nnls), analogous to TEMPLATE_COMBOS=a in the old eazy C code. There is also a fit_single_templates method somewhat analogous to TEMPLATE_COMBOS=1, but there is currently no option for the two-template permutations.

ralphy1017 commented 1 year ago

Thanks for the prompt reply @gbrammer . Sounds good.

chriswillott commented 1 year ago

I have just spent some time trying to get TEMPLATE_COMBOS=1 to work, without success. I would suggest you add the comment '(deprecated in eazypy)' to this parameter in the file zphot.param.default so that other users do not hit the same problem.