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]
可以使用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.0MOONANG0
:CABSTART时刻视轴与月球的夹角,默认为-1.0TEL_ALT0
: CABSTART时刻视轴与地平的夹角,默认为-1.0POS_ANG0
:CABSTART时刻方位角,默认为rotationPOSI0_X
:CABSTART时刻望远镜X位置,默认为-1.0POSI0_Y
:CABSTART时刻望远镜Y位置,默认为-1.0POSI0_Z
:CABSTART时刻望远镜Z位置,默认为-1.0VELO0_X
:CABSTART时刻望远镜X速度,默认为-1.0VELO0_Y
:CABSTART时刻望远镜Y速度,默认为-1.0VELO0_Z
:CABSTART时刻望远镜Z速度,默认为-1.0EULER0_2
:CABSTART时刻望远镜欧拉角2,默认为-1.0EULER0_3
:CABSTART时刻望远镜欧拉角3,默认为-1.0EULER0_1
:CABSTART时刻望远镜欧拉角1,默认为-1.0RA_PNT0
:CABSTART时刻视轴RA,默认为cstar的raDEC_PNT0
:CABSTART时刻视轴Dec,默认为cstar的DECCABEND
: 结束时段位置信息采集时刻,默认为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时刻的对应值