source: trunk/UTIL/PYTHON/planetoplot_v1/README.PP @ 1062

Last change on this file since 1062 was 944, checked in by aslmd, 12 years ago

associated changes to previous commit. additional readmes and fixes.

File size: 14.5 KB
Line 
1**************************************
2**************************************
3**************************************
4    PLANETOPLOT TUTORIAL EXAMPLES
5**************************************
6         Authors : AC + AS
7**************************************
8  DON'T FORGET YOUR BEST FRIEND IS
9     pp.py -h [or] pp.py --help
10**************************************
11**************************************
12**************************************
13
14The program pp.py works on virtually any NETCDF file.
15If not, please contact us, it is usually an easy fix to make it work.
16
17NB: To use the movie capability, you will have to install mencoder.
18NB: To use advance interpolation methods for GCM and mesoscale files, you will have to compile fortran routines with f2py (or compile those independently).
19
20************************************
21SIMPLE EXAMPLES on a SAMPLE GCM FILE
22************************************
23Goal: The simplest, most minimal example. Mapping topography.
24pp.py -f diagfired.nc
25
26Goal: I would like finer contours.
27pp.py -f diagfired.nc --div 30
28
29Goal: I would like wind vectors.
30pp.py -f diagfired.nc -W
31
32Goal: I would like more vectors [i.e. lower the stride].
33pp.py -f diagfired.nc -W -s 1
34
35Goal: I want to map a given field (surface temperature).
36pp.py -f diagfired.nc -v tsurf
37
38Goal: I want to map two fields next to one another (topography and tauice).
39pp.py -f diagfired.nc -v phisinit,tauice
40
41Goal: I want to map two fields, tauice shaded, topography contoured, same plot.
42pp.py -f diagfired.nc -v tauice -w phisinit
43
44Goal: I want to map a field but projected on the sphere.
45pp.py -f diagfired.nc -v tauice -p ortho
46
47Goal: I want to redefine the minimum and maximum values shown.
48pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9
49
50Goal: I want to insert holes wherever values are lower than 0.2 and higher than 0.9
51pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H
52
53Goal: I want to fill holes with an background image of Mars [you have to be connected to Internet]
54pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires
55
56Goal: I want the same map, but projected on the sphere
57pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p ortho
58
59Goal: I want the same map, but projected on the sphere and centered on longitude 100°
60pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p ortho --blon -100
61
62Goal: I want the same map, but projected with north polar stereographic view
63pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p npstere
64
65Goal: I want the same map, but with a transparent field to see background image
66pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p npstere --trans 0.6
67
68Goal: I want to save this in PNG format
69pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p ortho -S png
70
71Goal: I want to animate this along time axis
72pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p ortho -S avi
73
74Goal: I want to animate this along time axis with fps=12
75pp.py -f diagfired.nc -v tauice -m 0.2 -M 0.9 -H -b vishires -p ortho --rate 12
76
77Goal: I want to plot results from two simulation files next to one another
78pp.py -f diagfired.nc,diagfired.nc -v tsurf
79
80Goal: I want to plot results for two different times in the file next to one another
81pp.py -f diagfired.nc -v tsurf --time 0.5 --time 0.9
82
83Goal: I want to plot averaged results in the file from one time to another time
84pp.py -f diagfired.nc -v tsurf --time 0.5,0.9
85
86Goal: I want to plot the minimum/maximum value over times stored in the file
87pp.py -f diagfired.nc -v tsurf --redope mint
88pp.py -f diagfired.nc -v tsurf --redope maxt
89
90Goal: I want to plot a section of temperature at longitude 0
91pp.py -f diagfired.nc --var temp --lon 0 --time 0.5
92
93Goal: I want to plot a section of zonally-averaged temperature
94pp.py -f diagfired.nc -v temp --lon -180,180 --time 0.5
95
96Goal: I want to plot a section of zonally-averaged temperature with contours of zonally-averaged zonal wind
97pp.py -f diagfired.nc -v temp -w u --lon -180,180 --time 0.5
98
99Goal: I want to plot a section of zonally-averaged temperature and zonally-averaged zonal wind
100pp.py -f diagfired.nc -v temp,u --lon -180,180 --time 0.5
101
102Goal: I want to plot a globally-averaged 1D temperature profile
103pp.py -f diagfired.nc -v temp --time 0.5 --lat -90,90 --lon -180,180
104
105Goal: I want to overplot few globally-averaged 1D temperature profiles at different times
106pp.py -f diagfired.nc -v temp --time 0.5 --time 0.9 --lat -90,90 --lon -180,180
107
108Goal: I want to overplot lat=0,lon=0 1D temperature profiles at different times
109pp.py -f diagfired.nc -v temp --time 0.5 --time 0.9 --lat 0 --lon 0 --ymax 20 --xmin 180.
110
111******************** [specific mesoscale]
112
113Goal: I want to plot results for two different LOCAL times in the file next to one another
114pp.py -f wrfout_d01_2024-05-03_01:00:00 -v TSURF --time 4 --time 7 --axtime lt
115
116Goal: I want to plot a section of temperature at longitude -120 between AMR altitudes 0 km and 30 km with 50 levels
117pp.py -f wrfout_d01_2024-05-03_01:00:00 -v tk --time 4 --axtime lt --lon -120 -i 3 -l 0,30,50
118
119Goal: I want to plot a section of temperature at longitude -120 between ALS altitudes 0 km and 30 km with 50 levels
120pp.py -f wrfout_d01_2024-05-03_01:00:00 -v tk --time 4 --axtime lt --lon -120 -i 4 -l 0,30,50
121
122***********************************************************************************
123EXAMPLE : The classic mountain GW plot
124***********************************************************************************
125pp.py -f wrfout_d01_9999-09-09_09:00:00 -v W,tpot --lat 60 --time 15 -i 4 -l 30,130,100 --div 50
126***********************************************************************************
127
128***********************************************************************************
129EXAMPLE : Plotting surface temperature maps from TES
130***********************************************************************************
131pp.py -f TES/TES.MappedClimatology.nadir.MY25.nc -v Tsurf_day -p npstere --blat 60 --trans 0.5 -b vishires --time 50
132***********************************************************************************
133pp.py -f /d5/emlmd/TES/TES.MappedClimatology.nadir.MY25.nc,/d5/emlmd/TES/TES.MappedClimatology.nadir.MY26.nc   -p npstere -v Tsurf_day --time 90,105 --time 105,120 --time 120,135 --time 135,150 --blat 70 --div 30 -m 190 -M 270 -b vishires --trans 0.7
134***********************************************************************************
135pp.py -f /d5/emlmd/TES/TES.MappedClimatology.nadir.MY25.nc,/d5/emlmd/TES/TES.MappedClimatology.nadir.MY26.nc -p npstere -v Tsurf_day --time 110,130 --blat 70 --div 30 -m 190 -M 270 -b vishires --trans 0.7 -c onebar --title "Surface temperature (K)"
136***********************************************************************************
137dust from TES
138pp.py -f TES.MappedClimatology.nadir.MY25.nc -v tau_dust -p cyl -c Oranges -m 0.0 -M 2.0 --div 20 --trans 0.8 -b molabw -S avi -T
139
140***********************************************************************************
141COMMENTED EXAMPLE : The globe with surface temperature and winds
142***********************************************************************************
143pp.py -f diagfired.nc -v tsurf -w phisinit -m 120 -M 320 --div 20 -W -s 1 --vert 0 -p ortho --blat 20 --blon -80 -S html -t $W
144***********************************************************************************
145See results here: http://www.lmd.jussieu.fr/~aslmd/EXAMPLES/LMD_GCM_movie_tsurf_UV/anim.html
146***********************************************************************************
147pp.py -f diagfired.nc
148        OK. You probably get that one.
149-v tsurf -w phisinit
150        Shade surface temperature. Contour topography.
151-m 120 -M 320 --div 20
152        Surface temperature is shown with bounds 120K to 320K. Use 20 levels for shading.
153-W -s 1
154        Include wind vectors. Prescribe a stride of 1: vectors are shown at every grid point.
155--vert 0
156        Show fields in the first (lowermost) level.
157-p ortho --blat 20 --blon -80
158        Use orthographic projection ('whole sphere' view). Center view on lon -80E and lat 20N.
159-S html
160        Make nice webpage with animation and controls.
161-t /u/aslmd/WWW/EXAMPLES
162        Move resulting plot files to the given folder.
163
164***********************************************************************************
165COMMENTED EXAMPLE : The dust storm section movie
166***********************************************************************************
167pp.py -f wrfout_d01_2024-05-30_12:00:00,wrfout_d01_2024-05-30_18:00:00,wrfout_d01_2024-05-31_00\:00\:00 --operation cat -v QDUST --lat -3. -i 3 -l -1,37,100 --div 30 -c Oranges_r -m 0. -M 5.e-5 -t $W --rate 12 --xmin=5 --xmax=115
168***********************************************************************************
169See results here: http://www.lmd.jussieu.fr/~aslmd/EXAMPLES/LMD_MMM_d1_10km_movie_QDUST_-1000m-AMR_lat_-3_Ls134.8/anim.html
170***********************************************************************************
171pp.py
172        OK. You probably get that one.
173-f wrfout_d01_2024-05-30_12:00:00,wrfout_d01_2024-05-30_18:00:00,wrfout_d01_2024-05-31_00\:00\:00 --operation cat
174        Mesoscale outputs are splitted in several files. In that case, this was 1 file per 6 simulated hours.
175        The above options allow to concatenate files along time axis for 1D time series or animated movies
176        [if --operation cat is omitted, this is a multiplot call, with one subplot per files in -f].
177-v QDUST
178        Choose to plot dust mass mixing ratio.
179-i 3 -l -1,37,100
180        Set a call to vertical interpolator [compiled with f2py, thereby being embedded as a Python routine] for each of the files in the -f instance.
181        -i sets the kind of interpolation, 3 means Above MOLA Reference Altitude. -l sets the range for altitude levels: from -1 km to 37 km with 100 levels.
182--div 30
183        The number of contours used for shaded plots. Higher value means smoother appearance.
184-c Oranges_r
185        Choose a colorbar adapted to display a dust storm.
186-m 0. -M 5.e-5
187        Choose bounds for the plotted field. This one is adapted to show dust mass mixing ratio.
188-t $W
189        Put resulting figure or movie in another destination folder.
190        Personally I have an environnement variable W which is somewhere in my system where the file automatically appears on the web,
191                hence is easy to see from a remote place.
192--rate 12 --lat -3.
193        Define prescribed axis. A section in latitude -3°N. A time animation with 12 frame per seconds.
194        So the displayed field will be an altitude/longitude section. Alternative: "-S avi" instead of "--rate 12" creates a default 8 fps movie.
195        Alternative II: "-S html" instead of --rate 12 creates a nice webpage.
196--xmin=5 --xmax=115
197        Define limits for the displayed section. Here we just want to get rid of transition rows where atmospheric fields are
198                relaxed towards prescribed GCM fields.
199
200
201***********************************************************************************
202Simple 2D plot: Zonal mean.
203**********************************************************************************
204
205Goal:
206
207Plot the zonal mean temperature from a netcdf field representing one month.
208
209Command:
210
211pp.py -f POLAR_NIGHT_RUN/diagfi16.nc --var temp --lon 180,-180 --time 0,65
212
213Note:
214
215The --time, --lat, --lon and --vert command takes in input values corresponding to the unit stored in the netcdf file, and not indices ! For example, if the "Time" unit is in sol (which is common for a gcm output), --time 2 means sol 2.0 and not index 2 along the time direction. Consequently, one can ask --time 2.5 for temperatures at 12:00 on sol 2.
216
217Means are easy to perform by specifying a range. Here: --time 0,65 and --lat -180,180.
218
219***********************************************************************************
220Vertical interpolation of the field.
221***********************************************************************************
222
223Goal:
224
225Calls to zrecast and api are built-in the python functions. One can call them using -i with the appropriate argument (see meso.py -h or gcm.py -h). Here is an example that re-interpolates data using zrecast before plotting it in a 2D contour.
226
227Command:
228
229pp.py -f POLAR_NIGHT_RUN/diagfi16.nc --var temp --lon -180,180 --time 0,65 -i 4
230
231Note:
232
233All interpolation modes available in zrecast and api (pressure, AGL, distance from planet center, etc...) are theoretically possible, but may not be coded yet in the routine. See gcm.py -h or meso.py -h.
234
235For this example, the default behavior of zrecast for -i 4 is to interpolate in (m) from the local surface, between 0 and 150 km. The command will generate a reinterpolated netcdf file "POLAR_NIGHT_RUN/diagfi16_S.nc" with only the requested field, which is not deleted afterward.
236
237
238***********************************************************************************
2392D plot of the difference between two files.
240***********************************************************************************
241
242Goal:
243
244Comparing two .nc files with similar dimension axis can be done in a single command, by specifying which files to compare and the comparison operator (i.e. is it a difference, an addition, etc...). When comparing data along a vertical axis, it can be wise to also ask for an interpolation of the fields to make sure the comparison is correct.
245
246Command:
247
248pp.py -f POLAR_NIGHT_RUN/stats16.nc --var temp --lon -180,180 --time 1 -i 4 --fref POLAR_NIGHT_REF/stats16.nc --operation - --mope -2 --Mope 2 --title "Polar temperatures with new parametrizations" --titleref "Reference run"
249
250Note:
251
252The command will output 3 plots: the field from file 1, the field from file 2, and the comparison between the two. One can specify specific names for the title of these plots by using --title and --titleref for the titles of file 1 and file 2, and can specify different plotting range for the normal field (-m -M) and the compared field (--mope --Mope).
253
254One can combine this command with projections and means, so that for example, to compare co2 depletion at the south pole:
255
256pp.py -f POLAR_NIGHT_RUN/start16.nc --var co2 --vert 0,150 --proj spstere --time 1 -i 4 --fref POLAR_NIGHT_REF/start16.nc --operation - --mope -0.5 --Mope 0.5 --title "Polar co2 with new parametrizations" --titleref "Reference run"
257
258***********************************************************************************
2592D plot of data with missing values, along a pressure axis (decreasing with height).
260***********************************************************************************
261
262Goal:
263
264By default, python will force the y-axis of a 2D plot to be ordered by increasing values. Here is how to force it otherwise.
265
266Command:
267
268pp.py -f TES.MappedClimatology.nadir.MY25.nc --var T_nadir_day --lat -76. --time 90 --ymin 500 --ymax 1 -m 128 -M 148 -H
269
270Note:
271
272The axis reversal is done by specifying ymin and ymax in the right order. One can also simply use --inverty and not specify (ymin,ymax). Missing values (out of range values) are replaced by holes by the option "-H".
Note: See TracBrowser for help on using the repository browser.