These documents are For the HEAD of the CVS repository on July 19, 2007
Api docs for previous releases
Modware::Search
Feature
Modware::Search::Feature - collection of methods that return iterators of Modware::Feature::* objects
|
No package variables defined. |
#USE CASE: print primary_id, start and stop of all mRNA features overlapping # a given range on a chromosome: chromosome named Fake base 39416 to 41654
my @features = Modware::Search::Feature->Search_overlapping_feats_by_range( 'Fake', 39416, 41654, 'mRNA' );
foreach my $feature (@features) { print $feature->primary_id()."\t".$feature->start()."\t".$feature->end()."\n"; }
#USE CASE: print primary_id, chromosome, start and stop of all 5' partial features my @features = Modware::Search::Feature->Search_having_qualifier("Partial, 5'' missing");
foreach my $feature (@features) { print $feature->primary_id()."\t".$feature->chromosome->chromosome_name()."\t".$feature->start()."\t".$feature->end()."\n"; }
|
Modules in the Modware::Search are all class methods. These methods return iterators or arrays of objects (depending on the context) So Modware:::Search::Feature contains methods that return iterators or arrays of Modware::Feature objects.
|
Methods description
Title : Count_by_external_id
:
Function : returns a count of features with a given external_id for a given source
:
Usage : to get a count of features with an accession no like 'ABC123'
; my $count = Modware::Search::Feature->Count_by_external_id(
: -id => 'ABC123%',
: -source => 'Accession Number'
: );
Returns : number
Args : named: -id => the id with possible wildcard being searched
: -source => the source of the id being searche
Title : Count_deleted_by_external_id
:
Function : returns a count of DELETED features with a given external_id for a given source
:
Usage : to get a count of features with an accession no like 'ABC123'
; my $count = Modware::Search::Feature->Count_deleted_by_external_id(
: -id => 'ABC123%',
: -source => 'Accession Number'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -id => the id with possible wildcard being searched
: -source => the source of the id being searche
Title : Count_feature_by_descendant_so_terms
:
Function : returns a count of all features associated with a Sequence ontology term
: or any of its descendants
:
Usage : my @features = Modware::Search::Feature->Count_feature_by_descendant_so_terms(
: -term_name => 'transcript'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -term_name => a sequence ontology term
Title : Count_feature_by_type
:
Function : returns a count of all features associated with a Sequence ontology term
:
Usage : my @features = Modware::Search::Feature->Count_feature_by_type(
: -term_name => 'tRNA'
: );
Returns : number
Args : named: -term_name => a sequence ontology term
Title : Count_feature_by_type_and_source
:
Function : returns a count of all features associated with a Sequence ontology term
: AND source
:
Usage : my $feature_count = Modware::Search::Feature->Count_feature_by_type_and_source(
: -type => 'tRNA',
: -source => 'TRNASCAN-SE'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -type => a sequence ontology term
: -source => a known source
Title : Count_having_qualifier
:
Function : returns a count of all features having a given qualifier
:
Usage : to a count features with a qualifier like 'Incomplete support'
; my $count = Modware::Search::Feature->Count_having_qualifier( 'Incomplete support' );
:
Returns : a number
Args : text string of a qualifier: i.e. 'Incomplete support', 'Pseudogene', "Partial, 5' missing", "Partial, 3' missing"
Title : Search_all_by_primary_id
:
Function : returns all features with a primary id mathing input pattern
:
Returns : Iterator or array of Modware::Features (depending on context)
Args : ID to search ( usually DDBXXXXXX )
Title : Search_by_external_id
:
Function : returns all features with a given external_id for a given source
:
Usage : to get all features with an accession no like 'ABC123'
; my @features = Modware::Search::Feature->Search_by_external_id(
: -id => 'ABC123%',
: -source => 'Accession Number'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -id => the id with possible wildcard being searched
: -source => the source of the id being searche
Title : Search_cds_features_by_chromosome
NOTE : **************** DEPRECATED ***************************************
: * replace with Search_mrna_features_by_reference_feature_name *
: *******************************************************************
Function : returns all CDS feautures on a chromosome
:
Usage : my @features = Modware::Search::Feature->Search_cds_features_by_chromosome(
: -chromosome_name => '1'
: );
Returns : array of features
Args : named: -chromosome_name => the chromosome to get the features for
Title : Search_contig_features_by_chromosome
NOTE : **************** DEPRECATED ***************************************
: * replace with Search_contig_features_by_reference_feature_name *
: *******************************************************************
Function : returns all contig feautures on a chromosome
:
Usage : my @contigs = Modware::Search::Feature->Search_contig_features_by_chromosome(
: -chromosome_name => '1'
: );
Returns : array of features
Args : named: -chromosome_name => the chromosome to get the contigs for
Title : Search_contig_features_by_reference_feature_name
:
Function : returns all contig feautures on a chromosome
:
Usage : # to get the contig features located on chromosome named chr1
: my @contigs = Modware::Search::Feature->Search_contig_features_by_reference_feature_name(
: -name => 'chr1'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -name => the name of the feature to get contigs for
Title : Search_feature_by_descendant_so_terms
:
Function : returns all features associated with a Sequence ontology term
: or any of its descendants
:
Usage : my @features = Modware::Search::Feature->Search_feature_by_descendant_so_terms(
: -term_name => 'transcript'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -term_name => a sequence ontology term
Title : Search_feature_by_type
:
Function : returns all features associated with a Sequence ontology term
:
Usage : my @features = Modware::Search::Feature->Search_feature_by_type(
: -term_name => 'tRNA'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -term_name => a sequence ontology term
Title : Search_feature_by_type_and_source
:
Function : returns all features associated with a Sequence ontology term
: AND source
:
Usage : my @features = Modware::Search::Feature->Search_feature_by_type_and_source(
: -type => 'tRNA',
: -source => 'TRNASCAN-SE'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -type => a sequence ontology term
: -source => a known source
Title : Search_gap_features_by_chromosome
NOTE : **************** DEPRECATED ***************************************
: * replace with Search_gap_features_by_reference_feature_name *
: *******************************************************************
Function : returns all gap feautures on a chromosome
:
Usage : my @features = Modware::Search::Feature->Search_gap_features_by_chromosome(
: -chromosome_name => '1'
: );
Returns : array of features
Args : named: -chromosome_name => the chromosome to get the features for
Title : Search_gap_features_by_reference_feature_name
:
Function : returns all gap feautures on a chromosome
:
Usage : # to get the gap features located on chromosome named chr1
: my @gaps = Modware::Search::Feature->Search_gap_features_by_reference_feature_name(
: -name => 'chr1'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -name => the name of the feature to get gaps for
Title : Search_having_qualifier
:
Function : returns all features which have a given qualifier
:
Usage : to get all features with a qualifier like
; my @features = Modware::Search::Feature->Search_having_qualifier( 'Incomplete support' );
:
Returns : Iterator or array of Modware::Features (depending on context)
Args : text string of a qualifier: i.e. 'Incomplete support', 'Pseudogene', "Partial, 5' missing", "Partial, 3' missing"
Title : Search_mrna_features_by_reference_feature_name
:
Function : returns all mrna feautures on a chromosome
:
Usage : # to get the mrna features located on chromosome named chr1
: my @mrnas = Modware::Search::Feature->Search_mrna_features_by_reference_feature_name(
: -name => 'chr1'
: );
Returns : Iterator or array of Modware::Features (depending on context)
Args : named: -name => the name of the feature to get mrnas for
Title : Search_overlapping_alignments_by_range
Usage : Modware::Search::Feature->Search_overlapping_alignments_by_range( $reference_feature_name, $range_start, $range_end,'mRNA' );
Function : returns all features which are aligned overlapping a given region
Returns : Iterator or array of Modware::Features (depending on context)
Args : reference_feature_name, rang start, range end
Title : Search_overlapping_feats_by_range
Usage : Modware::Search::Gene->Search_overlapping_feats_by_range( $reference_feature_name, $range_start, $range_end,'mRNA' );
Function : returns all genes that overlap a regioin on a chromosome
Returns : Iterator or array of Modware::Features (depending on context)
Args : reference_feature_name, rang start, range end, type
Title : sth_to_iterator
:
Function : Given a statement handle pointing to feature_ids,
: create an iterator of Modware::Features containing
: the features identified by the feature_ids
:
Returns : an iterator of Features
Args : an active statement handle pointing to feature_ids
Methods code
sub Count_by_external_id
{ my ($self, @args) = @_;
my ( $source, $id ) = Modware::Root->_rearrange([qw(SOURCE ID)], @args);
die "Searching Ids requires 2 named arguments:\n".
" -id ( the external id ) and -source\n" if ( !$source || !$id );
$id=~s/\*/%/g;
my $dbh = new Modware::DBH;
my $results;
my $sth = $dbh->prepare("
SELECT COUNT(F.FEATURE_ID)
FROM V_NOTDELETED_FEATURE F
INNER JOIN FEATURE_DBXREF FX
ON FX.FEATURE_ID = F.FEATURE_ID
INNER JOIN DBXREF X
ON X.DBXREF_ID = FX.DBXREF_ID
INNER JOIN DB
ON DB.DB_ID = X.DB_ID
WHERE DB.NAME = 'DB:' || ?
AND UPPER(X.ACCESSION) LIKE UPPER(?)
");
$sth->execute( $source, $id );
$results = $sth->fetchrow();
$sth->finish;
return $results;
}
sub Count_deleted_by_external_id
{ my ($self, @args) = @_;
my ( $source, $id ) = Modware::Root->_rearrange([qw(SOURCE ID)], @args);
die "Searching Ids requires 2 named arguments:\n".
" -id ( the external id ) and -source\n" if ( !$source || !$id );
my $dbh = new Modware::DBH;
my $results;
my $sth = $dbh->prepare("
SELECT COUNT(F.FEATURE_ID)
FROM V_DELETED_FEATURE F
INNER JOIN FEATURE_DBXREF FX
ON FX.FEATURE_ID = F.FEATURE_ID
INNER JOIN DBXREF X
ON X.DBXREF_ID = FX.DBXREF_ID
INNER JOIN DB
ON DB.DB_ID = X.DB_ID
WHERE DB.NAME = CONCAT( 'DB:', ? )
AND UPPER(X.ACCESSION) = UPPER(?)
");
$sth->execute( $id, $source );
$results = $sth->fetchrow();
$sth->finish;
return $results;
}
sub Count_feature_by_descendant_so_terms
{ my ($self, @args) = @_;
my ( $so_term_name ) = Modware::Root->_rearrange([qw(TERM_NAME)], @args);
die "Search_feature_by_descendant_so_terms requires named argument:\n".
" -term_name ( i.e. 'ncRNA' )\n" if ( !$so_term_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN (
SELECT CHILD_ID
FROM V_CVTERM_PARENT_CHILD
WHERE CV_NAME = 'sequence'
START WITH CHILD_NAME = ?
CONNECT BY PRIOR CHILD_ID = PARENT_ID
) V
ON V.CHILD_ID = F.TYPE_ID
");
$sth->execute( $so_term_name );
$results = $sth->fetchrow();
$sth->finish;
return $results;
}
sub Count_feature_by_type
{ my ($self, @args) = @_;
my ( $so_term_name ) = Modware::Root->_rearrange([qw(TERM_NAME)], @args);
die "Search_feature_by_type requires named argument:\n".
" -term_name ( i.e. 'tRNA' )\n" if ( !$so_term_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT COUNT(FEATURE_ID)
FROM V_NOTDELETED_FEATURE F
INNER JOIN CVTERM CT
ON F.TYPE_ID = CT.CVTERM_ID
INNER JOIN CV
ON CV.CV_ID = CT.CV_ID
AND CV.NAME = 'sequence'
WHERE CT.NAME =?
");
$sth->execute( $so_term_name );
$results = $sth->fetchrow();
$sth->finish;
return $results;
}
sub Count_feature_by_type_and_source
{ my ($self, @args) = @_;
my ( $type, $source ) = Modware::Root->_rearrange([qw(TYPE SOURCE)], @args);
die "Count_feature_by_type_and_source requires two named arguments:\n".
" -type and -source\n" if ( !$type );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN CVTERM CT
ON F.TYPE_ID = CT.CVTERM_ID
INNER JOIN CV
ON CV.CV_ID = CT.CV_ID
AND CV.NAME = 'sequence'
INNER JOIN FEATURE_DBXREF FD
ON FD.FEATURE_ID = F.FEATURE_ID
INNER JOIN DBXREF DBX
ON DBX.DBXREF_ID = FD.DBXREF_ID
INNER JOIN DB
ON DB.DB_ID = DBX.DB_ID
AND DB.NAME = 'GFF_source'
WHERE CT.NAME =?
AND DBX.ACCESSION = ?
");
$sth->execute( $type, $source );
$results = $sth->fetchrow();
$sth->finish;
return $results;
}
sub Count_having_qualifier
{ my ($self, @args) = @_;
my ( $value ) = @args;
die "need at least one argument to Search_having_qualifier" if !$value;
my $dbh = new Modware::DBH;
my $results;
my $sth = $dbh->prepare("
SELECT COUNT(F.FEATURE_ID)
FROM V_NOTDELETED_FEATURE F
INNER JOIN FEATUREPROP P
ON F.FEATURE_ID = P.FEATURE_ID
INNER JOIN CVTERM C
ON P.TYPE_ID = C.CVTERM_ID
WHERE C.NAME = 'qualifier'
AND P.VALUE LIKE (?)
");
$sth->execute( $value );
$results = $sth->fetchrow();
$sth->finish;
return $results;
}
sub Search_all_by_primary_id
{ my ($self, $id) = @_;
$id=~s/\*/%/g;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM FEATURE F
INNER JOIN DBXREF X
ON X.DBXREF_ID = F.DBXREF_ID
WHERE UPPER(X.ACCESSION) LIKE UPPER(?)
");
$sth->execute( $id );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_by_external_id
{ my ($self, @args) = @_;
my ( $source, $id ) = Modware::Root->_rearrange([qw(SOURCE ID)], @args);
die "Searching Ids requires 2 named arguments:\n".
" -id ( the external id ) and -source\n" if ( !$source || !$id );
$id=~s/\*/%/g;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN FEATURE_DBXREF FX
ON FX.FEATURE_ID = F.FEATURE_ID
INNER JOIN DBXREF X
ON X.DBXREF_ID = FX.DBXREF_ID
INNER JOIN DB
ON DB.DB_ID = X.DB_ID
WHERE DB.NAME = 'DB:' || ?
AND UPPER(X.ACCESSION) LIKE UPPER(?)
");
$sth->execute( $source, $id );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_cds_features_by_chromosome
{ my ($self, @args) = @_;
warn "**** Using deprecated method : Modware::Search::Feature->Search_cds_features_by_chromosome(...);\n";
warn " replace with Search_mrna_features_by_reference_feature_name\n ";
my ( $chromosome_name ) = Modware::Root->_rearrange([qw(CHROMOSOME_NAME)], @args);
die "Searching Ids requires named argument:\n".
" -chromosome_name ( the name of the chromosome ( 1,2,M,BF, etc. )\n" if ( !$chromosome_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_MRNA_FEATURES F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
WHERE SRCFEATURE_ID = ( SELECT FEATURE_ID FROM V_CHROMOSOME_FEATURES C WHERE C.NAME = ?)
ORDER BY FL.FMIN
");
$sth->execute( $chromosome_name );
while ( my $feature_id = $sth->fetchrow() ) {
my $feat = new Modware::Feature( -feature_id => $feature_id );
push @results, $feat;
}
$sth->finish;
return @results;
}
sub Search_contig_features_by_chromosome
{ my ($self, @args) = @_;
warn "**** Using deprecated method : Modware::Search::Feature->Search_contig_features_by_chromosome(...);\n";
warn " replace with Search_contig_features_by_reference_feature_name\n ";
my ( $chromosome_name ) = Modware::Root->_rearrange([qw(CHROMOSOME_NAME)], @args);
die "Searching Ids requires named argument:\n".
" -chromosome_name ( the name of the chromosome ( 1,2,M,BF, etc. )\n" if ( !$chromosome_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_CONTIG_FEATURES F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
WHERE SRCFEATURE_ID = ( SELECT FEATURE_ID FROM V_CHROMOSOME_FEATURES C WHERE C.NAME = ?)
ORDER BY FL.FMIN
");
$sth->execute( $chromosome_name );
while ( my $feature_id = $sth->fetchrow() ) {
my $feat = new Modware::Feature( -feature_id => $feature_id );
push @results, $feat;
}
$sth->finish;
return @results;
}
sub Search_contig_features_by_reference_feature_name
{ my ($self, @args) = @_;
my ( $name ) = @args;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_CONTIG_FEATURES F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
WHERE SRCFEATURE_ID = ( SELECT FEATURE_ID FROM FEATURE F WHERE F.NAME = ?)
ORDER BY FL.FMIN
");
$sth->execute( $name );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_feature_by_descendant_so_terms
{ my ($self, @args) = @_;
my ( $so_term_name ) = Modware::Root->_rearrange([qw(TERM_NAME)], @args);
die "Search_feature_by_descendant_so_terms requires named argument:\n".
" -term_name ( i.e. 'ncRNA' )\n" if ( !$so_term_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN (
SELECT CHILD_ID
FROM V_CVTERM_PARENT_CHILD
WHERE CV_NAME = 'sequence'
START WITH CHILD_NAME = ?
CONNECT BY PRIOR CHILD_ID = PARENT_ID
) V
ON V.CHILD_ID = F.TYPE_ID
");
$sth->execute( $so_term_name );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_feature_by_type
{ my ($self, @args) = @_;
my ( $so_term_name ) = Modware::Root->_rearrange([qw(TERM_NAME)], @args);
die "Search_feature_by_type requires named argument:\n".
" -term_name ( i.e. 'tRNA' )\n" if ( !$so_term_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN CVTERM CT
ON F.TYPE_ID = CT.CVTERM_ID
INNER JOIN CV
ON CV.CV_ID = CT.CV_ID
AND CV.NAME = 'sequence'
WHERE CT.NAME =?
");
$sth->execute( $so_term_name );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_feature_by_type_and_source
{ my ($self, @args) = @_;
my ( $type, $source ) = Modware::Root->_rearrange([qw(TYPE SOURCE)], @args);
die "Search_feature_by_type_and_source requires two named arguments:\n".
" -type and -source\n" if ( !$type );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN CVTERM CT
ON F.TYPE_ID = CT.CVTERM_ID
INNER JOIN CV
ON CV.CV_ID = CT.CV_ID
AND CV.NAME = 'sequence'
INNER JOIN FEATURE_DBXREF FD
ON FD.FEATURE_ID = F.FEATURE_ID
INNER JOIN DBXREF DBX
ON DBX.DBXREF_ID = FD.DBXREF_ID
INNER JOIN DB
ON DB.DB_ID = DBX.DB_ID
AND DB.NAME = 'GFF_source'
WHERE CT.NAME =?
AND DBX.ACCESSION = ?
");
$sth->execute( $type, $source );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_gap_features_by_chromosome
{ my ($self, @args) = @_;
warn "**** Using deprecated method : Modware::Search::Feature->Search_gap_features_by_chromosome(...);\n";
warn " replace with Search_gap_features_by_reference_feature_name\n ";
my ( $chromosome_name ) = Modware::Root->_rearrange([qw(CHROMOSOME_NAME)], @args);
die "Searching Ids requires named argument:\n".
" -chromosome_name ( the name of the chromosome ( 1,2,M,BF, etc. )\n" if ( !$chromosome_name );
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_GAP_FEATURES F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
WHERE SRCFEATURE_ID = ( SELECT FEATURE_ID FROM V_CHROMOSOME_FEATURES C WHERE C.NAME = ?)
ORDER BY FL.FMIN
");
$sth->execute( $chromosome_name );
while ( my $feature_id = $sth->fetchrow() ) {
my $feat = new Modware::Feature( -feature_id => $feature_id );
push @results, $feat;
}
$sth->finish;
return @results;
}
sub Search_gap_features_by_reference_feature_name
{ my ($self, @args) = @_;
my ( $name ) = @args;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_GAP_FEATURES F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
WHERE SRCFEATURE_ID = ( SELECT FEATURE_ID FROM FEATURE F WHERE F.NAME = ?)
ORDER BY FL.FMIN
");
$sth->execute( $name );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_having_qualifier
{ my ($self, @args) = @_;
my ( $value ) = @args;
die "need at least one argument to Search_having_qualifier" if !$value;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT /*+ INDEX(P FEATUREPROP_IDX2 ) */ F.FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN FEATUREPROP P
ON F.FEATURE_ID = P.FEATURE_ID
INNER JOIN CVTERM C
ON P.TYPE_ID = C.CVTERM_ID
WHERE C.NAME = 'qualifier'
AND P.VALUE LIKE (?)
");
$sth->execute( $value );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_mrna_features_by_reference_feature_name
{ my ($self, @args) = @_;
my ( $name ) = @args;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT F.FEATURE_ID
FROM V_MRNA_FEATURES F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
WHERE SRCFEATURE_ID = ( SELECT FEATURE_ID FROM FEATURE F WHERE F.NAME = ?)
ORDER BY FL.FMIN
");
$sth->execute( $name );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_overlapping_alignments_by_range
{ my ($self, $reference_feature_name, $range_start, $range_end) = @_;
$range_start -= 1;
my $dbh = new Modware::DBH;
my @results;
my $sth = $dbh->prepare("
SELECT /*+ INDEX(FL FEATURELOC_IDX3 ) */ FR.OBJECT_ID
FROM FEATURE_RELATIONSHIP FR
INNER JOIN FEATURE HIT
ON HIT.FEATURE_ID = FR.SUBJECT_ID
INNER JOIN CVTERM T
ON T.CVTERM_ID = FR.TYPE_ID
INNER JOIN CVTERM HIT_TYPE
ON HIT_TYPE.CVTERM_ID = HIT.TYPE_ID
INNER JOIN FEATURELOC FL
ON HIT.FEATURE_ID = FL.FEATURE_ID
INNER JOIN FEATURE REFFEAT
ON REFFEAT.FEATURE_ID = FL.SRCFEATURE_ID
WHERE T.NAME = 'part_of'
AND HIT_TYPE.NAME = 'EST_match'
AND FL.FMIN <= ?
AND FL.FMAX >= ?- 1
AND REFFEAT.NAME = ?
GROUP BY FR.OBJECT_ID
");
$sth->execute( $range_end, $range_start, $reference_feature_name );
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub Search_overlapping_feats_by_range
{ my ($self, $reference_feature_name, $range_start, $range_end, $type) = @_;
my $dbh = new Modware::DBH;
my @results;
$range_start -= 1;
my $sth = $dbh->prepare("
SELECT /*+ INDEX(FL FEATURELOC_IDX3 ) */ F.FEATURE_ID
FROM V_NOTDELETED_FEATURE F
INNER JOIN FEATURELOC FL
ON FL.FEATURE_ID = F.FEATURE_ID
INNER JOIN FEATURE C
ON C.FEATURE_ID = FL.SRCFEATURE_ID
INNER JOIN CVTERM CV
ON F.TYPE_ID = CV.CVTERM_ID
WHERE C.NAME LIKE ?
AND FL.FMIN <= ? - 1
AND FL.FMAX >= ?
AND CV.NAME LIKE ?
ORDER BY FL.FMIN
");
$sth->execute( $reference_feature_name, $range_end, $range_start, $type);
# Create iterator object from results
my $itr = $self->sth_to_iterator($sth);
$sth->finish();
return wantarray ? $itr->to_array() : $itr;
}
sub sth_to_iterator
{ my ( $self, $sth ) = @_;
my @data;
while ( my $row = $sth->fetchrow() ) {
my $args = { -feature_id => $row };
push( @data, $args );
}
my $itr = new Modware::Iterator(
-CLASS => "Modware::Feature",
-DATA =>\@ data
);
return $itr;
}
General documentation
Copyright © 2006, Northwestern University
All rights reserved.
|
|