specification icon indicating copy to clipboard operation
specification copied to clipboard

Extend the ELIXIR Beacon Network UI to support multiple Beacon

Open juhtornr opened this issue 7 years ago • 12 comments

juhtornr avatar Nov 19 '18 15:11 juhtornr

Progenetix Beacon+ was added to the aggregator that https://beacon-ui-beacon.rahtiapp.fi/#!/view queries

teemukataja avatar Dec 11 '18 08:12 teemukataja

Great! Example:

  • https://beacon.progenetix.org/beaconplus-server/beaconresponse.cgi?datasetIds=&referenceName=17&assemblyId=GRCh38&start=7577121&referenceBases=G&alternateBases=A

... works, but some errors in the response, info have to be ironed out.

mbaudis avatar Dec 11 '18 09:12 mbaudis

Great! Example:

  • https://beacon.progenetix.org/beaconplus-server/beaconresponse.cgi?datasetIds=&referenceName=17&assemblyId=GRCh38&start=7577121&referenceBases=G&alternateBases=A

... works, but some errors in the response, info have to be ironed out.

Here is how it looks at our UI

teemukataja avatar Dec 11 '18 10:12 teemukataja

Why isn't the alleleRequest being interpolated? Is returned by the server:

{
  "beaconId": "progenetix-beacon",
  "alleleRequest": {
    "start": "7577121",
    "referenceName": "17",
    "referenceBases": "G",
    "alternateBases": "A"
  },
  "exists": true,
  "datasetAlleleResponses": [
.....
}

mbaudis avatar Dec 11 '18 11:12 mbaudis

Because the table displays response data, not request data. The table was devised from a need for wildcard differentiation, for example:

image

However, we will take your feedback into account, and make a fallback method to show bases from the request. It'll be added in the next update.

image

Related issue: https://github.com/ga4gh-beacon/specification/issues/223 Related PR: https://github.com/ga4gh-beacon/specification/pull/227

teemukataja avatar Dec 11 '18 11:12 teemukataja

O.k.

However, the problem w/ directly delivering the variants in the response is that it easily gets out of hand, especially for wildcard range matches. While this may be partially an engineering problem, it will lead to rather unstable Beacon conditions; our small-dataset example query over the EIF4A1 gene already delivers 61 distinct variants and makes Cloudflare unhappy ... No such problem w/ retrieving the variants in a 2nd pass & processing them w/ a different tool.

So my strong recommendation is to de-couple the Beacon response & the delivery of additional info, through a handover mechanism. One easily can achieve the functionality w/ some asynchronous call I guess (Implementing a direct variant response is in principle trivial - see below - but it substantiated my dislike ...).

"variantResponses": [
  {
    "alternateBases": "A",
    "count": 21,
    "referenceName": "17",
    "referenceBases": "G",
    "start": 7577121
  },
  {
    "alternateBases": "A",
    "start": 7574003,
    "count": 7,
    "referenceBases": "G",
    "referenceName": "17"
  },
  {
    "alternateBases": "A",
    "start": 7577539,
    "count": 4,
    "referenceBases": "G",
    "referenceName": "17"
  },
...

mbaudis avatar Dec 11 '18 13:12 mbaudis

@teemukataja @juhtornr ... so if you want to build an interface which demonstrates/provides the functionality you have shown (and which is certainly nice for different use cases), I suggest that you

  • either add your specific response to the info attribute & retrieve it from there, or
  • (better) find a way to do this using handover (i.e. your front end can do a 2nd call to fetch the variants when receiving a corresponding value in the handover part of the message)

There are many use cases where a search would lead to a humongous amount of variants; so deparsing them as default cannot be a good idea (if I query our datasets for all MYC duplications ...).

mbaudis avatar Dec 11 '18 13:12 mbaudis

@mbaudis thanks for the suggestions - currently we are not using info key to add specific keys as the beacon specification does not set additionalProperties: false so in practice additional keys are ok - this is as you mentioned for demonstration purposes.

I do like the idea of using handover, however I might be missing the use of ontologies in the handover( i have read the https://github.com/ga4gh-beacon/specification/issues/114 and corresponding PR) - is their use to annotate (provide the vocabulary) of a specific handover type (or "further action"); in RDF terms the datasetAlleleResponse is the Subject, handover the predicate and the handover Type the Object ?

blankdots avatar Dec 11 '18 19:12 blankdots

@blankdots Regarding ontologies: See my last notes on https://github.com/ga4gh-beacon/specification/pull/230. The example in the PR is a bit misleading so far, since it doesn't demonstrate a "technical/data" ontology (like the "id" : "http://www.ebi.ac.uk/efo/EFO_0004157", "label" : "BAM format" in my comment). So, this is the way to go; also adhering to SchemaBlocks structure. Still: The use of an OntologyTerm object is a bit forward looking; and I'm all in for documenting the helpful abuse of the structure with "id" : "CUSTOM" or such for making your own ideas work (but don't tell to The Internet).

mbaudis avatar Dec 11 '18 20:12 mbaudis

This issue should be in the repo where the UI code is. Can you @teemukataja take a look if this issue could be moved?

juhtornr avatar Dec 18 '18 15:12 juhtornr

This issue should be in the repo where the UI code is. Can you @teemukataja take a look if this issue could be moved?

@juhtornr one has to be admin on both repositories to move issues. You are admin at https://github.com/CSCfi/beacon-openshift so you can do it.

teemukataja avatar Dec 19 '18 10:12 teemukataja

ELIXIR Sweden (NBIS) beacon was added to the aggregator, making total number of beacons 3.

teemukataja avatar Dec 19 '18 10:12 teemukataja