#!/usr/bin/perl # written for 410.633 into bioinformatics # by erik use strict; use Bio::Tools::GuessSeqFormat; use Bio::SeqIO; use Bio::SeqFeature::Gene::Transcript; use Bio::SeqFeature::Gene::Exon; # USAGE: exonify "s1-e1,s2-e2,...sN-eN" # returns the protein involved my $fil = $ARGV[0]; my $guesser = Bio::Tools::GuessSeqFormat->new(-file=>$fil); my $format = $guesser->guess; my $stream = Bio::SeqIO->new(-file => $fil, -format => $format); my $seq = $stream->next_seq(); die "Can't read seq" if !$seq; my $exons=$ARGV[1]; my $f = Bio::SeqFeature::Gene::Transcript->new(); my $stream = Bio::SeqIO->new(-fh =>\*STDOUT, -format => "fasta"); for (split /,/, $exons) { my ($a,$b) = split(/-/,$_); my $ex = Bio::SeqFeature::Gene::Exon->new(-start=>$a,-end=>$b); $ex->is_coding(1); $ex->attach_seq($seq); #write each exon $stream->write_seq($ex->cds()); $f->add_exon($ex); } $f->attach_seq($seq); #write the mrna $stream->write_seq($f->mrna()); #write the protein $stream->write_seq($f->protein());