Skip to content
Snippets Groups Projects
Commit 304738db authored by Andreas Kusalananda Kähäri's avatar Andreas Kusalananda Kähäri
Browse files

Subroutine store() formatted for readability.

parent 6896b18e
No related branches found
No related tags found
No related merge requests found
......@@ -138,89 +138,100 @@ sub _columns {
=cut
sub store {
my ($self, @feats) = @_;
my ( $self, @feats ) = @_;
throw("Must call store with features") if( scalar(@feats) == 0 );
throw("Must call store with features") if ( scalar(@feats) == 0 );
my @tabs = $self->_tables;
my ($tablename) = @{$tabs[0]};
my ($tablename) = @{ $tabs[0] };
my $db = $self->db();
my $db = $self->db();
my $analysis_adaptor = $db->get_AnalysisAdaptor();
my $sth = $self->prepare(
"INSERT INTO $tablename (seq_region_id, seq_region_start, seq_region_end,
seq_region_strand, hit_start, hit_end,
hit_strand, hit_name, cigar_line,
analysis_id, score, evalue, perc_ident, external_db_id,
hcoverage, pair_dna_align_feature_id)
VALUES (?,?,?,?,?,?,?,?,?,?,?, ?, ?, ?, ?, ?)");
FEATURE: foreach my $feat ( @feats ) {
if( !ref $feat || !$feat->isa("Bio::EnsEMBL::DnaDnaAlignFeature") ) {
"INSERT INTO $tablename (seq_region_id, seq_region_start,
seq_region_end, seq_region_strand,
hit_start, hit_end, hit_strand, hit_name,
cigar_line, analysis_id, score, evalue,
perc_ident, external_db_id, hcoverage,
pair_dna_align_feature_id)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" # 16 arguments
);
FEATURE:
foreach my $feat (@feats) {
if ( !ref $feat || !$feat->isa("Bio::EnsEMBL::DnaDnaAlignFeature") )
{
throw("feature must be a Bio::EnsEMBL::DnaDnaAlignFeature,"
. " not a [".ref($feat)."].");
. " not a ["
. ref($feat)
. "]." );
}
if($feat->is_stored($db)) {
warning("DnaDnaAlignFeature [".$feat->dbID."] is already stored" .
" in this database.");
if ( $feat->is_stored($db) ) {
warning( "DnaDnaAlignFeature ["
. $feat->dbID()
. "] is already stored in this database." );
next FEATURE;
}
my $hstart = $feat->hstart();
my $hend = $feat->hend();
my $hstart = $feat->hstart();
my $hend = $feat->hend();
my $hstrand = $feat->hstrand();
$self->_check_start_end_strand($hstart,$hend, $hstrand);
$self->_check_start_end_strand( $hstart, $hend, $hstrand );
my $cigar_string = $feat->cigar_string();
if(!$cigar_string) {
if ( !$cigar_string ) {
$cigar_string = $feat->length() . 'M';
warning("DnaDnaAlignFeature does not define a cigar_string.\n" .
"Assuming ungapped block with cigar_line=$cigar_string .");
warning( "DnaDnaAlignFeature does not define a cigar_string.\n"
. "Assuming ungapped block with cigar_line=$cigar_string ." );
}
my $hseqname = $feat->hseqname();
if(!$hseqname) {
if ( !$hseqname ) {
throw("DnaDnaAlignFeature must define an hseqname.");
}
if(!defined($feat->analysis)) {
throw("An analysis must be attached to the features to be stored.");
if ( !defined( $feat->analysis ) ) {
throw(
"An analysis must be attached to the features to be stored.");
}
#store the analysis if it has not been stored yet
if(!$feat->analysis->is_stored($db)) {
$analysis_adaptor->store($feat->analysis());
if ( !$feat->analysis->is_stored($db) ) {
$analysis_adaptor->store( $feat->analysis() );
}
my $original = $feat;
my $seq_region_id;
($feat, $seq_region_id) = $self->_pre_store($feat);
$sth->bind_param(1,$seq_region_id,SQL_INTEGER);
$sth->bind_param(2,$feat->start,SQL_INTEGER);
$sth->bind_param(3,$feat->end,SQL_INTEGER);
$sth->bind_param(4,$feat->strand,SQL_TINYINT);
$sth->bind_param(5,$hstart,SQL_INTEGER);
$sth->bind_param(6,$hend,SQL_INTEGER);
$sth->bind_param(7,$hstrand,SQL_TINYINT);
$sth->bind_param(8,$hseqname,SQL_VARCHAR);
$sth->bind_param(9,$cigar_string,SQL_LONGVARCHAR);
$sth->bind_param(10,$feat->analysis->dbID,SQL_INTEGER);
$sth->bind_param(11,$feat->score,SQL_DOUBLE);
$sth->bind_param(12,$feat->p_value,SQL_DOUBLE);
$sth->bind_param(13,$feat->percent_id,SQL_FLOAT);
$sth->bind_param(14,$feat->external_db_id,SQL_INTEGER);
$sth->bind_param(15,$feat->hcoverage,SQL_DOUBLE);
$sth->bind_param(16,$feat->pair_dna_align_feature_id, SQL_INTEGER);
( $feat, $seq_region_id ) = $self->_pre_store($feat);
$sth->bind_param( 1, $seq_region_id, SQL_INTEGER );
$sth->bind_param( 2, $feat->start, SQL_INTEGER );
$sth->bind_param( 3, $feat->end, SQL_INTEGER );
$sth->bind_param( 4, $feat->strand, SQL_TINYINT );
$sth->bind_param( 5, $hstart, SQL_INTEGER );
$sth->bind_param( 6, $hend, SQL_INTEGER );
$sth->bind_param( 7, $hstrand, SQL_TINYINT );
$sth->bind_param( 8, $hseqname, SQL_VARCHAR );
$sth->bind_param( 9, $cigar_string, SQL_LONGVARCHAR );
$sth->bind_param( 10, $feat->analysis->dbID, SQL_INTEGER );
$sth->bind_param( 11, $feat->score, SQL_DOUBLE );
$sth->bind_param( 12, $feat->p_value, SQL_DOUBLE );
$sth->bind_param( 13, $feat->percent_id, SQL_FLOAT );
$sth->bind_param( 14, $feat->external_db_id, SQL_INTEGER );
$sth->bind_param( 15, $feat->hcoverage, SQL_DOUBLE );
$sth->bind_param( 16, $feat->pair_dna_align_feature_id,
SQL_INTEGER );
$sth->execute();
$original->dbID($sth->{'mysql_insertid'});
$original->dbID( $sth->{'mysql_insertid'} );
$original->adaptor($self);
}
} ## end foreach my $feat (@feats)
$sth->finish();
}
} ## end sub store
sub save {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment