From 233d07ca6b65e1b2b9a7f44d7f442b71ff2fda13 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 19 Jun 2012 11:23:26 +0000 Subject: [PATCH] SP-130, CCS-11: improve performance SVN: 25776 --- .../demo-proteomics-aggregation/script.py | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py b/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py index b0e5537147d..cc5503e87f5 100644 --- a/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py +++ b/rtd_phosphonetx/source/core-plugins/dev-demo/1/dss/reporting-plugins/demo-proteomics-aggregation/script.py @@ -1,3 +1,4 @@ +from java.util import ArrayList from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto import SearchCriteria from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto import SearchSubCriteria from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria import MatchClause @@ -63,14 +64,30 @@ def gatherExperimentsAndSamples(space): searchExperiment2msInjectionSamplesDict[expId] = [msInjectionSample] return bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \ searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict + +def createPermIdList(searchExperimentsByPermIdDict): + permIds = "" + for exp in searchExperimentsByPermIdDict.values(): + if len(permIds) > 0: + permIds = permIds + ", " + permIds = permIds + "'" + exp.permId + "'" + return permIds def aggregate(parameters, tableBuilder): space = parameters.get('space').upper() bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \ searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict \ = gatherExperimentsAndSamples(space) - - protein = parameters.get('protein') + + tableBuilder.addHeader(BIO_EXPERIMENT) + tableBuilder.addHeader(BIO_SAMPLE) + tableBuilder.addHeader(MS_SAMPLE) + tableBuilder.addHeader(SEARCH_EXPERIMENT) + tableBuilder.addHeader(SEARCH_EXPERIMENT_PERM_ID) + tableBuilder.addHeader(ACCESION_NUMBER) + tableBuilder.addHeader(DESCRIPTION) + protein = '%' + parameters.get('protein') + '%' + permIds = createPermIdList(searchExperimentsByPermIdDict) result = queryService.select("proteomics-db", """select e.perm_id, accession_number, description from experiments as e join data_sets as d on d.expe_id = e.id @@ -78,16 +95,11 @@ def aggregate(parameters, tableBuilder): join identified_proteins as ip on ip.prot_id = p.id join sequences as s on ip.sequ_id = s.id join protein_references as pr on s.prre_id = pr.id - where accession_number like ?{1} or description like ?{1} + where e.perm_id in (""" + + permIds + + """) and (accession_number like ?{1} or description like ?{1}) order by perm_id""", - ['%' + protein + '%']) - tableBuilder.addHeader(BIO_EXPERIMENT) - tableBuilder.addHeader(BIO_SAMPLE) - tableBuilder.addHeader(MS_SAMPLE) - tableBuilder.addHeader(SEARCH_EXPERIMENT) - tableBuilder.addHeader(SEARCH_EXPERIMENT_PERM_ID) - tableBuilder.addHeader(ACCESION_NUMBER) - tableBuilder.addHeader(DESCRIPTION) + [protein]) for resultRow in result: permId = resultRow.get('perm_id') if (permId in searchExperimentsByPermIdDict): @@ -106,3 +118,4 @@ def aggregate(parameters, tableBuilder): row.setCell(SEARCH_EXPERIMENT_PERM_ID, permId) row.setCell(ACCESION_NUMBER, resultRow.get('accession_number')) row.setCell(DESCRIPTION, resultRow.get('description')) + result.close() -- GitLab