diff --git a/csst_common/data_manager.py b/csst_common/data_manager.py index cc27b2287ab56e697b447429f50e3b23aacb73d3..45a0f72b2542ca8a6e3500ee63e66358cd03b9be 100644 --- a/csst_common/data_manager.py +++ b/csst_common/data_manager.py @@ -18,6 +18,7 @@ import os import re from typing import Union +import joblib import numpy as np from astropy.io import fits from astropy.table import Table @@ -198,12 +199,6 @@ class CsstMsDataManager: # DFS configuration self.use_dfs = use_dfs self.dfs_node = dfs_node - # DFS APIs - self.dfs_L0DataApi = Level0DataApi() - self.dfs_L1DataApi = Level1DataApi() - self.dfs_L2DataApi = Level2DataApi() - self.dfs_L0PrcApi = Level0PrcApi() - self.dfs_CalApi = CalMergeApi() # data directory self.dir_l0 = dir_l0 @@ -233,6 +228,27 @@ class CsstMsDataManager: if verbose: self.logger_mod.info("logger_mod initialized") + # DFS APIs + @property + def dfs_L0DataApi(self): + return Level0DataApi() + + @property + def dfs_L1DataApi(self): + return Level1DataApi() + + @property + def dfs_L2DataApi(self): + return Level2DataApi() + + @property + def dfs_L0PrcApi(self): + return Level0PrcApi() + + @property + def dfs_CalApi(self): + return CalMergeApi() + def set_env(self): """ set environment variables """ if os.uname()[1] == "dandelion": @@ -671,3 +687,12 @@ class CsstMsDataManager: # temporarily compatible with old interface CsstMbiDataManager = CsstMsDataManager + + +def test_dm(): + import joblib + from csst_common.data_manager import CsstMsDataManager + dm = CsstMsDataManager(dfs_node="pml") + def f(dm, a=1): + print(a) + joblib.Parallel(n_jobs=10,)(joblib.delayed(f)(dm) for i in range(10))