Tripal Plant PopGen Submit
match_trees.inc File Reference

Go to the source code of this file.

Functions

 tpps_matching_trees ($project_id)
 

Detailed Description

Defines a function which creates stock_relationships for matching plants.

Definition in file match_trees.inc.

Function Documentation

◆ tpps_matching_trees()

tpps_matching_trees (   $project_id)

Create stock_relationship records for existing plants.

Parameters
string$project_idThe project_id of the submission which has existing plants.

Definition at line 14 of file match_trees.inc.

14  {
15  $eps = variable_get('tpps_gps_epsilon', .001);
16 
17  $lat_id = tpps_load_cvterm('gps_latitude')->cvterm_id;
18  $lng_id = tpps_load_cvterm('gps_longitude')->cvterm_id;
19 
20  $query_trees_1 = db_select('chado.stock', 's');
21  $query_trees_1->join('chado.stockprop', 'lat', "lat.stock_id = s.stock_id AND lat.type_id = $lat_id");
22  $query_trees_1->join('chado.stockprop', 'lng', "lng.stock_id = s.stock_id AND lng.type_id = $lng_id");
23  $query_trees_1->addField('s', 'stock_id', 'stock_id');
24  $query_trees_1->addField('s', 'type_id', 'type_id');
25  $query_trees_1->addField('s', 'organism_id', 'organism_id');
26  $query_trees_1->addExpression('substring(s.uniquename, 9)', 'uniquename');
27  $query_trees_1->addExpression('cast(lat.value as float)', 'lat');
28  $query_trees_1->addExpression('cast(lng.value as float)', 'lng');
29 
30  $query_trees_2 = clone $query_trees_1;
31 
32  $query_trees_1->join('chado.project_stock', 'p', "p.project_id = $project_id AND p.stock_id = s.stock_id");
33 
34  $query_trees_2->join('chado.project_stock', 'p', "p.project_id != $project_id AND p.stock_id = s.stock_id");
35 
36  $query = db_select($query_trees_1, 's1');
37  $query->join($query_trees_2, 's2', "s1.uniquename = s2.uniquename AND s1.type_id = s2.type_id AND s1.organism_id = s2.organism_id AND abs(s1.lat - s2.lat) < $eps AND abs(s1.lng - s2.lng) < $eps");
38  $query->addfield('s1', 'stock_id', 'stock_id1');
39  $query->addfield('s2', 'stock_id', 'stock_id2');
40 
41  $results = $query->execute();
42 
43  while (($record = $results->fetchObject())) {
44  tpps_chado_insert_record('stock_relationship', array(
45  'subject_id' => $record->stock_id1,
46  'object_id' => $record->stock_id2,
47  'type_id' => tpps_load_cvterm('synonymous')->cvterm_id,
48  //'type_id' => '2206',
49  ));
50  }
51 }
tpps_chado_insert_record($table, $records, array $options=array())
Definition: chado_utils.inc:27
tpps_load_cvterm($term, array $options=array(), $version=NULL, $refresh_cache=FALSE)