Overview

Namespaces

  • cli_db
    • propel
      • map
      • om
  • cli_import
  • LoggedPDO
  • None
  • PHP
  • webservices
    • cart
    • combisearch
    • details
      • annotations
        • feature
    • graphs
      • barplot
      • genome
    • listing
    • queue

Classes

  • Quantifications
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: 
  3: namespace webservices\graphs\barplot;
  4: 
  5: use \PDO as PDO;
  6: /**
  7:  * returns Quantification data as y/x canvasxpress data, see http://canvasxpress.org/documentation.html#data
  8:  */
  9: class Quantifications extends \WebService {
 10: 
 11:     /**
 12:      * @inheritDoc
 13:      */
 14:     public function execute($querydata) {
 15:         global $db;
 16: 
 17: #UI hint
 18:         if (false)
 19:             $db = new PDO();
 20: 
 21: 
 22:         $parents = $querydata['parents']; //feature ids
 23:         $analysises = $querydata['analysis']; //one or more analysises
 24:         $assays = $querydata['assay']; //one or more assays
 25:         $biomaterials = $querydata['biomaterial']; //one or more biomaterial samples
 26: 
 27: 
 28:         $query_values = array();
 29:         $query_subqueries = array();
 30:         foreach (
 31:         array('parent' => $parents, 'analysis' => $analysises, 'assay' => $assays, 'biomaterial' => $biomaterials)
 32:         AS $prefix => $values) {
 33:             for ($i = 0; $i < count($values); $i++) {
 34:                 $query_values[$prefix][':' . $prefix . $i] = $values[$i];
 35:             }
 36:             $query_subqueries[$prefix] = implode(',', array_keys($query_values[$prefix]));
 37:         }
 38: 
 39: 
 40:         $query = <<<EOF
 41: SELECT 
 42:   feature.name AS feature_name, 
 43:   biomaterial.name AS biomaterial_name, 
 44:   expressionresult.value, 
 45:   parent_biomaterial.name AS parent_biomaterial_name,
 46:   assay.name AS assay_name,
 47:   analysis.analysis_id,
 48:   analysis.name AS analysis_name
 49: FROM 
 50:   expressionresult, 
 51:   biomaterial,
 52:   analysis,
 53:   feature, 
 54:   quantification,
 55:   acquisition,
 56:   assay,
 57:   biomaterial_relationship, 
 58:   biomaterial AS parent_biomaterial
 59: WHERE 
 60:   expressionresult.biomaterial_id IN ({$query_subqueries['biomaterial']}) AND
 61:   expressionresult.biomaterial_id = biomaterial.biomaterial_id AND
 62:   
 63:   expressionresult.feature_id IN ({$query_subqueries['parent']}) AND    
 64:   expressionresult.feature_id = feature.feature_id AND
 65:   
 66: 
 67:   expressionresult.analysis_id IN ({$query_subqueries['analysis']}) AND
 68:   expressionresult.analysis_id = analysis.analysis_id AND
 69:   
 70:   expressionresult.quantification_id = quantification.quantification_id AND  
 71:   quantification.acquisition_id = acquisition.acquisition_id AND
 72:   acquisition.assay_id IN ({$query_subqueries['assay']}) AND
 73:   acquisition.assay_id = assay.assay_id AND
 74:   
 75:   biomaterial.biomaterial_id = biomaterial_relationship.subject_id AND
 76:   biomaterial_relationship.object_id = parent_biomaterial.biomaterial_id
 77:  ORDER BY feature_name, biomaterial_name;
 78: 
 79: EOF;
 80: 
 81:         $data_array = array_merge(
 82:                 $query_values['biomaterial'], $query_values['parent'], $query_values['analysis'], $query_values['assay']
 83:         );
 84: 
 85:         $stm = $db->prepare($query);
 86:         foreach ($data_array as $key => $val)
 87:             $stm->bindValue ($key, $val, \PDO::PARAM_STR);
 88:         
 89:         $stm->execute();
 90:         
 91: 
 92:         $lastcell_name = '';
 93:         $data = array();
 94:         $vars = array();
 95:         $smps = array();
 96:         $x = array();
 97:         $row = null;
 98:         //again, see http://canvasxpress.org/documentation.html#data !
 99:         while (($cell = $stm->fetch(PDO::FETCH_ASSOC)) !== false) {
100:             if ($cell['feature_name'] != $lastcell_name) {
101:                 #featue-specific actions, only once per featue
102:                 $lastcell_name = $cell['feature_name'];
103:                 $data[] = array();
104:                 $row = &$data[count($data) - 1];
105:                 $vars[] = $cell['feature_name'];
106:             }
107: 
108:             if (count($data) == 1) {
109:                 #sample-specific actions, only executed for first var
110:                 $smps[] = $cell['biomaterial_name'];
111:                 $x['Tissue_Group'][] = $cell['parent_biomaterial_name'];
112:                 $x['Assay'][] = $cell['assay_name'];
113:                 $x['Analysis'][] = "${cell['analysis_name']} (${cell['analysis_id']})";
114:             }
115: 
116:             $row[] = floatval($cell['value']);
117:         }
118: 
119:         return array(
120:             'x' => $x,
121:             'y' => array(
122:                 'vars' => $vars,
123:                 'smps' => $smps,
124:                 'data' => $data
125:             )
126:         );
127:     }
128: 
129: }
130: 
131: ?>
132: 
tbro API documentation generated by ApiGen 2.8.0