Ashley F wrote:
ok...here's the function I've written so far.
def padWithGaps(seq):
    for letter in seq:
       letter="-"
       line=len(seq)
       dashline=line*letter
    return dashline


I don't think that's a useful function. It seems to do a HUGE amount of work that just keeps getting thrown away. Let's say seq = "GACT", this function will do the following:

letter = "G"
letter = "-"
line = 4  # len of seq
dashline = "----"
letter = "A"
letter = "-"
line = 4
dashline = "----"
letter = "C"
letter = "-"
line = 4
dashline = "----"
letter = "T"
letter = "-"
line = 4
dashline = "----"

It does everything four times. Now imagine that seq is a million characters long instead of four! This will do the job *much* faster:

def padWithGaps(seq):
    return "-" * len(seq)


*Much* faster, much easier to read.

[...]
I don't know what to do at the end of my loop but what I'm trying to do in 
pseudocode is:
 "if that alignment has the best score seen so far
          save the score and the alignment
print the best score and the best alignment"

You need to store the current best score and the current best alignment. Then each time around the innermost loop, you need to calculate the score and alignment (as you already do), and compare them to the best seen so far. If they are worse or equal, you don't need to do anything, just go on to the next loop as normal. But if they are better, then you need to update the best score and alignment, and print them.

if score > best_score:
    best_score = score
    best_alignment = alignment
    print 'best seen so far is', score, alignment

Does that help? Try writing the code, and if you still can't get it working, ask again.



--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to