如何将目录中的角度值导入GalSim

时间:2019-01-24 01:28:33

标签: yaml galsim

我正在尝试将来自外部ascii文件的星系值(Sersic索引,半光半径等)导入GalSim。我在读取位置角度值'beta'时遇到麻烦,并且想知道使用YAML格式是否可行。

当我尝试时收到错误消息:

  

galsim.errors.GalSimConfigValueError: Invalid value_type specified for parameter beta with type=Catalog. Value <class 'coord.angle.Angle'> not in (<class 'float'>, <class 'int'>, <class 'bool'>, <class 'str'>)

我意识到我收到此错误消息是因为我无法在输入后附加字符串'deg'来指定此输入的单位为度。

我尝试将'deg'直接添加到输入目录中(在“”语音标记内),但没有成功。我也尝试直接在代码中的目录读取语句后添加“ deg”,但也没有成功。

下面是一个最小的工作示例。这依赖于同一目录中名为“ input.dat”的文件,文件内部带有一个数字(例如45)。然后,将下面的代码另存为'test.yaml',并在命令行上以$ galsim test.yaml的身份运行:

gal :
    type : Sersic
    n : 1
    half_light_radius : 1
    flux : 1
    ellip : 
        type : QBeta 
        q : 0.5
        beta : { type : Catalog , col : 0 }

input :
    catalog :
        file_name : input.dat

我希望能够从输入ascii目录中读取beta位置角度参数,并将其复制到输出星系配置文件中。上面的MWE应该在位置角为45度(或在“ input.dat”中放置任何数字)时,产生一个中等椭圆形星系的小型邮票图像。

在此方面,谢谢您的任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

尝试一下:

gal :
    type : Sersic
    n : 1
    half_light_radius : 1
    flux : 1
    ellip : 
        type : QBeta 
        q : 0.5
        beta : 
            type: Radians
            theta: { type : Catalog , col : 0 }

input :
    catalog :
        file_name : input.dat

如果您的目录列以度为单位列出角度,则还有一种Degrees类型的工作原理相同。