python cdf阅读器工具包

cdflib的Python项目详细描述


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<============69622e7376673f6272616e63683d6d6173746572" /><<<<<<亚胺米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米米75732F6B6668716B6438766696673626339643F73766733D74727565" /><<

CDFLIB

cdflib是一个python模块,无需安装 cdf美国宇航局图书馆

python<3.5是必需的。 此模块仅使用numpy,没有复杂的前置请求。

安装

要安装,请打开终端/命令提示符,然后键入:

啊!

有两种不同的CDF类:CDF读取器和CDF写入器。

目前,您不能同时读取和写入同一文件。 然而,未来的实现将统一这两个类。

CDF读卡器类

要开始访问cdf文件中的数据,请首先创建一个新的cdf类。 这可以通过以下命令完成 啊!

然后,可以对变量调用不同的函数。 例如:

啊!

此命令将返回变量variable1中从记录0到150的所有数据。 下面是您可以调用的8个不同函数的列表。

CDF信息()

返回显示基本cdf信息的字典。 此信息包括

  • cdfcdf的名称
  • 版本CDF的版本
  • 编码CDF的结束性
  • 多数行/列多数
  • zvariableszvariable数字及其对应名称的字典
  • 变量可变量数字及其对应名称的字典
  • 属性属性号及其相应名称和范围的字典
  • 校验和校验和指示符
  • numu rdim维度数,仅适用于变量
  • rdim size尺寸,仅适用于变量
  • 压缩CDF在文件级压缩
  • leap second updated上次更新的闰秒表(如果适用)

变量q(变量)

返回显示基本变量信息的字典。 此信息包括

  • 变量变量的名称
  • num变量号
  • 变量类型变量类型:zvariable或rvariable
  • 数据类型变量的CDF数据类型
  • ` num_elements']变量的元素数
  • num_dims变量记录的维度
  • 尺寸变量记录的形状
  • 稀疏性变量的记录稀疏性
  • 最后记录最大写入记录数(基于0)
  • 尺寸变化尺寸变化
  • 记录差异记录差异
  • pad如果设置了填充值
  • 压缩gzip压缩级别,0到9。0如果未压缩
  • ` block_factor']压缩变量时的阻塞因子

ATTINQ(属性=无)

返回属性信息的python字典。 如果没有属性 提供所有属性的列表。

attget(属性=无,条目=无)

返回所提供的条目号处的属性值。一 可以使用变量名代替其对应的条目号。一 字典返回时带有以下定义的键

  • 项目大小每个输入值的字节数
  • 项目数提取的值总数
  • 数据类型CDF数据类型
  • 数据检索的属性数据为标量值、numpy数组或字符串

varattsget(变量=无,展开=假)

获取所有变量属性。 与返回单个属性项值的attget不同,此函数返回dict()中的所有变量属性项。 如果找不到条目,则返回none。如果 不提供变量名,将打印变量列表。如果展开 以非false输入,然后还返回每个条目的数据类型 以列表形式显示为[条目,'cdf_xxxx']。对于没有任何属性 输入时,它们也将返回无值。

globalattsget(expand=false)

获取所有全局属性。此函数返回所有全局 字典中的属性项(以"attribute"的形式: {entry:value}对)。如果没有找到条目,则没有 返回。如果expand以非false输入,则每个条目的数据 类型也以列表形式返回为[entry,'cdf_xxxx']。 对于没有任何条目的属性,它们也将返回无值。

varget()

varget(variable=None,[epoch=None],[[starttime=None,endtime=None]|[startrec=0,endrec=None]],[,expand=True])

返回变量数据。变量可以输入 一个名字或一个可变的数字。默认情况下,它返回一个numpy.ndarray 或者使用变量 数据及其规格。

如果expand=true,则返回一个带有 以下是输出的定义键

  • 记录每个变量记录的维度号
  • rec_shape可变记录维度的形状
  • 记录数记录总数
  • 返回的记录数检索到的记录数
  • 数据类型CDF数据类型
  • 数据检索到的变量数据
  • 实数记录列表中稀疏记录变量的实数记录编号

默认情况下,将返回完整的变量数据。只获得 记录变量的数据部分,时间或 可以指定记录(基于0)范围。'"纪元"可以用来 指定此变量所依赖的时间变量 搜索时间范围。对于符合ISTP的CDF,时间 变量将来自此变量的"depend_0"属性。 函数将自动搜索它,因此无需指定 "时代"。如果未指定开始时间或结束时间,则 特定历元数据类型的可能最小值或最大值为 假定的。如果未指定开始或结束记录,则 从0点开始或/和结束于最后一个写入的数据。

