ccheng 13 жил өмнө
parent
commit
4642ed460b

+ 75 - 47
tripal_analysis_interpro/tripal_analysis_interpro.module

@@ -9,7 +9,7 @@ require_once "parseInterpro.inc";
 function tripal_analysis_interpro_init(){
 
 	// Add javascript and style sheet
-	drupal_add_css(drupal_get_path('theme', 'tripal').'/css/tripal_analysis_interpro.css');
+   drupal_add_css(drupal_get_path('theme', 'tripal').'/css/tripal_analysis_interpro.css');
    drupal_add_js( drupal_get_path('theme', 'tripal').'/js/tripal_analysis_interpro.js');
 }
 /*******************************************************************************
@@ -88,11 +88,11 @@ function chado_analysis_interpro_form ($node){
       '#description' => t('Check the box to load GO terms to chado database'),
       '#default_value' => $parsego
    );
-//   $form['interpro']['interprokeywordjob'] = array(
-//      '#type' => 'checkbox',
-//      '#title' => t('Submit a job to extract keywords from the Interpro html output'),
-//      '#description' => t('Note: Interpro results are only searchable after keywords are extracted. Do not run this twice if you have already done so.'),
-//	);
+   $form['interpro']['interprokeywordjob'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Submit a job to extract keywords from the Interpro html output'),
+      '#description' => t('Note: Interpro results are only searchable after keywords are extracted.'),
+	);
 	$form['interpro']['interproparameters'] = array(
       '#title' => t('Parameters'),
       '#type' => 'textfield',
@@ -505,6 +505,9 @@ function tripal_get_interpro_HTML_results($feature_id){
 	        INNER JOIN analysisfeatureprop AFP ON AF.analysisfeature_id = AFP.analysisfeature_id
 	        WHERE feature_id = %d
 	        AND AFP.type_id = %d
+	        AND AFP.value NOT like '%No hits reported.%' 
+           AND AFP.value NOT like '%parent%' 
+           AND AFP.value NOT like '%children%' 
 	        GROUP BY A.analysis_id
 	       ";
    $hasResult = db_result(db_query($sql, $feature_id, $type_id));
@@ -537,8 +540,12 @@ function tripal_get_interpro_HTML_results($feature_id){
                  INNER JOIN analysisfeature AF on AF.analysisfeature_id = AFP.analysisfeature_id
                  WHERE AF.analysis_id = %d
                  AND AF.feature_id = %d
+                 AND AFP.type_id = %d
+                 AND AFP.value NOT like '%No hits reported.%' 
+                 AND AFP.value NOT like '%parent%' 
+                 AND AFP.value NOT like '%children%' 
                 ";
-         $interpro_results = db_query($sql, $ana->aid, $feature_id);
+         $interpro_results = db_query($sql, $ana->aid, $feature_id, $type_id);
       	 while ($afp = db_fetch_object($interpro_results)) {
       	 	$content .= $afp->afpvalue;
       	 }
@@ -643,22 +650,73 @@ function chado_analysis_interpro_access($op, $node, $account){
       }
    }
    if ($op == 'view') {
-      if (user_access('access chado_analysis_interpro content', $account)) {
+      if (user_access('access chado_analysis_interpro content', $account) && tripal_check_permission_by_node_id($node->nid)) {
          return TRUE;
       }
    }
    return FALSE;
 }
 
+/**
+ *
+ *
+ * @ingroup tripal_analysis_interpro
+ */
+function tripal_analysis_interpro_job_describe_args($callback,$args){
+
+
+   $new_args = array();
+   if($callback == 'tripal_analysis_interpro_parseXMLFile'){
+
+      // add in the analysis 
+      if($args[0]){
+         $analysis = tripal_core_chado_select('analysis',array('name'),array('analysis_id' => $args[0]));
+      }
+      $new_args['Analysis'] = $analysis[0]->name;
+
+      $new_args['File or Directory Name'] = $args[1];
+
+      if($args[2]){
+         $new_args['Parse GO terms'] = 'Yes';
+      } else {
+         $new_args['Parse GO terms'] = 'No';
+      }
+
+      $new_args['Query name regular expression'] = $args[3];
+      $new_args['Query type'] = $args[4];
+      if($args[5] == 1){
+        $new_args['Feature identifier'] = 'feature unique name';
+      } else {
+        $new_args['Feature identifier'] = 'feature name';
+      }      
+   }
+   return $new_args;
+}
+
+
 /*******************************************************************************
  * Parsing Interpro HTML results that are stored in analysisfeatureprop for 
  * searching 
  * */
 function tripal_analysis_interpro_extract_keywords ($analysis_id) {	
 	
-	print "Extracting keywords...\n";
-	// Get all interpro output hits except for records with 'No hits reported', 'parent', 'children'.
+	// Remove previously stored interpro keywords for this analysis
+	print "Remove keywords previously stored...\n";
 	$output_type_id = tripal_get_cvterm_id('analysis_interpro_output_hit');
+	$sql = "SELECT distinct AFP.analysisfeature_id FROM {analysisfeatureprop} AFP 
+					 INNER JOIN {analysisfeature} AF ON AF.analysisfeature_id = AFP.analysisfeature_id
+					 WHERE type_id = $output_type_id 
+					 AND AF.analysis_id = $analysis_id";
+	$results_remove = chado_query($sql);
+	$keyword_type_id = tripal_get_cvterm_id('analysis_interpro_output_keywords');
+
+	while ($record = db_fetch_object($results_remove)) {
+		$af_id = $record->analysisfeature_id;
+		$sql = "DELETE FROM {analysisfeatureprop} WHERE analysisfeature_id =$af_id AND type_id = $keyword_type_id";
+		chado_query($sql);
+	}
+	
+	print "Extracting keywords...\n";
 	$sql = "SELECT AFP.analysisfeature_id, AFP.value FROM {analysisfeatureprop} AFP 
 					 INNER JOIN {analysisfeature} AF ON AF.analysisfeature_id = AFP.analysisfeature_id
 					 WHERE type_id = $output_type_id 
@@ -667,12 +725,14 @@ function tripal_analysis_interpro_extract_keywords ($analysis_id) {
            		 AND value NOT like '%parent%' 
            		 AND value NOT like '%children%'";
 	$results = chado_query($sql);
-	$keyword_type_id = tripal_get_cvterm_id('analysis_interpro_output_keywords');
 	// Define what to be extracted in the array
 	$search = array (
 							"'SEQUENCE:.*'",
 							"'CRC64:.*'",
 							"'LENGTH:.*'",
+							"'unintegrated'",
+							"'noIPR'",
+							"'<td>seg</td>'",
 							"'<b>InterPro<br/>'",
 							"'<br/>Domain|Family\n'",
 							"'<td>no description</td>'",
@@ -680,6 +740,9 @@ function tripal_analysis_interpro_extract_keywords ($analysis_id) {
 							"'\n'", // replace newlines with a space
 	);
 	$replace = array (
+								"",
+								"",
+								"",
 								"",
 								"",
 								"",
@@ -715,39 +778,4 @@ function tripal_analysis_interpro_extract_keywords ($analysis_id) {
 	
 	print "Finished.\n";
 	
-}
-/**
- *
- *
- * @ingroup tripal_analysis_interpro
- */
-function tripal_analysis_interpro_job_describe_args($callback,$args){
-
-
-   $new_args = array();
-   if($callback == 'tripal_analysis_interpro_parseXMLFile'){
-
-      // add in the analysis 
-      if($args[0]){
-         $analysis = tripal_core_chado_select('analysis',array('name'),array('analysis_id' => $args[0]));
-      }
-      $new_args['Analysis'] = $analysis[0]->name;
-
-      $new_args['File or Directory Name'] = $args[1];
-
-      if($args[2]){
-         $new_args['Parse GO terms'] = 'Yes';
-      } else {
-         $new_args['Parse GO terms'] = 'No';
-      }
-
-      $new_args['Query name regular expression'] = $args[3];
-      $new_args['Query type'] = $args[4];
-      if($args[5] == 1){
-        $new_args['Feature identifier'] = 'feature unique name';
-      } else {
-        $new_args['Feature identifier'] = 'feature name';
-      }      
-   }
-   return $new_args;
-}
+}