- How a simple Sequence Class can be created and used in programming language like Java, Perl and Python ?
- How sequence objects can be easily extended to include more functionalities ?
- How you can use already available sequence objects in BioJava, BioPerl and BioPython instead of creating your own classes.
Perl
A. Using Data structure and procedural programming approach :
Let's call the program 'seq_hash.pl'
#!/usr/bin/env perl
use strict;
use warnings;
# Anonymous Hash reference in Perl used for storing the Sequence content
my $sequence_hash = {
"name" => "cytochrome",
"type" => "DNA",
"seq_string" => "ADSFASDFASDF"
};
# A function/subroutine to get the sequence hash reference contents as FASTA string
sub seq_hash_to_fasta {
my ($seq_hash) = @_;
my $fasta_out = ">$seq_hash->{'name'}\n$seq_hash->{'seq_string'}\n";
return $fasta_out;
}
my $fasta_string = &seq_hash_to_fasta($sequence_hash);
print "FASTA string of Sequence:\n";
print $fasta_string;
Running the program from command-prompt
Prompt$$ perl seq_hash.pl FASTA string of Sequence: >cytochrome ADSFASDFASF
B. Using Object-Oriented Concept - Perl Module:
use strict;
use warnings;
package SimpleSequence;
# Function: Constructor for the class and return the SimpleSequence Object
# Usage : $seq = new SimpleSequence('seq Name')
# Returns : A SimpleSequence object. A quick synopsis:
# $seq_object->name() - name of the sequence
# $seq_object->sequence() - sequence as a string
#
sub new {
my ($class,$name) = @_;
my $data = {
"name" => "$name",
"sequence" => "",
};
bless $data, $class;
return $data;
}
# Get or Set Sequence name
# Usage : $seq_obj->name('gi:145443344') - sets the name of sequence
# : $name= $seq_obj->name() - gets the name of sequence
sub name {
my ($self, $arg) = @_;
if (defined $arg) {
$self->{"name"} = $arg;
}else {
return $self->{"name"};
}
}
# Get or Set sequence string
# Usage : $seq_obj->sequence('ATAGAFAF') - sets the sequence
# : $seq_str = $seq_obj->sequence() - gets the sequence as string
sub sequence {
my ($self, $arg) = @_;
if (defined $arg) {
$self->{"sequence"} = $arg;
}else {
return $self->{"sequence"};
}
}
# Get FASTA string
# Usage : $fasta_str = $seq_obj->to_fasta()
sub to_fasta {
my ($self, $arg) = @_;
my $name = $self->{"name"};
my $seq_str = $self->{"sequence"};
my $fasta_out = ">$name\n$seq_str\n";
return $fasta_out;
}