开始(和结束)时间应在列表中显示为:

  • [年-月-日-时-分-秒]对于CDF纪元
  • [年-月-日-时-分-秒-毫秒-微秒-微秒-微微秒]适用于CDF_epoch16
  • [年-月-日-时-分-秒-毫秒-微秒-纳米秒]用于CDF_时间_TT2000

如果没有足够的时间分量,则只有最后一项可以具有子时间分量的浮动部分。

注意:cdf的cdf_epoch16数据类型为每个数据值使用2个8字节的双精度数。 在python中,每个值都以复数或 完成128。

epochrange

epochrange(epoch,[starttime=None,endtime=None])

获取历元范围。 返回记录号的list(),表示从纪元数据开始的时间范围内相应的开始和结束记录。 如果在时间范围内没有写入或找到数据,则返回"无"。

getversion()

显示代码版本。

importcdflibswea_cdf_file=cdflib.CDF('/path/to/swea_file.cdf')swea_cdf_file.cdf_info()x=swea_cdf_file.varget('NameOfVariable')swea_cdf_file.close()

CDF编写器类

cdf(路径,cdf_spec=none,delete=false)

创建空的CDF文件。path是CDF的路径名(带有或 没有.cdf扩展名)。 cdf_spec是 CDF文件,以字典的形式。字典里可以有 以下值:

  • 多数"row_major"或"column_major"或其对应值。默认为"Column\u Major"。
  • 编码数据编码方案。请参阅有关有效值的cdf文档。可以是字符串或其数字对应值。默认为"主机"。
  • 校验和是否在文件创建时设置数据验证。默认值为false。
  • rdim_size尺寸,仅适用于变量。
  • 压缩是否在文件级别压缩CDF。值为0-9或真/假,默认值为0/假。

写入globalattrs(globalattrs)

写入全局属性。globalattrs是一本 全局属性名及其值对。值是 条目号和值对的字典。例如:

globalAttrs={}globalAttrs['Global1']={0:'Global Value 1'}globalAttrs['Global2']={0:'Global Value 2'}

对于非字符串值,请使用包含该值及其CDF数据类型的列表。 例如:

globalAttrs['Global3']={0:[12,'cdf_int4']}globalAttrs['Global4']={0:[12.34,'cdf_double']}

如果未提供数据类型,则相应的CDF数据类型为 假设:

globalAttrs['Global3']={0:12}as'cdf_int4'globalAttrs['Global4']={0:12.34}as'cdf_double'

cdf允许属性的非字符串数据有多个值:

pip install cdflib
0

对于全局变量中的多个条目,它们应在 此表单:

pip install cdflib
1

写入变量分配器(变量分配器)

写入变量的属性,前提是该变量已存在。 variableattrs是一个具有变量属性名和 它的入口值对。条目值也是 变量ID和值对。变量id可以是变量名或 文件中的ID号。如果变量 不存在。 例如:

pip install cdflib
2

写入变量(变量规格,变量属性=无,变量数据=无)

写入变量以及变量属性和数据。 var_spec是包含 变量。用于创建变量的必需/可选键:

所需密钥:

  • 变量变量的名称
  • 数据类型CDF数据类型
  • num_elements元素数。对于数字类型,始终为1。字符串类型的字符长度。
  • rec_变化尺寸大小,仅适用于变量。

对于z变量:

  • 尺寸仅适用于零变量的尺寸。使用[]表示0维。每个维度对于z变量都是不同的。

对于变量:

  • 尺寸变化仅适用于变量的尺寸变化。

可选键:

