CPIC图像仿真程序运行说明

程序中提供了两种仿真程序调用方式。一种为命令行调用,一种为程序调用。

命令行调用

当程序完成安装,并且设置环境变量后,可以通过命令行的方法进行调用。

下面是一个简单的示例代码:

cpicsim quickrun '*0/15(0.4,0.6)' 10 50 6

注意,如果在安装过程中没有配置环境变量。则需要是有类似的命令行调用:

python your/path/to/csst_cpic_sim/script/cpicsim.py quickrun '*0/15(0.4,0.6)' 10 50 6

表示对于0等星附近(0.4as, 0.6as)处15等的行星,单帧曝光10s,em倍增50倍,共6帧。

运行该指令,可以看到在当前目录下生成一个名为类似”0_15(0.4_0.6)_2024xxxxxx.fits”的文件,为仿真生成的图像。

这里重点说明一下target_str的详细说明,该字符串可以选择包含目标信息的yaml文件和格式字符串。 格式化字符串示例如下:

*star0_magnitude/star1_magnitude(star1_x,star1_y)/star2_magnitude(star2_x,star2_y)

表示目标为三颗恒星,中央恒星星等为star0_magnitude,其余两颗恒星星等为star1_magnitude和star2_magnitude,位置分别为(star2_x,star2_y)和(star1_x,star1_y)。所有的星等都为标准的ab星等的参考光谱。

当该字符存为空时,则没有输入目标,可以进行暗场或者平场模拟。

yaml文件的示例可以在refdata/demo_catalog文件夹下找到。 下面我们已该文件夹下的demo_0_20.yaml为例,进行快速仿真。

cpicsim quickrun demo_0_20 10 50 6

当前文件下的”demo_0_20_2024xxxx.fits”即为仿真生成的图像。

refdata/demo_catalog文件夹是当前程序的默认星表文件夹位置,运行程序时,可以自动在该目录下搜寻yaml文件。 也可以通过配置文件修改默认星表目录。

关于该程序的使用方法,可以运行以下命令查看帮助

cpicsim quickrun -h

代码调用

除使用命令行以外,也可以编写代码,导入quick_run_v2函数进行运行 该函数的参数如下

  • target_str: 观测目标字符串

  • band: 观测波段

  • expt: 单帧图像曝光时间秒数

  • emgain: 倍增增益/倍增增益设置值

  • nframe: 仿真图像帧数

  • skymag: 天空背景星等,可选,默认无背景

  • rotation: 图像焦面旋转角度,可选,默认无旋转

  • shift: 图像中心偏移量

  • emset_input: emgain为倍增增益还是倍增设置值,可选,默认倍增增益

  • cr_frame, 控制宇宙线输入,可选,默认无宇宙线

  • camera_effect: 是否包含相机效应,可选,默认无相机效应

  • prograss_bar: 是否显示进度条,可选,默认不显示

  • output: 输出图像路径,可选,默认为当前文件夹

仿真程序输出为3D的numpy.Array图像。同时文件将存储在当前文件夹下

下面的代码为一个例子。

[3]:
import numpy as np
import matplotlib.pyplot as plt
from csst_cpic_sim import quick_run_v2
from csst_cpic_sim.utils import psf_imshow

def psf_imshow(psf, vmin=1e-8, vmax=0.1):
    focal_img = psf.copy()
    focal_img = np.maximum(focal_img, vmin)
    focal_img = np.minimum(focal_img, focal_img.max()*vmax)
    image_log = np.log10(focal_img)
    plt.imshow(image_log, origin='lower', cmap='gray')

images = quick_run_v2(
    '*0/15(0.4,0.6)',
    'f661',
    10,
    50,
    6,
    skybg=20,
)

fig = plt.figure(figsize=(8, 5.5))
for index in range(6):
    plt.subplot(2, 3, index+1)
    psf_imshow(images[index])
    plt.axis('off')
    plt.title(f'frame {index+1}')
Quick Run: *0/15(0.4,0.6)
 Simulation Running: Frame 6/6./0_15(0.4_0.6)_20240515113846.fits
  Done [16.6s]
../../_images/cpic_notebooks_0_main_example_4_1.png

可以使用cpicsim run info -c config.yaml 进行更多的配置。实现更多目标、参数、配置的设置。

