本文整理汇总了Python中linetools.isgm.abscomponent.AbsComponent.synthesize_colm方法的典型用法代码示例。如果您正苦于以下问题:Python AbsComponent.synthesize_colm方法的具体用法?Python AbsComponent.synthesize_colm怎么用?Python AbsComponent.synthesize_colm使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类linetools.isgm.abscomponent.AbsComponent
的用法示例。
在下文中一共展示了AbsComponent.synthesize_colm方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: load_single_fits
# 需要导入模块: from linetools.isgm.abscomponent import AbsComponent [as 别名]
# 或者: from linetools.isgm.abscomponent.AbsComponent import synthesize_colm [as 别名]
#.........这里部分代码省略.........
all_ion.append(iont['ZION'][0][1])
# AbsLines
abslines = []
ntrans = len(np.where(iont['LAMBDA'][0] > 1.)[0])
for kk in range(ntrans):
flg = iont['FLG'][0][kk]
# Fill in
aline = AbsLine(iont['LAMBDA'][0][kk]*u.AA, closest=True)
aline.attrib['flag_origCH'] = int(flg)
aline.attrib['EW'] = iont['WOBS'][0][kk]*u.AA/1e3 # Observed
aline.attrib['sig_EW'] = iont['SIGWOBS'][0][kk]*u.AA/1e3
if aline.attrib['EW'] > 3.*aline.attrib['sig_EW']:
aline.attrib['flag_EW'] = 1
else:
aline.attrib['flag_EW'] = 3
# Force an upper limit (i.e. from a blend)
if (flg == 2) or (flg == 4) or (flg == 6):
aline.attrib['flag_EW'] = 3
#
aline.analy['vlim'] = [iont['VMIN'][0][kk],iont['VMAX'][0][kk]]*u.km/u.s
aline.attrib['z'] = igm_sys.zabs
aline.attrib['coord'] = igm_sys.coord
# Check f
if (np.abs(aline.data['f']-iont['FVAL'][0][kk])/aline.data['f']) > 0.001:
Nscl = iont['FVAL'][0][kk] / aline.data['f']
flag_f = True
else:
Nscl = 1.
flag_f = False
# Colm
if ((flg % 2) == 0) or (flg == 15) or (flg == 13):
flgN = 0
print('Skipping column contribution from {:g} as NG for a line; flg={:d}'.format(iont['LAMBDA'][0][kk],flg))
elif (flg == 1) or (flg == 3):
flgN = 1
elif (flg == 5) or (flg == 7):
flgN = 3
elif (flg == 9) or (flg == 11):
flgN = 2
else:
pdb.set_trace()
raise ValueError("Bad flag!")
if flgN == 3:
aline.attrib['logN'] = iont['LOGN2SIG'][0][kk] + np.log10(Nscl)
aline.attrib['sig_logN'] = 9.
elif flgN == 0: # Not for N measurement
pass
else:
aline.attrib['logN'] = iont['LOGN'][0][kk] + np.log10(Nscl)
aline.attrib['sig_logN'] = iont['SIGLOGN'][0][kk]
aline.attrib['flag_N'] = int(flgN)
#pdb.set_trace()
if flgN != 0:
_,_ = ltaa.linear_clm(aline.attrib)
# Append
abslines.append(aline)
# Component
if len(abslines) == 0:
comp = AbsComponent(cgabs.igm_sys.coord,
(iont['ZION'][0][0],iont['ZION'][0][1]),
igm_sys.zabs, igm_sys.vlim)
else:
comp = AbsComponent.from_abslines(abslines, chk_vel=False)
if comp.Zion != (1,1):
comp.synthesize_colm() # Combine the abs lines
if np.abs(comp.logN - float(iont['CLM'][0])) > 0.15:
print("New colm for ({:d},{:d}) and sys {:s} is {:g} different from old".format(
comp.Zion[0], comp.Zion[1], cgabs.name, comp.logN - float(iont['CLM'][0])))
if comp.flag_N != iont['FLG_CLM'][0]:
if comp.flag_N == 0:
pass
else:
print("New flag for ({:d},{:d}) and sys {:s} is different from old".format(
comp.Zion[0], comp.Zion[1], cgabs.name))
pdb.set_trace()
#_,_ = ltaa.linear_clm(comp)
cgabs.igm_sys.add_component(comp)
self.cgm_abs.append(cgabs)
# Add Z,ion
dat_tab.add_column(Column(all_Z,name='Z'))
dat_tab.add_column(Column(all_ion,name='ion'))
# Rename
dat_tab.rename_column('LOGN','indiv_logN')
dat_tab.rename_column('SIGLOGN','indiv_sig_logN')
dat_tab.rename_column('CLM','logN')
dat_tab.rename_column('SIG_CLM','sig_logN')
dat_tab.rename_column('FLG_CLM','flag_N')
# Set
self.cgm_abs[-1].igm_sys._ionN = dat_tab
# NHI
HI = (dat_tab['Z'] == 1) & (dat_tab['ion'] == 1)
if np.sum(HI) > 0:
self.cgm_abs[-1].igm_sys.NHI = dat_tab[HI]['logN'][0]
self.cgm_abs[-1].igm_sys.sig_NHI = dat_tab[HI]['sig_logN'][0]
self.cgm_abs[-1].igm_sys.flag_NHI = dat_tab[HI]['flag_N'][0]
else:
warnings.warn("No HI measurement for {}".format(self.cgm_abs[-1]))
self.cgm_abs[-1].igm_sys.flag_NHI = 0