QDP#
- class astropy.io.ascii.QDP(table_id=None, names=None, err_specs=None, sep=None)[源代码]#
基类:
Basic
快速漂亮的绘图表。
例子::
! Initial comment line 1 ! Initial comment line 2 READ TERR 1 READ SERR 3 ! Table 0 comment !a a(pos) a(neg) b be c d 53000.5 0.25 -0.5 1 1.5 3.5 2 54000.5 1.25 -1.5 2 2.5 4.5 3 NO NO NO NO NO ! Table 1 comment !a a(pos) a(neg) b be c d 54000.5 2.25 -2.5 NO 3.5 5.5 5 55000.5 3.25 -3.5 4 4.5 6.5 nan
上面的输入表包含一些初始注释、错误命令,然后是两个表。此文件格式可以包含多个表,由整行
NO
s.注释为感叹号,缺少的值为单个NO
条目。分隔符通常是空格,很少是逗号。QDP格式区分数据列和错误列。上表包含命令:READ TERR 1 READ SERR 3
这意味着在数据列1之后将有两个包含其正错误条和正错误条的错误列,然后是没有错误条的数据列2,然后是列3,然后是具有列3的对称错误的列,然后是剩余的数据列。
如下所述,表头高度不一致。可能包含列名的注释将被忽略,并且将调用列
col1
,col2
等,除非用户使用names=
关键字参数,在传递列名时,请传递 仅数据列的名称,而不是错误列的名称。 错误信息将编码在表列的名称中。(例如a_perr
和a_nerr
对于列的正负误差a
,b_err
柱的对称性误差b
。)将表写入此格式时,用户可以将
err_specs
关键字传递词典{{'serr': [3], 'terr': [1, 2]}}
,这意味着数据列1和2将有两个附加列,每个列都有正误差和负误差,而数据列3将有一个有对称误差的附加列(就像READ SERR
和READ TERR
上述命令)标题只是注释,不同任务分发的表在使用约定方面可能有很大差异。例如,由Swift-Gehrels任务分发的灯光曲线在一个标题条目中有额外的空间,这使得标签的数量与COLS的数量不一致。因此,我们忽略可能编码列名的注释,并将名称规范留给用户。
例子::
> Extra space > | > v >! MJD Err (pos) Err(neg) Rate Error >53000.123456 2.378e-05 -2.378472e-05 NO 0.212439
这些读取器和写入器类将努力了解哪些注释属于所有表,哪些属于每个表。一般评论将存储在
initial_comments
每个表的元。每个表的注释将存储在comments
Meta。例子::
t = Table.read(example_qdp, format='ascii.qdp', table_id=1, names=['a', 'b', 'c', 'd'])
读取第二个表 (
table_id=1
)在文件中example.qdp
包含上面的表格。有四个列名但是有七个数据列,为什么?因为READ SERR
和READ TERR
命令显示有三个错误列。t.meta['initial_comments']
将包含文件中的前两个注释行,而t.meta['comments']
将包含Table 1 comment
可以将该表写入另一个文件,并保留相同的信息,如下所示:
t.write(test_file, err_specs={'terr': [1], 'serr': [3]})
请注意,
terr
和serr
命令被传递给编写器。方法总结
read
\(表)阅读
table
并以由确定的格式返回结果outputter
属性。write
\(表)写
table
作为字符串列表。方法文件