Files
annotate/detectors/rrna/tools/revcomp_alignments.sh
Eric Coissac 2261fa1c48 Switch from awk to gawk
Former-commit-id: 70b104ab89d4c90a35925dbbcacdafaf6c1f2836
Former-commit-id: bf29abf66345cbc0ca81461064dcca63dfd4c15c
2015-11-08 19:33:00 +01:00

44 lines
2.3 KiB
Bash

#!/bin/bash
#
# Reverse complement a fasta formated alignment
#
#========================================================================================
# -- CAUTION -- Works as long than the script
# is not called through a symlink
THIS_DIR="$(dirname ${BASH_SOURCE[0]})"
source "${THIS_DIR}/../../../scripts/bash_init.sh"
function revcomp {
gawk 'function printfasta(seq) { \
seqlen=length(seq); \
for (i=1; i <= seqlen; i+=60) \
print substr(seq,i,60); \
} \
function comp(seq) { \
"echo "seq" | tr acgtACGT tgcaTGCA " | getline res; \
close("echo "seq" | tr acgtACGT tgcaTGCA "); \
return res; \
} \
function rev(seq) { \
"echo "seq" | rev " | getline res; \
close("echo "seq" | rev "); \
return res; \
} \
function revcomp(seq) { \
res=rev(comp(seq)); \
return res; \
} \
\
(seq) && /^>/ {print head; \
printfasta(revcomp(seq)); \
seq=""} \
/^>/ {head=$0} \
! /^>/ {seq=seq$0} \
END { print head; \
printfasta(revcomp(seq)); \
}' $*
}
revcomp $*