Newer
Older
================
Change list
- 仓库名修改:
- ``csst_ms*`` 修改为 ``csst_msc_*``, 注意修改文件夹路径和 ``setup.py`` 中的名称
- 接口文件修改:
``top_level_interface.py`` 文件改名为 ``api.py`` , 这个文件中用于导入每个 python package 与流水线的接口函数
- 接口名称修改:
每个开发模块需要把接口函数命名为 ``base_`` 开头的函数,例如 ``base_phot``
- ``DataManager`` ``FileRecorder`` 不再使用, 底层接口都尽可能使用文件路径作为参数
- 运行状态 ``status`` 必须是 ``CsstStatus`` 的三种类型之一
- 输出文件列表 ``file_list``, 是一个 ``list``, 需要包含所有输出文件,包括临时文件
- 额外输出 (一般不需要,除非有其他额外输出)
- 程序中禁止使用当前文件夹 ``.`` 或 ``./``,所有路径应使用绝对路径
- 尽可能避免创建临时文件夹等操作
- 单元测试
- 覆盖率合格线可以设置稍低
- 由于代码接口定义更新,原则上单元测试应该会更加容易,
- 单元测试服务器: csstunittest@10.3.10.10 外网 -p 2000 159.226.170.52
- 单元测试需要一个大表来统计所有模块的每个案例(文件、类、函数名)和其简单解释(~10个字)
- 接口定义修改:
``csst_msc_mbi_distortion`` 样例代码如下
.. code-block:: python
import os.path
import numpy as np
from astropy.io import fits
from astropy import table
def read_data(file_path: str = "/path/to/data") -> np.ndarray:
return fits.getdata(file_path)
def _do_step_one(data: np.ndarray) -> np.ndarray:
reduced_data = np.fliplr(data)
return reduced_data
def _do_step_two(data: np.ndarray) -> np.ndarray:
reduced_data = np.flipud(data)
return reduced_data
def _do_step_three(data: np.ndarray, rc="/path/to/catalog") -> np.ndarray:
trc = table.Table.read(rc)
return data + np.mean(trc["ra"]) + np.mean(trc["dec"])
input_file, output_file, rc: str = "/path/to/gaia_dr3.fits", **kwargs
) -> CsstResult:
"""your docstring here"""
# read data
data = read_data(input_file)
# do your algorithm
data = _do_step_one(data)
data = _do_step_two(data)
data = _do_step_three(data, rc=rc)
# write results
hl = fits.HDUList(fits.PrimaryHDU(data=data))
hl.writeto(output_file, overwrite=True)
assert os.path.exists(output_file)
status=CsstStatus.PERFECT, file_list=[output_file, "an additional output file"]
# import modules
import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy import table
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# import modules
from scipy import signal
from astropy import units as u
from astropy import constants as const
# import classes / functions
from astropy.coordinates import SkyCoord
from scipy.interpolate import least_squares
# DO NOT use 'import *'
.. 主巡天模块-接口列表
.. ----------------------
.. .. code-block:: python
.. # csst-l1/mbi/csst_msc_mbi_instrument
.. def base_instcorr(input_file, img_file, wht_file, flg_file) -> CsstResult
.. # csst-l1/mbi/csst_msc_mbi_distortion
.. def base_distortion(input_file, img_file, wht_file, flg_file): -> CsstResult
.. # csst-l1/mbi/csst_msc_mbi_position
.. def base_position_single(input_file, img_file, wht_file, flg_file): -> CsstResult
.. def base_position_multiple(input_file, img_file, wht_file, flg_file): -> CsstResult
.. # csst-l1/mbi/csst_msc_mbi_flux
.. def base_flux(input_file, img_file, wht_file, flg_file): -> CsstResult
.. # csst-l1/mbi/csst_msc_mbi_photometry
.. def base_phot(input_file, img_file, wht_file, flg_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_instrument
.. def base_instcorr(input_file, output_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_position
.. def base_position(input_file, output_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_mosaic
.. def base_mosaic(input_files, output_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_directimage
.. def base_dimg(input_file, output_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_sky
.. def base_skybkg(input_file, output_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_objextraction
.. def base_objext(input_file, output_file): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_axe
.. def base_axe(input_file, output_file, dir_slsconf): -> CsstResult
.. # csst-l1/sls/csst_msc_sls_cde
.. def base_cde(input_file, output_file, dir_slsconf): -> CsstResult
.. # csst-l1/qc/csst_msc_qc0
.. def base_qc0(input_file, output_file): -> CsstResult
.. # csst-l1/qc/csst_msc_sls_qc1
.. def base_qc1(input_file, output_file): -> CsstResult