mangle/masks/healpix/healpixpolys.sh

89 lines
2.6 KiB
Bash
Raw Normal View History

2021-06-21 16:38:20 +02:00
#! /bin/bash
# (C) J C Hill 2007
# script to construct, pixelize, and snap the approximate healpix polygons in mangle
# If no outfile is given, healpix polygon file is named automatically and put in masks/healpix/healpix_polys directory
# USAGE: healpixpolys.sh <Nside> <scheme> <p> <r> <polygon_outfile>
# EXAMPLE: healpixpolys.sh 16 s 0 3
# EXAMPLE: healpixpolys.sh 16 s 0 3 nside16p3s.pol
if [ "$MANGLEBINDIR" = "" ] ; then
MANGLEBINDIR="../../bin"
fi
if [ "$MANGLESCRIPTSDIR" = "" ] ; then
MANGLESCRIPTSDIR="../../scripts"
fi
if [ "$MANGLEDATADIR" = "" ] ; then
MANGLEDATADIR="../../masks"
fi
#check command line arguments
if [ $# -lt 4 ] ; then
echo >&2 "ERROR: enter Nside value, pixelization scheme, maximum number of polygons per pixel <p>,"
echo >&2 "resolution <r>, and (optionally) the name of the output file as command line arguments."
echo >&2 ""
echo >&2 "USAGE: healpixpolys.sh <Nside> <scheme> <p> <r> <polygon_outfile>"
echo >&2 "EXAMPLE: healpixpolys.sh 16 s 0 3"
echo >&2 "EXAMPLE: healpixpolys.sh 16 s 0 3 nside16p3s.pol"
exit 1
fi
if [ "$1" != 0 ]; then
for (( I = 1 ; I < 8192 ; I = `expr 2 \* $I` ))
do
if [ "$1" = "$I" ]; then
FLAG=1
fi
done
if [ "$FLAG" != 1 ]; then
echo >&2 "ERROR: <Nside> must be a power of 2."
echo >&2 "USAGE: healpixpolys.sh <Nside> <scheme> <p> <r> <polygon_outfile>"
echo >&2 "EXAMPLE: healpixpolys.sh 16 s 0 3"
echo >&2 "EXAMPLE: healpixpolys.sh 16 s 0 3 nside16p3s.pol"
exit 1
fi
fi
if [ "$1" = 0 ]; then
POLYS=1
else
POLYS=`expr 12 \* $1 \* $1`
fi
#rm jhw
#echo healpix_weight $POLYS >> jhw
#for (( I = 0 ; I < POLYS; I++ ))
#do
# echo 0 >> jhw
#done
$MANGLEBINDIR/poly2poly -ob -iH$1 - jp || exit
#$MANGLEBINDIR/poly2poly -ob jhw jp || exit
#note that -vo switch is needed in order to keep the correct id numbers (the HEALPix NESTED pixel numbers)
$MANGLEBINDIR/pixelize -P$2$3,$4 -ib -ob -vo jp jpx || exit
rm jp
if [ "$5" = "" ]; then
if [ ! -d "$MANGLEDATADIR/healpix/healpix_polys" ] ; then
echo >&2 "ERROR: $MANGLEDATADIR/healpix/healpix_polys not found."
# echo >&2 "Check that the environment variable MANGLEDATADIR is pointing to"
echo >&2 "the appropriate directory (e.g., the mangle 'masks' directory)."
exit 1
fi
if [ "$3" = 0 ]; then
outfile="$MANGLEDATADIR/healpix/healpix_polys/nside${1}_p${4}${2}.pol"
else
outfile="$MANGLEDATADIR/healpix/healpix_polys/nside${1}_p-1${2}.pol"
fi
else
outfile=$5
fi
$MANGLEBINDIR/snap -ib -vo -os jpx $outfile || exit
rm jpx
echo "HEALPix pixels at Nside=$1 written to $outfile."