使用 StokesCoord
班级#
这个 StokesCoord
类为与由WCS处理的Stokes参数交互提供了最小的包装。在WCS中(如FITS 4.0规范中所述),为Stokes参数分配了一个整数,每个参数代表一个不同的参数,例如,“I”被赋予数字1,“Q”被赋予数字2。 StokesCoord
类使用这些数字和FITS WCS约定所给出的参数名称之间的映射,并允许您通过它们的字符串名称而不是它们的数字来引用参数。例如,的默认表示形式 StokesCoord
对象使用名称而不是数字。
>>> import numpy as np
>>> from astropy.coordinates import StokesCoord
>>> StokesCoord([1, 2, 3, 4])
StokesCoord(['I', 'Q', 'U', 'V'])
这些“符号”被视为 StokesCoord
类引用它们,也可以通过 StokesCoord.symbol
物业::
>>> stokes = StokesCoord([1, 2, 3, 4])
>>> stokes.symbol
array(['I', 'Q', 'U', 'V'], dtype='<U2')
以及 StokesCoord
类也可以用符号而不是数字实例化:
>>> StokesCoord("I")
StokesCoord('I')
映射中不存在的数值将由字符串表示 "?"
**
>>> StokesCoord([1, 10])
StokesCoord(['I', '?'])
可以添加自定义数字-符号映射(请参阅 将符号映射到数值 。
对比符号和数字#
可以比较 StokesCoord
及其参数名称::
>>> stokes = StokesCoord([1, 2, 3, 4])
>>> stokes == "I"
array([ True, False, False, False])
比较 StokesCoord
这样的类通过将符号转换为数字来比较它们的基础数值。要直接比较符号,您可以执行以下操作:
>>> stokes = StokesCoord([1, 2, 3, 4, 5, 6])
>>> stokes.symbol == "?"
array([False, False, False, False, True, True])
与底层数字可能不同但全部未知(因此它们不相等)的值相比,这种比较匹配所有不知道等价符号的值。
请注意,与符号进行比较不适用于 numpy.equal
只有 ==
接线员。
将符号映射到数值#
内置符号#
Astery中内置的数字和参数名称之间的映射如下:
>>> from astropy.coordinates.polarization import FITS_STOKES_VALUE_SYMBOL_MAP
>>> for number, symbol in FITS_STOKES_VALUE_SYMBOL_MAP.items():
... print(f"{number:-2}: {symbol.symbol} - {symbol.description}")
1: I - Standard Stokes unpolarized
2: Q - Standard Stokes linear
3: U - Standard Stokes linear
4: V - Standard Stokes circular
-1: RR - Right-right circular: <RR*>
-2: LL - Left-left circular: <LL*>
-3: RL - Right-left cross-circular: Re(<RL*>))
-4: LR - Left-right cross-circular: Re(<LR*>)=Im(<RL*>)
-5: XX - X parallel linear: <XX*>
-6: YY - Y parallel linear: <YY*>
-7: XY - XY cross linear: Re(<XY*>)
-8: YX - YX cross linear: Im(<XY*>)
添加自定义符号#
可以在数字和参数之间添加自定义映射。
这可以使用 custom_stokes_symbol_mapping
上下文管理器::
>>> from astropy.coordinates import custom_stokes_symbol_mapping, StokesSymbol
>>> with custom_stokes_symbol_mapping({10: StokesSymbol("J", "A custom parameter name")}):
... print(StokesCoord(10))
StokesCoord('J')