Skip to content
Snippets Groups Projects
Commit 08cdc0d3 authored by Greg Quinn's avatar Greg Quinn
Browse files

Add a couple CrIS-AHI utility scripts

parent a1ee13e4
No related branches found
No related tags found
No related merge requests found
#!/bin/bash
set -e
# run this from the top level of a crisahi flo link tree
for granule in */*/*/crisahi.*; do
echo -n "$granule "
cp $granule ./
granule=$(basename $granule)
tmp=tmp.$granule
python -m intercal.crisahi.same_path $granule $tmp
if [[ -e $tmp ]]; then
ncks -O --mk_rec_dmn obs $tmp $tmp
ncpdq -O -a obs,band $tmp $tmp
fi
rm $granule
done
ncrcat tmp.crisahi.* crisahi.nc
rm tmp.crisahi.*
ncpdq -O -a band,obs crisahi.nc crisahi.nc
"""Filter a crisahi granule to only contain data where sensor vectors align"""
import sys
import netCDF4
import numpy as np
from intercal.crisahi.cat import path_diff as calc_path_diff
path_diff_threshold = 5. # degrees
def main():
in_file, out_file = sys.argv[1:]
data = read_granule(in_file)
path_diff = calc_path_diff(data['cris_lat'], data['cris_lon'], data['cris_sen_zen'],
data['cris_sen_azm'], data['ahi_sen_zen'], data['ahi_sen_azm'])
mask = (path_diff <= path_diff_threshold)
if np.any(mask):
new_data = {var: data[var][...,mask] for var in data}
write_granule(new_data, out_file)
print 'Kept {} CrIS-AHI matchups'.format(mask.sum())
def read_granule(in_file):
d = netCDF4.Dataset(in_file)
data = {var: d[var][...] for var in d.variables}
data['cris_time'] = np.broadcast_arrays(data['cris_time'][...,None], data['cris_lat'])[0]
return data
def write_granule(data, out_file):
d = netCDF4.Dataset(out_file, 'w')
num_bands, num_obs = data['cris_bt'].shape
d.createDimension('band', num_bands)
d.createDimension('obs', num_obs)
dims = {1: ['obs'], 2: ['band', 'obs']}
for var, arr in data.items():
d.createVariable(var, arr.dtype, dims[arr.ndim], zlib=True)
d[var][...] = arr
d.close()
if __name__ == '__main__':
main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment