فهرست منبع

When uploading a blast xml file, tripal now take the first word of <Iteration_query-def> tag to match the chado feature uniquename, instead of using the whole content of the tag for matching.

ccheng 15 سال پیش
والد
کامیت
83d3143980
1فایلهای تغییر یافته به همراه12 افزوده شده و 8 حذف شده
  1. 12 8
      tripal_analysis_blast/tripal_analysis_blast.module

+ 12 - 8
tripal_analysis_blast/tripal_analysis_blast.module

@@ -768,36 +768,40 @@ function tripal_analysis_blast_parseXMLFile ($analysis_id, $blastdb, $blastfile,
 
 							// If the Iteration_query-def in the format of "feature_id|uniquename"
 							// get feature_id from it directly
-							if (preg_match("/(\d+)\|.+/", $iteration_tags, $matches)) {
+							if (preg_match("/^(\d+)\|.+/", $iteration_tags, $matches)) {
 								$feature_id = $matches[1];
 
-							// If not matched, treat Iteration_query-def as uniquename
+							// If not in above format, try to match <Iteration_query-def> to feature's uniquename
 							} else {
-
+								// treat the first word of <Iteration_query-def> as uniquename
+								$first_word = $iteration_tags;
+                        if (preg_match('/^(.*?)\s.*$/', $iteration_tags, $matches)) {
+                        	$first_word = $matches[1];
+                        }
 								// Find out how many features match this uniquename
 								$sql = "SELECT count(feature_id) FROM {feature} ".
                                "WHERE uniquename = '%s' ";
-								$no_features = db_result(db_query($sql, $iteration_tags));
+								$no_features = db_result(db_query($sql, $first_word));
 									
 								// If there is only one match, get the feature_id
 								if ($no_features == 1) {
 									$sql = "SELECT feature_id FROM {feature} ".
 							             "WHERE uniquename = '%s' ";
-									$feature_id = db_result(db_query($sql, $iteration_tags));
+									$feature_id = db_result(db_query($sql, $first_word));
 
 								// If the uniquename matches more than one features then skip and print 'Ambiguous'
 								} else if ($no_features > 1) {
-									fwrite($log, "Ambiguous: ".$iteration_tags." matches more than one feature and is not processed.\n");
+									fwrite($log, "Ambiguous: ".$first_word." matches more than one feature and is not processed.\n");
 									continue;
 								
 								// If the uniquename did not match, skip and print 'Failed'
 								} else {
-									fwrite($log, "Failed: ".$iteration_tags."\n");
+									fwrite($log, "Failed: ".$first_word."\n");
 								}
 							}
 							// Successfully matched. print 'Succeeded'
 							if ($feature_id) {
-								fwrite($log, "Succeeded: ".$iteration_tags." => feature id:".$feature_id);
+								fwrite($log, "Succeeded: ".$first_word." => feature id:".$feature_id);
 								$featurename_xml = $iteration_tags->asXML();
 							}