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: ...@@ -441,36 +441,48 @@ class Pipeline:
self.logger.info(f"Pipeline exit with reason: {reason}") self.logger.info(f"Pipeline exit with reason: {reason}")
sys.exit(self.EXIT_CODES[reason]) sys.exit(self.EXIT_CODES[reason])
def add_metadata_to_image( def add_metadata(
self, self,
file_path, file_path,
data_model: str, data_model: str,
qc_status: int = -1024, # 编排信息
filter: str = None, dataset: Optional[str] = None,
custom_id: str = None, instrument: Optional[str] = None,
object: str = None, obs_type: Optional[str] = None,
proposal_id: str = None, obs_group: Optional[str] = None,
ra: float = None, obs_id: Optional[str] = None,
dec: float = None, # 探测信息
healpix: int = None, detector: Optional[str] = None,
obs_date: str = None, filter: Optional[str] = None,
parent_uuids: list = [], # 自定义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( meta_kwargs = dict(
# 编排信息 # 编排信息
dataset=self.task.get("dataset"), dataset=dataset or self.task.get("dataset"),
instrument=self.task.get("instrument"), instrument=instrument or self.task.get("instrument"),
obs_type=self.task.get("obs_type"), obs_type=obs_type or self.task.get("obs_type"),
obs_group=self.task.get("obs_group"), obs_group=obs_group or self.task.get("obs_group"),
obs_id=self.task.get("obs_id"), obs_id=obs_id or self.task.get("obs_id"),
# 探测信息 # 探测信息
detector=self.task.get("detector"), detector=detector or self.task.get("detector"),
filter=self.task.get("filter") or filter, filter=filter or self.task.get("filter"),
# 参考信息 # 参考信息
pmapname=self.pmapname, pmapname=self.pmapname or self.task.get("pmapname"),
ref_cat=self.ref_cat, ref_cat=self.ref_cat or self.task.get("ref_cat"),
# 数据处理信息 # 自定义ID
custom_id=self.task.get("custom_id") or custom_id, custom_id=custom_id or self.task.get("custom_id"),
# 额外数据产品信息
batch_id=self.task.get("batch_id"), batch_id=self.task.get("batch_id"),
dag_group=self.task.get("dag_group"), dag_group=self.task.get("dag_group"),
dag_group_run=self.task.get("dag_group_run"), dag_group_run=self.task.get("dag_group_run"),
...@@ -479,7 +491,7 @@ class Pipeline: ...@@ -479,7 +491,7 @@ class Pipeline:
priority=self.task.get("priority"), priority=self.task.get("priority"),
# data_list=self.task.get("data_list") or [], # data_list=self.task.get("data_list") or [],
extra_kwargs=self.task.get("extra_kwargs") 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"), rerun=self.task.get("rerun"),
# 数据产品信息 # 数据产品信息
data_model=data_model, # 数据产品类型,手动设置 data_model=data_model, # 数据产品类型,手动设置
...@@ -494,17 +506,21 @@ class Pipeline: ...@@ -494,17 +506,21 @@ class Pipeline:
ra=ra, # 赤经 ra=ra, # 赤经
dec=dec, # 赤纬 dec=dec, # 赤纬
healpix=healpix, # HEALPix,每种数据产品的nside可以不一样 healpix=healpix, # HEALPix,每种数据产品的nside可以不一样
obs_date=obs_date, # 观测时间 obs_date=obs_date, # 观测时间(是否支持tuple)
prc_date=self.now(), # 处理时间 prc_date=self.now(), # 处理时间
parent_uuids=parent_uuids, # 父数据产品UUID列表 parent_uuids=parent_uuids, # 父数据产品UUID列表
) )
"""Add metadata to file.""" """Add metadata to data product file."""
self.logger.info(f"Add metadata to {file_path}...") self.logger.info(f"Add metadata to {file_path}...")
with fits.open(file_path, mode="update") as hdulist: with fits.open(file_path, mode="update") as hdulist:
meta: dict = io.generate_meta(**meta_kwargs) meta: dict = io.generate_meta(**meta_kwargs)
self.logger.info(f"Metadata: {meta}") self.logger.info(f"Metadata: {meta}")
hdulist: fits.HDUList = io.append_meta(hdulist, meta) hdulist: fits.HDUList = io.append_meta(hdulist, meta)
hdulist.flush() hdulist.flush()
for idx in table_hdu_idx_list or []:
# TODO: BZ
pass
return meta return meta
def query_ref_cat( 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