BioX-CLPM
view release on metacpan or search on metacpan
lib/BioX/CLPM/Sequence.pm view on Meta::CPAN
package BioX::CLPM::Sequence;
use base qw(BioX::CLPM::Base);
use Bio::Perl qw(read_sequence);
use Class::Std;
use Class::Std::Utils;
use warnings;
use strict;
use Carp;
use version; our $VERSION = qv('0.0.1');
{
my %sequence_of :ATTR( :get<sequence> :set<sequence> :default<''> :init_arg<sequence> );
my %sequence_id_of :ATTR( :get<sequence_id> :set<sequence_id> :default<''> :init_arg<sequence_id> );
my %cl_sequence_of :ATTR( :get<cl_sequence> :set<cl_sequence> :default<''> :init_arg<cl_sequence> );
my %ann_cl_sequence_of :ATTR( :get<ann_cl_sequence> :set<ann_cl_sequence> :default<''> :init_arg<ann_cl_sequence> );
my %fragments_of :ATTR( :get<fragments> :set<fragments> :default<[]> :init_arg<fragments> );
sub START {
my ( $self, $ident, $arg_ref ) = @_;
if ( $arg_ref ) { $self->_load( $arg_ref ); }
return;
}
sub fragments { my ( $self ) = @_; return @{ $self->get_fragments() }; }
sub _load {
my ( $self, $arg_ref ) = @_;
#my $sequence_id = defined $arg_ref->{sequence_id} ?
if ( defined $arg_ref->{sequence_id} ) {
$self->_load_from_db( $arg_ref );
}
elsif ( defined $arg_ref->{sequence} ) {
# $self->_load_from_sequence( $arg_ref );
}
elsif ( defined $arg_ref->{file} ) {
$self->_load_from_file( $arg_ref );
}
# if(defined $arg_ref->{linker}){
# if( $self->get_cl_sequence eq ''){
# $self->mark_cl_sites( { linker=>$arg_ref->{linker} } );
# }
# }
}
sub _load_from_file {
my ( $self, $arg_ref ) = @_;
my $file = $arg_ref->{file} ? $arg_ref->{file} : '';
my $sequence;
if ( -e $file ) {
# Guess file format from extension with read_sequence()
my $seq_object = read_sequence( $file );
$sequence = $seq_object->seq();
}
$self->set_sequence( $sequence );
warn "SEQUENCE _load_from_file() file $file sequence $sequence \n";
return;
}
sub insert {
my ( $self, $arg_ref ) = @_;
my $sequence = defined $arg_ref->{sequence} ?
$arg_ref->{sequence} :
$self->get_sequence();
if ( $sequence ) { $self->set_sequence($sequence); }
# Calculate cl_sequence and ann_cl_sequence
# TODO
my $cl_sequence;
my $ann_cl_sequence;
my $sql = 'insert into sequences (sequence, cl_sequence, ann_cl_sequence) ';
$sql .= "values ('$sequence', '$cl_sequence', '$ann_cl_sequence')";
$self->sqlexec( $sql );
$sql = 'select LAST_INSERT_ID()';
my ( $sequence_id ) = $self->sqlexec( $sql, '\@@' );
$self->set_sequence_id( $sequence_id );
$self->set_sequence( $sequence );
$self->set_cl_sequence( $cl_sequence );
$self->set_ann_cl_sequence( $ann_cl_sequence );
}
sub _load_from_db {
my ( $self, $arg_ref ) = @_;
( run in 1.107 second using v1.01-cache-2.11-cpan-364913b4093 )