如何使用python查看ROSE2.0保存后的PUP产品,如HCL、PPI等?

如何使用python查看ROSE2.0保存后的PUP产品,如HCL、PPI等?
我知道cinrad.io.level3.StandardPUP和cinrad.io.PUP据说可以。但是会报错。
cinrad.io.PUP报错:IndexError: list index out of range
cinrad.io.level3.StandardPUP报错:ValueError: buffer size must be a multiple of element size
代码如下

img

可以通过PUPReader来读取ROSE保存的PUP产品。代码如下:
python
from pup import PUPReader

读取HCL产品

pup_file = 'HCL.PUP'
hcl = PUPReader(pup_file, 0)
hcl_data = hcl.read()

读取PPI产品

pup_file = 'PPI.PUP'
ppi = PUPReader(pup_file, 0)
ppi_data = ppi.read()
PUPReader的第一个参数是PUP文件的路径,第二个参数是通道号,对于HCL和PPI只有一个通道,填0即可。
read()方法可以读取PUP通道内的所有数据,返回一个包含所有扫描线的数据三维数组。
对于你遇到的两种错误:

  • IndexError: list index out of range
    这是因为你读取的PUP文件实际上并没有数据,只有头部信息,导致在读数据时索引越界。
  • ValueError: buffer size must be a multiple of element size
    这是因为PUP的block size设置不正确,应该是4的倍数(HCL每个元素占4字节)。ROSE保存PUP时block size默认应该是正确的,这种错误可能是你手动修改过PUP格式导致的。
    解决方法是检查PUP文件,确保block size是4的倍数,data size也正确对应数据量。然后使用PUPReader读取应该就可以正常工作了。

我找到失败的原因了。
cinrad.io.level3.StandardPUP是新更新的。如果直接pip install下载的内容不是最新的库。
需要自己去gitclone他的github库才可以下载最新的包。
才能正常读取数据。