I have an example:

def pairwiseScore(seqA, seqB):

        prev = -1
        score = 0
        length = len(seqA)
        similarity = []
        relative_similarity = []
        
        for x in xrange(length):
                
                if seqA[x] == seqB[x]:
                        if (x >= 1) and (seqA[x - 1] == seqB[x - 1]):
                                score += 3
                                similarity.append(x)
                        else:
                                score += 1
                                similarity.append(x)                            
                else:
                        score -= 1
        
        for x in similarity:
        
                relative_similarity.append(x - prev)
                prev = x
                
        return ''.join((seqA, '\n', ''.join(['|'.rjust(x) for x in 
relative_similarity]), '\n', seqB, '\n', 'Score: ', str(score)))


print pairwiseScore("ATTCGT", "ATCTAT"), '\n', '\n', 
pairwiseScore("GATAAATCTGGTCT", "CATTCATCATGCAA"), '\n', '\n', 
pairwiseScore('AGCG', 'ATCG'), '\n', '\n', pairwiseScore('ATCG', 'ATCG')

which returns:

ATTCGT
||   |
ATCTAT
Score: 2 

GATAAATCTGGTCT
 ||  |||  |
CATTCATCATGCAA
Score: 4 

AGCG
| ||
ATCG
Score: 4 

ATCG
||||
ATCG
Score: 10


But i created this with some help from one person. Earlier, this code was 
devoided of these few lines:


prev = -1
relative_similarity = []
        
        
for x in similarity:
        
        relative_similarity.append(x - prev)
        prev = x

The method looked liek this:

def pairwiseScore(seqA, seqB):

        score = 0
        length = len(seqA)
        similarity = []
        
        for x in xrange(length):
                
                if seqA[x] == seqB[x]:
                        if (x >= 1) and (seqA[x - 1] == seqB[x - 1]):
                                score += 3
                                similarity.append(x)
                        else:
                                score += 1
                                similarity.append(x)                            
                else:
                        score -= 1
                
        return ''.join((seqA, '\n', ''.join(['|'.rjust(x) for x in 
similarity]), '\n', seqB, '\n', 'Score: ', str(score)))

and produced this output:

ATTCGT
||    |
ATCTAT
Score: 2 

GATAAATCTGGTCT
| |    |     |      |         |
CATTCATCATGCAA
Score: 4 

AGCG
| |  |
ATCG
Score: 4 

ATCG
|| |  |
ATCG
Score: 10

So I have guessed, that characters processed by .rjust() function, are placed 
in output, relative to previous ones - NOT to first, most to left placed, 
character.
Why it works like that? What builtn-in function can format output, to make 
every character be placed as i need - relative to the first character, placed 
most to left side of screen.

Cheers
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to