其实这个笔记感觉更像是个安利帖吧,因为主要是想给大家推荐一个netCDF文件处理工具,NCO。
简直不要太好用!真心发现,找到一些好用的工具,科研效率上一个level。
模式的输出文件以netCDF格式为主,比如WRF-Chem, CESM的output都是nc格式,GEOS-Chem的output是nc4格式。
netCDF数据格式介绍:
NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的。广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等领域。[1]
CESM输出文件介绍:
以大气模块为例,大气的文件一般存在~/archive/atm/hist路径下,通常输出的为月平均结果(文件名中带h0),如需要其他频率的输出则需要自己手动设置(h1,h2……)
一般一个月有一个文件,一个文件中包含非常多的变量,但是我们在使用时可能只想要分析其中某几个变量,那么把所有数据都从服务器或者超算上导下来又非常慢,即使弄下来也非常占存储空间,读写也很慢。所以推荐使用NCO在服务器上对文件进行初步处理。
netCDF Operators (NCO) 介绍:
netCDF格式分析库,用于操作分析netCDF数据格式。
常用命令有以下这些,更具体的示例和用法可以去官网看。
图片来源:nco.sourceforge.net/#Definition
CESM output常用命令介绍:
首先检查服务器是否支持NCO,一般如果是超算都支持。
module avail查看服务器支持的nco版本,比如我在tianhe上查看它就支持好几个版本
在.bashrc文件中module load对应icc的nco版本就好。比如我的bashrc中装的就是
ncrcat :合并文件
示例:
![](https://img-blog.csdnimg.cn/20210902224737626.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56CN5p-05aeR5aiYSm91cm9zeQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
ncrcat F_EP_02.cam.h0.000* 24month_F_EP_02.nc
如图,本来这些输出文件time维度都是1,即每个文件都只对应了一个月平均数据,通过ncrcat可以将时间维度拼接,变成2年的数据,即time维度变成了24。
但是可能出现的一个问题,就是不能把time维度合并太大,否则会被killed
ncks: 文件切片
由于每个文件中包含非常多的变量,但具体到研究问题可能我们只关注其中几个变量,为了节省数据存储空间以及减小文件大小来加快读写速度,可以使用ncks切片功能将需要的变量切出来。
示例:
ncks -v O3,PSL,TS,FSDS,RELHUM 24month_F_CL_01.nc 24month_O3_meto1_F_CL_01.nc
切完之后查看文件大小,发现小了不是一点点呐~
有时候大家可能需要批处理一些文件,可以参考下面这个脚本cut_ts.sh:
#!/bin/tcsh -f
#----
foreach filename (cam5_som_ctrl_1.cam.h0.???????.nc)
echo $filename
set timeid = `echo $filename | cut -c 29-35`
ncks -v TS,PSL $filename cam5_som_ctrl_1_tp_psl_$timeid.nc
end
#----
foreach这行中的一堆问号表示的是文件名中的时间,把这段时间数字设成timeid,ncks这行就可以进行对应处理了。
运行的话就直接./cut_ts.sh就好啦。
nces: 计算集合平均
示例:
nces 24month_O3_meto1_F_CL_0* 24month_O3_meto1_F_CL_ens_01_05.nc
这个命令就可以直接计算24month_O3_meteo1_F_CL_0* 这些文件的集合平均,超方便有没有!要不然手写matlab或者ncl代码,你得先把这些的文件list出来,挨个读一遍再求平均,现在一个命令就搞定啦!
So easy! 妈妈再也不用担心我的存储啦~
今天就说这三个命令,更多的大家自行去NCO网站探索吧~
NCO网站:NCO Homepage (sourceforge.net)
关于更详细的CESM output处理,推荐大家去看这个ppt:
https://www.cesm.ucar.edu/events/tutorials/2020/files/practical3-phillips.pdf
干货满满。
[1] netCDF 百度百科: netCDF_百度百科