首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >specutils fit_generic_continuum在Spectrum1D上使用时提供TypeError

specutils fit_generic_continuum在Spectrum1D上使用时提供TypeError
EN

Stack Overflow用户
提问于 2020-05-05 10:04:44
回答 1查看 266关注 0票数 0

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

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

代码语言:javascript
复制
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

现在,在我最近更新astropy和specutils之前,这是可行的。但现在,我突然在g1_fit = fit_generic_continuum(spectrum)生产线上得到了一个TypeError: 'int' object is not callable。我尝试过卸载和重新安装specutils,但仍然得到相同的错误。我还试着将spectrum重命名为其他名称。

fit_generic_continuum的更新中有什么新的东西吗,或者我错过了什么?

提前谢谢你!

我正在使用astropy版本4.0.1和specutils版本0.6

完全错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 00:52:26

我对您的代码问题没有解决方案,但既然您要求提供规范化例程的建议,我可以提供帮助。我使用基于Python的linetools包。其中有一个例程"lt_continuumfit“,它很好地实现了连续体的规范化。这就是我现在用来标准化的所有东西。它非常容易安装和使用,还具有许多其他功能(rebin、速度图、拼接等)。https://linetools.readthedocs.io/en/latest/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61604532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档