"Spyros Charonis" <s.charo...@gmail.com> wrote
motif_file = open('myfolder/pythonfiles/final motifs_11SGLOBULIN',
'r')
align_file = open('myfolder/pythonfiles/11sglobulin.seqs', 'a+')
finalmotif_seqs = []
finalmotif_length = [] # store length of each motif
finalmotif_annot = []
finalmotifs = motif_file.readlines()
seqalign = align_file.readlines()
NB. I've moved the lines to after the initialisation, but...
for line in finalmotifs:
finalmotif_seqs.append(line)
mot_length = len(line)
finalmotif_length.append(mot_length)
for item in finalmotif_length:
annotation = '~' * item
finalmotif_annot.append(annotation)
This seems very verbose. Why not go directly to the tildes?
for line in finalmotifs:
finalmotof_seqs.append(line)
finalmotif_annot.append('~' * len(line))
You don't seem to use the list of lens for anything else?
for line in seqalign:
for i in len(finalmotif_seqs): # for item in
finalmotif_seqs:
len() returns an integer not a sequence so you can't
iterate over it, you would need range(), but...
for i in len(finalmotif_annot): # for item in
finalmotif_annot:
if finalmotif_seqs[i] in line: # if item in
line:
newline = line.replace(finalmotif_seqs[i],
finalmotif_annot[i])
#sys.stdout.write(newline) # => print the lines
out on
the shell
align_file.writelines(newline)
You comments are better python than your code is!
with open(align_file) as seqalign:
for line in seqalign:
for seq in finalmotif_seqs:
for annot in finalmotif_annot:
line = line.replace(seq, annot) # +'\n'???
align_file.write(line)
motif_file.close()
align_file.close()
If you use 'with' you don't need these...
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor