function tripal_feature_get_matched_alignments
2.x tripal_feature.theme.inc | tripal_feature_get_matched_alignments($feature) |
3.x tripal_feature.theme.inc | tripal_feature_get_matched_alignments($feature) |
1.x tripal_feature.module | tripal_feature_get_matched_alignments($feature) |
Related topics
1 call to tripal_feature_get_matched_alignments()
- tripal_feature_preprocess_tripal_feature_alignments in tripal_feature/
tripal_feature.module
File
- tripal_feature/
tripal_feature.module, line 1350 - @todo Add file header description
Code
function tripal_feature_get_matched_alignments($feature) {
// This function is for features that align through an intermediate such
// as 'EST_match' or 'match'. This occurs in the case where two sequences
// align but where one does not align perfectly. Some ESTs may be in a contig
// but not all of the EST. Portions may overhang and not be included in the
// consensus if quality is bad.
// For example:
//
// Feature 1: Contig --------------------
// Feature 2: EST_match -------
// Feature 3: EST ---------
//
// The feature provided to the function will always be the feature 1. The
// featureloc columns prefixed with 'right' (e.g. right_fmin) belong to the
// alignment of feature 3 with feature 2
//
// Features may align to more than one feature and are not matches. We do
// not want to include these, so we have to filter on the SO terms:
// match, or %_match
//
$sql = "SELECT " .
" FL1.featureloc_id as left_featureloc_id, " .
" FL1.srcfeature_id as left_srcfeature_id, " .
" FL1.feature_id as left_feature_id, " .
" FL1.fmin as left_fmin, " .
" FL1.is_fmin_partial as left_is_fmin_partial, " .
" FL1.fmax as left_fmax, " .
" FL1.is_fmax_partial as left_is_fmax_partial, " .
" FL1.strand as left_strand, " .
" FL1.phase as left_phase, " .
" FL1.locgroup as left_locgroup, " .
" FL1.rank as left_rank, " .
" FL2.featureloc_id as right_featureloc_id, " .
" FL2.srcfeature_id as right_srcfeature_id, " .
" FL2.feature_id as right_feature_id, " .
" FL2.fmin as right_fmin, " .
" FL2.is_fmin_partial as right_is_fmin_partial, " .
" FL2.fmax as right_fmax, " .
" FL2.is_fmax_partial as right_is_fmax_partial, " .
" FL2.strand as right_strand, " .
" FL2.phase as right_phase, " .
" FL2.locgroup as right_locgroup, " .
" FL2.rank as right_rank " .
"FROM {feature} F1 " .
" INNER JOIN {featureloc} FL1 on FL1.srcfeature_id = F1.feature_id " .
" INNER JOIN {feature} F2 on FL1.feature_id = F2.feature_id " .
" INNER JOIN {featureloc} FL2 on FL2.feature_id = F2.feature_id " .
" INNER JOIN {cvterm} CVT2 on F2.type_id = CVT2.cvterm_id " .
"WHERE F1.feature_id = %d " .
" AND (CVT2.name = 'match' or CVT2.name like '%_match') " .
"ORDER BY FL1.fmin";
$results = chado_query($sql, $feature->feature_id);
// iterate through the results and add them to our featurelocs array
$featurelocs = array();
while ($fl = db_fetch_object($results)) {
// ignore featurelocs where the left and right srcfeature is the same
if (strcmp($fl->left_srcfeature_id, $fl->right_srcfeature_id) == 0) {
continue;
}
$featurelocs[] = $fl;
}
return $featurelocs;
}