|  | @@ -224,7 +224,7 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
											
												
													
														|  |      $schema = tripal_feature_get_custom_tables('tripal_gff_temp');  
 |  |      $schema = tripal_feature_get_custom_tables('tripal_gff_temp');  
 | 
											
												
													
														|  |      $success = tripal_core_create_custom_table($ret, 'tripal_gff_temp', $schema['tripal_gff_temp']);
 |  |      $success = tripal_core_create_custom_table($ret, 'tripal_gff_temp', $schema['tripal_gff_temp']);
 | 
											
												
													
														|  |      if (!$success) {
 |  |      if (!$success) {
 | 
											
												
													
														|  | -      watchdog('T_gff3_loader', "Cannot creat temporary loading table", array(), WATCHDOG_ERROR); 
 |  | 
 | 
											
												
													
														|  | 
 |  | +      watchdog('T_gff3_loader', "Cannot create temporary loading table", array(), WATCHDOG_ERROR); 
 | 
											
												
													
														|  |        return;
 |  |        return;
 | 
											
												
													
														|  |      } 
 |  |      } 
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
										
											
												
													
														|  | @@ -554,11 +554,17 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
											
												
													
														|  |            'type_name' => $type,
 |  |            'type_name' => $type,
 | 
											
												
													
														|  |            'uniquename' => $feature->uniquename
 |  |            'uniquename' => $feature->uniquename
 | 
											
												
													
														|  |          );
 |  |          );
 | 
											
												
													
														|  | -        $options = array('statement_name' => 'ins_tripalgfftemp');
 |  | 
 | 
											
												
													
														|  | -        $result = tripal_core_chado_insert('tripal_gff_temp', $values, $options);
 |  | 
 | 
											
												
													
														|  | -        if (!$result) {
 |  | 
 | 
											
												
													
														|  | -          watchdog('T_gff3_loader', "Cound not save record in temporary table, Cannot continue.", array(), WATCHDOG_ERROR);
 |  | 
 | 
											
												
													
														|  | -          return;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        // make sure this record doesn't already exist in oru temp table
 | 
											
												
													
														|  | 
 |  | +        $options = array('statement_name' => 'sel_tripalgfftemp_all');
 | 
											
												
													
														|  | 
 |  | +        $results = tripal_core_chado_select('tripal_gff_temp', array('*'), $values, $options);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        if (count($results) == 0) {
 | 
											
												
													
														|  | 
 |  | +          $options = array('statement_name' => 'ins_tripalgfftemp');
 | 
											
												
													
														|  | 
 |  | +          $result = tripal_core_chado_insert('tripal_gff_temp', $values, $options);
 | 
											
												
													
														|  | 
 |  | +          if (!$result) {
 | 
											
												
													
														|  | 
 |  | +            watchdog('T_gff3_loader', "Cound not save record in temporary table, Cannot continue.", array(), WATCHDOG_ERROR);
 | 
											
												
													
														|  | 
 |  | +            return;
 | 
											
												
													
														|  | 
 |  | +          }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // add/update the featureloc if the landmark and the ID are not the same
 |  |          // add/update the featureloc if the landmark and the ID are not the same
 | 
											
										
											
												
													
														|  | @@ -589,7 +595,7 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
											
												
													
														|  |          // add target relationships
 |  |          // add target relationships
 | 
											
												
													
														|  |          if (array_key_exists('Target', $tags)) {
 |  |          if (array_key_exists('Target', $tags)) {
 | 
											
												
													
														|  |            // format is: "target_id start end [strand]", where strand is optional and may be "+" or "-"
 |  |            // format is: "target_id start end [strand]", where strand is optional and may be "+" or "-"
 | 
											
												
													
														|  | -          $matched = preg_match('/^(.*?)\s+(\d+)\s+(\d+)(\s+[\+|\-])*$/', $tags['Target'][0], $matches);
 |  | 
 | 
											
												
													
														|  | 
 |  | +          $matched = preg_match('/^(.*?)\s+(\d+)\s+(\d+)(\s+[\+|\-])*$/', trim($tags['Target'][0]), $matches);
 | 
											
												
													
														|  |            
 |  |            
 | 
											
												
													
														|  |            // if we have matches and the Target is in the correct format then load the alignment 
 |  |            // if we have matches and the Target is in the correct format then load the alignment 
 | 
											
												
													
														|  |            if ($matched) {
 |  |            if ($matched) {
 | 
											
										
											
												
													
														|  | @@ -667,18 +673,19 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    print "\nSetting ranks of children...\n";
 |  |    print "\nSetting ranks of children...\n";
 | 
											
												
													
														|  |    
 |  |    
 | 
											
												
													
														|  | -  // get features in a parent relationship
 |  | 
 | 
											
												
													
														|  | -  $sql = "SELECT DISTINCT F.feature_id, F.organism_id, F.type_id, F.uniquename, FL.strand 
 |  | 
 | 
											
												
													
														|  | 
 |  | +  // get features in a relationship that are also children of an alignment
 | 
											
												
													
														|  | 
 |  | +  $sql = "SELECT DISTINCT F.feature_id, F.organism_id, F.type_id, 
 | 
											
												
													
														|  | 
 |  | +            F.uniquename, FL.strand 
 | 
											
												
													
														|  |            FROM tripal_gff_temp TGT 
 |  |            FROM tripal_gff_temp TGT 
 | 
											
												
													
														|  | -            INNER JOIN feature F on TGT.feature_id = F.feature_id
 |  | 
 | 
											
												
													
														|  | 
 |  | +            INNER JOIN feature F                ON TGT.feature_id = F.feature_id
 | 
											
												
													
														|  |              INNER JOIN feature_relationship FR  ON FR.object_id = TGT.feature_id
 |  |              INNER JOIN feature_relationship FR  ON FR.object_id = TGT.feature_id
 | 
											
												
													
														|  | -            INNER JOIN cvterm CVT on CVT.cvterm_id = FR.type_id  
 |  | 
 | 
											
												
													
														|  | -            INNER JOIN featureloc FL on FL.feature_id = F.feature_id    
 |  | 
 | 
											
												
													
														|  | 
 |  | +            INNER JOIN cvterm CVT               ON CVT.cvterm_id = FR.type_id  
 | 
											
												
													
														|  | 
 |  | +            INNER JOIN featureloc FL            ON FL.feature_id = F.feature_id    
 | 
											
												
													
														|  |            WHERE CVT.name = 'part_of'";
 |  |            WHERE CVT.name = 'part_of'";
 | 
											
												
													
														|  |    $parents = chado_query($sql);
 |  |    $parents = chado_query($sql);
 | 
											
												
													
														|  |    
 |  |    
 | 
											
												
													
														|  |    // build and prepare the SQL for selecting the children relationship
 |  |    // build and prepare the SQL for selecting the children relationship
 | 
											
												
													
														|  | -  $sql = "SELECT FR.feature_relationship_id, FL.fmin, FR.rank
 |  | 
 | 
											
												
													
														|  | 
 |  | +  $sql = "SELECT DISTINCT FR.feature_relationship_id, FL.fmin, FR.rank
 | 
											
												
													
														|  |            FROM feature_relationship FR              
 |  |            FROM feature_relationship FR              
 | 
											
												
													
														|  |              INNER JOIN featureloc FL on FL.feature_id = FR.subject_id";
 |  |              INNER JOIN featureloc FL on FL.feature_id = FR.subject_id";
 | 
											
												
													
														|  |    if (!$connection) {
 |  |    if (!$connection) {
 | 
											
										
											
												
													
														|  | @@ -717,7 +724,7 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
											
												
													
														|  |         $children[] = $child;  
 |  |         $children[] = $child;  
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      
 |  |      
 | 
											
												
													
														|  | -    // sort the children come in order of their fmin position
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // the children list comes sorted in ascending fmin
 | 
											
												
													
														|  |      // but if the parent is on the reverse strand we need to 
 |  |      // but if the parent is on the reverse strand we need to 
 | 
											
												
													
														|  |      // reverse the order of the children.
 |  |      // reverse the order of the children.
 | 
											
												
													
														|  |      if ($parent->strand == -1) {
 |  |      if ($parent->strand == -1) {
 | 
											
										
											
												
													
														|  | @@ -734,7 +741,7 @@ function tripal_feature_load_gff3($gff_file, $organism_id, $analysis_id,
 | 
											
												
													
														|  |        tripal_core_chado_update('feature_relationship', $match, $values, $options);
 |  |        tripal_core_chado_update('feature_relationship', $match, $values, $options);
 | 
											
												
													
														|  |        $rank--;
 |  |        $rank--;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    // now set the rank correctly
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // now set the rank correctly. The rank should start at 0.
 | 
											
												
													
														|  |      $rank = 0;
 |  |      $rank = 0;
 | 
											
												
													
														|  |      foreach ($children as $child) {
 |  |      foreach ($children as $child) {
 | 
											
												
													
														|  |        $match = array('feature_relationship_id' => $child->feature_relationship_id);
 |  |        $match = array('feature_relationship_id' => $child->feature_relationship_id);
 | 
											
										
											
												
													
														|  | @@ -1029,7 +1036,7 @@ function tripal_feature_load_gff3_ontology($feature, $dbxrefs) {
 | 
											
												
													
														|  |        // now look for the name without the 'DB:' prefix.
 |  |        // now look for the name without the 'DB:' prefix.
 | 
											
												
													
														|  |        $db = tripal_core_chado_select('db', array('db_id'), array('name' => "$dbname"), $options);
 |  |        $db = tripal_core_chado_select('db', array('db_id'), array('name' => "$dbname"), $options);
 | 
											
												
													
														|  |        if (sizeof($db) == 0) {
 |  |        if (sizeof($db) == 0) {
 | 
											
												
													
														|  | -        watchdog("T_gff3_loader", "Database, $dbname is missing for reference: $dbname:$accession", array(), WATCHDOG_WARNING);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        watchdog("T_gff3_loader", "Database, $dbname, is not present. Cannot associate term: $dbname:$accession", array(), WATCHDOG_WARNING);
 | 
											
												
													
														|  |          return 0;
 |  |          return 0;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
										
											
												
													
														|  | @@ -1389,7 +1396,7 @@ function tripal_feature_load_gff3_featureloc($feature, $organism, $landmark, $fm
 | 
											
												
													
														|  |    $r = tripal_core_chado_select('feature', array('feature_id'), $select, $options);
 |  |    $r = tripal_core_chado_select('feature', array('feature_id'), $select, $options);
 | 
											
												
													
														|  |    
 |  |    
 | 
											
												
													
														|  |    if (count($r)==0) {
 |  |    if (count($r)==0) {
 | 
											
												
													
														|  | -    // so we couldn't find it using the uniquename. Let's try the 'name'.
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // so we couldn't find the landmark using the uniquename. Let's try the 'name'.
 | 
											
												
													
														|  |      // if we return only a singe result then we can proceed. Otherwise give an
 |  |      // if we return only a singe result then we can proceed. Otherwise give an
 | 
											
												
													
														|  |      // error message
 |  |      // error message
 | 
											
												
													
														|  |      $select = array(
 |  |      $select = array(
 | 
											
										
											
												
													
														|  | @@ -1399,7 +1406,7 @@ function tripal_feature_load_gff3_featureloc($feature, $organism, $landmark, $fm
 | 
											
												
													
														|  |      $options = array('statement_name' => 'sel_feature_organism_id_name');
 |  |      $options = array('statement_name' => 'sel_feature_organism_id_name');
 | 
											
												
													
														|  |      $r = tripal_core_chado_select('feature', array('feature_id'), $select, $options);
 |  |      $r = tripal_core_chado_select('feature', array('feature_id'), $select, $options);
 | 
											
												
													
														|  |      if (count($r) == 0) {
 |  |      if (count($r) == 0) {
 | 
											
												
													
														|  | -       watchdog("T_gff3_loader", "Cannot find landmark feature: '$landmark'.  Cannot add the feature location record", array(), WATCHDOG_WARNING);
 |  | 
 | 
											
												
													
														|  | 
 |  | +       watchdog("T_gff3_loader", "Cannot find landmark feature: '$landmark'.", array(), WATCHDOG_WARNING);
 | 
											
												
													
														|  |         return 0;
 |  |         return 0;
 | 
											
												
													
														|  |      } 
 |  |      } 
 | 
											
												
													
														|  |      elseif (count($r) > 1) {
 |  |      elseif (count($r) > 1) {
 |