Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/perl
- use strict;
- use warnings;
- local $/ = "\r\n";
- my @frames = (1, 2, 3, -1, -2, -3 ); #six frames;
- foreach my $frame (@frames) {
- frame ($frame);
- sub frame
- {
- my $f = shift;
- open IN, $ARGV[0];
- while (<IN>){
- chomp; #each sequence should be in single line;
- my $m = length ($_);
- if(/^>(\w+)/){
- print ">$1"."_"."frame"."$f"."\n";
- }elsif($f > 0){
- my $frameseq = substr($_, $f-1, $m-$f+1);
- print "$frameseq\n";
- }elsif ($f <0){
- my $comprevseq = reverse $_;
- $comprevseq =~ tr/[A,T,C,G,a,t,c,g]/[T,A,G,C,t,a,g,c]/; # sequence reverse complement;
- my $frameseq = substr ($comprevseq, abs($f)-1, $m-abs($f)+1);
- print "$frameseq\n";
- }
- }
- }
- close IN;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement