Конвертировать вкладку в формат FASTA в Linux - PullRequest
0 голосов
/ 13 октября 2018

У меня есть текстовый файл (infile-table.txt) с двумя столбцами, разделенными табуляцией, например:

TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2]  TTGGCTGGAATTCAAAAGCTTTCGATT
TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2] CGAGCTTGGGTAAATGGGATCAAACTAGATTA
len=298 path=[1:0-297] [-1, 1, -2]  GCTGTGATTTCTGCCATCGGAGAGGGCACAGACGGC

Я хочу преобразовать их следующим образом:

>TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2] 
TTGGCTGGAATTCAAAAGCTTTCGATT
>TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2]    
CGAGCTTGGGTAAATGGGATCAAACTAGATTA
>len=298 path=[1:0-297] [-1, 1, -2] 
GCTGTGATTTCTGCCATCGGAGAGGGCACAGACGGC

Команда, которую я пыталсяи не работал:

awk '{printf ">%s\n%s\n",$1,$2}' infile-table.txt > outfile.fasta

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Используйте питона!Создайте файл с именем «extract.py»:

lines = open("infile-table.txt").readlines()

for line in lines:
    cols = line.split("\t")
    print(">"+cols[0]+"\n"+cols[1])

Затем запустите в терминале: «python extract.py».

0 голосов
/ 13 октября 2018

Вам просто не хватает "разделенного табуляцией" бита:

awk -F '\t' '{printf ">%s\n%s\n",$1,$2}' infile-table.txt
#...^^^^^^^

Программу awk можно сделать немного более краткой, если вам нравится: установите разделитель поля output насимвол новой строки и:

awk -F'\t' -v OFS='\n' '{$1 = ">" $1} 1' infile-table.txt 

Когда вы изменяете первое поле, awk воссоздает $ 0, используя OFS, а завершающий «1» печатает запись.

И, так как вы добавили tag:

sed 's/^/>/;s/\t/\n/' infile-table.txt
...