[Bioperl-l] Padded position in Consensus sequence
Jamie Hatfield
jamie at genome.arizona.edu
Thu Aug 14 14:35:55 EDT 2003
The Bio::LocatableSeq object is good at doing what you're looking for.
#!/usr/local/bin/perl -w
use Bio::LocatableSeq;
my $consensus = "AGG*TGAC**TA***AGTCCT*T";
## gaps are represented using '-' instead of '*' in this object.
## either way, though, we need a count of the number of gaps.
## if your seq already had '-' representing gaps, then
## my $gaps = ($consensus =~ s/-/-/g);
## would still work.
my $gaps = ($consensus =~ s/\*/-/g);
my $seq = new Bio::LocatableSeq(-seq => $consensus,
-id => "consensus",
-start => 1,
-end => length($consensus)-$gaps);
print map { "$_\t" . $seq->column_from_residue_number($_) . "\n" }
($seq->start..$seq->end);
On Thu, 2003-08-14 at 11:18, Jayaprakash Rudraraju wrote:
>
> Hi,
>
> I have written a small subroutine to as part of the program to tag primers
> in Consed. The following subroutine gives padded position on the consensus
> sequence, given its position on reference sequence.
>
> #!perl -w
> my $consensus = "AGG*TGAC**TA***AGTCCT*T";
> print map { "$_\t". padded_position($_) ."\n"} (1..16);
>
> sub padded_position {
> my ($unpad, $pads) = (@_, 0);
> $pads++ until $unpad == substr($consensus, 0, $unpad+$pads) =~ tr/ACGT//;
> $unpad+$pads;
> }
>
> can you suggest me some more efficient or elegant solutions. Eventhough I
> have condensed it as much as I can, I am looking for a simpler logic.
>
> Prakash.
>
> --
> My favorite animal is steak.
> -- Fran Lebowitz (1950 - )
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
More information about the Bioperl-l
mailing list