Files
annotate/detectors/rrna/tools/extract_ref16S.sh
Eric Coissac d298385685 First commit - second part
Former-commit-id: 202296404e6a70f8ae96db99faffb456104c57e9
Former-commit-id: 118417735d2055683607df9809c9b721cc1b1bab
2015-10-02 21:13:16 +02:00

51 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
#
awk '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; \
} \
\
/^LOCUS / {AC=$2; sequence=""; seqon=0; FROM="";TO=""} \
/^ rRNA / {LOCUS=$2; STRAND=1} \
/^ rRNA / && /complement/ {STRAND=0; \
sub("complement\\(","",LOCUS); \
sub("\\)","",LOCUS); \
} \
/16S/ {split(LOCUS,POS,"."); \
FROM=POS[1]; \
TO=POS[3]; \
LENGTH=TO-FROM+1 \
} \
/^ORIGIN/ {seqon=1} \
/^ *[1-9][0-9]* [a-z ]+$/ && seqon {seq=$2 $3 $4 $5 $6 $7; \
gsub("[^acgt]","n",seq);\
sequence=sequence seq \
} \
/^\/\// && FROM \
{print ">"AC"_16S Strand="STRAND";", \
"cut="FROM".."TO";", \
"seq_length="LENGTH";"; \
SS=substr(sequence,FROM,LENGTH); \
if (! STRAND) \
SS=revcomp(SS); \
printfasta(SS); \
} \
' $*