Class ExpressionExperimentController
- java.lang.Object
-
- ubic.gemma.web.controller.expression.experiment.ExpressionExperimentController
-
@Controller @RequestMapping({"/expressionExperiment","/ee"}) public class ExpressionExperimentController extends Object
- Author:
- keshav
-
-
Constructor Summary
Constructors Constructor Description ExpressionExperimentController()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description JsonReaderResponse<ExpressionExperimentDetailsValueObject>
browse(ListBatchCommand batch)
AJAX call for remote paging store security isn't incorporated in db query, so paging needs to occur at higher level.JsonReaderResponse<ExpressionExperimentDetailsValueObject>
browseByTaxon(ListBatchCommand batch, Long taxonId)
JsonReaderResponse<ExpressionExperimentDetailsValueObject>
browseSpecificIds(ListBatchCommand batch, Collection<Long> ids)
AJAX call for remote paging storeboolean
canCurrentUserEditExperiment(Long eeId)
AJAX returns a JSON string encoding whether the current user owns the experiment and whether they can edit itvoid
clearFromCaches(Long eeId)
AJAX clear entries in caches relevant to experimental design for the experiment passed in.String
deleteById(Long id)
Exposed for AJAX calls.boolean
doesCurrentUserOwnExperiment(Long eeId)
AJAX returns a JSON string encoding whether the current user owns the experiment and whether they can edit itModelAndView
filter(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Collection<Long>
find(String query, Long taxonId)
AJAX TODO --- include a search of subsets.List<SearchResultDisplayObject>
getAllTaxonExperimentGroup(Long taxonId)
Collection<AnnotationValueObject>
getAnnotation(EntityDelegator<ExpressionExperiment> e)
AJAXString
getDescription(Long id)
AJAX callCollection<DesignMatrixRowValueObject>
getDesignMatrixRows(EntityDelegator<ExpressionExperiment> e)
AJAXCollection<ExperimentalFactorValueObject>
getExperimentalFactors(EntityDelegator<ExpressionExperiment> e)
AJAXCollection<FactorValueValueObject>
getFactorValues(EntityDelegator<ExperimentalFactor> e)
AJAXString
getQCTagHTML(ExpressionExperiment ee)
Used to include the html for the qc table in an ext panel (without using a tag) (This method should probably be in a service?)ModelAndView
handleRequestInternal(javax.servlet.http.HttpServletRequest request)
Map<String,Object>
loadCountsForDataSummaryTable()
AJAX method to get data for database summary table, returned as a JSON object the slow part here is loading each new or updated object in whatsNewService.retrieveReport() -> fetch()Collection<ExpressionExperimentDetailsValueObject>
loadDetailedExpressionExperiments(Collection<Long> ids)
AJAX - for display in tables.Collection<ExpressionExperimentDetailsValueObject>
loadExperimentsForPlatform(Long id)
AJAX get experiments that used a given platform.ExpressionExperimentDetailsValueObject
loadExpressionExperimentDetails(Long id)
AJAX; Populate all the details.Collection<ExpressionExperimentDetailsValueObject>
loadExpressionExperiments(List<Long> ids)
AJAX - for display in tables.JsonReaderResponse<Map<String,Object>>
loadExpressionExperimentsWithQcIssues()
AJAX; get a collection of experiments that have had samples removed due to outliers TODO: and experiment that have possible batch effects detectedCollection<QuantitationTypeValueObject>
loadQuantitationTypes(Long eeId)
AJAX - for display in tablesCollection<ExpressionExperimentDetailsValueObject>
loadStatusSummaries(Long taxonId, List<Long> ids, Integer limit, Integer filter, Boolean showPublic)
AJAX.void
recalculateBatchConfound(Long id)
void
recalculateBatchEffect(Long id)
String
removePrimaryPublication(Long eeId)
Remove the primary publication for the given expression experiment (by id).void
runGeeq(Long id, String mode)
List<SearchResultDisplayObject>
searchExperimentsAndExperimentGroups(String query, Long taxonId)
AJAX (used by experimentAndExperimentGroupCombo.js)Collection<ExpressionExperimentValueObject>
searchExpressionExperiments(String query)
AJAX (used by ExperimentCombo.js)ModelAndView
showAllExpressionExperiments(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Show all experiments (optionally conditioned on either a taxon, a list of ids, or a platform)ModelAndView
showAllLinkSummaries(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
ModelAndView
showBioAssays(Long id)
ModelAndView
showBioMaterials(Long id)
ModelAndView
showExpressionExperiment(Long id)
ModelAndView
showExpressionExperimentByShortName(String shortName)
ModelAndView
showSubSet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
shows a list of BioAssays for an expression experiment subsetvoid
unmatchAllBioAssays(Long eeId)
Completely reset the pairing of bioassays to biomaterials, so they are no longer paired.ExpressionExperimentDetailsValueObject
updateBasics(UpdateEEDetailsCommand command)
String
updatePubMed(Long eeId, String pubmedId)
AJAX.
-
-
-
Method Detail
-
browse
public JsonReaderResponse<ExpressionExperimentDetailsValueObject> browse(ListBatchCommand batch)
AJAX call for remote paging store security isn't incorporated in db query, so paging needs to occur at higher level.- a db call returns all experiments, which are filtered by the service method
- if the user is an admin, we filter out the troubled experiments
- an appropriate page-sized chunk is then taken from this (filtered) list
- another round of db calls create and fill value objects for this chunk
- value objects are returned
-
browseByTaxon
public JsonReaderResponse<ExpressionExperimentDetailsValueObject> browseByTaxon(ListBatchCommand batch, Long taxonId)
-
browseSpecificIds
public JsonReaderResponse<ExpressionExperimentDetailsValueObject> browseSpecificIds(ListBatchCommand batch, Collection<Long> ids)
AJAX call for remote paging store
-
canCurrentUserEditExperiment
public boolean canCurrentUserEditExperiment(Long eeId)
AJAX returns a JSON string encoding whether the current user owns the experiment and whether they can edit it
-
clearFromCaches
public void clearFromCaches(Long eeId)
AJAX clear entries in caches relevant to experimental design for the experiment passed in. The caches cleared are the processedDataVectorCache and the caches held in ExperimentalDesignVisualizationService
-
doesCurrentUserOwnExperiment
public boolean doesCurrentUserOwnExperiment(Long eeId)
AJAX returns a JSON string encoding whether the current user owns the experiment and whether they can edit it
-
filter
@RequestMapping("/filterExpressionExperiments.html") public ModelAndView filter(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
find
public Collection<Long> find(String query, Long taxonId)
AJAX TODO --- include a search of subsets. NOTE: only used via DataSetSearchAndGrabToolbar -> DatasetGroupEditor?- Parameters:
query
- search stringtaxonId
- (if null, all taxa are searched)- Returns:
- EE ids that match
-
getAllTaxonExperimentGroup
public List<SearchResultDisplayObject> getAllTaxonExperimentGroup(Long taxonId)
-
getAnnotation
public Collection<AnnotationValueObject> getAnnotation(EntityDelegator<ExpressionExperiment> e)
AJAX
-
getDescription
public String getDescription(Long id)
AJAX call- Returns:
- a more informative description than the regular description 1st 120 characters of ee.description + Experimental Design information returned string contains HTML tags. TODO: Would be more generic if passed back a DescriptionValueObject that contains all the info necessary to reconstruct the HTML on the client side Currently only used by ExpressionExperimentGrid.js (row expander)
-
getDesignMatrixRows
public Collection<DesignMatrixRowValueObject> getDesignMatrixRows(EntityDelegator<ExpressionExperiment> e)
AJAX
-
getExperimentalFactors
public Collection<ExperimentalFactorValueObject> getExperimentalFactors(EntityDelegator<ExpressionExperiment> e)
AJAX- Returns:
- a collection of factor value objects that represent the factors of a given experiment
-
getFactorValues
public Collection<FactorValueValueObject> getFactorValues(EntityDelegator<ExperimentalFactor> e)
AJAX- Returns:
- A collection of factor value objects for the specified experimental factor
-
getQCTagHTML
public String getQCTagHTML(ExpressionExperiment ee)
Used to include the html for the qc table in an ext panel (without using a tag) (This method should probably be in a service?)
-
loadCountsForDataSummaryTable
public Map<String,Object> loadCountsForDataSummaryTable()
AJAX method to get data for database summary table, returned as a JSON object the slow part here is loading each new or updated object in whatsNewService.retrieveReport() -> fetch()- Returns:
- json
-
loadExpressionExperimentDetails
public ExpressionExperimentDetailsValueObject loadExpressionExperimentDetails(Long id)
AJAX; Populate all the details.- Parameters:
id
- Identifier for the experiment- Returns:
- ee details vo
-
recalculateBatchConfound
public void recalculateBatchConfound(Long id)
-
recalculateBatchEffect
public void recalculateBatchEffect(Long id)
-
loadExpressionExperiments
public Collection<ExpressionExperimentDetailsValueObject> loadExpressionExperiments(List<Long> ids)
AJAX - for display in tables. Don't retrieve too much detail.- Parameters:
ids
- of EEs to load- Returns:
- security-filtered set of value objects.
-
loadExperimentsForPlatform
public Collection<ExpressionExperimentDetailsValueObject> loadExperimentsForPlatform(Long id)
AJAX get experiments that used a given platform. Don't retrieve too much detail.- Parameters:
id
- of platform- Returns:
- collection of experiments that use this platform -- including those that were switched
-
loadDetailedExpressionExperiments
public Collection<ExpressionExperimentDetailsValueObject> loadDetailedExpressionExperiments(Collection<Long> ids)
AJAX - for display in tables. Get more details.- Parameters:
ids
- of EEs to load- Returns:
- security-filtered set of value objects.
-
loadExpressionExperimentsWithQcIssues
public JsonReaderResponse<Map<String,Object>> loadExpressionExperimentsWithQcIssues()
AJAX; get a collection of experiments that have had samples removed due to outliers TODO: and experiment that have possible batch effects detected- Returns:
- json reader response
-
loadQuantitationTypes
public Collection<QuantitationTypeValueObject> loadQuantitationTypes(Long eeId)
AJAX - for display in tables- Parameters:
eeId
- ee id- Returns:
- security-filtered set of value objects.
-
loadStatusSummaries
public Collection<ExpressionExperimentDetailsValueObject> loadStatusSummaries(Long taxonId, List<Long> ids, Integer limit, Integer filter, Boolean showPublic)
AJAX. Data summarizing the status of experiments.- Parameters:
taxonId
- can be nulllimit
- If >0, get the most recently updated N experiments, where N <= limit; or if < 0, get the least recently updated; if 0, or null, return all.filter
- if non-null, limit data sets to ones meeting criteria.showPublic
- return user's public datasets too- Returns:
- ee details vos
-
removePrimaryPublication
public String removePrimaryPublication(Long eeId)
Remove the primary publication for the given expression experiment (by id). The reference is not actually deleted from the system. AJAX- Parameters:
eeId
- ee id- Returns:
- string
-
searchExperimentsAndExperimentGroups
public List<SearchResultDisplayObject> searchExperimentsAndExperimentGroups(String query, Long taxonId)
AJAX (used by experimentAndExperimentGroupCombo.js)- Parameters:
taxonId
- if the search should not be limited by taxon, pass in nullquery
- query- Returns:
- Collection of SearchResultDisplayObjects
-
searchExpressionExperiments
public Collection<ExpressionExperimentValueObject> searchExpressionExperiments(String query)
AJAX (used by ExperimentCombo.js)- Parameters:
query
- query- Returns:
- Collection of expression experiment entity objects
-
showAllExpressionExperiments
@RequestMapping({"/showAllExpressionExperiments.html","/showAll"}) public ModelAndView showAllExpressionExperiments(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Show all experiments (optionally conditioned on either a taxon, a list of ids, or a platform)- Parameters:
request
- requestresponse
- response- Returns:
- model and view
-
showAllLinkSummaries
@RequestMapping({"/showAllExpressionExperimentLinkSummaries.html","/manage.html"}) public ModelAndView showAllLinkSummaries(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
showBioAssays
@RequestMapping({"/showBioAssaysFromExpressionExperiment.html","/bioAssays"}) public ModelAndView showBioAssays(@RequestParam("id") Long id)
-
showBioMaterials
@RequestMapping({"/showBioMaterialsFromExpressionExperiment.html","/bioMaterials"}) public ModelAndView showBioMaterials(@RequestParam("id") Long id)
-
showExpressionExperiment
@RequestMapping(value={"/showExpressionExperiment.html","/","/show"}, params="id") public ModelAndView showExpressionExperiment(@RequestParam("id") Long id)
-
showExpressionExperimentByShortName
@RequestMapping(value={"/showExpressionExperiment.html","/","/show"}, params="shortName") public ModelAndView showExpressionExperimentByShortName(@RequestParam("shortName") String shortName)
-
showSubSet
@RequestMapping({"/showExpressionExperimentSubSet.html","/showSubset"}) public ModelAndView showSubSet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
shows a list of BioAssays for an expression experiment subset- Parameters:
request
- requestresponse
- response- Returns:
- model and view
-
unmatchAllBioAssays
public void unmatchAllBioAssays(Long eeId)
Completely reset the pairing of bioassays to biomaterials, so they are no longer paired. New biomaterials are constructed where necessary; they retain the characteristics of the original. Experimental design might need to be redone after this operation. (AJAX)- Parameters:
eeId
- ee id
-
updateBasics
public ExpressionExperimentDetailsValueObject updateBasics(UpdateEEDetailsCommand command)
-
updatePubMed
public String updatePubMed(Long eeId, String pubmedId)
AJAX. Associate the given pubmedId with the given expression experiment.- Parameters:
eeId
- ee idpubmedId
- pubmed id- Returns:
- string
-
handleRequestInternal
@RequestMapping("/downloadExpressionExperimentList.html") public ModelAndView handleRequestInternal(javax.servlet.http.HttpServletRequest request)
-
-