# test_data_compression **Repository Path**: cosmo-xyh/test_data_compression ## Basic Information - **Project Name**: test_data_compression - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 数据压缩测试--JPEG-LS算法 ### 概述 本程序包用于从HST原始fits图像和CSST巡天相机仿真图像及实验室采集的测试图像生成2444B大小的数据包,用于数据压缩测试。 ### 准备工作 #### 1、基于HST图像 1. 准备HST raw fits,假设fits目录为**hst_fits** 2. 用make_data_package.py生成测试数据包 1. ./make_data_package.py -f hst_fits -o bin_hst 2. 上一条命令运行结束后,会生成一个数据包列表文件,文件名为{FITS_DIR}_pack.list;对于上面的例子而言,该数据包列表文件名就是hst_fits_pack.list 3. make_data_package.py的用法如下: ``` ❯ ./make_data_package.py -h usage: make_data_package.py [-h] [-f FITS_DIR] [-o OUT_DIR] [--vvp_cmd VVP_CMD] [--keep_temp] [--test] [--test_count TEST_COUNT] [--test_out TEST_OUT] CSST 数据包生成工具:从 FITS 提取像素,调用 Verilog (vvp) 生成带 CRC 的二进制包 options: -h, --help show this help message and exit -f FITS_DIR, --fits_dir FITS_DIR 包含 FITS 文件的根目录(递归查找) -o OUT_DIR, --out_dir OUT_DIR 输出目录(所有 .bat 文件将直接放在此目录下) --vvp_cmd VVP_CMD 调用 Verilog 模拟器的命令,默认 'vvp gen_csst_bat' --keep_temp 保留中间生成的文本文件(默认删除) --test 运行测试:生成随机文本数据包(不处理 FITS) --test_count TEST_COUNT 测试模式下生成的数据个数(默认1215) --test_out TEST_OUT 测试模式输出文件 ``` 3. 数据包列表格式如下: ``` ❯ head cosmos_pack.list # 数据包文件名(相对路径) 图像类型 bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0000.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0001.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0002.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0003.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0004.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0005.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0006.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0007.bat ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0008.bat ext ``` 4. 生成的数据包如下: ``` ❯ ll bin_cosmos | head -n 10 total 3.4M -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0000.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0001.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0002.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0003.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0004.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0005.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0006.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0007.bat -rw-rw-r-- 1 xyh xyh 2.4K Apr 18 20:27 j8pu1wcbq_j8pu1wcbq_raw_0008.bat ....... ``` 5. 用merge_data_pack.py将分立的数据包拼接成一个大的dat文件 1. python merge_data_pack.py wfc3_pack.list -o wfc3_dat 2. **这个大的dat文件交给SHESHI进行压缩测试** ``` ❯ py merge_data_pack.py -h usage: merge_data_pack.py [-h] [-o OUTPUT_DIR] [-l LOG_FILE] input_file 将同一基础名的多个二进制数据包按序号顺序拼接成一个文件,并记录图像类型日志。 positional arguments: input_file 输入的 TSV 文件路径(包含数据包路径和图像类型) options: -h, --help show this help message and exit -o OUTPUT_DIR, --output-dir OUTPUT_DIR 输出目录(默认为当前目录) -l LOG_FILE, --log-file LOG_FILE 日志文件路径(默认为输出目录下的 merge_log.txt) ``` #### 2、基于CSST仿真图像 1. 将16通道的fits拆分为子fits,每个子fits对应一个读出通道。操作流程如下: ``` python split_fits.py -f csst_fits_dir -o splitted_csst_fits --pix_num_per_row 1250 --n_rows 4700 --image_type bias/dark/flat/ext ``` 其中的命令行参数的作用如下: ❯ py split_fits.py -h usage: split_fits.py [-h] [-f FITS_DIR] [-o OUT_DIR] [-p PIX_NUM_PER_ROW] [-r N_ROWS] [-t IMAGE_TYPE] 将CCD290-99 fits 文件拆分为16个单通道 fits 文件 options: -h, --help show this help message and exit -f FITS_DIR, --fits_dir FITS_DIR 包含 FITS 文件的根目录(递归查找) -o OUT_DIR, --out_dir OUT_DIR 输出目录(分割后的fits文件将直接放在此目录下) -p PIX_NUM_PER_ROW, --pix_num_per_row PIX_NUM_PER_ROW 每行像素数 -r N_ROWS, --n_rows N_ROWS 行数 -t IMAGE_TYPE, --image_type IMAGE_TYPE 图像类型 在完成fits文件的分割之后,就可以用脚本make_data_package.py来生成2444B的数据包了, ``` ./make_data_package.py -f splitted_csst_fits -o bin_splitted_csst_fits ``` 后续其他操作与前面“基于HST图像”的流程一致。 ------ ### 数据压缩 1. 用run_jpegls_compression_test.py开始压缩测试 1. ./run_jpegls_compression_test.py -l hst_fits_pack.list --clean 2. 上面的命令执行结束后,会生成一个日志文件hst_fits_pack.log,里面的内容如下: ``` 文件路径 压缩比 是否一致 图像类型 bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0000.bat 0.752864 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0001.bat 0.757365 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0002.bat 0.755319 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0003.bat 0.747954 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0004.bat 0.762275 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0005.bat 0.771277 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0006.bat 0.783142 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0007.bat 0.766776 一致 ext bin_cosmos/j8pu1wcbq_j8pu1wcbq_raw_0008.bat 0.771686 一致 ext ``` 2. run_jpegls_compression_test.py的用法如下: ``` ❯ ./run_jpegls_compression_test.py -h usage: run_jpegls_compression_test.py [-h] [--restored RESTORED] [--clean] [-l LIST] [--log LOG] [input] [output] JPEG-LS 无损压缩工具,支持单文件或批量处理 positional arguments: input 要压缩的原始文件(单文件模式) output 压缩输出文件 (仅单文件模式,默认: 输入文件名.jls) options: -h, --help show this help message and exit --restored RESTORED 解压输出文件 (仅单文件模式,默认: 输入文件名.restored) --clean 验证完成后删除压缩文件和解压文件 -l LIST, --list LIST 批量处理模式:指定包含文件列表的文本文件 --log LOG 批量模式下的日志输出文件(默认:列表文件名.log) ``` ### 其他 1. 数据包绘图工具 2.