specutils fit_generic_continuum在Spectrum1D上使用时出现TypeError。

问题描述 投票:0回答:1

我试图将一个通用的连续体拟合到我的光谱上,以使其归一化 (我意识到这对于复杂的光谱来说不是一个很好的方法,但似乎在 Python 中找不到一个好的光谱连续体归一化例程,所以如果你知道的话请告诉我!)。

这里是我的代码。w是波长数组,f是通量数组(只是导入的数据)。

from astropy.modeling import models
from astropy import units as u

from specutils import Spectrum1D, SpectralRegion
from specutils.fitting import fit_generic_continuum

spectrum = Spectrum1D(spectral_axis=w*u.Angstrom, flux=f*u.Jy)

g1_fit = fit_generic_continuum(spectrum)

f_continuum_fitted = g1_fit(w*u.Angstrom)

spec_normalized = spectrum / f_continuum_fitted

在我最近更新了天体和specutils之前,这还能用。但现在,我突然得到一个 TypeError: 'int' object is not callableg1_fit = fit_generic_continuum(spectrum) 行。我试过卸载和重新安装specutils,但还是得到同样的错误。我也试过把频谱重命名为其他的东西。

是否有什么新的更新与 fit_generic_continuum,还是我漏了什么?

非常感谢提前!!

我使用的是 astropy 4.0.1 版和 specutils 0.6 版。

完全错误。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-b277c08fb857> in <module>
     14 spectrum = Spectrum1D(spectral_axis=w*u.Angstrom, flux=f*u.Jy)
     15 
---> 16 g1_fit = fit_generic_continuum(spectrum)
     17 
     18 f_continuum_fitted = g1_fit(w*u.Angstrom)

/anaconda3/lib/python3.6/site-packages/specutils/fitting/continuum.py in fit_generic_continuum(spectrum, median_window, model, fitter, exclude_regions, weights)
     55     #
     56 
---> 57     return fit_continuum(spectrum_smoothed, model, fitter, exclude_regions, weights)
     58 
     59 

/anaconda3/lib/python3.6/site-packages/specutils/fitting/continuum.py in fit_continuum(spectrum, model, fitter, exclude_regions, window, weights)
     95     #
     96 
---> 97     continuum_spectrum = fit_lines(spectrum, model, fitter, exclude_regions, weights)
     98 
     99     return continuum_spectrum

/anaconda3/lib/python3.6/site-packages/specutils/fitting/fitmodels.py in fit_lines(spectrum, model, fitter, exclude_regions, weights, window, **kwargs)
    358         fit_model = _fit_lines(spectrum, model_guess, fitter,
    359                                exclude_regions, weights, model_window,
--> 360                                ignore_units, **kwargs)
    361 
    362         fitted_models.append(fit_model)

/anaconda3/lib/python3.6/site-packages/specutils/fitting/fitmodels.py in _fit_lines(spectrum, model, fitter, exclude_regions, weights, window, ignore_units, **kwargs)
    474 
    475     model_unitless, dispersion_unitless, flux_unitless = \
--> 476         _strip_units_from_model(model, spectrum, convert=not ignore_units)
    477 
    478     #

/anaconda3/lib/python3.6/site-packages/specutils/fitting/fitmodels.py in _strip_units_from_model(model_in, spectrum, convert)
    602     #
    603 
--> 604     compound_model = model_in.n_submodels() > 1
    605 
    606     if not compound_model:

TypeError: 'int' object is not callable
python typeerror astropy
1个回答
0
投票

我没有解决你的代码问题,但因为你问的归一化例程的建议,我可以帮助你。我使用的是基于Python的linetools包。其中有一个例程 "lt_continuumfit "可以很好地对连续体进行归一化。我现在只用它来进行归一化。它很容易安装和使用,而且还有很多其他功能 (rebin, velocity plots, splicing, 等等)。https:/linetools.readthedocs.ioenlatest。

© www.soinside.com 2019 - 2024. All rights reserved.