-
Notifications
You must be signed in to change notification settings - Fork 0
/
uf-dress
executable file
·79 lines (64 loc) · 2.41 KB
/
uf-dress
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/sh
#
# uf-dress - Turn bare sequence data into an unfasta file.
# Copyright (C) 2016 Marco van Zwetselaar <[email protected]>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This utility is part of http://io.zwets.it/unfasta
# Function to exit this script with an error message on stderr
err_exit() {
echo "$(basename "$0"): $*" >&2
exit 1
}
# Function to show usage information and exit
usage_exit() {
echo "
Usage: $(basename $0) [OPTIONS] [FILE ...]
Insert headers to turn bare sequences (contigs) into valid unfasta. Reads
each line from each FILE and writes it to standard output preceded by a
header line. If no FILE is present or FILE is '-' read from standard input.
Options
-r HDRSFILE Optional file to read header lines from. If not specified or if
this file has fewer header lines than sequences, then dummy header
lines are generated for the remaining sequences.
The HDRSFILE could be a file previously written by 'uf-bare', or output from
the 'uf-headers' filter. Tip: use bash process substitution to avoid tmpfiles:
$ uf file.fna | uf-bare | ..processing.. | uf-dress -r <(uf file.fna | uf-headers)
See also: 'uf-map' which implements this idiom in a single command.
" >&2
exit ${1:-1}
}
# Parse options
unset HDRSFILE
while [ $# -ne 0 -a "$(expr "$1" : '\(.\)..*')" = "-" ]; do
case $1 in
-r) shift; HDRSFILE="$1" ;;
--help) usage_exit 0 ;;
*) usage_exit ;;
esac
shift || usage_exit
done
# Check options validity
[ -z "$HDRSFILE" ] || [ -r "$HDRSFILE" ] || err_exit "cannot read file: '$HDRSFILE'"
# Do the work
gawk -bO -v F="$HDRSFILE" '{
HDR = ""
if (F) getline HDR < F
if (!HDR) HDR = ">lcl|" NR " Dummy header " NR
print HDR
print
}
END { if (F) close (F) }' "$@"
# vim: sts=4:sw=4:et:si:ai