Commit 5e418b7c authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

rewrite csst-dag as a dependency package of csst-pipeline-cli

parent 1400266d
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line

all:
	git pull
	rm -rf ./build
	pip install . --no-deps --force-reinstall
	#git pull
	rm -rf build csst_dag.egg-info
	pip install -e .

install:
	rm -rf ./build
	rm -rf build csst_dag.egg-info
	pip install . --no-deps --force-reinstall

pull:
@@ -13,3 +13,6 @@ pull:

compile:
	uv pip compile pyproject.toml -o requirements.txt

rsync_zjlab:
	rsync -avrP . zjlab-harbor:/mnt/csst-dag
 No newline at end of file
+61 −115
Original line number Diff line number Diff line
# `csst-dag`

# Change log
- [2025-09-15] 旧版csst-dag命令行工具安装方式
  - `pip install git+https://csst-tb.bao.ac.cn/code/csst-cicd/csst-dag.git@7a0108f3 --force-reinstall`
- [2025-09-09] csst-dag将被封装为Docker镜像,原有的基于`python -m csst_dag.cli`的命令行调用方式将被放弃

# Usages

运行之前,需要确定一个本地的 `.csst` 文件夹。

`.bashrc` 中加入以下代码

[//]: # (--pull=always)
```shell
# 确定本地 .csst 文件夹路径
export DOT_CSST=~/.csst
# 用自定义命令
alias csst='docker run --rm -v ${DOT_CSST}:/pipeline/app/.csst csu-harbor.csst.nao:10443/csst/csst-dag csst'
```

使 `DOT_CSST``csst` 命令生效:

```shell
source ~/.bashrc   # or source ~/.zshrc
```

创建 `.csst` 文件夹:

```shell
# 创建`.csst`文件夹
mkdir -p ${DOT_CSST}
```

测试 `csst` 命令是否可以执行:

```shell    
# 执行命令
csst --help
# 查看版本
csst --version
```

更新:
```shell
docker pull csu-harbor.csst.nao:10443/csst/csst-dag:latest
```

主要有以下几个命令组

- `csst env`: 预设环境变量
- `csst plan`: 编排数据查询
  - `csst plan --obs-group=111`
  - `csst plan --dataset=111 --stats=obs_group --to-json`
- `csst dag`: DAG任务操作
  - `csst dag start --dataset=xxx --batch-id=xxx` 
  - `csst dag cancel --dataset=xxx --batch-id=xxx` (需要Scalebox、DFS支持)
  - `csst dag status --dataset=xxx --batch-id=xxx` (需要Scalebox、DFS支持)
  - `csst dag logs --dataset=xxx --batch-id=xxx --status=0` (需要Scalebox、DFS支持)
- `csst file`: 原始数据查询
  - `csst data --data-model=raw --obs-id=10100000001 --stats=obs_group`
    - 查询原始数据,并按照obs_group进行统计
  - `csst data --data-model=csst-msc-l1-mbi --obs-id=10100000001 --stats=obs_group` --output=json
    - 查询数据产品,并按照obs_group进行统计
- `csst catalog` DFS星表查询
  - `csst catalog list` 列出可用的星表
  - `csst catalog show --name=trilegal` 列出指定星表的具体信息
- `csst ccds`: CCDS
  - `csst ccds pmap?`

## 1. `csst env` 环境变量

```shell
# 1. 查看所有预定义环境变量
csst env list

# 2. 查看环境变量
csst env show --name csu

# 3. 保存环境变量到文件 预设name
csst env set --name csu
```

## 2. ``csst plan``
```shell
# 1. 查看编排数据
csst plan \
    --dataset=csst-msc-c9-25sqdeg-v3 \
    --instrument=MSC \
    --obs-type=WIDE \
    --obs-group=W1 \
    --obs-id=10100232366
```


## ``csst dag``
```shell
1. 发起任务
csst dag run **kwargs # 发起任务

2. 查看任务状态(批量)
csst dag status **kwargs # 查看任务状态

3. 查看任务日志(批量和单个)
csst dag log **kwargs # 查看任务日志

4. 取消任务(按条件批量取消,按任务ID取消,或者取消所有)
csst dag cancel **kwargs # 取消任务

5. 0级数据查看
csst data --data-model=raw **kwargs # 查看原始数据

6. 数据产品查看 (可能要区分DFS1/2)
csst data --data-model=csst-msc-l1-mbi **kwargs # 查看产品数据

# TODO: 增加一个--stats命令/选项,按照某些列来统计数据产品
# TODO: 增加一个--print-columns命令/选项,打印数据产品的列名
```python
from csst_dag import CSST_DAGS

# define parameters
test_kwargs = dict(
    dataset="csst-msc-c9-25sqdeg-v3",
    instrument="MSC",
    obs_type="WIDE",
    obs_group="W1",
    obs_id="10100100412",
    proposal_id=None,
    prc_status=-1024,
)
# get DAG
dag = CSST_DAGS.get("csst-msc-l1-mbi")
# run with parameters
dag_group_run, dag_run_list = dag.run(
    **test_kwargs,
    extra_kwargs={"a": 1},
)

# `dag_group_run` is a dict containing information of the DAG group run
print(dag_group_run)
# {'dag_group': 'default-dag-group', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'batch_id': 'default-batch', 'priority': 1, 'created_time': '2025-09-22T06:39:29.077'}

# `dag_run_list` is a list[dict], whose elements are `dag_run`s
for dag_run in dag_run_list:
    print(dag_run)
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '06', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '7a81164c505efb9a13a7da166a6ad940df713238', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '07', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '7c22456c7a844dc165d095361089078a9c5f70c9', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '08', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'b2a57d47fb8497690e7e2629699adc414ce1321a', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '09', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '45d6262e3974006f227101c7e44e70a58ddfbbf1', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '11', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'd54c44a8522187b2fdadf68b1877cde1d068c2db', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '12', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '89c4658ab0e6b5115d7991b17cb91b0d78777f83', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '13', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'c1b9273eafed4fdbac5e26c7b46110bebcd901ec', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '14', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '7a7237e135c8eb6aba622d1ef8ac74c2cecb4a77', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '15', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '42a25ecac49b1adb89b8c154a96a1443a9fc9ccc', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '16', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'c7b6a5d88edb2ec001ceade7cf168bd64c5279f9', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '17', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '126a382659b205a2523364e0a90e96f78ea96d99', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '18', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'da71a90621728cbf263247a1ae92827e13041717', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '19', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'c7e1c71bee37ab33b0254a1046a761ad94a7ae91', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '20', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '1bbe6a5b7da28109a77c4e55f6789d70c24ae5d6', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '22', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '26b3ec23b8d18b41458906234e2aabfcbf558fd1', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '23', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'abfea84182c387b8607f41f1eed84193f1063ade', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '24', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': '6b218191ce462a25c12cc96fa38c38a3990f5293', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}
# {'dataset': 'csst-msc-c9-25sqdeg-v3', 'instrument': 'MSC', 'obs_type': 'WIDE', 'obs_group': 'W1', 'obs_id': '10100100412', 'detector': '25', 'filter': '', 'custom_id': '', 'batch_id': 'default-batch', 'pmapname': '', 'ref_cat': '', 'dag_group': 'default-dag-group', 'dag': 'csst-msc-l1-mbi', 'dag_group_run': 'b4352fdbc465fa81919176febd5a663a014a7f7f', 'dag_run': 'd49fbd2185b1330dbc4ffebe05cc998604837c4f', 'priority': 1, 'data_list': [], 'extra_kwargs': {'a': 1}, 'created_time': '2025-09-22T06:39:29.077', 'rerun': -1, 'status_code': -1024, 'n_file_expected': 1, 'n_file_found': 1, 'object': '', 'proposal_id': ''}

# currently defined DAGs
for dag in CSST_DAGS.keys():
    print(dag)
# csst-msc-l1-qc0
# csst-msc-l1-mbi
# csst-msc-l1-ast
# csst-msc-l1-sls
# csst-msc-l1-ooc
# csst-mci-l1
# csst-mci-l1-qc0
# csst-ifs-l1
# csst-cpic-l1
# csst-cpic-l1-qc0
# csst-hstdm-l1
```
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ BATCH_ID = "msc-ooc-v20241219-rdx-naoc-v1"
DATASET = "msc-ooc-v20241219"
LOCATION = "naoc"

# query for data in DFS
# query for dlist in DFS
result = level0.find(
    dataset=DATASET,
    file_type="SCI",
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
COSMOS
"""

# cd /nfsdata/share/simulation-collection/csst-dag
# cd /nfsdata/share/simulation-collection/csst-dag_cfg
# http://159.226.170.52:3000/scalebox/TaskList?app=csst-msc-l1-mbi.apps2

from csst_dag import get_redis, gen_level1_dag_message
+12 −8
Original line number Diff line number Diff line
@@ -46,15 +46,18 @@ python -m csst_dag.cli.csst_msc_l1 \
- `25sqdeg-test-b1` : 测试版,只跑了W1一部分
- `25sqdeg-test-b2` : 第二版,跑了W1-5,但是没跑第一批已经处理的
- `25sqdeg-test-b3` : 第三版,跑了W5所有
- `25sqdeg-full-b1` : 测试版
- `25sqdeg-full-b2` : 修复了20号探测器wcs问题,重新做了0级入库
- `25sqdeg-full-b3` : 确认没问题,跑了W1-W5

成像
成像+光谱
```bash
python -m csst_dag.cli.run \
    --dags csst-msc-l1-mbi csst-msc-l1-sls\
    --dataset=csst-msc-c9-25sqdeg-v3 \
    --instrument=MSC \
    --obs-group=W5 \
    --batch-id=25sqdeg-full-b2 \
    --batch-id=25sqdeg-full-b3 \
    --pmapname=csst_000094.pmap \
    --ref-cat=trilegal_093 \
    --verbose \
@@ -65,7 +68,7 @@ python -m csst_dag.cli.inspect \
    --dataset=csst-msc-c9-25sqdeg-v3 \
    --instrument=MSC \
    --data-model=csst-msc-l1-mbi \
    --batch-id=25sqdeg-full-b1
    --batch-id=25sqdeg-full-b3
```

光谱
@@ -94,23 +97,24 @@ python -m csst_dag.cli.inspect \
```

```bash
# 第一版 试跑
python -m csst_dag.cli.run \
    --dags csst-msc-l1-sls csst-msc-l1-mbi \
    --dataset=csst-msc-c11-sls-v1 \
    --instrument=MSC \
    --batch-id=sls-cosmos-v1-b1 \
    --batch-id=sls-cosmos-v1-b6 \
    --ref-cat=trilegal_093 \
    --pmapname=csst_000118.pmap \
    --obs-group=W2 \
    --obs-id=10100070335 \
    --verbose \
    --submit

# 第二版, mbi修复了wcs,obs_group更新成了W2
python -m csst_dag.cli.run \
    --dags csst-msc-l1-mbi \
    --dags csst-msc-l1-mbi csst-msc-l1-sls \
    --dataset=csst-msc-c11-sls-v1 \
    --instrument=MSC \
    --batch-id=sls-cosmos-v1-b2 \
    --batch-id=sls-cosmos-v1-b4 \
    --ref-cat=trilegal_093 \
    --verbose \
    --submit
Loading