Обрезка заголовка мультифаста - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть мультифаст-файл, и мне нужно удалить некоторую часть заголовка для каждого фаст-файла.Например:

>Viridibacillus_arenosi_FSL_R5_0213-BK137_RS04360-22-CBS_domain-containing_protein <unknown description>
GCTAATGAAGTTATTGGCCTAGTGACAGAAAGGGATATAAAAAACGCGCTTCCTTCTTCC
CTGCTC------AAA
>Viridibacillus_arvi_DSM16317-AMD00_RS08865-16-acetoin_utilization_protein_AcuB <unknown description>
GCGAATGAAGTTATTGGCCTAGTAACAGAAAGGGATATAAAAAACGCCCTTCCATCTTCC
CTGCTC------AAA

Мне нужно удалить часть после "-" в заголовке, который является "-BK137_RS04360-22-CBS_domain-содержа_protein" и "-AMD00_RS08865-16-acetoin_utilization_protein_AcuB".

Я пытался

 cut -d '-' -f 1 your_file.fasta > new_file.fasta

и

 awk '{split($0,a,"-"); if(a[1]) print ">"a[1]; else print; }' my_file.fasta > new_file.fasta

Но это файл выравнивания, он также удалил «-» в моей последовательности, чего, конечно, я не делаюхочу.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Это легко сделать следующим образом:

awk -F"-" '/^>/{print $1; next}1' in.fasta > out.fasta
0 голосов
/ 13 февраля 2019

cut обрабатывает все строки одинаково, но вам нужно обработать только подмножество строк, начинающихся с >.Вы можете попробовать с awk:

awk -F- '{if ($0 ~ /^>/) {print $1} else {print $0}}' in.fasta > out.fasta

. В качестве разделителя используется -, и в каждой строке проверяется, начинается ли оно с >.Если true, то выведите только первое поле;если false, выведите все.

Команду можно даже немного сократить.

...