Как сопоставить уникальные элементы в одном столбце и перечислить соответствующие значения из второго столбца - PullRequest
1 голос
/ 14 марта 2019

У меня есть файл в следующем формате:

ENSG00000087510  ENST00000201031  TFAP2C  transcription_factor  protein_coding

Где каждый столбец разделен вкладкой.

Как видите, есть 5 столбцов. Столбец 1 представляет собой список избыточных идентификаторов, каждый из которых соответствует другому уникальному идентификатору в столбце 2. Избыточные идентификаторы в столбце 1 разбросаны по всему файлу.

Я попробовал следующую команду, чтобы сгенерировать уникальный список идентификаторов из первого столбца, но я не знаю, как сопоставить его со вторым столбцом.

cat Chr20_gene_transcript_namelist.txt | cut -f 1 | sort | uniq

Мне нужен файл из двух столбцов: уникальные идентификаторы в столбце 1 и все идентификаторы, которым они соответствуют в столбце 2.

Например:

ENSG00000087510  ENST00000201031
                 ENST00000202017
                 ENST00000217133
ENSG00000100983  ENST00000217131
                 ENST00000217246
                 ENST00000237527
ENSG00000132823  ENST00000255174

1 Ответ

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

Я не уверен, как это сделать в bash, но так как вы использовали тег python, вот скрипт, который должен работать:

with open(<your_file>, 'r') as f:
    lines = f.read().splitlines()

id_dict = {}
for line in lines:
    elems = line.split()
    if elems[0] in id_dict:
        id_dict[elems[0]].append(elems[1])
    else:
        id_dict[elems[0]] = [elems[1]]

with open(<your_output_file>, 'w') as f:
    for redundant_id, unique_ids in id_dict.items():
        f.write('%s\t%s\n' % (redundant_id, unique_ids[0]))
        for unique_id in unique_ids[1:]:
            f.write('\t%s\n' % unique_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...