Overview

Namespaces

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

Classes

  • Differential_expressions
  • Filters
  • Filters_diffexp
  • Isoforms
  • Multisearch
  • Organism_release
  • Searchbox
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: 
  3: namespace webservices\listing;
  4: 
  5: use \PDO as PDO;
  6: 
  7: class Filters_diffexp extends \WebService {
  8: 
  9:     /**
 10:      * filters for diffexp for specified ids
 11:      * @see \webservices\listing\Filters::execute
 12:      */
 13:     public function forCart($querydata) {
 14:         global $db;
 15: #UI hint
 16:         if (false)
 17:             $db = new PDO();
 18: 
 19: 
 20: 
 21:         $ids = array();
 22:         if (isset($querydata['ids'])) {
 23:             $ids = array_merge($ids, $querydata['ids']);
 24:         }
 25: 
 26: 
 27:         $place_holders = implode(',', array_fill(0, count($ids), '?'));
 28: 
 29:         $query_get_filters = <<<EOF
 30: SELECT 
 31:   d.feature_id AS feature_id,
 32:   analysis.analysis_id, analysis.name AS analysis_name, analysis.description AS analysis_description, analysis.program AS analysis_program, analysis.programversion AS analysis_programversion, analysis.algorithm AS analysis_algorithm,
 33:   ba.biomaterial_id AS ba_id, ba.name AS ba_name, ba.description AS ba_description,
 34:   bb.biomaterial_id AS bb_id, bb.name AS bb_name, bb.description AS bb_description
 35: FROM 
 36:   diffexpresult d
 37:   JOIN analysis ON (d.analysis_id = analysis.analysis_id)
 38:   JOIN biomaterial ba ON (d.biomateriala_id = ba.biomaterial_id)
 39:   JOIN biomaterial bb ON (d.biomaterialb_id = bb.biomaterial_id)
 40: WHERE 
 41:   d.feature_id IN ({$place_holders});
 42: EOF;
 43: 
 44:         $stm_get_filters = $db->prepare($query_get_filters);
 45: 
 46:         $data = array();
 47: 
 48:         $stm_get_filters->execute($ids);
 49:         while ($filter = $stm_get_filters->fetch(PDO::FETCH_ASSOC)) {
 50: 
 51:             $data['data']['feature'][$filter['feature_id']] = self::getItem('feature', $filter);
 52:             $data['data']['analysis'][$filter['analysis_id']] = self::getItem('analysis', $filter);
 53:             $data['data']['ba'][$filter['ba_id']] = self::getItem('ba', $filter);
 54:             $data['data']['bb'][$filter['bb_id']] = self::getItem('bb', $filter);
 55: 
 56:             $data['values'][] = array(
 57:                 'feature' => $filter['feature_id'],
 58:                 'analysis' => $filter['analysis_id'],
 59:                 'ba' => $filter['ba_id'],
 60:                 'bb' => $filter['bb_id'],
 61:             );
 62:         }
 63: 
 64:         return $data;
 65:     }
 66: 
 67:     /**
 68:      * filters for diffexp for full release
 69:      * @see \webservices\listing\Filters::execute
 70:      */
 71:     public function fullRelease($querydata) {
 72:         global $db;
 73: #UI hint
 74:         if (false)
 75:             $db = new PDO();
 76: 
 77:         $organism = $querydata['organism'];
 78:         $release = $querydata['release'];
 79:         $constant = 'constant';
 80: 
 81: //
 82: 
 83:         $query_get_filters = <<<EOF
 84: SELECT 
 85: ba.name AS ba_name, ba_id, bb.name AS bb_name, bb_id, analysis.name AS analysis_name, ids.analysis_id FROM
 86: (SELECT 
 87:     d.biomateriala_id ba_id, d.biomaterialb_id bb_id, d.analysis_id
 88:     FROM 
 89:     diffexpresult d 
 90:     join feature f on d.feature_id=f.feature_id 
 91:     WHERE f.organism_id=? AND f.dbxref_id=(SELECT dbxref_id FROM dbxref WHERE db_id = {$constant('DB_ID_IMPORTS')} AND accession = ?)        
 92:     GROUP BY d.biomateriala_id, d.biomaterialb_id, d.analysis_id, f.organism_id, f.dbxref_id
 93: ) AS ids
 94: JOIN biomaterial ba ON (ids.ba_id=ba.biomaterial_id)
 95: JOIN biomaterial bb ON (ids.bb_id=bb.biomaterial_id)
 96: JOIN analysis ON (ids.analysis_id=analysis.analysis_id)
 97: EOF;
 98: 
 99:         $stm_get_filters = $db->prepare($query_get_filters);
100: 
101:         $data = array();
102: 
103:         $stm_get_filters->execute(array($organism, $release));
104:         while ($filter = $stm_get_filters->fetch(PDO::FETCH_ASSOC)) {
105: 
106:             $data['data']['analysis'][$filter['analysis_id']] = self::getItem('analysis', $filter);
107:             $data['data']['ba'][$filter['ba_id']] = self::getItem('ba', $filter);
108:             $data['data']['ba'][$filter['bb_id']] = self::getItem('bb', $filter);
109: 
110:             $data['values'][] = array(
111:                 'analysis' => $filter['analysis_id'],
112:                 'ba' => $filter['ba_id'],
113:                 'bb' => $filter['bb_id'],
114:                 'dir' => 'ltr'
115:             );
116:             // add flip
117:             $data['values'][] = array(
118:                 'analysis' => $filter['analysis_id'],
119:                 'bb' => $filter['ba_id'],
120:                 'ba' => $filter['bb_id'],
121:                 'dir' => 'rtl'
122:             );
123:         }
124:         $data['data']['bb'] = &$data['data']['ba'];
125:         return $data;
126:     }
127: 
128:     /**
129:      * different behaviour for query1= "forCart" or "fullRelease"
130:      * @inheritDoc
131:      */
132:     public function execute($querydata) {
133:         if ($querydata['query1'] == "forCart") {
134:             return $this->forCart($querydata);
135:         } else if ($querydata['query1'] == "fullRelease") {
136:             return $this->fullRelease($querydata);
137:         }
138:     }
139: 
140:     /**
141:      * returns an Array of all $row values whose key begins with $item_prefix (removing prefix)
142:      * @param String $item_prefix
143:      * @param Array $row
144:      * @return Array item
145:      */
146:     private static function getItem($item_prefix, $row) {
147:         $item = array();
148:         foreach ($row as $key => $val) {
149:             $match = null;
150:             if (preg_match("/${item_prefix}_(.*)/", $key, $match)) {
151:                 $item[$match[1]] = $val;
152:             }
153:         }
154:         return $item;
155:     }
156: 
157: }
158: 
159: ?>
160: 
tbro API documentation generated by ApiGen 2.8.0