1
$\begingroup$
from Bio import SeqIO
from Bio import Align

ref_seq_1 = SeqIO.read('C:/Users/King_Arthur/Desktop/ref_seq/segment 1/ref_seq_8.fasta','fasta')

seq1 = SeqIO.read('C:/Users/King_Arthur/Desktop/file/segment 1/Myfile_1 (1).fasta','fasta')

aligner = Align.PairwiseAligner()
aligner.mode = 'global'
aligner.match_score = 1
aligner.mismatch_score = -2
aligner.gap_score = -2

alignments = aligner.score(ref_seq_1.seq , seq1.seq)

print(alignments)
for alignment in sorted(alignments):
    print(alignment)

So this is my code and as you can see in the last section i am trying to iterate over my alignment but I am getting this error

TypeError: 'float' object is not iterable

I have tried various things like using str() but it gives some strange values and I also tried to read the source code by using the inspect module but I can't figure out the problem.

Any help would be really appreciated.

My final objective is to find out how many matches, mismatches and gaps are present in the final alignment using biopython.

if there is any other better way to do it in python please feel free to suggest.

$\endgroup$

1 Answer 1

2
$\begingroup$

aligner.score(ref_seq_1.seq , seq1.seq) doesn't produce an alignment. It just gives you the score of the alignment as float value.

Instead you need to run:

alignments = aligner.align(ref_seq_1.seq , seq1.seq)

Now alignments is an Bio.Align.PairwiseAlignments you can iterate over alignments or get the score with alignments.score which gives you the same as aligner.score(ref_seq_1.seq , seq1.seq)`

If you need more information, you could check the documentation.

$\endgroup$
2
  • $\begingroup$ Thank you so much. That helped a lot. Do you know anything to solve this- My final objective is to find out how many matches, mismatches and gaps are present in the final alignment using biopython. $\endgroup$ Nov 1, 2020 at 10:33
  • 1
    $\begingroup$ For your final objective check biopython.org/DIST/docs/tutorial/Tutorial.html#sec100 $\endgroup$
    – Mr_Z
    Nov 1, 2020 at 12:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.