Ergebnis in Datei schreiben

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.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

snafu: Es ging mir nur darum, dem TE zu zeigen, wie man eigene Generatoren definieren kann. das Modul itertools ist mir bekannt.
Chibi
User
Beiträge: 22
Registriert: Samstag 7. November 2009, 12:10

Sooo, musste leider die letzte zeit viel arbeiten, hab mich aber jetzt nochmal ans Programm gesetzt und mit frischem Blick und einer Pause, hab ichs endlich hinbekommen, nicht die hübscheste Lösung aber dank euch klappt jetzt alles wie ichs will.

Hier ma der Code:

Code: Alles auswählen


....
def get_clusters(node, cutoff, parent_is_cluster):
  if node.is_leaf():
    return
  avg=get_average_length(node)
  sum_dist = sum(avg)
  if node.edge.length is not None:
    sum_dist -= get_num_leaf_nodes(node, 0)*node.edge.length
  real_dist = sum_dist/get_num_leaf_nodes(node, 0)
  if real_dist <= cutoff and not parent_is_cluster:

    fobj = open("Outfile.txt", "a")
    
    print >> fobj, "Transmissionscluster:"
    print >> fobj, ""
    print >> fobj, real_dist
    print >> fobj, taxon_names(node)
    print >> fobj, "\n"
    print >> fobj, "\n"
	
	
  elif real_dist > cutoff:
    for n in node.child_nodes():
      get_clusters(n, cutoff, False)
      

cutoff=float(raw_input("Enter Cutoff value: "))

get_clusters(t1.seed_node, cutoff, False)

fobj.close()

Jetzt würd ich gerne noch ein paar Schönheitsoperationen hinsichtlich der Ausgabe vollziehen.

Mein Ergebniss sehen so aus:

bla
1.12345
['A.BC.DE', '12_345']

bla
3.45678
['F.GH.IJ', '67_890']

bla
0.00000
['A.AA.AA', '00_000']

...

Ich würd gerne noch, dass er mir anstatt nur bla
1.bla
1.12345
['A.BC.DE', '12_345']

2.bla
3.45678
['F.GH.IJ', '67_890']

3.bla
0.00000
['A.AA.AA', '00_000']

und so weiter in Textdatei schreibt. Also die bla durchnummeriert

Kann mir da nochmal jemand eine guten Tipp geben, wie ich das am besten realisieren kann?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Da das ganze ja rekursiv abläuft müßtest Du einen Zähler durchreichen, den Du hochzählst.
Chibi
User
Beiträge: 22
Registriert: Samstag 7. November 2009, 12:10

Aha, könntest du mir das bitte genauer erklären. Was meinst du mit "durchreichen"?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Na, Du gibst doch in get_clusters diese Dinge aus, richtig? Dann musst Du auf jeder Rekursionsebene wissen, wie Dein Zähler grad aussieht. Also musst Du ihn als Parameter bei jedem rekursiven Aufruf mit angeben und dann innerhalb der Funktion entsprechend der Ausgaben erhöhen.
Antworten