Commit 33b78d87 authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

add p.add_metadata

parent cb4a828e
Pipeline #12143 passed with stage
in 0 seconds
......@@ -441,36 +441,48 @@ class Pipeline:
self.logger.info(f"Pipeline exit with reason: {reason}")
sys.exit(self.EXIT_CODES[reason])
def add_metadata_to_image(
def add_metadata(
self,
file_path,
data_model: str,
qc_status: int = -1024,
filter: str = None,
custom_id: str = None,
object: str = None,
proposal_id: str = None,
ra: float = None,
dec: float = None,
healpix: int = None,
obs_date: str = None,
parent_uuids: list = [],
# 编排信息
dataset: Optional[str] = None,
instrument: Optional[str] = None,
obs_type: Optional[str] = None,
obs_group: Optional[str] = None,
obs_id: Optional[str] = None,
# 探测信息
detector: Optional[str] = None,
filter: Optional[str] = None,
# 自定义ID
custom_id: Optional[str] = None,
# 额外数据产品信息
qc_status: Optional[int] = None, # QC状态, fits.getval("QC_STATUS")
object: Optional[str] = None,
proposal_id: Optional[str] = None,
ra: Optional[float] = None,
dec: Optional[float] = None,
healpix: Optional[int] = None,
obs_date: Optional[str] = None,
parent_uuids: Optional[list] = None, # 父数据产品UUID列表
table_hdu_idx_list: Optional[list] = None, # 包含BinTableHDU的索引列表
):
meta_kwargs = dict(
# 编排信息
dataset=self.task.get("dataset"),
instrument=self.task.get("instrument"),
obs_type=self.task.get("obs_type"),
obs_group=self.task.get("obs_group"),
obs_id=self.task.get("obs_id"),
dataset=dataset or self.task.get("dataset"),
instrument=instrument or self.task.get("instrument"),
obs_type=obs_type or self.task.get("obs_type"),
obs_group=obs_group or self.task.get("obs_group"),
obs_id=obs_id or self.task.get("obs_id"),
# 探测信息
detector=self.task.get("detector"),
filter=self.task.get("filter") or filter,
detector=detector or self.task.get("detector"),
filter=filter or self.task.get("filter"),
# 参考信息
pmapname=self.pmapname,
ref_cat=self.ref_cat,
# 数据处理信息
custom_id=self.task.get("custom_id") or custom_id,
pmapname=self.pmapname or self.task.get("pmapname"),
ref_cat=self.ref_cat or self.task.get("ref_cat"),
# 自定义ID
custom_id=custom_id or self.task.get("custom_id"),
# 额外数据产品信息
batch_id=self.task.get("batch_id"),
dag_group=self.task.get("dag_group"),
dag_group_run=self.task.get("dag_group_run"),
......@@ -479,7 +491,7 @@ class Pipeline:
priority=self.task.get("priority"),
# data_list=self.task.get("data_list") or [],
extra_kwargs=self.task.get("extra_kwargs") or {},
created_time=self.task.get("created_time"),
created_time=self.task.get("created_time") or self.now(),
rerun=self.task.get("rerun"),
# 数据产品信息
data_model=data_model, # 数据产品类型,手动设置
......@@ -494,17 +506,21 @@ class Pipeline:
ra=ra, # 赤经
dec=dec, # 赤纬
healpix=healpix, # HEALPix,每种数据产品的nside可以不一样
obs_date=obs_date, # 观测时间
obs_date=obs_date, # 观测时间(是否支持tuple)
prc_date=self.now(), # 处理时间
parent_uuids=parent_uuids, # 父数据产品UUID列表
)
"""Add metadata to file."""
"""Add metadata to data product file."""
self.logger.info(f"Add metadata to {file_path}...")
with fits.open(file_path, mode="update") as hdulist:
meta: dict = io.generate_meta(**meta_kwargs)
self.logger.info(f"Metadata: {meta}")
hdulist: fits.HDUList = io.append_meta(hdulist, meta)
hdulist.flush()
for idx in table_hdu_idx_list or []:
# TODO: BZ
pass
return meta
def query_ref_cat(
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment