Skip to content
Snippets Groups Projects
Commit 3788d0b0 authored by felmer's avatar felmer
Browse files

SP-130, CCS-11: aggregation reporting returns table enhanced by related experiments and samples

SVN: 25706
parent 9e449627
No related branches found
No related tags found
No related merge requests found
...@@ -18,26 +18,26 @@ def countFiles(node): ...@@ -18,26 +18,26 @@ def countFiles(node):
sum = sum + countFiles(child) sum = sum + countFiles(child)
return sum return sum
def aggregate(parameters, tableBuilder):
space = parameters.get('space').upper() def gatherExperimentsAndSamples(space):
bioSample2ExperimentDict = {}
msInjectionSample2bioSamplesDict = {}
searchExperiment2msInjectionSamplesDict = {}
searchExperimentsByPermIdDict = {}
searchCriteria = SearchCriteria() searchCriteria = SearchCriteria()
subCriteria = SearchCriteria() subCriteria = SearchCriteria()
subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "BIO*")) subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "BIO*"))
searchCriteria.addSubCriteria(SearchSubCriteria.createExperimentCriteria(subCriteria)) searchCriteria.addSubCriteria(SearchSubCriteria.createExperimentCriteria(subCriteria))
bioSamples = searchService.searchForSamples(searchCriteria) bioSamples = searchService.searchForSamples(searchCriteria)
searchCriteria = SearchCriteria() searchCriteria = SearchCriteria()
searchCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "MS_INJECTION")) searchCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "MS_INJECTION"))
subCriteria = SearchCriteria() subCriteria = SearchCriteria()
subCriteria.operator = SearchOperator.MATCH_ANY_CLAUSES subCriteria.operator = SearchOperator.MATCH_ANY_CLAUSES
bioSample2ExperimentDict = {}
msInjectionSample2bioSamplesDict = {}
searchExperiment2msInjectionSamplesDict = {}
searchExperimentsByPermIdDict = {}
for sample in bioSamples: for sample in bioSamples:
if space == sample.space: if space == sample.space:
bioSample2ExperimentDict[sample.sampleIdentifier] = sample.experiment.experimentIdentifier bioSample2ExperimentDict[sample.sampleIdentifier] = sample.experiment.experimentIdentifier
subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, sample.code)) subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, sample.code))
if len(bioSample2ExperimentDict) > 0: if len(bioSample2ExperimentDict) > 0:
searchCriteria.addSubCriteria(SearchSubCriteria.createSampleParentCriteria(subCriteria)) searchCriteria.addSubCriteria(SearchSubCriteria.createSampleParentCriteria(subCriteria))
msInjectionSamples = searchService.searchForSamples(searchCriteria) msInjectionSamples = searchService.searchForSamples(searchCriteria)
...@@ -47,25 +47,28 @@ def aggregate(parameters, tableBuilder): ...@@ -47,25 +47,28 @@ def aggregate(parameters, tableBuilder):
subCriteria = SearchCriteria() subCriteria = SearchCriteria()
subCriteria.operator = SearchOperator.MATCH_ANY_CLAUSES subCriteria.operator = SearchOperator.MATCH_ANY_CLAUSES
for sample in msInjectionSamples: for sample in msInjectionSamples:
bioSamples = [] msInjectionSample2bioSamplesDict[sample.sampleIdentifier] = sample.parentSampleIdentifiers
for parent in sample.sample.parents:
if parent.identifier in bioSample2ExperimentDict:
bioSamples.append(parent.identifier)
msInjectionSample2bioSamplesDict[sample.sampleIdentifier] = bioSamples
subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, sample.code)) subCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, sample.code))
searchCriteria.addSubCriteria(SearchSubCriteria.createSampleParentCriteria(subCriteria)) searchCriteria.addSubCriteria(SearchSubCriteria.createSampleParentCriteria(subCriteria))
searchSamples = searchService.searchForSamples(searchCriteria) searchSamples = searchService.searchForSamples(searchCriteria)
for sample in searchSamples: for sample in searchSamples:
experiment = sample.experiment experiment = sample.experiment
searchExperimentsByPermIdDict[experiment.permId] = experiment searchExperimentsByPermIdDict[experiment.permId] = experiment
msInjectionSample = sample.sample.parents[0].identifer expId = experiment.experimentIdentifier
for msInjectionSample in sample.parentSampleIdentifiers:
if expId in searchExperiment2msInjectionSamplesDict:
searchExperiment2msInjectionSamplesDict[expId].append(msInjectionSample)
else:
searchExperiment2msInjectionSamplesDict[expId] = [msInjectionSample]
return bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \
searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict
def aggregate(parameters, tableBuilder):
space = parameters.get('space').upper()
bioSample2ExperimentDict, msInjectionSample2bioSamplesDict, \
searchExperiment2msInjectionSamplesDict, searchExperimentsByPermIdDict \
= gatherExperimentsAndSamples(space)
experiments = {}
for sample in searchSamples:
# print "search sample: " + sample.sampleIdentifier+" "+experiment.experimentIdentifier+" "+experiment.permId
experiments[experiment.permId] = experiment
print experiments.keys()
protein = parameters.get('protein') protein = parameters.get('protein')
result = queryService.select("proteomics-db", result = queryService.select("proteomics-db",
"""select e.perm_id, accession_number, description """select e.perm_id, accession_number, description
...@@ -77,14 +80,26 @@ def aggregate(parameters, tableBuilder): ...@@ -77,14 +80,26 @@ def aggregate(parameters, tableBuilder):
where accession_number like ?{1} or description like ?{1} where 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)
tableBuilder.addHeader(ACCESION_NUMBER) tableBuilder.addHeader(ACCESION_NUMBER)
tableBuilder.addHeader(DESCRIPTION) tableBuilder.addHeader(DESCRIPTION)
for resultRow in result: for resultRow in result:
permId = resultRow.get('perm_id') permId = resultRow.get('perm_id')
if (permId in experiments): if (permId in searchExperimentsByPermIdDict):
experiment = experiments[permId] experiment = searchExperimentsByPermIdDict[permId]
row = tableBuilder.addRow() expId = experiment.experimentIdentifier
row.setCell(SEARCH_EXPERIMENT, experiment.experimentIdentifier) msInjectionSamples = searchExperiment2msInjectionSamplesDict[expId]
row.setCell(ACCESION_NUMBER, resultRow.get('accession_number')) for msInjectionSample in msInjectionSamples:
row.setCell(DESCRIPTION, resultRow.get('description')) bioSamples = msInjectionSample2bioSamplesDict[msInjectionSample]
for bioSample in bioSamples:
bioExperiment = bioSample2ExperimentDict[bioSample]
row = tableBuilder.addRow()
row.setCell(BIO_EXPERIMENT, bioExperiment)
row.setCell(BIO_SAMPLE, bioSample)
row.setCell(MS_SAMPLE, msInjectionSample)
row.setCell(SEARCH_EXPERIMENT, expId)
row.setCell(ACCESION_NUMBER, resultRow.get('accession_number'))
row.setCell(DESCRIPTION, resultRow.get('description'))
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