Bestimmte Daten aus Datei lesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo zusammen
Ich versuche folgendes Problem zu lösen:
Ich habe ein .dat-File, in dem zu verschiedenen (berechneten) Aminosäuren aus Proteinen eine Säurekonstante (bzw. der -log() davon) aufgelistet ist (der Wert in der 4. Spalte, 5. Spalte = Modellwerte, unwichtig):
  • ...
    #1poh
    HIS 17 A 7.23 6.50
    HIS 32 A 5.37 6.50
    HIS 83 A 6.38 6.50
    HIS 128 A 7.41 6.50
    HIS 133 A 4.15 6.50
    ...
Ich muss diese Werte nun mit experimentellen Werten vergleichen. Diese Werte stehen in einem anderen Dokument, dass ich aus Literaturwerten erstelle. Bspw. sieht das so aus:
  • ...
    #1gxx
    HIS 18 A 7.23
    HIS 29 A 6.33
    #1poh
    HIS 32 A 7.01
    HIS 83 A 8.04
    ...
Der Punkt ist, dass nicht zu jedem berechneten Wert ein experimenteller Wert existiert (zugehörige Werte stimmen in der Nummer in der zweiten Spalte überein). Ich versuche nun, die berechneten Werte nach den experimentellen Werten zu parsen, komme da aber nicht so weiter.

Das Ziel wäre ein Programm, das eine Tabelle erstellt, in der die experimentellen und (nur die zugehörigen) berechneten Werte in zwei Spalten stehen würden, so dass man sie gegeneinander auftragen kann.

Es wäre toll, wenn mir jemand sagen könnte, wie man am besten vorgehen müsste, also in welche Teilprobleme man das Problem am besten zerlegen sollte, bzw. einen Ansatz liefern. Ich hab irgendwie einen Ansatz, allerdings verliere ich immer wieder die Übersicht, über was ich eigentlich tun möchte.
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Eine nicht unwichtige Frage wäre die nach dem Umfang der Daten.
Wenn es nicht zu viele sind, könnte man beide Dateien komplett einlesen und dann verarbeiten. Dass würde die Sache vereinfachen.

In dem Fall könntest du dictionaries verwenden. Der Schlüssel wäre z.B "HIS 17" (ist das A wichtig? Steht es immer an dieser Stelle? Kann dort auch etwas anderes stehen?), der Wert dein benötiger Vergleichswert.

Der Rest wäre dann schnell erledigt.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Also das ganze ist völlig statisch.
Es steht immer ein A (bzw. auch ein B) dort, aber sonst nie was anderes.
Am wichtigsten sind die "#1gxx"-IDs und die Aminosäuren-IDs. Die müssen übereinstimmen.
Ist Dictionary wirklich das beste?, weil man muss das Zeug nicht abfragen können, sondern es muss eher einfach über alles durchiteriert werden können, um alle Werte zu kriegen und die dann zu plotten.
Ich habe jetzt sowas, wo ich eine Liste von Tupeln-Listen bekomme (nur beim ersten Protein, erste Aminosäure):

[(#1gxx, [HIS, A, 17, 7.01])]

Ich dachte, das sei schon ganz gut, weil dann kann ich eigentlich gut auf die Elemente zugreifen. Was mir allerdings nicht gelingt, ist diese (äusserste) Liste mit den übrigen Daten anzureichern, sprich eine schlaue Schleife basteln. Weil es ist so, dass nicht zu jedem Protein gleich viele experimentelle Werte zur Verfügung stehen und mein HAUPTPROBLEM besteht darin, dass ich nicht weiss, wie ich den .readline()-Befehl genau sooft ausführen lassen kann, dass zu einem Protein genau alle experimentellen Werte gelesen werden
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ich verstehe zu wenig von der Sache an sich, um mir aus deinen Informationen ein ausreichend klares Bild machen zu können,
- wie genau die Daten aussehen (können)
- welche Informationen darin du wirklich brauchst und was genau du vergleichen willst

Wenn du einen größeren repräsentativen Auszug der Daten zeigen könntest und mal an einem Beispiel durchexerzieren, was du dir als Ergebnis genau vorstellst, würde das helfen.
Antworten