Сортировать первый столбец при объединении второго столбца - PullRequest
0 голосов
/ 24 августа 2018

Я ищу решение следующей проблемы.У меня есть текстовый файл с в первом столбце geneIDs и во втором одиночном GOterms.Поскольку у каждого гена есть несколько аннотированных GOterms, идентичные идентификаторы gene-идентификатора действительно встречаются несколько раз (с разными GOterms во втором столбце. Я только хочу, чтобы уникальные идентификаторы gene-идентификаторов были объединены с GOterms: У меня есть:

TRINITY_DN10151_c0_g1   GO:0004175
TRINITY_DN10151_c0_g1   GO:0004252
TRINITY_DN10151_c0_g1   GO:0006508
TRINITY_DN10151_c0_g1   GO:0008233
TRINITY_DN102626_c42_g1 GO:0005198
TRINITY_DN102626_c42_g1 GO:0042302
TRINITY_DN102626_c58_g1 GO:0004175

Я хочу:

TRINITY_DN10151_c0_g1 GO:0004175-GO:0004252-GO:0006508-GO:0008233
TRINITY_DN102626_c42_g1 GO:0005198-GO:0042302

и т. Д.

Кроме того, важно (и я действительно не знаю, как решить эту проблему), что каждая комбинация терминов GO встречается один раз, поэтому, если два гена имеют одинаковый термин GOкомбинации (A, B и C) в столбце 2 должны иметь и ABC, и не также ACB.

Я пытался использовать sort и uniq, но в итоге я только удалял строки.

Может кто-нибудь помочь мне с решением Unix?

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете сделать это с довольно загадочной командой sed.(Каждая команда sed является тривиальной или загадочной.)

sort filename | sed -e :a -e '$!N;s/^\([^ ]* \) *\(.*\)\n\1 */\1\2-/;ta' -e 'P;D' 

С переводом в свободном виде это говорит "Добавьте следующую строку к этой и замените новую строку и имя второго гена дефисом, какдо тех пор, пока два названия генов одинаковы ".

И sort - это сохранение порядка GOterm по генам.

...