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 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()
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