#!/usr/bin/perl -w # A simple script to translated all six reading frames, generate one amino acid sequence per reading frame # input nucleotide sequence should be present in just one line #output goes on the terminal if (@ARGV != 1) { die "correct usage\n\t translateWholeGenome.pl ";} #$MIN_LENGTH = $ARGV[1]; # minimum protein length open(CODING,"resourceFiles/codonAminoAcid22.txt") || die"can't open codonAminoAcid22.txt"; while(defined(my $line=)){ chomp $line; my @arr = split /\t/,$line; $codon2AminoPositive{$arr[0]}=$arr[1]; $codon2AminoNegative{reverse($arr[0])}=$arr[1]; } close(CODING); open(INPUT,$ARGV[0])|| die "cant open input fasta file\n"; my $chrNum=0; while(defined(my $line =)){ if($line =~/^>(.+)\n/){ $chrNum++; my $chrName = "Chr".$chrNum."_Frame"; $line =; chomp $line; $length = length($line); # Frame 1 $start=0; # codon start site print ">$chrName 1\n"; $orfSeq=""; # sequence seen so far while($start <= $length-3){ $codon=substr($line,$start,3); $amino= $codon2AminoPositive{$codon}; if(!defined($amino)){$amino = "X"; } print $amino; $start=$start+3; } print "\n"; # Frame 2 $start=1; # codon start site print ">$chrName 2\n"; $orfSeq=""; # sequence seen so far while($start <= $length-3){ $codon=substr($line,$start,3); $amino= $codon2AminoPositive{$codon}; if(!defined($amino)){$amino = "X"; } print $amino; $start=$start+3; } print "\n"; # Frame 3 $start=2; # codon start site print ">$chrName 3\n"; $orfSeq=""; # sequence seen so far while($start <= $length-3){ $codon=substr($line,$start,3); $amino= $codon2AminoPositive{$codon}; if(!defined($amino)){$amino = "X"; } print $amino; $start=$start+3; } print "\n"; # Now take the complement of the chromosome sequence $line =~ tr/TACG/ATGC/; # Frame 4 $start=$length-3; # codon start site print ">$chrName 4\n"; $orfSeq=""; # sequence seen so far while($start >=0){ $codon=substr($line,$start,3); $amino= $codon2AminoNegative{$codon}; if(!defined($amino)){$amino = "X"; } print $amino; $start=$start-3; } print "\n"; # Frame 5 $start=$length-4; # codon start site print ">$chrName 5\n"; $orfSeq=""; # sequence seen so far while($start >=0){ $codon=substr($line,$start,3); $amino= $codon2AminoNegative{$codon}; if(!defined($amino)){$amino = "X"; } print $amino; $start=$start-3; } print "\n"; # Frame 6 $start=$length-5; # codon start site print ">$chrName 6\n"; $orfSeq=""; # sequence seen so far while($start >=0){ $codon=substr($line,$start,3); $amino= $codon2AminoNegative{$codon}; if(!defined($amino)){$amino = "X"; } print $amino; $start=$start-3; } print "\n"; } }