STRING-Aliases auf UniProt-IDs mappen
English
Deutsch
In einem aktuellen Projekt musste ich STRING-Datensätze mit anderen PPI-Datenbanken vergleichen. Das ist jedoch nicht immer so einfach, wie es klingt, da STRING KEGG-Proteinidentifikatoren verwendet. Glücklicherweise ist auf der STRING-Downloadseite eine Liste von Alias-Mappings frei herunterladbar.
Es gibt jedoch noch ein großes verbleibendes Problem: Ich konnte keine Dokumentation über das Format finden. Es scheint ziemlich einfach zu sein, wenn man die Grundlagen verstanden hat, aber ich habe eine wiederverwendbare Python-Funktion erstellt, die einen bestimmten Organismus filtert und eine STRING ID, UniProt ID-CSV ausgibt:
string_aliases_to_uniprot.py
# Ein STRING-Alias-Mapping-Filter & -Konverter
# Veröffentlicht unter Apache License v2.0
# Copyright (c) 2013 Uli Köhler
# Version 1.0
import gzip
def filterSTRINGAliases(infilename, outfilename, taxonomyFilter):
"""
Filtert & konvertiert STRING-Aliase in CSV.
Argumente:
infilename: Der Dateiname des gzip-komprimierten STRING-Alias-Downloads
outfilename: Die CSV-Datei, in die das konvertierte & gefilterte Mapping geschrieben wird
taxonomyFilter: Ein String mit dem NCBI-Taxonomie-Identifikator, nach dem gefiltert werden soll
"""
recordCtr = 0
with gzip.open(infilename, "rt") as infile, open(outfilename, "w") as outfile:
for line in infile:
# Einige grobe Statistiken
recordCtr += 1
if recordCtr % 1000000 == 0:
print("Processed %d records..." % recordCtr)
# Diese Zeile stellt sicher, dass wir STRING ID --> UniProt ID mappen
if "_UniProt_AC" not in line:
continue
parts = line.split()
if taxonomyFilter != parts[0]:
continue
# Alias extrahieren und schreiben
outfile.write(",".join([parts[1], parts[2]]) + "\n")
print("Processed %d records" % recordCtr)
if __name__ == "__main__":
# Beispielverwendung: Filter für Saccharomyces cerevisiae (4932), schreibe in string-aliases.csv
filterSTRINGAliases("/tmp/protein.aliases.v9.05.txt.gz", "string-aliases.csv", "4932")Check out similar posts by category:
Allgemein
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow