**Bio-Tools-CodonOptTable**
A codon quality check tool, it produces a Codon Optimization table to see the quality of each codon.
The simplest way of depiction is to plot the codon usage frequency that can be found in common codon usage tables. A more elaborate way to depict the codon quality is to convert the codon usage frequency into relative adaptiveness values. In contrast to the codon usage frequency the relative adaptiveness takes into account the number of codons which code for the respective amino acid.
http://kobesearch.cpan.org/htdocs/Bio-Tools-CodonOptTable/README.html
Installation from cpan
cpan>install Bio::Tools::CodonOptTable
depends on **GD::Graph** and **Bio::Perl**
http://search.cpan.org/~shardiwal/Bio-Tools-CodonOptTable-0.07/lib/Bio/Tools/CodonOptTable.pm
====USES or Examples====
You can use this module in the following ways
use Bio::Tools::CodonOptTable;
my $seqobj = Bio::Tools::CodonOptTable->new ( -seq => 'ATGGGGTGGGCACCATGCTGCTGTCGTGAATTTGGGCACGATGGTGTACGTGCTCGTAGCTAGGGTGGGTGGTTTG',
-id => 'GeneFragment-12',
-accession_number => 'Myseq1',
-alphabet => 'dna',
-is_circular => 1,
-genetic_code => 1,
);
B<#If you wanna read from file>
my $seqobj = Bio::Tools::CodonOptTable->new(-file => "contig.fasta",
-format => 'Fasta',
-genetic_code => 1,
);
B<#If you have Accession number and want to get file from NCBI> my $seqobj = Bio::Tools::CodonOptTable->new(-ncbi_id => "J00522",
-genetic_code => 1,);
my $myCodons = $seqobj->rscu_rac_table();
if($myCodons)
{
for my $each_aa (@$myCodons)
{
print "Codon : ",$each_aa->{'codon'},"\t";
print "Frequency : ",$each_aa->{'frequency'},"\t";
print "AminoAcid : ",$each_aa->{'aa_name'},"\t";
print "RSCU Value : ",$each_aa->{'rscu'},"\t"; #Relative Synonymous Codons Uses
print "RAC Value : ",$each_aa->{'rac'},"\t"; #Relative Adaptiveness of a Codon
print "\n";
}
}
B<# To get the prefered codon list based on RSCU & RAC Values > my $prefered_codons = $seqobj->prefered_codon($myCodons);
while ( my ($amino_acid, $codon) = each(%$prefered_codons) ) {
print "AminoAcid : $amino_acid \t Codon : $codon\n"; }
B<# To produce a graph between RSCU & RAC> # Graph output file extension should be GIF, we support GIF only
$seqobj->generate_graph($myCodons,"myoutput.gif");
====Creating a gui for CodonOptTable====
Here is a python script that provides a Graphical User Interface:
You need to have wxpython installed on your system.
#!/usr/bin/python
import wx
import os
import random
import re
class testgui(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(683,360))
# Menu stuff
menubar =wx.MenuBar()
menufile =wx.Menu()
menuhelp =wx.Menu()
self.SetMenuBar(menubar)
menubar.Append(menufile, '&File')
menubar.Append(menuhelp, '&Help')
exitmenu =menufile.Append(-1, 'Quit', 'Exit Application')
about =menuhelp.Append(-1, 'About', 'About us')
#panel creation and sizer
panel =wx.Panel(self, -1)
hbsizer =wx.BoxSizer(wx.VERTICAL)
self.orig_text =wx.TextCtrl(panel,-1,size=(679,275),style=wx.TE_MULTILINE)
# self.orig_text =wx.TextCtrl(panel,-1)
#Objects
self.orig_label =wx.StaticText(panel,-1, 'Paste Your Sequence here:')
ok_button =wx.Button(panel,-1,'Run CodonOptTable')
cancel_button =wx.Button(panel,-1,'Clear')
format_seq =wx.Button(panel,-1,'Format Seq')
rhead =wx.Button(panel,-1,'Remove Header')
exit_button=wx.Button(panel,-1,'Exit')
disp =wx.StaticText(panel,-1,'')
vsizer1 =wx.BoxSizer(wx.HORIZONTAL)
vsizer4 =wx.BoxSizer(wx.HORIZONTAL)
vsizer5 =wx.BoxSizer(wx.HORIZONTAL)
vsizer6 =wx.BoxSizer(wx.HORIZONTAL)
vsizer2 =wx.BoxSizer(wx.HORIZONTAL)
vsizer1.Add(self.orig_label,1,wx.CENTRE,10)
vsizer2.Add(self.orig_text,1,wx.CENTRE,10)
vsizer5.Add(rhead,1,wx.RIGHT,1)
vsizer5.Add(format_seq,1,wx.RIGHT,1)
vsizer5.Add(ok_button,1,wx.RIGHT,1)
vsizer5.Add(cancel_button,1,wx.RIGHT,1)
vsizer5.Add(exit_button,1,wx.RIGHT,1)
vsizer6.Add(disp,1,wx.CENTER,1)
hbsizer.Add(vsizer1,0,wx.CENTER|wx.ALL,1)
# hbsizer.Add(self.orig_text,0, wx.CENTER|wx.ALL,1)
hbsizer.Add(vsizer2,0, wx.CENTER|wx.ALL,1)
hbsizer.Add(vsizer4,0, wx.CENTER|wx.ALL,1)
hbsizer.Add(vsizer5,0,wx.ALIGN_RIGHT|wx.RIGHT,1)
hbsizer.Add(vsizer6,0,wx.CENTER,1)
#events
self.Bind(wx.EVT_BUTTON,self.executa,ok_button)
self.Bind(wx.EVT_BUTTON,self.rheader,rhead)
self.Bind(wx.EVT_BUTTON,self.format_seq,format_seq)
self.Bind(wx.EVT_MENU, self.soja, exitmenu)
self.Bind(wx.EVT_BUTTON,self.clear,cancel_button)
self.Bind(wx.EVT_BUTTON,self.soja,exit_button)
#pane l.CreateStatusBar()
panel.SetSizer(hbsizer)
self.Centre()
self.Show(True)
def clear(self,event=None):
self.orig_text.SetValue('')
def format_seq(self,event=None):
originator=self.orig_text.GetValue()
comm=re.sub('[ \t\r\n]','',originator)
self.orig_text.SetValue(comm)
def rheader(self,event=None):
originator=self.orig_text.GetValue()
comm=re.sub('>.*','>',originator)
self.orig_text.SetValue(comm)
def soja(self, event=None):
self.Close(True)
def executa(self,event=None):
recordid=random.randint(20,10055)
originator=self.orig_text.GetValue()
os.system('perl /home/obiero/codonopt/codonOpt-test.pl %s' %originator)
wx.MessageBox('DONE! check the output in you folder', 'CodonOptTable Info')
app =wx.App()
testgui(None, -1, 'CodonOptTable GUI')
app.MainLoop()
This is used together with the perl script:
#!/bin/perl
use Bio::Tools::CodonOptTable;
$sequence = $ARGV[0];
sub codon {
my ($mysequence)=@_;
print $mysequence;
my $seqobj = Bio::Tools::CodonOptTable->new ( -seq => $mysequence,
-id => 'GeneFragment-12',
-accession_number => 'Myseq1',
-alphabet => 'dna',
-is_circular => 1,
-genetic_code => 1,
);
#my $seqobj = Bio::Tools::CodonOptTable->new(-file => $mysequence,
#
# -format => 'Fasta',
# -genetic_code => 1,
# );
my $myCodons = $seqobj->rscu_rac_table();
if($myCodons)
{
for my $each_aa (@$myCodons)
{
print "Codon : ",$each_aa->{'codon'},"\t";
print "Frequency : ",$each_aa->{'frequency'},"\t";
print "AminoAcid : ",$each_aa->{'aa_name'},"\t";
print "RSCU Value : ",$each_aa->{'rscu'},"\t"; #Relative Synonymous Codons Uses
print "RAC Value : ",$each_aa->{'rac'},"\t"; #Relative Adaptiveness of a Codon
print "\n";
}
}
while ( my ($amino_acid, $codon) = each(%$prefered_codons) ) {
print "AminoAcid : $amino_acid \t Codon : $codon\n"; }
$seqobj->generate_graph($myCodons,"/home/obiero/codonopt/myoutput.gif");
}
codon($sequence);
Note: You have to edit the paths to suite your setup.
==== Usefull ReGex ====
----
Merge sequence lines using sed:
$ grep -v Tp sequence | tr -d "\n" > new_sequence_file
$ grep -o
This will grep only the part of matching line that matching the pattern eg How many occurence of "ATCG" in a sequence?