_util.py 3.2 KB
Newer Older
Fang Yuedong's avatar
Fang Yuedong committed
1
2
3
import numpy as np
import os
from datetime import datetime
Fang Yuedong's avatar
Fang Yuedong committed
4
5
6
7
8
9
10
11
12
13
14
15
16
import argparse

def parse_args():
    '''
    Parse command line arguments. Many of the following
    can be set in the .yaml config file as well.
    '''
    parser = argparse.ArgumentParser()
    parser.add_argument('config_file', help='.yaml config file for simulation settings.')
    parser.add_argument('-c', '--config_dir', help='Directory that houses the ,yaml config file.')
    parser.add_argument('-d', '--data_dir', help='Directory that houses the input data.')
    parser.add_argument('-w', '--work_dir', help='The path for output.')
    return parser.parse_args()
Fang Yuedong's avatar
Fang Yuedong committed
17
18

def imgName(tt=0):
Fang Yuedong's avatar
Fang Yuedong committed
19
20
21
22
23
24
25
26
    ut = datetime.utcnow()
    eye, emo, eda, eho, emi, ese = str(ut.year), str(ut.month), str(ut.day), str(ut.hour), str(ut.minute), str(ut.second)
    emse = str(ut.microsecond)
    if int(emo)<10: emo = "0%s"%emo
    if int(eda)<10: eda = "0%s"%eda
    if int(eho)<10: eho = "0%s"%eho
    if int(emi)<10: emi = "0%s"%emi
    if int(ese)<10: ese = "0%s"%ese
Fang Yuedong's avatar
Fang Yuedong committed
27

Fang Yuedong's avatar
Fang Yuedong committed
28
29
30
31
32
33
34
35
    if tt==0:
        namekey = "CSST%s%s%sT%s%s%s"%(eye,emo,eda,eho,emi,ese)
    elif tt==1:
        namekey = "%s-%s-%sT%s:%s:%s.%s"%(eye,emo,eda,eho,emi,ese,emse)
    elif tt==2:
        namekey = "%s%s%s%s%s%s"%(eye,emo,eda,eho,emi,ese)
    else:
        raise ValueError("!!! Give a right 'tt' value.")
Fang Yuedong's avatar
Fang Yuedong committed
36

Fang Yuedong's avatar
Fang Yuedong committed
37
    return namekey
Fang Yuedong's avatar
Fang Yuedong committed
38

Fang Yuedong's avatar
Fang Yuedong committed
39
40
41
42
43
44
45
46
47
48
49
# def makeSubDir(path_dict, config):
#   subImgdir = path_dict["output_img_dir"] + config["mockImgDir"] + '/'
#   if not os.path.exists(subImgdir):
#       os.system("mkdir %s"%subImgdir)
#   imgKey0 = imgName(tt=0)
#   imgKey1 = imgName(tt=1)
#   imgKey2 = imgName(tt=2)
#   subImgdir = subImgdir + imgKey0 + config["reIndex"] + config["reShear"] + "/"
#   if not os.path.exists(subImgdir):
#       os.system("mkdir %s"%subImgdir)
#   return subImgdir, imgKey0, imgKey1, imgKey2
Fang Yuedong's avatar
Fang Yuedong committed
50
51

def makeSubDir_PointingList(path_dict, config, pointing_ID=0):
Fang Yuedong's avatar
Fang Yuedong committed
52
53
54
55
56
57
58
59
60
61
62
63
64
65
    imgDir = os.path.join(path_dict["work_dir"], config["run_name"])
    if not os.path.exists(imgDir):
        try:
            os.makedirs(imgDir, exist_ok=True)
        except OSError:
            pass
    prefix = "MSC_" + str(pointing_ID).rjust(7, '0')
    subImgdir = os.path.join(imgDir, prefix)
    if not os.path.exists(subImgdir):
        try:
            os.makedirs(subImgdir, exist_ok=True)
        except OSError:
            pass
    return subImgdir, prefix
Fang Yuedong's avatar
Fang Yuedong committed
66
67

def getShearFiled(config, shear_cat_file=None):
Fang Yuedong's avatar
Fang Yuedong committed
68
69
    if not config["shear_setting"]["shear_type"] in ["constant", "extra"]:
        raise ValueError("Please set a right 'shear_method' parameter.")
Fang Yuedong's avatar
Fang Yuedong committed
70

Fang Yuedong's avatar
Fang Yuedong committed
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
    if config["shear_setting"]["shear_type"] == "constant":
        g1 = config["shear_setting"]["reduced_g1"]
        g2 = config["shear_setting"]["reduced_g2"]
        reduced_shear = np.sqrt(g1**2 + g2**2)
        nshear = 1
        # TODO logging
    else:
        # TODO logging
        if not os.path.exists(shear_cat_file):
            raise ValueError("Cannot find shear catalog file.")
        try:
            shearCat = np.loadtxt(shear_cat_file)
            nshear = shearCat.shape[0]
            g1, g2 = shearCat[:, 0], shearCat[:, 1]
        except:
            print("Failed to the shear catalog file.")
            print("Setting to no shear.")
            g1, g2 = 0., 0.
    return g1, g2, nshear