< UL>
  • var_type变量是zvariable还是rvariable。有效值:"zvariable"和"rvariable"。默认值为"zvariable"。
  • sparse变量是否有稀疏记录。有效值为"no_sparse"、"pad_sparse"和"prev_sparse"。默认值为"无稀疏"。
  • 压缩设置gzip压缩级别(0到9),0表示不压缩。默认值是使用级别6压缩(仅当压缩数据小于未压缩数据时才执行此操作)。
  • 块因子块因子,压缩变量时块中的记录数。
  • pad填充值(字节、numpy.ndarray或字符串)
  • var廑u attrs是一个字典,具有{attribute:value}对。这个 属性是变量属性的名称。价值可以有它的 为数字数据指定的数据类型。如果不是,基于python的 类型,则假定相应的cdf类型:cdf_int4 for int, 浮点数为CDF_Double,复数数为CDF_Epoch16,整数为CDF_Int8 长。例如:

    pip install cdflib
    
    3

    变量数据是变量的数据。如果变量是正则的 没有稀疏记录的变量,它必须在 字节,或numpy.ndarray表示数值变量,或str或str列表表示 字符串变量。如果变量具有稀疏记录,则变量数据应为 以包含两个元素的列表/元组表示,第一个元素是 包含物理记录号的列表/元组,第二个是 字节、numpy.ndarray或字符串列表中的变量数据。 变量数据可以只有物理记录的数据(具有相同的 作为第一个元素的记录数)或具有来自两个物理元素的数据 记录和虚拟记录(包含填充数据)。Var_数据有 表格:

    pip install cdflib
    
    4

    请参阅示例了解其设置。

    getversion()

    显示代码版本和修改日期。

    注:cdf epoch数据类型cdf_epoch的属性输入值, cdf_epoch16或cdf_time_tt2000可以用数字表示 窗体或编码字符串窗体。 对于数字,cdf_epoch数据是8字节浮点,cdf_epoch16字节复数,cdf_time_2000 8字节 长。epoch数据的默认编码字符串应该具有 表格:

    pip install cdflib
    
    5

    其中mon是3个字符的月份。

    示例使用-

    使用主cdf文件作为创建cdf的模板。两个全球 可变元数据来自主cdf。 每个变量的规范也从主cdf复制。 只需填写变量数据即可写入新的CDF文件:

    pip install cdflib
    
    6

    CDF时期

    导入cdflib还导入cdfepoch模块,它处理 基于CDF的时代。以下函数可用于转换回 以不同的方式显示日期。你可以叫这些 功能如下:

    pip install cdflib
    
    7

    CDF中有三(3)种历元数据类型:CDF历元、CDF历元16 以及CDF时间TT2000。

    • cdf_epoch是自0年以来的毫秒。
    • cdf_epoch16是0年以来的皮秒。
    • cdf_time_tt2000(简称tt2000)是j2000之后的纳秒 闰秒。

    cdf_epoch是一个单双精度(如python中的float),cdf_epoch16是 2倍(在python中是复杂的),tt2000是8字节整数(作为int 在蟒蛇中)。在numpy中,它们是np.float64、np.complex128和np.int64, 分别是。所有这些纪元值都可以来自cdf.varget 功能。

    提供五个主要功能

    编码(epochs,iso_8601=false)

    将历元编码为UTC字符串。

    • cdf_epoch:输入应该是float或float列表(在numpy中,是 float64或float64的np.ndarray)每个历元都由 默认为ISO 8601表格:2004-05-13T15:08:11.022,或者,如果是ISO 8601 设置为false,2004年5月13日15:08:11.022
    • cdf_epoch16:输入应该是复数或复数列表(在numpy中,是 NP.complex128或NP.ndarraynp.complex128)每个纪元 编码,默认为ISO 8601格式: 2004-05-13T15:08:11.022033044055或,如果ISO_设置为false, 2004年5月13日15:08:11.022.033.044.055
    • TT2000:输入应该是一个int或一个int列表(在numpy中,一个 int64或np.int64的np.ndarray)每个历元都由 默认为ISO 8601表格:2008-02-02t06:08:10.10.012014016或 ISO_设置为false,2008年2月2日06:08:10.012.014.016

    unixtime(epochs,to_np=false)

    将历元编码为1970-01-01之后的秒数。 精度仅保持在最接近的微秒。

    如果到np=true,则值将以numpy数组的形式返回。

    分解(epochs,to_np=false)

    将历元分解为UTC组件。

    • cdf_epoch:它们是7个日期/时间组件:年、月、日、小时、分钟、秒和毫秒
    • CDF庠EPoch16:它们是10个日期/时间组件:年、月、日、时、分、秒和毫秒、微秒、纳秒和皮秒。
    • TT2000:它们是9个日期/时间组件:年、月、日、小时、分钟、秒、毫秒、微秒、纳秒。

    如果结果应为numpy数组,则将指定为np=true

    计算[_epoch/_epoch16/_tt200](datetimes,to_np=false)

    将提供的日期/时间组件计算为CDF epoch值。

    对于cdf_epoch:要计算成cdf_epoch值,每个日期/时间元素都应该 有七(7)个组件,如年、月、日、时, 分秒和毫秒,在一个列表中。例如:

    pip install cdflib
    
    8

    或者,调用函数 相反,直接计算年代,至少三(3)个第一(向上 七)组成部分。最后一个部分,如果不是第七个,可以是 可以有一小部分单位的浮子。

    对于CDF-EPoch16:它们应该正好有十(10)个组件,如年、月、日, 小时、分钟、秒、毫秒、微秒、纳秒和 皮秒,在名单上。例如:

    pip install cdflib
    
    9

    或者,直接调用compute_epoch函数,至少 三(3)个第一(最多十)组件。最后一个组件,如果不是 第10个,可以是一个浮点数,可以有一小部分单位。

    对于TT2000:每个TT2000类型的日期/时间应该正好有九(9)个组件, 年、月、日、时、分、秒、毫秒、微秒, 纳秒,在一个列表中。例如:

    importcdflibcdf_file=cdflib.CDF('/path/to/cdf_file.cdf')
    0

    或者,直接调用compute_TT2000函数,至少 三(3)个第一(最多九)组件。最后一个组件,如果不是 第九个,可以是一个浮点数,可以有一小部分单位。

    如果结果应为numpy类,则将指定为np=true

    解析(datetimes,to_np=false)

    将提供的日期/时间字符串解析为CDF epoch值。

    • cdf_epoch:字符串的格式必须为"dd mmm yyyy hh:mm:ss.xxx"或"yyyy mm ddthh:mm:ss.xxx"(在ISO_中)。字符串是encode函数的输出。
    • CDF_epoch16:字符串的格式必须为"dd mmm yyyy hh:mm:ss.mmm.uuu.nnn.ppp"或"yyyy mm ddthh:mm:ss.mmmuuunnppp"(在ISO_8601中)。字符串是encode函数的输出。
    • TT2000:字符串的格式必须为"dd mmm yyyy hh:mm:ss.mmm.uuu.nnn"或"yyyy mm ddthh:mm:ss.mmmuuunnnn"(在ISO_中)。字符串是encode函数的输出。

    如果结果应为numpy类,则将指定为np=true

    findepochrange(epochs,starttime=none,endtime=none)

    从 CDF纪元数据类型。它返回一个记录号列表。如果开始 不提供时间,则假定时间是可能的最小值 价值。如果未提供结束时间,则最大可能值 假设。这个时代被认为是按时间顺序排列的。这个 开始和结束时间应具有正确的日期/时间编号 组件,对应于纪元的daTA型:

    开始/结束时间应以epoch单位表示,或以 "计算纪元/epoch16/tt2000"部分描述的列表格式。

    getversion()

    显示代码版本。

    getLeapSecondLastUpdated()

    显示闰秒添加到闰秒表中的最新日期。

    CDF天文时代

    如果用户安装了astropy,导入cdflib也会导入模块 cdflib.cdfastropy,它包含了上述模块的所有功能, 但是使用astropy时间类进行所有转换。它也可以用在 如上述模块所示:

    importcdflibcdf_file=cdflib.CDF('/path/to/cdf_file.cdf')
    1

    另外,也许最重要的是,还有一个additional函数可以转换 cdf_epoch/epoch16/tt2000次到astropy时间类:

    将"u"转换为"astropy(epochs,format=none)

    将历元转换为天体时间。

    • cdf_epoch:输入应该是float或float列表(在numpy中,是 np.float64或np.float64的np.ndarray)。如果要忽略输入类型并转换 要直接使用cdf_epoch,请在调用函数时指定format='cdf_epoch'。
    • cdf_epoch16:输入应该是复数或复数列表(在numpy中,是 np.complex128或np.complex128的np.ndarray)。如果要忽略输入类型并转换 要直接使用cdf_epoch,请在调用函数时指定format='cdf_epoch16'。
    • TT2000:输入应该是一个int或一个int列表(在numpy中,一个 或np.int64的np.ndarray)。如果要忽略输入类型并转换 要直接使用cdf_epoch,请在调用函数时指定format='cdf_tt2000'。

    有关astropy时间及其包含的所有功能的详细信息,请查看astropy文档

    https://docs.astropy.org/en/stable/time/

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    IE中的java跨域cookie问题   重复java中已经满足的循环   编译java RMI服务器时出错   JavaServlet POST中作为参数传递的javascript大型JSON数组数据为空   java片段未每次刷新/调用   java无法编译。错误消息   java如何构造大型类?   java Hibernate:TableThingsDB。事情并不存在   java如何操作从匹配项创建的数组。发现   循环以搜索和显示数组Java的某些部分   加载或注册SQLite JDBC驱动程序时出现java问题   活动和服务之间的java连接   JavaGWTG2D:ie8中的drawImage   java在安卓中设置hessian阈值   在Tomcat中使用Logback时发生java错误