Commit 71e23c8d authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

add fits_open to be compatible with s3

parent 931e0ded
Pipeline #10781 failed with stage
in 0 seconds
...@@ -12,18 +12,30 @@ Modified-History: ...@@ -12,18 +12,30 @@ Modified-History:
2025-08-05, Bo Zhang, added generate_meta 2025-08-05, Bo Zhang, added generate_meta
""" """
import os
import json
import bisect import bisect
import json
import os
import uuid
import warnings import warnings
from copy import deepcopy from copy import deepcopy
from typing import Optional, Any from typing import Optional
import uuid
from astropy.io import fits from astropy.io import fits
from csst_fs.s3_config import load_s3_options
from .time import now from .time import now
s3_options = load_s3_options()
def fits_open(name, **kwargs) -> fits.HDUList:
if name.startswith("s3://"):
# read fits file from s3
return fits.open(name, use_fsspec=True, fsspec_kwargs=s3_options, **kwargs)
else:
# read fits file from local
return fits.open(name, **kwargs)
# meta字段和默认值 # meta字段和默认值
REQUIRED_KEYS_IN_META = dict( REQUIRED_KEYS_IN_META = dict(
......
...@@ -21,6 +21,7 @@ from csst_common.io import ( ...@@ -21,6 +21,7 @@ from csst_common.io import (
generate_meta, generate_meta,
append_meta, append_meta,
extract_meta, extract_meta,
fits_open,
) )
...@@ -141,3 +142,7 @@ class TestFitsHeaderOps(unittest.TestCase): ...@@ -141,3 +142,7 @@ class TestFitsHeaderOps(unittest.TestCase):
self.assertIn("META", set(hdulist[0].header.keys())) self.assertIn("META", set(hdulist[0].header.keys()))
meta = extract_meta(hdulist) meta = extract_meta(hdulist)
self.assertEqual(meta["obs_id"], "123456") self.assertEqual(meta["obs_id"], "123456")
def test_fits_open(self):
hl = fits_open("/nfsdata/share/pipeline-unittest/csst_common/test_fits/hl.fits")
self.assertTrue(isinstance(hl, fits.HDUList))
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