Class PlatformsWebService
- Author:
- tesarst
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumWhich of the three annotation-file flavours written byArrayDesignAnnotationService.create(ArrayDesign, Boolean, boolean)to serve. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetBlacklistedPlatforms(FilterArg<ArrayDesign> filter, SortArg<ArrayDesign> sort, OffsetArg offset, LimitArg limit, CursorArg cursorArg) getNumberOfPlatforms(FilterArg<ArrayDesign> filter) jakarta.ws.rs.core.ResponsegetPlatformAnnotations(PlatformArg<?> platformArg, String typeArg, Boolean download, Boolean force) Retrieves the annotation file for the given platform.getPlatformDatasets(PlatformArg<?> platformArg, OffsetArg offset, LimitArg limit, CursorArg cursorArg) Retrieves experiments in the given platform.getPlatformElement(PlatformArg<?> platformArg, CompositeSequenceArrayArg probesArg, OffsetArg offset, LimitArg limit, CursorArg cursorArg, boolean withSequence, boolean withGenes) Retrieves composite sequences (elements) of the given platform.getPlatformElementGenes(PlatformArg<?> platformArg, CompositeSequenceArg<?> probeArg, OffsetArg offset, LimitArg limit, CursorArg cursorArg) Retrieves the genes on the given platform element.getPlatformElementMappingSummary(PlatformArg<?> platformArg, CompositeSequenceArg<?> probeArg) Retrieves the per-probe gene-mapping summary (BLAT alignments + biological-sequence metadata + supported genes) for a single probe on a given platform.jakarta.ws.rs.core.ResponsegetPlatformElementPslTrack(PlatformArg<?> platformArg, CompositeSequenceArg<?> probeArg, Boolean download) Retrieves the BLAT alignments of a single probe as a UCSC Genome Browser custom track, in PSL format.getPlatformElements(PlatformArg<?> platformArg, OffsetArg offset, LimitArg limit, CursorArg cursorArg, boolean withSequence, boolean withGenes, QueryArg geneQuery, FilterArg<CompositeSequence> filter) Retrieves the composite sequences (elements) for the given platform.getPlatforms(FilterArg<ArrayDesign> filter, OffsetArg offset, LimitArg limit, SortArg<ArrayDesign> sort, CursorArg cursorArg, boolean withGeneCounts) getPlatformsByIds(PlatformArrayArg platformsArg, FilterArg<ArrayDesign> filter, OffsetArg offset, LimitArg limit, SortArg<ArrayDesign> sort, CursorArg cursorArg, boolean withGeneCounts) Retrieves all datasets matching the given identifiers.getPlatformTickets(PlatformArg<?> platformArg, CursorArg cursorArg, LimitArg limitArg) Retrieves the open curation tickets for a given platform.
-
Field Details
-
TEXT_TAB_SEPARATED_VALUES_UTF8
- See Also:
-
TEXT_TAB_SEPARATED_VALUES_UTF8_TYPE
public static final jakarta.ws.rs.core.MediaType TEXT_TAB_SEPARATED_VALUES_UTF8_TYPE -
TEXT_PLAIN_UTF8
- See Also:
-
TEXT_PLAIN_UTF8_TYPE
public static final jakarta.ws.rs.core.MediaType TEXT_PLAIN_UTF8_TYPE
-
-
Constructor Details
-
PlatformsWebService
public PlatformsWebService()
-
-
Method Details
-
getPlatforms
@GET @Produces("application/json") public Object getPlatforms(@QueryParam("filter") @DefaultValue("") FilterArg<ArrayDesign> filter, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("sort") @DefaultValue("+id") SortArg<ArrayDesign> sort, @QueryParam("cursor") CursorArg cursorArg, @QueryParam("withGeneCounts") @DefaultValue("false") boolean withGeneCounts) -
getNumberOfPlatforms
@GET @Path("/count") @Produces("application/json") public ResponseDataObject<Long> getNumberOfPlatforms(@QueryParam("filter") @DefaultValue("") FilterArg<ArrayDesign> filter) -
getPlatformsByIds
@GET @Path("/{platform}") @Produces("application/json") public Object getPlatformsByIds(@PathParam("platform") PlatformArrayArg platformsArg, @QueryParam("filter") @DefaultValue("") FilterArg<ArrayDesign> filter, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("sort") @DefaultValue("+id") SortArg<ArrayDesign> sort, @QueryParam("cursor") CursorArg cursorArg, @QueryParam("withGeneCounts") @DefaultValue("false") boolean withGeneCounts) Retrieves all datasets matching the given identifiers.- Parameters:
platformsArg- a list of identifiers, separated by commas (','). Identifiers can either be the ExpressionExperiment ID or its short name (e.g. GSE1234). Retrieval by ID is more efficient.Only datasets that user has access to will be available.
Do not combine different identifiers in one query.
-
getBlacklistedPlatforms
@GET @Path("/blacklisted") @Produces("application/json") @PreAuthorize("hasAuthority('GROUP_CURATOR')") public Object getBlacklistedPlatforms(@QueryParam("filter") @DefaultValue("") FilterArg<ArrayDesign> filter, @QueryParam("sort") @DefaultValue("+id") SortArg<ArrayDesign> sort, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("cursor") CursorArg cursorArg) -
getPlatformDatasets
@GET @Path("/{platform}/datasets") @Produces("application/json") public Object getPlatformDatasets(@PathParam("platform") PlatformArg<?> platformArg, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("cursor") CursorArg cursorArg) Retrieves experiments in the given platform.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.offset- optional parameter (defaults to 0) skips the specified amount of datasets when retrieving them from the database.limit- optional parameter (defaults to 20) limits the result to specified amount of datasets. Use 0
-
getPlatformElements
@GET @Path("/{platform}/elements") @Produces("application/json") public Object getPlatformElements(@PathParam("platform") PlatformArg<?> platformArg, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("cursor") CursorArg cursorArg, @QueryParam("withSequence") @DefaultValue("false") boolean withSequence, @QueryParam("withGenes") @DefaultValue("false") boolean withGenes, @QueryParam("gene") QueryArg geneQuery, @QueryParam("filter") @DefaultValue("") FilterArg<CompositeSequence> filter) Retrieves the composite sequences (elements) for the given platform.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.offset- optional parameter (defaults to 0) skips the specified amount of datasets when retrieving them from the database.limit- optional parameter (defaults to 20) limits the result to specified amount of datasets. Use 0
-
getPlatformElement
@GET @Path("/{platform}/elements/{probes}") @Produces("application/json") public Object getPlatformElement(@PathParam("platform") PlatformArg<?> platformArg, @PathParam("probes") CompositeSequenceArrayArg probesArg, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("cursor") CursorArg cursorArg, @QueryParam("withSequence") @DefaultValue("false") boolean withSequence, @QueryParam("withGenes") @DefaultValue("false") boolean withGenes) Retrieves composite sequences (elements) of the given platform.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.probesArg- a list of identifiers, separated by commas (','). Identifiers can either be the CompositeSequence ID or its name (e.g. AFFX_Rat_beta-actin_M_at).Only elements on platforms that user has access to will be available.
Do not combine different identifiers in one query.
-
getPlatformElementGenes
@GET @Path("/{platform}/elements/{probe}/genes") @Produces("application/json") public Object getPlatformElementGenes(@PathParam("platform") PlatformArg<?> platformArg, @PathParam("probe") CompositeSequenceArg<?> probeArg, @QueryParam("offset") @DefaultValue("0") OffsetArg offset, @QueryParam("limit") @DefaultValue("20") LimitArg limit, @QueryParam("cursor") CursorArg cursorArg) Retrieves the genes on the given platform element.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.probeArg- the platform element for which the genes should be retrieved, by ID or by name — the ID is the addressing form; a name works when it is well-formed for a path segment. 🛑 A name containing a forward slash cannot be addressed this way at all — the reverse proxy 404s the encoded form and Tomcat 400s it, so it never reaches the application, and lifting that is a deployment change nobody wants on a public proxy. Every other character is the client's to percent-encode. Resolve such a name to its ID through the query string, where a slash is legal:GET /platforms/{platform}/elements?filter=name = AFFX-HUMISGF3A/M97935_MA_at.offset- optional parameter (defaults to 0) skips the specified amount of datasets when retrieving them from the database.limit- optional parameter (defaults to 20) limits the result to specified amount of datasets. Use 0 for no limit.
-
getPlatformElementMappingSummary
@GET @Path("/{platform}/elements/{probe}/mappingSummary") @Produces("application/json") public ResponseDataObject<CompositeSequenceValueObject> getPlatformElementMappingSummary(@PathParam("platform") PlatformArg<?> platformArg, @PathParam("probe") CompositeSequenceArg<?> probeArg) Retrieves the per-probe gene-mapping summary (BLAT alignments + biological-sequence metadata + supported genes) for a single probe on a given platform. Replaces the legacyCompositeSequenceController.getGeneMappingSummaryDWR call used by the gemma-web gene-page Elements drill-down.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.probeArg- the name or ID of the platform element for which the mapping summary should be retrieved. the ID is the addressing form; a name works when it is well-formed for a path segment. 🛑 A name containing a forward slash cannot be addressed this way at all — the reverse proxy 404s the encoded form and Tomcat 400s it, so it never reaches the application, and lifting that is a deployment change nobody wants on a public proxy. Every other character is the client's to percent-encode. Resolve such a name to its ID through the query string, where a slash is legal:GET /platforms/{platform}/elements?filter=name = AFFX-HUMISGF3A/M97935_MA_at.
-
getPlatformElementPslTrack
@GET @Path("/{platform}/elements/{probe}/pslTrack") @Produces("text/plain; charset=UTF-8") public jakarta.ws.rs.core.Response getPlatformElementPslTrack(@PathParam("platform") PlatformArg<?> platformArg, @PathParam("probe") CompositeSequenceArg<?> probeArg, @QueryParam("download") @DefaultValue("false") Boolean download) Retrieves the BLAT alignments of a single probe as a UCSC Genome Browser custom track, in PSL format.Replaces the legacy gemma-web
BlatResultTrackController(blatTrack.html?id=), which served one alignment at a time and was meant to be fetched BY UCSC, viahgTracks?hgt.customText=<gemma url>. That round trip is not available to us: the deployment does not answer bots, so UCSC's fetcher cannot retrieve the URL. The 2.0 browser therefore reads this text itself and submits the CONTENT to UCSC (POSThgct_customTexttohgCustom) rather than handing UCSC a link back to us.The track is keyed on the probe rather than on a BLAT result id on purpose. The
mappingSummaryresponse carriesblatResult.idvalues that are not all realBlatResultrows -- theAnnotationAssociationbranch ofgetGeneMappingSummarysynthesizes a value object holding the BIOSEQUENCE id -- so a client-supplied id cannot be trusted to address an alignment. Deriving the alignments here from the probe's biological characteristic avoids that ambiguity entirely.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.probeArg- the name or ID of the platform element whose alignments should be rendered. the ID is the addressing form; a name works when it is well-formed for a path segment. 🛑 A name containing a forward slash cannot be addressed this way at all — the reverse proxy 404s the encoded form and Tomcat 400s it, so it never reaches the application, and lifting that is a deployment change nobody wants on a public proxy. Every other character is the client's to percent-encode. Resolve such a name to its ID through the query string, where a slash is legal:GET /platforms/{platform}/elements?filter=name = AFFX-HUMISGF3A/M97935_MA_at.download- when true, serve with an attachment disposition so a browser saves it as a.pslfile instead of rendering it inline.
-
getPlatformAnnotations
@GZIP(mediaTypes="text/tab-separated-values; charset=UTF-8", alreadyCompressed=true) @GET @Path("/{platform}/annotations") @Produces("text/tab-separated-values; charset=UTF-8") public jakarta.ws.rs.core.Response getPlatformAnnotations(@PathParam("platform") PlatformArg<?> platformArg, @QueryParam("type") @DefaultValue("standard") String typeArg, @QueryParam("download") @DefaultValue("false") Boolean download, @QueryParam("force") @DefaultValue("false") Boolean force) Retrieves the annotation file for the given platform.- Parameters:
platformArg- can either be the ArrayDesign ID or its short name (e.g. "GPL1355" ). Retrieval by ID is more efficient. Only platforms that user has access to will be available.typeArg- which annotation-file flavour to serve, seePlatformsWebService.AnnotationFileType; defaults tostandard, which is what this endpoint served unconditionally before.- Returns:
- the content of the annotation file of the given platform.
-
getPlatformTickets
@GET @Path("/{platform}/tickets") @Produces("application/json") public Object getPlatformTickets(@PathParam("platform") PlatformArg<?> platformArg, @QueryParam("cursor") CursorArg cursorArg, @QueryParam("limit") @DefaultValue("20") LimitArg limitArg) Retrieves the open curation tickets for a given platform.Step 1s of
CURSOR_PAGINATION_STEP1_PLAN.mdadds an opt-in cursor-mode branch parallel to step 1p (the/datasets/{dataset}/ticketsendpoint). The legacy mode is preserved byte-for-byte for callers that do not supply?cursor=.
-