可以参照emxample文件下的observations文件夹下各文件进行观测目标和参数的配置。example文件夹下的run_config.yaml为示例的配置文件。

运行以下代码进行运行observations里的所有对应仿真。

cd example
cpicsim run observations -c run_config.yaml

当然也可以选择单独运行某个文件

cpicsim run observations/05_sci.yaml -c run_config.yaml

其中目标字典对观测目标进行配置,详见观测目标仿真文档。obsid为观测ID,和未来观测时的指令对应。一个观测ID对应一组图像,这些图像曝光时间等其他仪器设置、观测目标均相同。观测ID第一位固定为4,第二三位对应不同的观测类型。详见0级数据说明。gnc_info定义了曝光开始时刻与结束时刻是望远镜的定位信息,写入头文件。csst_format为True时,使用0级数据定义的数据格式存储数据。

下面是一个例子。

附录

gnc_info定义了望远镜的位置、速度及姿态信息。仿真程序中不依赖这些值,仅将其按照特定格式写入fits文件中。gnc数据结构为python字典,包括如下键值:

  • CABSTART : 开始时段望远镜位置信息采集时刻,MJD格式,默认和EXPSTART相同

  • SUNANGL0 :CABSTART时刻视轴与太阳的夹角,默认为-1.0

  • MOONANG0 :CABSTART时刻视轴与月球的夹角,默认为-1.0

  • TEL_ALT0 : CABSTART时刻视轴与地平的夹角,默认为-1.0

  • POS_ANG0 :CABSTART时刻方位角,默认为rotation

  • POSI0_X :CABSTART时刻望远镜X位置,默认为-1.0

  • POSI0_Y :CABSTART时刻望远镜Y位置,默认为-1.0

  • POSI0_Z :CABSTART时刻望远镜Z位置,默认为-1.0

  • VELO0_X :CABSTART时刻望远镜X速度,默认为-1.0

  • VELO0_Y :CABSTART时刻望远镜Y速度,默认为-1.0

  • VELO0_Z :CABSTART时刻望远镜Z速度,默认为-1.0

  • EULER0_2 :CABSTART时刻望远镜欧拉角2,默认为-1.0

  • EULER0_3 :CABSTART时刻望远镜欧拉角3,默认为-1.0

  • EULER0_1 :CABSTART时刻望远镜欧拉角1,默认为-1.0

  • RA_PNT0 :CABSTART时刻视轴RA,默认为cstar的ra

  • DEC_PNT0 :CABSTART时刻视轴Dec,默认为cstar的DEC

  • CABEND : 结束时段位置信息采集时刻,默认为EXPEND+曝光时间

  • SUNANGL1 : CABEND时刻视轴与太阳的夹角,默认等于CABEND时刻的对应值

  • MOONANG1 : CABEND时刻视轴与月球的夹角,默认等于CABEND时刻的对应值

  • TEL_ALT1 : CABEND时刻视轴与地平的夹角,默认等于CABEND时刻的对应值

  • POS_ANG1 : CABEND时刻方位角,默认等于CABEND时刻的对应值

  • POSI1_X : CABEND时刻望远镜X位置,默认等于CABEND时刻的对应值

  • POSI1_Y : CABEND时刻望远镜Y位置,默认等于CABEND时刻的对应值

  • POSI1_Z : CABEND时刻望远镜Z位置,默认等于CABEND时刻的对应值

  • VELO1_X : CABEND时刻望远镜X速度,默认等于CABEND时刻的对应值

  • VELO1_Y : CABEND时刻望远镜Y速度,默认等于CABEND时刻的对应值

  • VELO1_Z : CABEND时刻望远镜Z速度,默认等于CABEND时刻的对应值

  • EULER1_1 : CABEND时刻望远镜欧拉角2,默认等于CABEND时刻的对应值

  • EULER1_2 : CABEND时刻望远镜欧拉角3,默认等于CABEND时刻的对应值

  • EULER1_3 : CABEND时刻望远镜欧拉角1,默认等于CABEND时刻的对应值

  • RA_PNT1 : CABEND时刻视轴RA,默认等于CABEND时刻的对应值

  • DEC_PNT1 : CABEND时刻视轴Dec,默认等于CABEND时刻的对应值