Tenho um conjunto de dados com informações hierárquicas e números KO, e estou procurando formatar esses dados em um arquivo TSV (Tab-Separated Values) em Python, onde a primeira coluna contém números KO, a segunda coluna contém descrições, e a terceira coluna contém coluna contém uma hierarquia baseada na seção 'A' mais próxima nos dados de entrada. A hierarquia deve incluir elementos começando com 'A', 'B' e 'C' até a seção 'C' mais próxima. Além disso, se o mesmo número KO estiver presente em uma hierarquia diferente, essa hierarquia deverá ser separada por | na mesma linha, os dados de entrada estão no formato file.keg. Dados de entrada:
A09100 Metabolism
B
B 09101 Carbohydrate metabolism
C 00010 Glycolysis / Gluconeogenesis [PATH:ko00010]
D K00844 HK; hexokinase [EC:2.7.1.1]
D K12407 GCK; glucokinase [EC:2.7.1.2]
D K00001 E1.1.1.1, adh; alcohol dehydrogenase [EC:1.1.1.1]
B 09103 Lipid metabolism
C 00071 Fatty acid degradation [PATH:ko00071]
D K00001 E1.1.1.1, adh; alcohol dehydrogenase [EC:1.1.1.1]
A09120 Genetic Information Processing
B
B 09121 Transcription
C 03020 RNA polymerase [PATH:ko03020]
D K03043 rpoB; DNA-directed RNA polymerase subunit beta [EC:2.7.7.6]
D K13797 rpoBC; DNA-directed RNA polymerase subunit beta-beta' [EC:2.7.7.6]
Resultado esperado:
KO metadata_KEGG_Description metadata_KEGG_Pathways
K00844 HK; hexokinase [EC:2.7.1.1] Metabolism, Carbohydrate metabolism, Glycolysis / Gluconeogenesis
K12407 GCK; glucokinase [EC:2.7.1.2] Metabolism, Carbohydrate metabolism, Glycolysis / Gluconeogenesis
K00001 E1.1.1.1, adh; alcohol dehydrogenase [EC:1.1.1.1] Metabolism, Carbohydrate metabolism, Glycolysis / Gluconeogenesis|Metabolism, Lipid metabolism, Fatty acid degradation
K03043 rpoB; DNA-directed RNA polymerase subunit beta [EC:2.7.7.6] Genetic Information Processing, Transcription, RNA polymerase
K13797 rpoBC; DNA-directed RNA polymerase subunit beta-beta' [EC:2.7.7.6] Genetic Information Processing, Transcription, RNA polymerase
Eu apreciaria qualquer ajuda ou orientação sobre como processar corretamente esses dados em um arquivo TSV desejado com base nas informações hierárquicas fornecidas. Obrigado pela sua ajuda!
este é o meu código
data = """A09100 Metabolism
B
B 09101 Carbohydrate metabolism
C 00010 Glycolysis / Gluconeogenesis [PATH:ko00010]
D K00844 HK; hexokinase [EC:2.7.1.1]
D K12407 GCK; glucokinase [EC:2.7.1.2]
D K00001 E1.1.1.1, adh; alcohol dehydrogenase [EC:1.1.1.1]
B 09103 Lipid metabolism
C 00071 Fatty acid degradation [PATH:ko00071]
D K00001 E1.1.1.1, adh; alcohol dehydrogenase [EC:1.1.1.1]
A09120 Genetic Information Processing
B
B 09121 Transcription
C 03020 RNA polymerase [PATH:ko03020]
D K03043 rpoB; DNA-directed RNA polymerase subunit beta [EC:2.7.7.6]
D K13797 rpoBC; DNA-directed RNA polymerase subunit beta-beta' [EC:2.7.7.6]"""
lines = data.split('\n')
result = []
ko = None
description = None
hierarchy_names = []
for line in lines:
parts = line.strip().split()
if parts:
if parts[0].startswith('A'):
# Reset hierarchy for a new 'A' section
hierarchy_names = [" ".join(parts[1:])]
elif parts[0] == 'K':
ko = parts[0]
description = " ".join(parts[1:])
elif parts[0] == 'D' and len(parts) >= 3:
ko = parts[1]
description = " ".join(parts[2:])
else:
hierarchy_names.append(" ".join(parts[1:]))
if ko and description:
hierarchy_str = ", ".join(hierarchy_names)
result.append([ko, description, hierarchy_str])
# Add the header row
result.insert(0, ["KO", "metadata_KEGG_Description", "metadata_KEGG_Pathways"])
# Specify the filename for the TSV file
tsv_filename = "output_data.tsv"
with open(tsv_filename, 'w') as tsv_file:
for row in result:
tsv_file.write("\t".join(row) + "\n")
print(f"Data saved to {tsv_filename}")
Sugiro que você verifique o
DBGETEntryParser
site da Orange Bioinformatics que lida com arquivos KEGG. Caso contrário, se você estiver tentado a usar pandas com alguma ajuda de regex, você pode tentar isto:Saída ( em formato tabular ):
Uma visualização gráfica com networkx :
consegui esse código obrigado