Skip to content

Entity Viewer Sidebar Payload

Manoj Pandian Sakthivel edited this page Apr 7, 2020 · 19 revisions

Open questions:

  • How do we retrieve homeologues?
  • How do we retrieve orthologues?
  • How do we retrieve alternative_alleles?
  • How are we going to handle all the external references that doesn't exist anymore?
  • How are we going to build the working URI for external references? ( The current site does this but most of the links don't work anymore)

Previous discussions:

  • How do we specifically retrieve all the external references from the metadata?

    • External references will either part of the metadata or be a thing on its own. We are still not very sure whether it will have to be handled separately for it to have it's own type.
  • How do we get the display name for biotypes?

    • One solution that was discussed is to make the GraphQL server retrieve the displayName by sending a request to Sequence Ontology lookup while preparing the response for the client
  • What are the other attributes? Do we need to display them all?

    • The will be a lot of junk in the other attributes section if we need to display them all. Instead, we need to make a selected list of all the high-level attributes and display those instead.

Current GraphQL Schema:

type Assembly {
  id: String!
  species: Species!
}

type Species {
  scientific_name: String!
  name: String! [MISSING]
  strains: [Strain!]
}

type Allele = {
    allele_name: String!,
    stable_id: String!
}

type Homeologue = {
    type: string,
    stable_id: string
}

type Strain = {
    strain_name: string,
    stable_id: string
}

type Attribute = {
    description: String!
    displayName: String!
    code: String!
}

type Source {
  name: String!
  uri: String // not all sources will have urls
}

type Metadata {
  key: String! // e.g. "external_reference"
  value: String! // e.g. "ENSG00000139618"
  description: String
  source_uri: String // e.g. url to entity in Expression Atlas
  source: Source! // e.g. Expresion Atlas object
}

// reference to given entity in other source
// or use Metadata ?
type ExternalReference {
  source: Source!
  value: String!
  source_uri: String
}

type Attribute {
    code:  String! // protein coding
    label: String! // Protein Coding
}

type Slice {
  region: Region!
}

type Region {
  name: String!
  strand: Strand
  assembly: String!
}

type SequenceOntologyTerm: {
    id: String!
    code: String!
    display_name: String!
}

type Transcript {
    stable_id: String!
    metadata: [Metadata!]
}

type Publication {
  title: String
  authors: String[]
  source: Source
  source_url: String
};

type OtherAssembly {
    assembly: Assembly
    stable_id: String!
}

type Gene { 
    symbol: String!
    so_term: SequenceOntologyTerm
    name: String!
    alternative_symbols: [String!]
    function: {
      value: String!,
      source_url: String!,
      source: Source
    }
    external_references: [ExternalReference]
    publications: [Publications]
    other_assemblies: [OtherAssembly]
    homeologues: [Homeologue]
    relationships: {
        alternative_alleles: [],
        homeologues: []

    }
    transcripts: [Transcript]
}