Объединить последовательность с идентификатором в файле fasta - PullRequest
0 голосов
/ 11 июня 2019

Вот мой входной файл

>OTU1;size=4;
ATTCCGGGTTTACT
ATTCCTTTTATCGA
ATC
>OTU2;size=10;
CGGATCTAGGCGAT
ACT
>OTU3;size=5;
ATTCCCGGGATCTA
ACTTTTC

Ожидаемый выходной файл:

>OTU1;size=4;ATTCCGGGTTTACTATTCCTTTTATCGAATC
>OTU2;size=10;CGGATCTAGGCGATACT
>OTU3;size=5;ATTCCCGGGATCTAACTTTTC

Я пробовал код из Удаление разрывов строк в файле FASTA

но это не работает для меня, и я не уверен, как изменить код из этого поста ... Есть предложения?Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 11 июня 2019

Вот еще один awk скрипт. Использование механизма внутреннего синтаксического анализа awk.

awk 'BEGIN{RS=">";OFS="";}NR>1{$1=$1;print ">"$0}' input.txt

Вывод:

>OTU1;size=4;ATTCCGGGTTTACTATTCCTTTTATCGAATC
>OTU2;size=10;CGGATCTAGGCGATACT
>OTU3;size=5;ATTCCCGGGATCTAACTTTTC

Пояснение:

awk '
BEGIN {        # initialize awk internal variables
  RS=">";      # set `RS`=record separator to `>`
  OFS="";      # set `OFS`=output field separator to empty string.
}
NR>1 {         # handle from 2nd record (1st record is empty).
  $1=$1;       # regenerate the output line
  print ">"$0  # print out ">" with computed output line
}' input.txt
2 голосов
/ 11 июня 2019
$ awk '{printf "%s%s", (/^>/ ? ors : ""), $0; ors=ORS} END{print ""}' file
>OTU1;size=4;ATTCCGGGTTTACTATTCCTTTTATCGAATC
>OTU2;size=10;CGGATCTAGGCGATACT
>OTU3;size=5;ATTCCCGGGATCTAACTTTTC
1 голос
/ 11 июня 2019

Не могли бы вы попробовать тоже.

awk -v RS=">" 'NR>1{gsub(/\n/,"");print ">"$0}'  Input_file

Моя первоначальная попытка была awk -v RS=">" -v FS="\n" -v OFS="" 'NF>1{$1=$1;print ">"$0}' Input_file, но позже я увидел, что на нее уже дан ответ.

0 голосов
/ 11 июня 2019

Аналогично моему ответу здесь :

$ awk 'BEGIN{RS=">"; FS="\n"; ORS=""}
       (FNR==1){next}
       { name=$1; seq=$0; gsub(/(^[^\n]*|)\n/,"",seq) }
       { print ">" name seq }' file1.fasta file2.fasta file3.fasta ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...