|
@@ -182,7 +182,7 @@ function tripal_feature_menu() {
|
|
|
|
|
|
|
|
|
|
|
|
- // Adding Secondary Properties-----------------
|
|
|
+ // Adding Secondary Properties
|
|
|
$items['node/%tripal_feature_node/properties'] = array(
|
|
|
'title' => t('Add Properties & Synonyms'),
|
|
|
'description' => t('Settings for Features'),
|
|
@@ -242,9 +242,10 @@ function tripal_feature_menu() {
|
|
|
|
|
|
return $items;
|
|
|
}
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
* Implements Menu wildcard_load hook
|
|
|
- * Purpose: Allows the node ID of a chado stock to be dynamically
|
|
|
+ * Purpose: Allows the node ID of a chado feature to be dynamically
|
|
|
* pulled from the path. The node is loaded from this node ID
|
|
|
* and supplied to the page as an arguement
|
|
|
*/
|
|
@@ -255,9 +256,87 @@ function tripal_feature_node_load($nid) {
|
|
|
return $node;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return FALSE;
|
|
|
}
|
|
|
+/*************************************************************************
|
|
|
+*
|
|
|
+*/
|
|
|
+function tripal_feature_block($op = 'list', $delta = 0, $edit=array()){
|
|
|
+ switch($op) {
|
|
|
+ case 'list':
|
|
|
+ $blocks['references']['info'] = t('Tripal Feature References');
|
|
|
+ $blocks['references']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['base']['info'] = t('Tripal Feature Details');
|
|
|
+ $blocks['base']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['sequence']['info'] = t('Tripal Feature Sequence');
|
|
|
+ $blocks['sequence']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['featureloc_sequences']['info'] = t('Tripal Formatted Location Sequence');
|
|
|
+ $blocks['featureloc_sequences']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['featurelocs_as_parent']['info'] = t('Tripal Feature Locations as Parent');
|
|
|
+ $blocks['featurelocs_as_parent']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['featurelocs_as_child']['info'] = t('Tripal Feature Locations as Child');
|
|
|
+ $blocks['featurelocs_as_child']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['relationships_as_object']['info'] = t('Tripal Feature Relationships as Object');
|
|
|
+ $blocks['relationships_as_object']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ $blocks['relationships_as_subject']['info'] = t('Tripal Feature Relationships as Subject');
|
|
|
+ $blocks['relationships_as_subject']['cache'] = BLOCK_NO_CACHE;
|
|
|
+
|
|
|
+ return $blocks;
|
|
|
+
|
|
|
+
|
|
|
+ case 'view':
|
|
|
+ if(user_access('access chado_feature content') and arg(0) == 'node' and is_numeric(arg(1))) {
|
|
|
+ $nid = arg(1);
|
|
|
+ $node = node_load($nid);
|
|
|
+
|
|
|
+ $block = array();
|
|
|
+ switch($delta){
|
|
|
+ case 'references':
|
|
|
+ $block['subject'] = t('References');
|
|
|
+ $block['content'] = theme('tripal_feature_references',$node);
|
|
|
+ break;
|
|
|
+ case 'base':
|
|
|
+ $block['subject'] = t('Feature Details');
|
|
|
+ $block['content'] = theme('tripal_feature_base',$node);
|
|
|
+ break;
|
|
|
+ case 'sequence':
|
|
|
+ $block['subject'] = t('Sequence');
|
|
|
+ $block['content'] = theme('tripal_feature_sequence',$node);
|
|
|
+ break;
|
|
|
+ case 'featureloc_sequences':
|
|
|
+ $block['subject'] = t('Formatted Sequences');
|
|
|
+ $block['content'] = theme('tripal_feature_featureloc_sequences',$node);
|
|
|
+ break;
|
|
|
+ case 'featurelocs_as_parent':
|
|
|
+ $block['subject'] = t('Parent Features');
|
|
|
+ $block['content'] = theme('tripal_feature_featurelocs_as_parent',$node);
|
|
|
+ break;
|
|
|
+ case 'featurelocs_as_child':
|
|
|
+ $block['subject'] = t('Child Features');
|
|
|
+ $block['content'] = theme('tripal_feature_featurelocs_as_child',$node);
|
|
|
+ break;
|
|
|
+ case 'relationships_as_object':
|
|
|
+ $block['subject'] = t('Object Relationships');
|
|
|
+ $block['content'] = theme('tripal_feature_relationships_as_object',$node);
|
|
|
+ break;
|
|
|
+ case 'relationships_as_subject':
|
|
|
+ $block['subject'] = t('Subject Relationships');
|
|
|
+ $block['content'] = theme('tripal_feature_relationships_as_child',$node);
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+ }
|
|
|
+ return $block;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
/************************************************************************
|
|
|
* When a new chado_feature node is created we also need to add information
|
|
|
* to our chado_feature table. This function is called on insert of a new node
|
|
@@ -731,8 +810,8 @@ function chado_feature_validate($node){
|
|
|
*/
|
|
|
function chado_feature_load($node){
|
|
|
// add the feature_id for this node:
|
|
|
- $sql = 'SELECT feature_id FROM {chado_feature} WHERE vid = %d';
|
|
|
- $feature = db_fetch_object(db_query($sql, $node->vid));
|
|
|
+ $sql = 'SELECT feature_id FROM {chado_feature} WHERE nid = %d';
|
|
|
+ $feature = db_fetch_object(db_query($sql, $node->nid));
|
|
|
$feature_id = $feature->feature_id;
|
|
|
|
|
|
// get information about this feature and add it to the items in this node
|
|
@@ -755,25 +834,11 @@ function chado_feature_load($node){
|
|
|
$org_nid = db_result(db_query($sql, $additions->feature->organism_id));
|
|
|
$additions->org_nid = $org_nid;
|
|
|
$additions->accession = variable_get('chado_feature_accession_prefix','ID') . $feature->feature_id;
|
|
|
-
|
|
|
- // add the relationships for which this feature is the subject
|
|
|
- $additions->subject_relationships = tripal_feature_load_relationships($feature_id,'as_subject');
|
|
|
- // add the relationships for which this feature is the object
|
|
|
- $additions->object_relationships = tripal_feature_get_aggregate_relationships($feature_id,0);
|
|
|
-
|
|
|
|
|
|
// add details about the organism
|
|
|
$additions->organism = tripal_feature_load_organism($organism_id);
|
|
|
// add the list of synomyms
|
|
|
- $additions->synonyms = tripal_feature_load_synonyms($feature_id);
|
|
|
- // add the list of refernces
|
|
|
- $additions->references = tripal_feature_load_references($feature_id);
|
|
|
- // add the list of children located on this feature
|
|
|
- $additions->myfeaturelocs = tripal_feature_load_featurelocs($feature_id,'as_parent');
|
|
|
- // add the list of features on which this feature is located
|
|
|
- $additions->featurelocs = tripal_feature_load_featurelocs($feature_id,'as_child',0);
|
|
|
- // add the formatted featureloc sequence with highlighting from relationship sequences
|
|
|
- $additions->floc_sequences = tripal_feature_load_featureloc_sequence ($feature_id,$additions->featurelocs);
|
|
|
+// $additions->synonyms = tripal_feature_load_synonyms($feature_id);
|
|
|
|
|
|
return $additions;
|
|
|
}
|
|
@@ -816,9 +881,9 @@ function tripal_feature_load_references ($feature_id){
|
|
|
$sql = "SELECT F.uniquename,F.Feature_id,DBX.accession,DB.description as dbdesc, ".
|
|
|
" DB.db_id, DB.name as db_name, DB.urlprefix,DBX.dbxref_id ".
|
|
|
"FROM {feature} F ".
|
|
|
- " INNER JOIN Feature_dbxref FDBX on F.feature_id = FDBX.feature_id ".
|
|
|
- " INNER JOIN Dbxref DBX on DBX.dbxref_id = FDBX.dbxref_id ".
|
|
|
- " INNER JOIN DB on DB.db_id = DBX.db_id ".
|
|
|
+ " INNER JOIN {feature_dbxref} FDBX on F.feature_id = FDBX.feature_id ".
|
|
|
+ " INNER JOIN {dbxref} DBX on DBX.dbxref_id = FDBX.dbxref_id ".
|
|
|
+ " INNER JOIN {db} on DB.db_id = DBX.db_id ".
|
|
|
"WHERE F.feature_id = %d";
|
|
|
$previous_db = tripal_db_set_active('chado'); // use chado database
|
|
|
$results = db_query($sql,$feature_id);
|
|
@@ -1040,7 +1105,7 @@ function tripal_feature_get_aggregate_relationships($feature_id, $substitute=1,
|
|
|
/************************************************************************
|
|
|
*
|
|
|
*/
|
|
|
-function tripal_feature_load_featureloc_sequence($feature_id,$featurelocs){
|
|
|
+function tripal_feature_load_featureloc_sequences($feature_id,$featurelocs){
|
|
|
|
|
|
$floc_sequences = array();
|
|
|
|
|
@@ -1133,22 +1198,22 @@ function tripal_feature_color_sequence ($sequence,$parts){
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $newseq .= "<div id=\"tripal_feature-sequence-legend\">Legend: ";
|
|
|
+ $newseq .= "<div id=\"tripal_feature-featureloc_sequence-legend\">Legend: ";
|
|
|
foreach($types as $type){
|
|
|
- $newseq .= "<span class=\"tripal_feature-sequence-$type\">$type</span>";
|
|
|
+ $newseq .= "<span class=\"tripal_feature-featureloc_sequence-$type\">$type</span>";
|
|
|
}
|
|
|
$newseq .= "</div>";
|
|
|
|
|
|
|
|
|
// set the background color of the rows based on the type
|
|
|
$pos = 0;
|
|
|
- $newseq .= "<pre id=\"tripal_feature-sequence\">";
|
|
|
+ $newseq .= "<pre id=\"tripal_feature-featureloc_sequence\">";
|
|
|
foreach ($parts as $index => $child){
|
|
|
$type = $child['type'];
|
|
|
$start = $child['start'];
|
|
|
$end = $child['end'];
|
|
|
|
|
|
- $class = "class=\"tripal_feature-sequence-$type\"";
|
|
|
+ $class = "class=\"tripal_feature-featureloc_sequence-$type\"";
|
|
|
|
|
|
// iterate through the sequence up to the end of the child
|
|
|
for ($i = $pos; $i < $end; $i++){
|
|
@@ -1162,7 +1227,7 @@ function tripal_feature_color_sequence ($sequence,$parts){
|
|
|
$newseq .= $sequence{$pos};
|
|
|
$seqcount++;
|
|
|
|
|
|
- if($seqcount % 100 == 0){
|
|
|
+ if($seqcount % 60 == 0){
|
|
|
$newseq .= "\n";
|
|
|
}
|
|
|
$pos++;
|
|
@@ -1223,6 +1288,47 @@ function tripal_feature_nodeapi(&$node, $op, $teaser, $page) {
|
|
|
// Set the node types for showing feature information
|
|
|
$types_to_show = array('chado_organism', 'chado_library');
|
|
|
|
|
|
+
|
|
|
+ // if this is a feature node then add the boxes of content for the
|
|
|
+ // ancillary data
|
|
|
+ switch($node->type){
|
|
|
+ case 'chado_feature':
|
|
|
+ $node->content['tripal_feature_base'] = array(
|
|
|
+ '#value' => theme('tripal_feature_base', $node),
|
|
|
+ '#weight' => 0
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_sequence'] = array(
|
|
|
+ '#value' => theme('tripal_feature_sequence', $node),
|
|
|
+ '#weight' => 2
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_references'] = array(
|
|
|
+ '#value' => theme('tripal_feature_references', $node),
|
|
|
+ '#weight' => 4
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_featurelocs_as_parent'] = array(
|
|
|
+ '#value' => theme('tripal_feature_featurelocs_as_parent', $node),
|
|
|
+ '#weight' => 6
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_featurelocs_as_child'] = array(
|
|
|
+ '#value' => theme('tripal_feature_featurelocs_as_child', $node),
|
|
|
+ '#weight' => 8
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_featureloc_sequences'] = array(
|
|
|
+ '#value' => theme('tripal_feature_featureloc_sequences', $node),
|
|
|
+ '#weight' => 3
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_relationships_as_object'] = array(
|
|
|
+ '#value' => theme('tripal_feature_relationships_as_object', $node),
|
|
|
+ '#weight' => 9
|
|
|
+ );
|
|
|
+ $node->content['tripal_feature_relationships_as_subject'] = array(
|
|
|
+ '#value' => theme('tripal_feature_relationships_as_subject', $node),
|
|
|
+ '#weight' => 10
|
|
|
+ );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// Abort if this node is not one of the types we should show.
|
|
|
if (!in_array($node->type, $types_to_show, TRUE)) {
|
|
|
break;
|
|
@@ -1261,11 +1367,86 @@ function tripal_feature_theme () {
|
|
|
),
|
|
|
'tripal_feature_counts' => array (
|
|
|
'arguments' => array('node'),
|
|
|
- )
|
|
|
+ ),
|
|
|
+ 'tripal_feature_base' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_base',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_sequence' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_sequence',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_featureloc_sequences' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_featureloc_sequences',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_references' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_references',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_featurelocs_as_parent' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_featurelocs_as_parent',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_featurelocs_as_child' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_featurelocs_as_child',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_relationships_as_object' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_relationships_as_object',
|
|
|
+ ),
|
|
|
+ 'tripal_feature_relationships_as_subject' => array (
|
|
|
+ 'arguments' => array('node'=> null),
|
|
|
+ 'template' => 'tripal_feature_relationships_as_subject',
|
|
|
+ ),
|
|
|
);
|
|
|
}
|
|
|
/*******************************************************************************
|
|
|
- * create a list of features for the organism and pie chart
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_feature_preprocess_tripal_feature_relationships_as_object(&$variables){
|
|
|
+ $feature = $variables['node']->feature;
|
|
|
+ $variables['object_relationships'] = tripal_feature_get_aggregate_relationships($feature->feature_id,0);
|
|
|
+}
|
|
|
+/*******************************************************************************
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_feature_preprocess_tripal_feature_relationships_as_subject(&$variables){
|
|
|
+ $feature = $variables['node']->feature;
|
|
|
+ $variables['subject_relationships'] = tripal_feature_load_relationships($feature->feature_id,'as_subject');
|
|
|
+}
|
|
|
+/*******************************************************************************
|
|
|
+*
|
|
|
+*/
|
|
|
+function tripal_feature_preprocess_tripal_feature_featurelocs_as_child(&$variables){
|
|
|
+ $feature = $variables['node']->feature;
|
|
|
+ $variables['featurelocs_as_child'] = tripal_feature_load_featurelocs($feature->feature_id,'as_child',0);
|
|
|
+}
|
|
|
+/*******************************************************************************
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_feature_preprocess_tripal_feature_featurelocs_as_parent(&$variables){
|
|
|
+ $feature = $variables['node']->feature;
|
|
|
+ $variables['featurelocs_as_parent'] = tripal_feature_load_featurelocs($feature->feature_id,'as_parent');
|
|
|
+}
|
|
|
+/*******************************************************************************
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_feature_preprocess_tripal_feature_references(&$variables){
|
|
|
+ $feature = $variables['node']->feature;
|
|
|
+ $variables['tripal_feature']['references'] = tripal_feature_load_references($feature->feature_id);
|
|
|
+}
|
|
|
+/*******************************************************************************
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_feature_preprocess_tripal_feature_featureloc_sequences(&$variables){
|
|
|
+ $feature = $variables['node']->feature;
|
|
|
+ $featurelocs = tripal_feature_load_featurelocs($feature->feature_id,'as_child',0);
|
|
|
+ $variables['featureloc_sequences'] = tripal_feature_load_featureloc_sequences ($feature->feature_id,$featurelocs);
|
|
|
+}
|
|
|
+/*******************************************************************************
|
|
|
+ *
|
|
|
*/
|
|
|
function theme_tripal_feature_counts($node){
|
|
|
|