This is a test version of Biostars. For the public version, visit https://www.biostars.org.
can not get the alignment result from needle alignment

I am using this script to compare to sequence and parse the result:

from Bio.Emboss.Applications import NeedleCommandline
from Bio import AlignIO

needle_cline = NeedleCommandline(asequence="a.fa",
                bsequence="b.fa",
                gapopen=10, gapextend=0.5, outfile="needle.txt")

filename= "needle.txt"
format = "emboss"

alignments = list(AlignIO.parse(filename, format))

when I try to print the results in the alignments list it gives me only part of the last line

like that

SingleLetterAlphabet() alignment with 2 rows and 2258 columns
TTGATGAGTGGGCACCATGATTGCCCGACTGTTATTACCGTCAA...TCT ref
TGGATGAGTGGGCACCATGATTGCCCGACTGTTATTACCGTCAA...T-- corr

Any idea?

sequence alignment

1 answer

Consider checking the examples in the documentation for the MultipleSeqAlignment class returned by AlignIO.

I guess this might do what you want:

print alignments[:,:]

I changed the method from parse to read like this

alignments = AlignIO.read(filename, format)
print alignments[:,:]

but, the result is the same

SingleLetterAlphabet() alignment with 2 rows and 2258 columns
TTGATGAGTGGGCACCATGATTGCCCGACTGTTATTACCGTCAA...TCT ref
TGGATGAGTGGGCACCATGATTGCCCGACTGTTATTACCGTCAA...T-- corr

any Idea?

I figured it I need to add another loop to get the sequence

for alignment in AlignIO.parse(filename, format):
    for sequence in alignment:
        print(sequence.seq)

Log in to answer this question.