Как проанализировать иерархические данные и отформатировать их в файл TSV в Python?Python

Программы на Python
Ответить
Anonymous
 Как проанализировать иерархические данные и отформатировать их в файл TSV в Python?

Сообщение Anonymous »


У меня есть набор данных с иерархической информацией и номерами KO, и я хочу отформатировать эти данные в файл TSV (значения, разделенные табуляцией) на Python, где первый столбец содержит номера KO, второй столбец содержит описания, а третий столбец содержит иерархию, основанную на ближайшем разделе «А» во входных данных. Иерархия должна включать элементы, начинающиеся с «А», «Б» и «С» до ближайшего раздела «С». Также, если один и тот же номер KO присутствует в разных иерархиях, эта иерархия должна быть разделена | в той же строке входные данные — формат файла.кег Входные данные:

A09100 Метаболизм Б B 09101 Углеводный обмен C 00010 Гликолиз/глюконеогенез [PATH:ko00010] Д K00844 ГК; гексокиназа [EC:2.7.1.1] Д К12407 ГКК; глюкокиназа [EC:2.7.1.2] D K00001 E1.1.1.1, адх; алкогольдегидрогеназа [EC:1.1.1.1] B 09103 Липидный обмен C 00071 Разложение жирных кислот [PATH:ko00071] D K00001 E1.1.1.1, адх; алкогольдегидрогеназа [EC:1.1.1.1] A09120 Обработка генетической информации Б B 09121 Транскрипция РНК-полимераза C 03020 [PATH:ko03020] Д К03043 рпоБ; Бета-субъединица ДНК-ориентированной РНК-полимеразы [EC:2.7.7.6] D K13797 rpoBC; Субъединица бета-бета' ДНК-ориентированной РНК-полимеразы [EC:2.7.7.6] Ожидаемый результат:

KO метаданные_KEGG_Описание метаданные_KEGG_Пути К00844 ГК; гексокиназа [EC:2.7.1.1] Метаболизм, углеводный обмен, гликолиз/глюконеогенез К12407 ГКК; глюкокиназа [EC:2.7.1.2] Метаболизм, углеводный обмен, гликолиз/глюконеогенез К00001 Е1.1.1.1, адх; алкогольдегидрогеназа [EC:1.1.1.1] Метаболизм, метаболизм углеводов, гликолиз / глюконеогенез | Метаболизм, метаболизм липидов, деградация жирных кислот К03043 рпоБ; Бета-субъединица ДНК-ориентированной РНК-полимеразы [EC:2.7.7.6] Обработка генетической информации, транскрипция, РНК-полимераза К13797 рпоBC; Субъединица бета-бета' ДНК-направленной РНК-полимеразы [EC:2.7.7.6] Обработка генетической информации, транскрипция, РНК-полимераза Я был бы признателен за любую помощь или рекомендации о том, как правильно преобразовать эти данные в желаемый файл TSV на основе предоставленной иерархической информации. Спасибо за вашу помощь!

это мой код
data = """A09100 Метаболизм Б B 09101 Углеводный обмен C 00010 Гликолиз/глюконеогенез [PATH:ko00010] Д K00844 ГК; гексокиназа [EC:2.7.1.1] Д К12407 ГКК; глюкокиназа [EC:2.7.1.2] D K00001 E1.1.1.1, адх; алкогольдегидрогеназа [EC:1.1.1.1] B 09103 Липидный обмен C 00071 Разложение жирных кислот [PATH:ko00071] D K00001 E1.1.1.1, адх; алкогольдегидрогеназа [EC:1.1.1.1] A09120 Обработка генетической информации Б B 09121 Транскрипция РНК-полимераза C 03020 [PATH:ko03020] Д К03043 рпоБ; Бета-субъединица ДНК-ориентированной РНК-полимеразы [EC:2.7.7.6] D K13797 rpoBC; Субъединица бета-бета' ДНК-ориентированной РНК-полимеразы [EC:2.7.7.6]""" линии = data.split('\n') результат = [] ко = Нет описание = Нет иерархии_имена = [] для строки в строках: части = line.strip().split() если части: если parts[0].startswith('A'): # Сброс иерархии для нового раздела «А» иерархия_имена = [" ".join(parts[1:])] elif parts[0] == 'K': ко = части[0] описание = " ".join(parts[1:]) elif parts[0] == 'D' и len(parts) >= 3: ко = части[1] описание = " ".join(parts[2:]) еще: иерархия_имена.append(" ".join(parts[1:])) если ко и описание: иерархия_str = ", ".join(hierarchy_names) result.append([ko, описание, иерархия_стр]) # Добавляем строку заголовка result.insert(0, ["KO", "metadata_KEGG_Description", "metadata_KEGG_Pathways"]) # Укажите имя файла TSV tsv_filename = "выходные_данные.tsv" с open(tsv_filename, 'w') как tsv_file: для строки в результате: tsv_file.write("\t".join(row) + "\n") print(f"Данные сохранены в {tsv_filename}")
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»