使用 Astropy 撤消 Table 转换
Undo Table Conversion with Astropy
我有一个带有 BinTableHDU 的 FITS 文件,其中有许多条目已从数字转换为各种单位,如伏特和电流。我想关闭此转换并访问存储在 table.
中的原始数字值
这个table利用header中的TTYPE
、TSCAL
、TZERO
和TUNIT
键来完成转换.所以我可以使用这些 header 键来手动撤消转换。
undo = (converted - tzero ) / tscal
由于 astropy.table.Table
和 astropy.table.QTable
class 自动解释这些字段,我忍不住认为我忽略了一种使用 astropy
函数撤消的方法转换。 astropy QTable 或 Table class 中是否有属性或函数可以让我自动撤消转换。 (或者可能是另一种更简单的方法)撤消此转换?
编辑:感谢下面 Tom Aldcroft 的回答。
在我的情况下,可以使用以下代码抓取 FITS 二进制文件 table 并将其放入已转换或未转换的 pandas.DataFrame
中:
import pandas as pd
from astropy.table import Table
from astropy.io import fits
# grab converted data in various scaled values and units volts / current
converted = Table(fits.getdata(file, 2)).to_pandas()
# grab unconverted data in its original raw form
unconverted = Table(fits.getdata(file, 2)._get_raw_data()).to_pandas()
您需要使用直接 astropy.io.fits
界面而不是高级 Table
界面。从那里开始,这样的事情可能会奏效:
from astropy.io import fits
with fits.open('data.fits') as hdus:
hdu1 = hdus[1].data
raw = hdu1._get_raw_data()
我有一个带有 BinTableHDU 的 FITS 文件,其中有许多条目已从数字转换为各种单位,如伏特和电流。我想关闭此转换并访问存储在 table.
中的原始数字值这个table利用header中的TTYPE
、TSCAL
、TZERO
和TUNIT
键来完成转换.所以我可以使用这些 header 键来手动撤消转换。
undo = (converted - tzero ) / tscal
由于 astropy.table.Table
和 astropy.table.QTable
class 自动解释这些字段,我忍不住认为我忽略了一种使用 astropy
函数撤消的方法转换。 astropy QTable 或 Table class 中是否有属性或函数可以让我自动撤消转换。 (或者可能是另一种更简单的方法)撤消此转换?
编辑:感谢下面 Tom Aldcroft 的回答。
在我的情况下,可以使用以下代码抓取 FITS 二进制文件 table 并将其放入已转换或未转换的 pandas.DataFrame
中:
import pandas as pd
from astropy.table import Table
from astropy.io import fits
# grab converted data in various scaled values and units volts / current
converted = Table(fits.getdata(file, 2)).to_pandas()
# grab unconverted data in its original raw form
unconverted = Table(fits.getdata(file, 2)._get_raw_data()).to_pandas()
您需要使用直接 astropy.io.fits
界面而不是高级 Table
界面。从那里开始,这样的事情可能会奏效:
from astropy.io import fits
with fits.open('data.fits') as hdus:
hdu1 = hdus[1].data
raw = hdu1._get_raw_data()