Class PlatformsWebService

java.lang.Object
ubic.gemma.rest.PlatformsWebService

@Service @Path("/platforms") public class PlatformsWebService extends Object
RESTful interface for platforms.
Author:
tesarst
  • Field Details

    • TEXT_TAB_SEPARATED_VALUES_UTF8

      public static final String 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

      public static final String 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 legacy CompositeSequenceController.getGeneMappingSummary DWR 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, via hgTracks?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 (POST hgct_customText to hgCustom) 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 mappingSummary response carries blatResult.id values that are not all real BlatResult rows -- the AnnotationAssociation branch of getGeneMappingSummary synthesizes 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 .psl file 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, see PlatformsWebService.AnnotationFileType; defaults to standard, 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.md adds an opt-in cursor-mode branch parallel to step 1p (the /datasets/{dataset}/tickets endpoint). The legacy mode is preserved byte-for-byte for callers that do not supply ?cursor=.