Former-commit-id: 202296404e6a70f8ae96db99faffb456104c57e9 Former-commit-id: 118417735d2055683607df9809c9b721cc1b1bab
51 lines
3.1 KiB
Bash
Executable File
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); \
|
|
} \
|
|
' $*
|