Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

significant divergence between blanton and FastSpecFit k-corrections #202

Open
jere1882 opened this issue Dec 21, 2024 · 5 comments
Open

Comments

@jere1882
Copy link

Upon comparing the galaxy K corrections exported by FastSpecFit, most specifically KCORR01_SDSS_R, I realised that they diverge significantly from Blanton's kcorrect estimates for z > 0.37 . Is there any reason why they differ? Are FastSpecFit estimations reliable for z>.37?

image

@moustakas
Copy link
Member

Thanks for the question, @jere1882. Are you using the same input photometry and redshifts? And are you running the code yourself or using a value-added catalog?

What you're seeing with FastSpecFit is an algorithmic choice where the K-correction is computed from the band which minimizes the K-correction (given the desired rest-frame bandpass). For example, if you want M_g from grz photometry, at low redshift the code will use the g-band, but then eventually it's going to switch to the r-band, because that observed-frame redder band is closer to the desired rest-frame band.

I don't think k-correct includes this logic.

The key thing is to compare the rest-frame photometry (making sure you're using the appropriate filter curves). Do those values match better?

@jere1882
Copy link
Author

Thank you very much for your reply!

In order to calculate Blanton's estimates, I am using:

  • photometry from Desi Legacy - most specifically, dered_flux_{g,r,z}
  • redshift from DESI-edr (redrock)
    I am correctly specifying the input and output passband functions to match the ones exported in your catalog, as well as the band shift:
responses_in = ['bass_g', 'bass_r', 'mzls_z']
responses_out = ['sdss_g0', 'sdss_r0', 'sdss_z0']
band_shift=0.1

As for FastSpecFit, I am directly pulling the values from your exported VAC, and those are the values that you see plotted on the right. To the best of my knowledge the resulting estimations should be comparable, but for some reason they diverge after z ~ 0.37. Similar scenario with band g ; but the divergence starts at z ~ 0.30

1 similar comment
@jere1882
Copy link
Author

Thank you very much for your reply!

In order to calculate Blanton's estimates, I am using:

  • photometry from Desi Legacy - most specifically, dered_flux_{g,r,z}
  • redshift from DESI-edr (redrock)
    I am correctly specifying the input and output passband functions to match the ones exported in your catalog, as well as the band shift:
responses_in = ['bass_g', 'bass_r', 'mzls_z']
responses_out = ['sdss_g0', 'sdss_r0', 'sdss_z0']
band_shift=0.1

As for FastSpecFit, I am directly pulling the values from your exported VAC, and those are the values that you see plotted on the right. To the best of my knowledge the resulting estimations should be comparable, but for some reason they diverge after z ~ 0.37. Similar scenario with band g ; but the divergence starts at z ~ 0.30

@moustakas
Copy link
Member

Hi @jere1882, I still think the differences are consistent with what I've written. You're using the same set of input and output bandpasses with K-correct, and so the observed-frame r-band is being used to compute the K-correction to the rest-frame r-band, irrespective of the redshift.

My code, on the other hand, computes the K-correction from the observed-frame bandpass which minimizes the K-correction. For example, this bit of code shows that a z=0 the observed-frame BASS r-band is closest to the (desired output, rest-frame) SDSS r-band, but by z=0.37, the observed-frame MzLS z-band photometry is closer in effective wavelength to the rest-frame SDSS r-band, which is why you're seeing a discontinuity in my K-corrections above z=0.37.

from speclite import filters
filt_in = filters.load_filters('BASS-g', 'BASS-r', 'MzLS-z')
filt_out = filters.load_filters('sdss2010-g', 'sdss2010-r', 'sdss2010-z')

filt_out.effective_wavelengths, filt_in.effective_wavelengths, filt_in.effective_wavelengths/(1.+0.37)
(<Quantity [4749.22996891, 6205.83223724, 8947.38474083] Angstrom>,
 <Quantity [4815.95363513, 6437.79282937, 9229.65786449] Angstrom>,
 <Quantity [3515.29462418, 4699.11885356, 6736.97654343] Angstrom>)

Two more quick comments:

  • I would still like to see how the rest-frame photometry compares. Modulo differences in the templates, the absolute magnitudes should match pretty well (where there's good photometric coverage, of course; bandpasses bluer than g-band will diverge pretty significantly.
  • This tutorial shows some more details of how K-corrections are computed with my code:
    https://github.com/desihub/fastspecfit/blob/main/doc/nb/tutorial-kcorrections.ipynb

@moustakas
Copy link
Member

Also, remember that the SDSS K-corrections in the EDR VAC are band-shifted to z=0.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants