|
@@ -23,8 +23,8 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
// parent sequence.
|
|
|
$psql ='PREPARE sequence_by_parent (int, int, int) AS
|
|
|
SELECT
|
|
|
- OF.name srcname, FL.srcfeature_id, FL.strand,
|
|
|
-
|
|
|
+ OF.name srcname, FL.srcfeature_id, FL.strand, OCVT.name as srctypename, SCVT.name as typename,
|
|
|
+ FL.fmin, FL.fmax,
|
|
|
CASE
|
|
|
WHEN FL.strand >= 0 THEN
|
|
|
CASE
|
|
@@ -33,8 +33,8 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
END
|
|
|
WHEN FL.strand < 0 THEN
|
|
|
CASE
|
|
|
- WHEN FL.fmin - $1 <= 0 THEN 0
|
|
|
- ELSE FL.fmin - $1
|
|
|
+ WHEN FL.fmin - $2 <= 0 THEN 0
|
|
|
+ ELSE FL.fmin - $2
|
|
|
END
|
|
|
END as adjfmin,
|
|
|
|
|
@@ -46,8 +46,8 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
END
|
|
|
WHEN FL.strand < 0 THEN
|
|
|
CASE
|
|
|
- WHEN FL.fmax + $2 > OF.seqlen THEN OF.seqlen
|
|
|
- ELSE FL.fmax + $2
|
|
|
+ WHEN FL.fmax + $1 > OF.seqlen THEN OF.seqlen
|
|
|
+ ELSE FL.fmax + $1
|
|
|
END
|
|
|
END as adjfmax,
|
|
|
|
|
@@ -91,7 +91,9 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
END as residues
|
|
|
FROM featureloc FL
|
|
|
INNER JOIN feature SF on FL.feature_id = SF.feature_id
|
|
|
+ INNER JOIN cvterm SCVT on SF.type_id = SCVT.cvterm_id
|
|
|
INNER JOIN feature OF on FL.srcfeature_id = OF.feature_id
|
|
|
+ INNER JOIN cvterm OCVT on OF.type_id = OCVT.cvterm_id
|
|
|
WHERE SF.feature_id = $3';
|
|
|
|
|
|
$status = chado_query($psql);
|
|
@@ -242,7 +244,7 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
|
|
|
// iterate through the sub features and concat their sequences. They
|
|
|
// should already be in order.
|
|
|
- $types = array();
|
|
|
+ $types = '';
|
|
|
$i = 0;
|
|
|
while($child = db_fetch_object($children)) {
|
|
|
// keep up with the types
|
|
@@ -285,17 +287,11 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
$q = chado_query($sql, 0, 0, $child->feature_id);
|
|
|
}
|
|
|
|
|
|
- $j = 0;
|
|
|
while($subseq = db_fetch_object($q)){
|
|
|
- // there should only be one mapping for each sub feature to the
|
|
|
- // same parent. If there are more then we can't resolve it so
|
|
|
- // return a message
|
|
|
- if($j > 0 ){
|
|
|
- return 'Cannot determine sequence. Sub features map to multiple locations';
|
|
|
- }
|
|
|
// concatenate the sequences of all the sub features
|
|
|
- $seq .= $subseq->residues;
|
|
|
- $j++;
|
|
|
+ if($subseq->srcfeature_id == $parent->srcfeature_id){
|
|
|
+ $seq .= $subseq->residues;
|
|
|
+ }
|
|
|
}
|
|
|
$i++;
|
|
|
}
|
|
@@ -314,7 +310,7 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
|
|
|
// now format for display
|
|
|
$seq = wordwrap($seq, $num_bases_per_line, "<br>", TRUE);
|
|
|
- $residues .= ">" . $feature_name . " " . $parent->srcname . ":" . ($parent->adjfmin + 1) . ".." . $parent->adjfmax ." ($dir). ";
|
|
|
+ $residues .= ">$feature_name ($parent->typename) $parent->srcname:" . ($parent->adjfmin + 1) . ".." . $parent->adjfmax ." ($dir). ";
|
|
|
if (count($types) > 0) {
|
|
|
$residues .= "Excludes all bases but those of type(s): " . implode(', ',$types) . ". " ;
|
|
|
}
|
|
@@ -328,7 +324,7 @@ class tripal_views_handler_field_sequence extends chado_views_handler_field {
|
|
|
$residues .= "<br>\nNo sequence available\n<br>";
|
|
|
}
|
|
|
else {
|
|
|
- $residues .= "<br>\n$seq\n<br>";
|
|
|
+ $residues .= "<br>\n" . $seq . "\n<br>";
|
|
|
}
|
|
|
}
|
|
|
}
|