-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmini_analysis_cats.py
63 lines (50 loc) · 2.12 KB
/
mini_analysis_cats.py
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
import os
from argparse import ArgumentParser
import subprocess
import json
import ipdb
import pandas as pd
from mini_matcher_catsaver import MiniMatcher
import numpy as np
def parse_args():
parser = ArgumentParser()
parser.add_argument('-mock_dir', type=str,
help='Directory containing mock data')
parser.add_argument('--outfile', type=str,
help='Name of output MEDS file')
parser.add_argument('-outdir', type=str, default=None,
help='Output directory for MEDS file')
parser.add_argument('-run_name', action='store', type=str, default=None,
help='Name of mock simulation run')
parser.add_argument('--overwrite', action='store_true', default=False,
help='Set to overwrite files')
parser.add_argument('-min_snr', action='store', type=float, default=5.0,
help='Minimum SNR for SExtractor catalog matching')
return parser.parse_args()
# note that exposure_lists is a list of lists, or basically a list of "exposure_list"
def main(args):
mock_dir = args.mock_dir
outfile = args.outfile
outdir = args.outdir
run_name = args.run_name
min_snr = args.min_snr
vb = True
# This also loads the joined and annular catalogs -- note basedir is assumed
# to be a realization-level thing where annular and joined catalogs live
# run_name should be forecast_blue or forecast_uv
mini_matcher = MiniMatcher(basedir=mock_dir, run_name=run_name)
exp_list = list(np.arange(3, 37, 3))
exp_list.extend([1,2,4,5])
for n_exp in exp_list:
minimocks_dir = f'mini_coadds/nexp_{n_exp}'
outdir = os.path.join(mock_dir, minimocks_dir)
sexcat_file = os.path.join(outdir, f'{run_name}_mock_coadd_cat.ldac')
mini_matcher.load_sex_cat(sexcat_file, int(n_exp))
# Now, do the matching against joined and annular catalogs
mini_matcher.match_to_analysis_cats()
return
if __name__ == '__main__':
args = parse_args()
rc = main(args)
if rc !=0:
print(f'mini_medsmaker failed w/ return code {rc}!')