"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

Reply via email to