2013年8月7日水曜日

NCOというnetCDFのアドオンのようなものがすごく便利。


netCDF Operator (NCO)

っというものがあるんですね。

この中にあるncksというコマンドを使えばnetCDFファイルの中から不要な変数を取り除くことができる→容量を減らすことができる。

以下はあるncファイルからPISCESのオフラインシミュレーションに必要な変数だけを出力するコマンドです:

ncks -v nav_lon,nav_lat,deptht,time_counter,votemper,vosaline,somixhgt,sowaflcd,soicecov,soshfldo,sowindsp Lab_T_94_01.nc ~/newdirectory/Lab_T_94_01.nc

ncks -v nav_lon,nav_lat,depthw,time_counter,votkeavt,vovecrtz Lab_W_94_01.nc ~/newdirectory/Lab_W_94_01.nc

ncks -v nav_lon,nav_lat,depthu,time_counter,vozocrtx Lab_U_94_01.nc ~/DATA1/Lab_Sea/Lab_U_94_01.nc

ncks -v nav_lon,nav_lat,depthv,time_counter,vomecrty Lab_V_94_01.nc ~/DATA1/Lab_Sea/Lab_V_94_01.nc

ここのオプション「-v」のあとに定義しているのが出力したい変数。

おかげさまで…

 11G Aug  6 17:47 Lab_T_94_01.nc
 1.7G Aug  6 17:50 Lab_U_94_01.nc
 1.7G Aug  6 17:53 Lab_V_94_01.nc
 8.1G Aug  6 18:08 Lab_W_94_01.nc

↑これだけあったファイルが→→→

 3.4G Aug  7 11:15 Lab_T_94_01.nc
 1.7G Aug  7 11:39 Lab_U_94_01.nc
 1.7G Aug  7 11:42 Lab_V_94_01.nc
 3.3G Aug  7 11:20 Lab_W_94_01.nc

まさに劇的ビフォーアフター☆4Dデータが多いTとWファイルはかなり容量を減らすことができました。U&Vはさほどかわりはない。

ちなみにACEnetのクラスターでは

module load nco

と打てばncoのコマンドが使えるようになっている♪

追伸:

「-A」オプションを使えばファイルの内容を書き換えることができる!



file1.ncに入っているvovecrtzという変数をfile2.ncに上書き保存する場合:

ncks -A -v vovecrtz file1.nc file2.nc

0 件のコメント:

コメントを投稿