2016-04-14 7 views
0

Ich versuche, Tipp-Etiketten in einer Phyloxml-Datei zu bearbeiten, so dass sie nur aus 4 Ziffern bestehen. Zum Beispiel, was ich derzeit unter dem Namen in der phyloxml-Datei habe, sind die IDs auf der linken Seite. Was ich will, sind die IDs auf der rechten Seite:Phyloxml: Suchen und Ersetzen in einer Datei

ACOM042150-PA ACOM 
AQUA008971-PA AQUA 
AGAP002137-PA AGAP 
AARA006802-PA AARA 

Der Code, den ich bisher haben die Zeichen auszureißen ich mit wollen Methoden ersetzen:

tree = Phylo.read("GSCGT000003.xml", "phyloxml") 
for i, clade in enumerate(tree.find_clades(name=True)): 
    print clade.name.replace(clade.name, clade.name[0:4]) 

Dadurch werden die erforderlichen Namen an das Terminal drucken , aber ich bin mir nicht sicher, wie ich innerhalb der Datei ersetzen oder mit den Änderungen in eine neue Datei schreiben kann. Ich kann mit Phylo.write in eine neue Datei schreiben, aber ich kann nicht in der Lage sein, die Datei mit Änderungen zu schreiben. Irgendwelche Gedanken? Vielen Dank.

Antwort

0

Sie haben den Namen der einzelnen Clade ändern und dann den Baum in eine neue Datei speichern:

tree = Phylo.read("GSCGT000003.xml", "phyloxml") 

for clade in tree.find_clades(name=True): 
    # This changes the clade name to only the first four chars 
    clade.name = clade.name[:4] 

# At this point all clade names has been changed in-place 
Phylo.write(tree, "GSCGT000003_modified.xml", "phyloxml") 
+0

Dieses perfekt funktioniert. Vielen Dank! – spiral01