Das Aufteilen auf verschiedene Listen ist sicher unelegant, wahrscheinlich aber für einen C Programmierer leicht zu handeln. In jedem Fall danke für die Hinweise

Code: Alles auswählen
def startstop(zellen):
"""Liest den Zellen jeweils das erste Element aus und gibt je eine Liste
der Start- und der Endpunkte jedes Gens zurueck.
"""
starts = list()
stops = list()
for start, stop in (map(int, row[0].split('..')) for row in zellen):
print 'Gen beginnt bei %d und endet bei %d.' % (start, stop)
starts.append(start)
stops.append(stop)
return starts, stops
Gut. Bist Du sicher?Das Zeilenweise einlesen ist auch nicht das Problem
Geht mit split, wie Dill gezeigt hat. Und wie man die dabei gewonnenen gesplitteten Daten speichert und nicht verliert zeigt mein allererster Code in diesem Thread.das Problem welches ich im Moment habe ist das die einzelnen Spalten der Datei eben auch getrennt werden müssen.
Aus einer Spalte im Originalfile eine Liste machen. Der von mir weniger elegant gepostete und von BlackJack verfeinerte Code macht aus der ersten Spalte zwei Listen: Eine mit dem Anfangsbasenpaar und eine mit dem Ende-Basenpaar. Anhand dieses Beispiels kannst Du doch bestimmt für die verbleibenden acht Spalten selbst den Code schreiben, dass daraus auch jeweils Listen werden.Es müsste also möglich sein z.B. unterschiedliche Listen zu erstellen die die einzelnen Spalten speichern.
...und das ist schon vorbereitet, weil die zitierte Funktion Dir bereits die Locations als Integer zurückgibt.und lese dann aus der liste mit den Locations die zahlen raus
Du kannst alternativ die Daten in der im Code als "zellen" beschriebenen Form behalten und auf jedes Element zugreifen, wie ich es in meinem ersten Post anhand der Liste "a" vorgemacht habe. Kommt darauf an, was Du nachher damit machen willst.müssen keine Listen sein wenn jemand nen besseren Vorschlag hat bin ich sehr dankbar!)
Code: Alles auswählen
class Fasta(object):
"""Imports a FastA-File to an internal object"""
head = ""
sequence = ""
def importfasta(self, myfile):
myfasta = file(myfile, 'r')
#read the first line (header)
header = myfasta.readline()
seqline = myfasta.readline()
firstchar = currline[0]
#is file a fasta file?
if firstchar != ">":
print"No Fasta file given"
else:
#read the file up to next Header or up to EOF
while seqline != "" and seqline[0] != ">":
seqline = myfasta.readline()
seqline = seqline.strip()
self.sequence += seqline
# close the stream
myfasta.close()
#get chars to uppercase
self.sequence = self.sequence.upper()
genome.setSequence(self.sequence)
Code: Alles auswählen
from itertools import takewhile
def is_not_fasta_header(line):
return not line.startswith('>')
class Fasta(object):
def import_fasta(self, filename):
lines = open(filename, 'r')
header = myfasta.next()
if is_not_fasta_header(header):
raise ValueError('No Fasta filename given')
self.sequence = ''.join(s.strip().upper()
for s in takewhile(is_not_fasta_header, lines))
lines.close()
# genome.setSequence(self.sequence)