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 )