[Biopython] Writting fasta file
Peter
biopython at maubp.freeserve.co.uk
Wed Aug 25 09:08:41 EDT 2010
On Wed, Aug 25, 2010 at 12:22 PM, xyz <mitlox at op.pl> wrote:
> Hello,
> the following code saves a multiple fasta file in a list and after reverse
> complement it writes the content back in a fasta file.
>
> in_handle = open(opts.inputFasta, "r")
> records = list(SeqIO.parse(in_handle, "fasta"))
>
> for record in records:
> record.seq = record.seq.reverse_complement()
>
> out_handle = open(opts.outputFasta, "w")
> SeqIO.write(records, out_handle, "fasta")
>
> How is it possible to do it without a list?
>
> Thank you in advance.
Hi "xyz",
Did you try looking in the tutorial? i.e.
http://biopython.org/DIST/docs/tutorial/Tutorial.html#sec:SeqIO-reverse-complement
You could modify your code to use a generator expression like this:
def make_rc(record):
"""Modifies a SeqRecord in place, and returns it."""
record.seq = record.seq.reverse_complement()
return record
records = (make_rc(r) for r in SeqIO.parse(in_opts.inputFasta, "fasta"))
SeqIO.write(records, out_opts.outputFasta, "fasta")
I also changed it to pass filenames directly to SeqIO - its shorter ;)
See also this thread about adding a reverse complement
method to the SeqRecord which would make this easier:
http://lists.open-bio.org/pipermail/biopython-dev/2010-June/007850.html
Peter
More information about the Biopython
mailing list