ich schreibe gerade PDB Dateien aus einer Datenbank. Das sind letztendlich Atomkoordinaten von Proteinen.
Im Moment dauert eine Datei mit 680kb (rund 10000 Zeilen) etwa 20 Sekunden, was mir für die geringe Datenmenge recht lange vor kommt.
Ich habe jetzt den Code überprüft und hier und da ein paar logging aufrufe gemacht, weil ich erst vermutete das das lesen aus der Datenbank so lange dauert, aber das ist innerhalb einer Sekunde abgeschlossen.
Ich habe dann die Loops weiter untersucht und stelle fest, das in der atomLoop geprüft wird ob es sich um ein Wasserstoff handelt, wenn in dem Objekt Wasserstoffe ausgegeben werden sollen.
Im Klartext heißt das, es wird 10000 mal geprüft, ob jedes Atom ein Wasserstoff ist, wenn nein, wird es geschrieben.
Dies kann aber ausgewählt werden, nicht immer muss ein Wasserstoff herausgefiltert werden. Ich bin jetzt am überlegen wie ich das am besten beschleunige.
Meine Idee ist zwei Funktionen zu schreiben,
Code: Alles auswählen
def atomLoopWithHydrogens()
'will use every atom'
pass
atomLoopWithoutHydrogens()
'will not print hydrogens'
pass.
Code: Alles auswählen
if hydrogens:
atomLoop = atomLoopWithHydrogens
Wollte fragen ob das eine saubere Lösung ist, oder wie man sowas besser macht.
Muss dazusagen, es sind ein paar solcher Abfragen, letztendlich 18 Stück, die nicht immer geprüft werden müssen und die ich mir so meist sparen könnte.