本文整理汇总了Python中astropy.table.QTable.add_row方法的典型用法代码示例。如果您正苦于以下问题:Python QTable.add_row方法的具体用法?Python QTable.add_row怎么用?Python QTable.add_row使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类astropy.table.QTable
的用法示例。
在下文中一共展示了QTable.add_row方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: iontable_from_components
# 需要导入模块: from astropy.table import QTable [as 别名]
# 或者: from astropy.table.QTable import add_row [as 别名]
def iontable_from_components(components, ztbl=None):
"""Generate a QTable from a list of components
Method does *not* perform logic on redshifts or vlim.
Includes rules for adding components of like ion
Not ready for varying atomic mass (e.g. Deuterium)
Parameters
----------
components : list
list of AbsComponent objects
ztbl : float, optional
Redshift for the table
Returns
-------
iontbl : QTable
"""
from collections import OrderedDict
# Checks
assert chk_components(components,chk_A_none=True)
# Set z from mean
if ztbl is None:
ztbl = np.mean([comp.zcomp for comp in components])
# Construct the QTable
cols = OrderedDict() # Keeps columns in order
cols['Z']=int
cols['ion']=int
cols['A']=int
cols['Ej']=float
cols['z']=float
cols['vmin']=float
cols['vmax']=float
cols['flag_N']=int
cols['logN']=float
cols['sig_logN']=float
names = cols.keys()
dtypes = [cols[key] for key in names]
iontbl = QTable(names=names,dtype=dtypes)
iontbl['vmin'].unit=u.km/u.s
iontbl['vmax'].unit=u.km/u.s
# Identify unique Zion, Ej (not ready for A)
uZiE = np.array([comp.Zion[0]*1000000+comp.Zion[1]*10000+
comp.Ej.to('1/cm').value for comp in components])
uniZi, auidx = np.unique(uZiE, return_index=True)
# Loop
for uidx in auidx:
# Synthesize components with like Zion, Ej
mtZiE = np.where(uZiE == uZiE[uidx])[0]
comps = [components[ii] for ii in mtZiE] # Need a list
synth_comp = synthesize_components(comps, zcomp=ztbl)
# Add a row to QTable
row = dict(Z=synth_comp.Zion[0],ion=synth_comp.Zion[1],
z=ztbl,
Ej=synth_comp.Ej,vmin=synth_comp.vlim[0],
vmax=synth_comp.vlim[1],logN=synth_comp.logN,
flag_N=synth_comp.flag_N,sig_logN=synth_comp.sig_logN)
iontbl.add_row(row)
# Add zlim to metadata
meta = OrderedDict()
meta['zcomp'] = ztbl
# Return
return iontbl
示例2: group_table
# 需要导入模块: from astropy.table import QTable [as 别名]
# 或者: from astropy.table.QTable import add_row [as 别名]
def group_table(self, edges):
"""Compute bin groups table for the map axis, given coarser bin edges.
Parameters
----------
edges : `~astropy.units.Quantity`
Group bin edges.
Returns
-------
groups : `~astropy.table.Table`
Map axis group table.
"""
# TODO: try to simplify this code
if not self.node_type == "edges":
raise ValueError("Only edge based map axis can be grouped")
edges_pix = self.coord_to_pix(edges)
edges_pix = np.clip(edges_pix, -0.5, self.nbin - 0.5)
edges_idx = np.round(edges_pix + 0.5) - 0.5
edges_idx = np.unique(edges_idx)
edges_ref = self.pix_to_coord(edges_idx) * self.unit
groups = QTable()
groups["{}_min".format(self.name)] = edges_ref[:-1]
groups["{}_max".format(self.name)] = edges_ref[1:]
groups["idx_min"] = (edges_idx[:-1] + 0.5).astype(int)
groups["idx_max"] = (edges_idx[1:] - 0.5).astype(int)
if len(groups) == 0:
raise ValueError("No overlap between reference and target edges.")
groups["bin_type"] = "normal "
edge_idx_start, edge_ref_start = edges_idx[0], edges_ref[0]
if edge_idx_start > 0:
underflow = {
"bin_type": "underflow",
"idx_min": 0,
"idx_max": edge_idx_start,
"{}_min".format(self.name): self.pix_to_coord(-0.5) * self.unit,
"{}_max".format(self.name): edge_ref_start,
}
groups.insert_row(0, vals=underflow)
edge_idx_end, edge_ref_end = edges_idx[-1], edges_ref[-1]
if edge_idx_end < (self.nbin - 0.5):
overflow = {
"bin_type": "overflow",
"idx_min": edge_idx_end + 1,
"idx_max": self.nbin - 1,
"{}_min".format(self.name): edge_ref_end,
"{}_max".format(self.name): self.pix_to_coord(self.nbin - 0.5)
* self.unit,
}
groups.add_row(vals=overflow)
group_idx = Column(np.arange(len(groups)))
groups.add_column(group_idx, name="group_idx", index=0)
return groups