Changeset 755


Ignore:
Timestamp:
Aug 2, 2010, 11:30:43 AM (10 years ago)
Author:
vinlud
Message:

Sam module changes including rest interface, merging results, subquery workflow

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/query/SimpleQueryController.groovy

    r658 r755  
    1717import dbnp.data.*
    1818import dbnp.studycapturing.Study
     19import dbnp.studycapturing.Assay
    1920import org.compass.core.engine.SearchEngineQueryParseException
    2021import dbnp.rest.common.CommunicationManager
     
    5455              flow.operators              = ['>', '=', '<']
    5556
    56               if (flow.search_sa_compounds.size() == 0) {
     57              if (!flow.search_sa_compounds) {
    5758                flow.showFirstRowCompounds  = true
    5859                println "showRow true"
     
    9293              // Map SAM parameters
    9394              if (params.sa_compound instanceof String) {
     95                println "Compounds as String"
    9496                //flow.search_sam = [:]
    9597                flow.search_sa_compounds = []
     
    9799                flow.search_sa_values    = []
    98100
    99                 flow.search_sa_compounds.add(params.sa_compound)
    100                 flow.search_sa_operators.add(params.sa_operator)
    101                 flow.search_sa_values.add(params.sa_value)
     101                if (params.sa_compound) {
     102                  flow.search_sa_compounds.add(params.sa_compound)
     103                  flow.search_sa_operators.add(params.sa_operator)
     104                  flow.search_sa_values.add(params.sa_value)
     105                }
    102106              } else {
     107                println "Compounds as List"
    103108                flow.search_sa_compounds  = params.sa_compound as List
    104109                flow.search_sa_operators  = params.sa_operator as List
     
    121126              // Todo: check whether the module is active and to be used
    122127              // ...
    123               if (flow.search_sa_compounds.size() > 0) {
    124                 def resultSAM = []
    125                 resultSAM = this.searchSAM(flow.search_sa_compounds)
     128              def listSamStudies = []
     129              def listGscfStudies = []
     130              def listStudies = []
     131
     132              if ((flow.search_sa_compounds) && (flow.search_sa_compounds.size() > 0)) {
     133                def resultSAM = [:]
     134                resultSAM = this.searchSAM(flow.search_sa_compounds, flow.search_sa_operators, flow.search_sa_values)
    126135                println "Sam result: " + resultSAM
    127               }
     136                listSamStudies = resultSAM.get('studies')
     137              }
     138
     139             for (i in searchGscfResult.results) {
     140               //def x = i.id
     141               def objStudy = Study.get(i.id)
     142               println objStudy
     143               listGscfStudies.add(objStudy.id)
     144             }
     145
     146
     147             println "GSCF studies: " + listGscfStudies
     148             println "Sam studies " + listSamStudies
    128149                                         
    129150             // Merge the results of all searches
    130              if (searchGscfResult.size() > 0) {
    131                
    132                 searchResult = searchSamResult + searchGscfResult
    133              }             
    134 
     151             if (listSamStudies.size() > 0) {
     152               listStudies = listGscfStudies.intersect(listSamStudies)
     153               println "Combined: " + listStudies
     154             } else {
     155               listStudies = listGscfStudies
     156             }
     157
     158             def listObjStudies = []
     159             for (i in listStudies) {
     160               def objStudy = Study.get(i)
     161               listObjStudies.add(objStudy)
     162             }
    135163
    136164             // Save the results in the flow
    137              flow.listStudies = searchGscfResult.results
     165             flow.listStudies = listObjStudies
    138166             println flow.listStudies
    139167
     
    159187              flow.search_term            = null
    160188              flow.studies                = null
    161               flow.search_sa_compounds    = null
    162               flow.search_sa_values       = null
     189              flow.search_sa_compounds    = []
     190              flow.search_sa_operators    = []
     191              flow.search_sa_values       = []
    163192              flow.search_tt_genepaths    = null
    164193              flow.search_tt_regulations  = null
     
    173202
    174203 
    175    static Map searchSAM (List compounds) {
     204   static Map searchSAM (List compounds, List operators, List values) {
    176205     if (compounds.size() == 1) {
    177206       println "Single SAM call"
    178        def mapSamResult
    179        mapSamResult = CommunicationManager.getQueryResult(compounds.get(0))
    180        println "CommMngr result: " + mapSamResult.assays.size()
    181 
    182        mapSamResult.assays.each {
    183          simpleAssay -> println simpleAssay.id
    184          
     207       def mapSamResult = [:]
     208
     209       //def listAssays = [3, 1]
     210       //mapSamResult.put("assays", listAssays)
     211       //println "CommMngr result: " + mapSamResult
     212
     213       CommunicationManager.addRestWrapper( 'http://localhost:8182/sam/rest', 'getQueryResult', ['query'] )
     214       mapSamResult = CommunicationManager.getQueryResult( compounds.get(0) )
     215       println "SAM REST query: " + compounds.get(0)
     216       println "SAM REST result: " + mapSamResult
     217
     218       // mapSamResult = CommunicationManager.getQueryResult(compounds.get(0), operators.get(0), values.get(0))
     219
     220       //objAssay = objAssay.get(i)
     221       //println "Assay: " + objAssay
     222
     223       /*
     224       for (i in mapSamResult.assays) {
     225         //def listStudies = Study.findAll("from Study as s where s.assays.id = " + i)
     226         def listStudies = Study.findAll("from Study as s where exists (from Assay as a where a.id = s.assays and a.id = ${i})")
     227         println "Studies found: " + listStudies
    185228       }
     229       */
     230
     231       def listStudies = []
     232
     233       for (i in mapSamResult.assays) {
     234         def objAssay = Assay.get(i)
     235         listStudies.add(objAssay.parent.id)
     236       }
     237
     238       mapSamResult.put("studies", listStudies)
    186239
    187240       return mapSamResult
  • trunk/grails-app/views/simpleQuery/common/_query.gsp

    r650 r755  
    8585                    <td><g:link url="[action:'show',controller:'study']" id="${Study.id}">${fieldValue(bean: Study, field: "id")}</g:link></td>
    8686                    <td><g:link url="[action:'show',controller:'study']" id="${Study.id}">${fieldValue(bean: Study, field: "title")}</g:link></td>
    87                     <td><g:link url="[action:'show',controller:'study']" id="${Study.id}">${fieldValue(bean: Study, field: "samples")}</g:link></td>
     87                    <td><g:link url="[action:'show',controller:'study']" id="${Study.id}"></g:link></td>
    8888                  </tr>
    8989                </g:each>
  • trunk/src/groovy/dbnp/rest/common/CommunicationManager.groovy

    r657 r755  
    203203                                def sample = dbnp.studycapturing.Sample.find(sampleHQ)
    204204                                samples.add( [samSample,sample] )
    205                         } 
    206                         return [studies:studies, samples:samples] 
     205                        }
     206                        return [studies:studies, samples:samples]
    207207                }
    208208
Note: See TracChangeset for help on using the changeset viewer.