7. Post-processing
Introduction
The output file of mcarats codes is in a unique format. Several tools are provided to process output data files from mcarats codes. The user can easily make a new tool using subroutines in ./src/libmcarats/. If you made a useful tool, you can contribute to the project by providing it.
pcouple to do a simple calculation with a couple of mcarats output data files
pconvert to convert a mcarats output data file with a simple equation
pgrads to visualize a mcarats output data set using GrADS
psample to (re)sample data from mcarats output file
pstat to calculate spatial statistics of mcarats output data
pcouple
This is used to do a simple calculation with a couple of mcarats output data files.
usage: pcouple method thresh infile1 infile2 > outfile
method:
0 (sum) : in1 + in2
1 (difference) : in1 - in2
2 (product) : in1 * in2
3 (ratio) : in1 / in2
4 (relative diff. 1) : (in1 - in2) / in2
5 (relative diff. 2) : 2*(in1 - in2) / (in1 + in2)
6 (square diff.) : in1*in1 - in2*in2
7 (root square diff.): sqrt(in1*in1 - in2*in2)
8 (diff. square) : (in1 - in2)*(in1 - in2)
9 (root diff.) : sqrt(in1) - sqrt(in2)
thresh: threshold of the denominator when method=3-5. If the denominator is less than the threshold, then the output value is reset at a very small value (-1.0E+30).
infile1 : Input data file 1.
infile2 : Input data file 2.
outfile : Output data file.
The output file is in the same format as the input.
pconvert
This is used to convert a mcarats output data file with a simple equation.
usage: pconvert nx ny method A B < infile > outfile
nx : # of x-pixels for output.
ny : # of y-pixels for output.
If nx*ny=0, then these are reset as defined in the input file. Otherwise the averaging is operated.
method=0 : v = u (does nothing)
1 : v = A + B * u (linear)
2 : v = A * u^B (power-law)
3 : v = exp(A + B*u) (exponential)
4 : v = ln(A + B*u) (logarithmic)
5 : v = A + (1 + B*G)*u (random noises are superimposed)
where G is a normalized Gaussian noise (average: 0; variance:1).
The output file is in the same format as the input, but if nx or ny is smaller than the input ("nx or ny; nxr or nyr; nxc or nyc; nppot or nqpot" defined in infile itself), then the amount of output data is reduced.
pgrads
To quickly visualize output data from mcarats codes, a tool, pgrads, is provided. This converts mcarats output data file to GrADS format.
usage: pgrads mach q zset infile (outfile) (< zlevels)
mach : machine parameter as follows:
=0 : little endian, record length for a real*4 datum = 4 (x86+g77)
=1 : little endian, record len = 1 (Alpha/x86+ifort)
=2 : big endian, record len = 4 (PPC+g77)
=3 : big
endian, record len = 1
For example
little endian: x86, Alpha,...
big endian: PowerPC, Sun,...
record length=4: g77
record length=1: ifort
q : determines which data sets are to be output (0:flux&HR, 1:flux, 2:HR, 3:radiance, 4:camera, 5:local flux)
zset : method to set z-levels (0: default; 1: read from stdin)
infile : input file (MCARaTS output)
outfile : output file (GrADS format)
zlevels : z-levels when zset=1
If GrADS is installed in your system, you can try the followings (in the "examples/case3" directory):
% ../../bin/pgrads 1 3 0 out_rs0067-f3d
% grads -l
...
ga-> open out_rs0067-f3d.gd.ctl
...
ga-> set mproj off
ga-> set gxout shaded
ga-> d rad
ga-> printim rs0067-f3d-t1.png x400 y300
ga-> set t 2
Time values set: 2001:1:0:0 2001:1:0:0
ga-> d rad
ga-> printim rs0067-f3d-t2.png x400 y300
ga-> quit
% ../../bin/pgrads 1 0 0 out_hr0213-f3d
% grads -l
...
ga-> open out_rs0213-f3d.gd.ctl
...
ga-> set mproj off
ga-> set gxout shaded
ga-> d fd
ga-> printim hr0213-f3d-t1-fd.png x400 y300
ga-> d f0
ga-> printim hr0213-f3d-t1-f0.png x400 y300
ga-> set z 2
LEV set to 2 2
ga-> d fu
ga-> printim hr0213-f3d-t1-fu.png x400 y300
ga-> set z 1 42
LEV set to 1 42
ga-> set y 30
LAT set to 30 30
ga-> c
ga-> d hr
ga-> printim hr0213-f3d-t1-hr.png x400 y300
ga-> quit
% ../../bin/pgrads 1 4 0 out_ci0067-f3d
% grads -l
...
ga-> open out_ci0055-f3d.gd.ctl
ga-> set mproj off
ga-> set parea 1 9 0.2 8.2
ga-> set gxout shaded
ga-> set display grey
ga-> set grid off
grid is off
ga-> set t 1
Time values set: 2001:1:0:0 2001:1:0:0
ga-> set clevs 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4
Number of clevs = 15
ga-> d cam
ga-> printim ci0055-f3d-t1.png x400 y400
ga-> quit
psample
This is used to resample data from a mcarats output data file. This is useful to extract partial data from the file.
usage: psample ixi ixs nx iyi iys ny < infile > outfile
ixi, iyi : initial indexes for X and Y
ixs, iys : step of X and Y indexes
nx, ny : # of X and Y pixels for output
An example is here: at examples/case3/
% ../../bin/psample 2 2 30 2 2 30 < out_rs0067-f3d > sample_rs0067-f3d
In this case, original data for 60x60 pixels are available, and output result from the above is for 30x30 pixels.
pstat
This is used to calculate basic statistics of a text data sequence.
usage: pstat N func ithresh (threshold1 threshold2) < infile > outfile
N : # of data
func : 0, raw data; 1, ln(dat); 2, exp(dat); The conversion is performed before the statistics computation.
ithresh
=0 : no threshold,
=1 : dat >= thresh1,
=2 : dat <= thresh1,
=3 : thresh1 <= dat <= thresh2,
=4 : dat <= thresh1 or dat >= thresh2
Output data file reports fraction of data filtered by the threshold(s), minimum, maximum, average, standard deviation, root-mean-square (rms), and skewness. For example,
% bin/pstat 3600 0 0 < examples/case3/out_rs0067-f3d
#frac, min, max, average, stdev, rms, skewness
1.0000 3.3890E-01 6.4152E-01 4.7632E-01 7.4342E-02 4.8209E-01 2.0645E-01
1.0000 2.0148E+00 2.0329E+00 2.0212E+00 2.4843E-03 2.0212E+00 8.3968E-01
1.0000 1.3267E-01 6.6358E-01 3.6322E-01 1.1587E-01 3.8126E-01 -1.3765E-01
1.0000 3.0360E+00 3.1539E+00 3.0686E+00 1.9938E-02 3.0687E+00 1.1165E+00
The output are printed to stdout. Statistics for four data sequences, each of which contains 3600 data, are reported in this example.