Commit 35b2b053 authored by JX's avatar JX 😵
Browse files

Merge remote-tracking branch 'origin/develop'

parents 741c0eb1 3dd66999
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -312,7 +312,7 @@ class Catalog(CatalogBase):
            param['diskmass'] = gals['diskmass'][igals]

            np.random.seed(int(pix_id)+cat_id+igals)
            param['size'] = (gals['size'][igals] * ((1.+gals['redshift'][igals])**(0.4))) * np.random.uniform(0.7, 1.3)
            param['size'] = (gals['size'][igals] * (1.+gals['redshift'][igals])) * np.random.uniform(0.7, 1.3)
            if param['size'] > self.max_size:
                self.max_size = param['size']

+2 −1
Original line number Diff line number Diff line
@@ -323,7 +323,8 @@ class Catalog(CatalogBase):
            param['bulgemass'] = gals['bulgemass'][igals]
            param['diskmass'] = gals['diskmass'][igals]

            param['size'] = gals['size'][igals]
            np.random.seed(int(pix_id)+cat_id+igals)
            param['size'] = (gals['size'][igals] * (1.+gals['redshift'][igals])) * np.random.uniform(0.7, 1.3)
            if param['size'] > self.max_size:
                self.max_size = param['size']

+2 −2
Original line number Diff line number Diff line
numpy==1.26.4
astropy==6.0.1
scipy==1.11.4
GalSim==2.5.2
GalSim==2.5.3
PyYAML==6.0.1
sep==1.2.1
healpy==1.16.6
+75 −0
Original line number Diff line number Diff line
import argparse
import json
import math
from pathlib import Path


def _get_nested(d, path, default=math.nan):
    cur = d
    for k in path:
        if not isinstance(cur, dict) or k not in cur:
            return default
        cur = cur[k]
    return cur


def plan_json_to_pointing_text(json_path, out_path):
    json_path = Path(json_path)
    with json_path.open("r", encoding="utf-8") as f:
        data = json.load(f)

    if isinstance(data, dict) and "data" in data:
        data = data["data"]

    if not isinstance(data, list):
        raise TypeError(
            f"Unsupported JSON top-level type: {type(data).__name__}")

    header = (
        "# ra    dec    lon(ecliptic)    lat(ecliptic)    pos_angle    time(julian)    sat_x    sat_y    sat_z    "
        "sun_x    sun_y    sun_z    moon_x    moon_y    moon_z    sat_vx    sat_vy    sat_vz    exp_time    "
        "isDeep    obs_config    id\n"
    )

    columns = [
        ("ra", ("simresult", "ra")),
        ("dec", ("simresult", "dec")),
        ("lon(ecliptic)", ("simresult", "lambda")),
        ("lat(ecliptic)", ("simresult", "beta")),
        ("pos_angle", ("params", "pa_obj")),
        ("time(julian)", ("simresult", "jd")),
        ("sat_x", ("simresult", "sat_x")),
        ("sat_y", ("simresult", "sat_y")),
        ("sat_z", ("simresult", "sat_z")),
        ("sun_x", ("simresult", "sun_x")),
        ("sun_y", ("simresult", "sun_y")),
        ("sun_z", ("simresult", "sun_z")),
        ("moon_x", ("simresult", "moon_x")),
        ("moon_y", ("simresult", "moon_y")),
        ("moon_z", ("simresult", "moon_z")),
        ("sat_vx", ("simresult", "sat_vx")),
        ("sat_vy", ("simresult", "sat_vy")),
        ("sat_vz", ("simresult", "sat_vz")),
        ("exp_time", ("exptime",)),
        ("isDeep", ("simresult", "sky_type")),
        ("obs_config", None),
        ("id", ("obs_id",)),
    ]

    out_path = Path(out_path)
    with out_path.open("w", encoding="utf-8") as f:
        f.write(header)
        for item in data:
            values = []
            for _, path in columns:
                if path is None:
                    values.append("null")
                else:
                    values.append(_get_nested(item, path))
            f.write("    ".join(map(str, values)) + "\n")


if __name__ == "__main__":
    jsonFn = "test_2461876_1_plan.json"
    outFn = "pointing_test.dat"
    plan_json_to_pointing_text(jsonFn, outFn)