Skip to content
Snippets Groups Projects
Commit 233d07ca authored by felmer's avatar felmer
Browse files

SP-130, CCS-11: improve performance

SVN: 25776
parent b2d89042
No related branches found
No related tags found
No related merge requests found
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 SearchCriteria
from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto import SearchSubCriteria 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 from ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria import MatchClause
...@@ -63,14 +64,30 @@ def gatherExperimentsAndSamples(space): ...@@ -63,14 +64,30 @@ def gatherExperimentsAndSamples(space):
searchExperiment2msInjectionSamplesDict[expId] = [msInjectionSample] searchExperiment2msInjectionSamplesDict[expId] = [msInjectionSample]
return bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \ return bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \
searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict 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): def aggregate(parameters, tableBuilder):
space = parameters.get('space').upper() space = parameters.get('space').upper()
bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \ bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \
searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict \ searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict \
= gatherExperimentsAndSamples(space) = 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", result = queryService.select("proteomics-db",
"""select e.perm_id, accession_number, description """select e.perm_id, accession_number, description
from experiments as e join data_sets as d on d.expe_id = e.id from experiments as e join data_sets as d on d.expe_id = e.id
...@@ -78,16 +95,11 @@ def aggregate(parameters, tableBuilder): ...@@ -78,16 +95,11 @@ def aggregate(parameters, tableBuilder):
join identified_proteins as ip on ip.prot_id = p.id join identified_proteins as ip on ip.prot_id = p.id
join sequences as s on ip.sequ_id = s.id join sequences as s on ip.sequ_id = s.id
join protein_references as pr on s.prre_id = pr.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""", order by perm_id""",
['%' + protein + '%']) [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)
for resultRow in result: for resultRow in result:
permId = resultRow.get('perm_id') permId = resultRow.get('perm_id')
if (permId in searchExperimentsByPermIdDict): if (permId in searchExperimentsByPermIdDict):
...@@ -106,3 +118,4 @@ def aggregate(parameters, tableBuilder): ...@@ -106,3 +118,4 @@ def aggregate(parameters, tableBuilder):
row.setCell(SEARCH_EXPERIMENT_PERM_ID, permId) row.setCell(SEARCH_EXPERIMENT_PERM_ID, permId)
row.setCell(ACCESION_NUMBER, resultRow.get('accession_number')) row.setCell(ACCESION_NUMBER, resultRow.get('accession_number'))
row.setCell(DESCRIPTION, resultRow.get('description')) row.setCell(DESCRIPTION, resultRow.get('description'))
result.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment