annotate gff_sort.sh @ 1:0ac4f6f3d984 draft

Uploaded
author holtgrewe
date Mon, 06 May 2013 12:34:43 -0400
parents
children 19597b57ada8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
1 #!/bin/bash
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
2
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
3 # Sorting of GFF files.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
4 #
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
5 # USAGE: sort_gff.sh [OPTIONS] -i IN.roi -o OUT.roi
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
6 #
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
7 # Options:
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
8 # -r reverse orientation
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
9 # -p sort by position (ref, start, end) -- default
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
10
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
11 # The parameters that we will pass to sort.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
12 SORT_POS_ARGS="-k 1,1 -k 2,2n -k 3,3n"
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
13 SORT_POS_ARGS_REV="-k 1,1r -k 2,2nr -k 3,3nr"
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
14
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
15 # The arguments will go here.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
16 SORT_BY=beginPos
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
17 REVERSE=
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
18
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
19 # Parse option values.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
20 while getopts "pc:i:o:n:r" opt; do
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
21 case $opt in
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
22 i)
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
23 IN_FILE=$OPTARG
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
24 ;;
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
25 o)
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
26 OUT_FILE=$OPTARG
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
27 ;;
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
28 r)
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
29 REVERSE=r
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
30 ;;
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
31 \?)
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
32 echo "Invalid option: -$OPTARG" >&2
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
33 exit 1
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
34 ;;
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
35 esac
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
36 done
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
37
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
38 # Check that -i or -o are given.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
39 if [[ "$IN_FILE" == "" || "$OUT_FILE" == "" ]]; then
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
40 echo "Missing option -i or -o" >&2
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
41 exit 1
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
42 fi
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
43
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
44 # Setup sort args.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
45 case $SORT_BY in
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
46 beginPos)
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
47 if [[ "$REVERSE" == "r" ]]; then
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
48 SORT_ARGS=${SORT_POS_ARGS_REV}
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
49 else
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
50 SORT_ARGS=${SORT_POS_ARGS}
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
51 fi
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
52 ;;
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
53 esac
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
54
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
55 # Execute sorting.
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
56 #echo "OUT_FILE=${OUT_FILE}" 2>&2
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
57 #echo "SORT_ARGS=${SORT_ARGS}" 1>&2
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
58 (
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
59 export LC_ALL=C
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
60 #echo "sort ${SORT_ARGS} <(grep -v '^#' ${IN_FILE});" 1>&2
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
61 sort ${SORT_ARGS} <(grep -v '^#' ${IN_FILE});
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
62 ) > ${OUT_FILE}
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
63
0ac4f6f3d984 Uploaded
holtgrewe
parents:
diff changeset
64 exit $?