run_csst_msc_mbi_photometry 4.55 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
"""_summary_
"""
import os
from glob import glob
import mpi4py.MPI as MPI
from L1_pipeline.csst_msc_mbi_photometry.csst_photometry import core_msc_l1_mbi_phot
from typing import Optional


def run_csst_msc_mbi_photometry(image_path,
                                output_dir,
                                weight_path: str = None,
                                flag_path: str = None,
                                psf_ccds_path: Optional[str] = None,
                                plot_flag: bool = False,
                                getpsf_flag: bool = False,):

    input_dir = os.path.dirname(image_path)
    img_filename = os.path.basename(image_path)

    if weight_path is None:
        weight_path = os.path.join(
            input_dir, img_filename.replace("img", "wht"))
    if flag_path is None:
        flag_path = os.path.join(input_dir, img_filename.replace("img", "flg"))

    psf_local_path = os.path.join(
        output_dir, img_filename.replace("img", "psf"))
    flux_path = os.path.join(
        output_dir, img_filename.replace("img", "flux"))
    cat_path = os.path.join(
        output_dir, img_filename.replace("img", "cat"))
    seg_path = os.path.join(
        output_dir, img_filename.replace("img", "seg"))
    sky_path = os.path.join(
        output_dir, img_filename.replace("img", "sky"))

    core_msc_l1_mbi_phot(
        image_path=image_path,
        weight_path=weight_path,
        flag_path=flag_path,
        psf_ccds_path=None,
        psf_local_path=psf_local_path,
        flux_path=flux_path,
        cat_path=cat_path,
        seg_path=seg_path,
        sky_path=sky_path,
        plot_flag=plot_flag,
        getpsf_flag=getpsf_flag)


def genearte_path_list_for_one_pointing(input_dir,
                                        pointing_label,
                                        chip_label_list=None):
    """_summary_

    Args:
        input_dir (_type_): _description_
        pointing_label (_type_): _description_
        chip_label_list (_type_, optional): _description_. Defaults to None.

    Returns:
        _type_: _description_
    """
    pointing_dir = os.path.join(input_dir, pointing_label)
    if chip_label_list is None:
        image_path_list = glob(
            pointing_dir + '/CSST_MSC_MS_SCIE_*_' + '*_img_*')
    else:
        image_path_list = []
        for chip_label in chip_label_list:
            image_path = glob(pointing_dir + '/CSST_MSC_MS_SCIE_*_' +
                              chip_label + '_img_*')[0]
            image_path_list.append(image_path)

    return image_path_list


def run_pointing_list(input_dir,
                      pointing_label_list,
                      output_dir,
                      chip_label_list=None):
    image_path_list = []
    output_path_list = []
    try:
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)
    except OSError:
        pass

    for pointing_label in pointing_label_list:
        output_pointing_dir = os.path.join(output_dir, pointing_label)
        try:
            if not os.path.exists(output_pointing_dir):
                os.makedirs(output_pointing_dir)
        except OSError:
            pass
        temp_img_path_list = genearte_path_list_for_one_pointing(input_dir=input_dir,
                                                                 pointing_label=pointing_label,
                                                                 chip_label_list=chip_label_list)
        image_path_list = image_path_list + temp_img_path_list
        output_path_list = output_path_list + \
            [output_pointing_dir] * len(temp_img_path_list)

    comm = MPI.COMM_WORLD
    ind_thread = comm.Get_rank()
    num_thread = comm.Get_size()

    for i in range(len(image_path_list)):
        if i % num_thread != ind_thread:
            continue
        image_path = image_path_list[i]
        output_path = output_path_list[i]
        run_csst_msc_mbi_photometry(image_path=image_path,
                                    output_dir=output_path)


if __name__ == "__main__":
    input_dir = "/public/home/fangyuedong/project/50sqDeg_L1_outputs"
    # pointing_label_list = ["MSC_0000000", "MSC_0000001",
    #                        "MSC_0000002", "MSC_0000003", "MSC_0000004", "MSC_0000005"]
    # chip_label_list = None
    pointing_label_list = ["MSC_0000000"]
    chip_label_list = ["08"]
    output_dir = "/public/home/fangyuedong/project/test_photometry"
    run_pointing_list(input_dir=input_dir,
                      pointing_label_list=pointing_label_list,
                      output_dir=output_dir,
                      chip_label_list=chip_label_list)