Revision 0bddce86
Added by Adam Wilson about 12 years ago
climate/procedures/MOD06_L2_process.r | ||
---|---|---|
1 |
#!/bin/r |
|
2 |
|
|
3 | 1 |
################################################################################### |
4 | 2 |
### R code to aquire and process MOD06_L2 cloud data from the MODIS platform |
5 | 3 |
|
... | ... | |
8 | 6 |
## Then cycle through each element of the list and evaluate the expressions. |
9 | 7 |
eval(parse(text=args)) |
10 | 8 |
|
11 |
system("source ~/moduleload") |
|
9 |
#system("module list") |
|
10 |
#system("source ~/moduleload") |
|
11 |
#system("module list") |
|
12 | 12 |
|
13 | 13 |
print(args) |
14 | 14 |
|
... | ... | |
18 | 18 |
|
19 | 19 |
print(paste("Processing tile",tile," for date",date)) |
20 | 20 |
|
21 |
#system("module list") |
|
22 |
#system("ldd /u/awilso10/R/x86_64-unknown-linux-gnu-library/2.15/rgdal/libs/rgdal.so") |
|
23 |
|
|
21 | 24 |
## load libraries |
22 | 25 |
require(reshape) |
23 |
#require(ncdf4) |
|
24 | 26 |
require(geosphere) |
25 | 27 |
require(raster) |
26 |
#require(rgdal)
|
|
28 |
library(rgdal)
|
|
27 | 29 |
require(spgrass6) |
28 | 30 |
|
29 | 31 |
|
... | ... | |
126 | 128 |
### Function to extract various SDSs from a single gridded HDF file and use QA data to throw out 'bad' observations |
127 | 129 |
loadcloud<-function(date,fs){ |
128 | 130 |
tf=paste(tempdir(),"/grass", Sys.getpid(),"/", sep="") |
131 |
dir.create(tf) |
|
132 |
|
|
129 | 133 |
print(paste("Set up temporary grass session in",tf)) |
130 | 134 |
|
131 | 135 |
## set up temporary grass instance for this PID |
... | ... | |
140 | 144 |
|
141 | 145 |
## Identify which files to process |
142 | 146 |
tfs=fs$file[fs$dateid==date] |
147 |
## drop swaths that did not produce an output file (typically due to not overlapping the ROI) |
|
143 | 148 |
tfs=tfs[tfs%in%list.files(tempdir())] |
144 | 149 |
nfs=length(tfs) |
145 | 150 |
|
... | ... | |
227 | 232 |
|
228 | 233 |
ncfile=paste(outdir,"/MOD06_",date,".nc",sep="") |
229 | 234 |
execGRASS("r.out.gdal",input="mod06",output=ncfile,type="Int16",nodata=-32768,flags=c("quiet"),createopt=c("WRITE_GDAL_TAGS=YES","WRITE_LONLAT=NO"),format="netCDF") |
230 |
system(paste("/nasa/nco/3.9.8/bin/ncecat -O -u time ",ncfile," ",ncfile,sep="")) |
|
231 |
system(paste("/nasa/nco/3.9.8/bin/ncap -O -s 'time[time]=",as.integer(fs$date[fs$dateid==date]-as.Date("2000-01-01")),"'",ncfile," ",ncfile)) |
|
232 |
system(paste("/nasa/nco/3.9.8/bin/ncatted -a calendar,time,c,c,\"standard\" -a long_name,time,c,c,\"time\" -a units,time,c,c,\"days since 2000-01-01 12:00:00\"",ncfile)) |
|
233 |
system(paste("/nasa/nco/3.9.8/bin/ncrename -v Band1,CER -v Band2,COT -v Band3,CLD",ncfile)) |
|
234 |
system(paste("/nasa/nco/3.9.8/bin/ncatted -a scale_factor,CER,o,d,0.01 -a units,CER,o,c,\"micron\" -a missing_value,CER,o,d,-32768 -a long_name,CER,o,c,\"Cloud Particle Effective Radius\"",ncfile)) |
|
235 |
system(paste("/nasa/nco/3.9.8/bin/ncatted -a scale_factor,COT,o,d,0.01 -a units,COT,o,c,\"none\" -a missing_value,COT,o,d,-32768 -a long_name,COT,o,c,\"Cloud Optical Thickness\"",ncfile)) |
|
236 |
system(paste("/nasa/nco/3.9.8/bin/ncatted -a scale_factor,CLD,o,d,0.01 -a units,CLD,o,c,\"none\" -a missing_value,CLD,o,d,-32768 -a long_name,CLD,o,c,\"Cloud Mask\"",ncfile)) |
|
235 |
ncopath="/nasa/sles11/nco/4.0.8/gcc/mpt/bin/" |
|
236 |
system(paste(ncopath,"ncecat -O -u time ",ncfile," ",ncfile,sep="")) |
|
237 |
system(paste(ncopath,"ncap2 -O -s 'time[time]=",as.integer(fs$date[fs$dateid==date]-as.Date("2000-01-01")),"'",ncfile," ",ncfile,sep="")) |
|
238 |
system(paste(ncopath,"ncatted -a calendar,time,c,c,\"standard\" -a long_name,time,c,c,\"time\" -a units,time,c,c,\"days since 2000-01-01 12:00:00\" ",ncfile,sep="")) |
|
239 |
system(paste(ncopath,"ncrename -v Band1,CER -v Band2,COT -v Band3,CLD ",ncfile,sep="")) |
|
240 |
system(paste(ncopath,"ncatted -a scale_factor,CER,o,d,0.01 -a units,CER,o,c,\"micron\" -a missing_value,CER,o,d,-32768 -a long_name,CER,o,c,\"Cloud Particle Effective Radius\" ",ncfile,sep="")) |
|
241 |
system(paste(ncopath,"ncatted -a scale_factor,COT,o,d,0.01 -a units,COT,o,c,\"none\" -a missing_value,COT,o,d,-32768 -a long_name,COT,o,c,\"Cloud Optical Thickness\" ",ncfile,sep="")) |
|
242 |
system(paste(ncopath,"ncatted -a scale_factor,CLD,o,d,0.01 -a units,CLD,o,c,\"none\" -a missing_value,CLD,o,d,-32768 -a long_name,CLD,o,c,\"Cloud Mask\" ",ncfile,sep="")) |
|
237 | 243 |
|
238 | 244 |
|
239 | 245 |
### delete the temporary files |
climate/procedures/Pleiades.R | ||
---|---|---|
1 | 1 |
#### Script to facilitate processing of MOD06 data |
2 | 2 |
|
3 | 3 |
setwd("/nobackupp1/awilso10/mod06") |
4 |
library(rgdal) |
|
5 |
library(raster) |
|
4 | 6 |
|
5 | 7 |
## get MODLAND tile information |
6 | 8 |
tb=read.table("http://landweb.nascom.nasa.gov/developers/sn_tiles/sn_bound_10deg.txt",skip=6,nrows=648,header=T) |
... | ... | |
43 | 45 |
tile="h11v08" #can move this to submit script if needed |
44 | 46 |
script="/u/awilso10/environmental-layers/climate/procedures/MOD06_L2_process.r" |
45 | 47 |
#write.table(paste("--verbose ",script," date=",notdone," tile=\"",tile,"\"",sep=""),file="notdone.txt",row.names=F,col.names=F,quote=F) |
46 |
write.table(paste("--verbose ",script," date=",notdone[1:30],sep=""),file="notdone.txt",row.names=F,col.names=F,quote=F) |
|
48 |
#write.table(paste("--verbose ",script," date=",notdone[1:30],sep=""),file="notdone.txt",row.names=F,col.names=F,quote=F) |
|
49 |
write.table(notdone[1:30],file="notdone.txt",row.names=F,col.names=F,quote=F) |
|
47 | 50 |
|
48 | 51 |
save(fs,alldates,gridfile,td,file="allfiles.Rdata") |
49 | 52 |
|
53 |
## run script |
|
54 |
cat(paste(" |
|
55 |
#! /bin/bash |
|
56 |
source ~/moduleload |
|
57 |
source ~/.bashrc |
|
58 |
Rscript --verbose --vanilla /u/awilso10/environmental-layers/climate/procedures/MOD06_L2_process.r date=$1 |
|
59 |
#Rscript --verbose --vanilla rtest |
|
60 |
",sep=""),file="MOD06_process2") |
|
61 |
system("chmod +x MOD06_process2") |
|
62 |
|
|
63 |
cat(paste(" |
|
64 |
library(rgdal) |
|
65 |
GDALinfo |
|
66 |
",sep=""),file="rtest") |
|
67 |
|
|
68 |
|
|
50 | 69 |
## Submission script |
51 | 70 |
|
52 | 71 |
cat(paste(" |
... | ... | |
76 | 95 |
## export a few important variables |
77 | 96 |
export NNODES=32 |
78 | 97 |
export R_LIBS=\"/u/awilso10/R/x86_64-unknown-linux-gnu-library/2.15/\" |
79 |
## load modules |
|
80 |
# module load gcc comp-intel/2012.0.032 netcdf mpi-sgi/mpt.2.06r6 hdf4 udunits R nco |
|
81 | 98 |
## Run the script! |
82 | 99 |
## current version not parallelizing across nodes! |
83 |
TMPDIR=$TMPDIR Rscript --verbose --vanilla /u/awilso10/environmental-layers/climate/procedures/MOD06_L2_process.r date=20000403 |
|
100 |
# TMPDIR=$TMPDIR Rscript --verbose --vanilla /u/awilso10/environmental-layers/climate/procedures/MOD06_L2_process.r date=20000403
|
|
84 | 101 |
|
85 | 102 |
WORKLIST=notdone.txt |
86 |
EXE="Rscript" |
|
103 |
#EXE=\"Rscript\" |
|
104 |
EXE="./MOD06_process2" |
|
87 | 105 |
LOG=log/log_DataCompile.log |
106 |
MQUEUE=/nobackupp4/pvotava/software/share/mqueue-eg/mqueue/mqueue |
|
88 | 107 |
|
89 |
TMPDIR=$TMPDIR mpiexec -np $NNODES /nobackupp4/pvotava/software/share/mqueue-eg/mqueue/mqueue -l $WORKLIST -p $EXE -v -v -v --random-starts 2-4 --work-analyze #> $LOG |
|
90 |
#mpiexec -np 2 /nobackupp4/pvotava/software/share/mqueue-eg/mqueue/mqueue -l testrun.txt -p $EXE -v -v -v #> $LOG |
|
91 |
#TMPDIR=$TMPDIR mpiexec -np $NNODES /nobackupp4/pvotava/software/share/mqueue-eg/mqueue/mqueue -l $WORKLIST -p $EXE -v -v -v #> $LOG |
|
108 |
TMPDIR=$TMPDIR mpiexec -np $NNODES $MQUEUE -l $WORKLIST -p $EXE -v -v -v --random-starts 2-4 --work-analyze #> $LOG |
|
92 | 109 |
exit 0 |
93 | 110 |
",sep=""),file="MOD06_process") |
94 | 111 |
|
... | ... | |
98 | 115 |
|
99 | 116 |
## check queue status |
100 | 117 |
system("/u/scicon/tools/bin/node_stats.sh") |
101 |
system("/u/scicon/tools/bin/qtop.pl 479343")
|
|
118 |
system("/u/scicon/tools/bin/qtop.pl 492352")
|
|
102 | 119 |
|
103 | 120 |
## Submit it (and keep the pid)! |
104 | 121 |
system("qsub MOD06_process") |
122 |
system("/u/scicon/tools/bin/pdsh_gdb -j 493281 -d tmp -s -u awilso10") |
|
105 | 123 |
|
106 | 124 |
## work in interactive mode |
107 | 125 |
# system("qsub -I -l walltime=2:00:00 -lselect=2:ncpus=16:model=san -q devel") |
Also available in: Unified diff
Script now runs except ncap2 is missing from the nco module