Code Monkey home page Code Monkey logo

hpo-web's Introduction

Human Phenotype Ontology (HPO) Web App

The following guide provides the steps for an out-of-the-box setup for the Human Phenotype Ontology (HPO) Web application with minimum requirements for a local development environment.

Requirements

Setup

  • Clone the repo:

    JAX Github

      git clone [email protected]:TheJacksonLaboratory/hpo-web.git
    
  • Initialize the mysql database and load the HPO ontology data. Run the following command in the command window inside the hpo-web directory. This step will take approximate 3+ minutes to complete

      ./gradlew server:runCommand -Pargs="load-hpo-db"
      
      E.g. when complete the output in the command window should look like this:
      ...
      finished refreshing database duration: 0:03:49.391 time: Thu Jan 11 11:28:56 EST 2018
       
      BUILD SUCCESSFUL
      
      Note:
      If you desire to re-initialize the application and the database, execute the command again.
    
  • Build the application with a gradle task.

      ./gradlew build -DchromeHeadless=true
      
      E.g.
      ...
      :processTestResources
      :testClasses
      :test
      :check
      :build
       
      BUILD SUCCESSFUL
       
      Total time: 1 mins 29.306 secs
    
  • War creation with a gradle task.

    ./gradlew clean war -Dgrails.env=[test, gcp, production]>
     
    Will output a war to ./build/libs/
    

Usage

  • Run the hpo-web application. This step will launch the application in the local web container and make it available through the web browser

      ./gradlew bootRun
      * if you are looking to use the grails console provide argument `-Dgrails.console=true`
    
  • To open the application site launch the browser and go to

      http://<host>:8080/app/index.html
    
  • If client (Angular App) hot reload is desired open a new shell and execute

      ./gradlew buildClientWatch
    
  • Optionally to open the client (Angular app) via Cli

    • Change directory to hpo-web/src/main/client

      cd hpo-web/src/main/client  
      
    • Execute

      ng serve --open (will open application in the browser using port 4200)
      

Unit Testing

  • To execute the client (Angular app) unit tests, run

    ./gradlew clientTest
    
  • To execute backend and client unit tests, run

    ./gradlew test
    

Functional Testing

  • To execute functional testing with chrome browser, run

    ./gradlew integrationTest
    
  • To execute functional testing with chrome headless browser, run

    ./gradlew integrationTest -DchromeHeadless
    

hpo-web's People

Contributors

angular-cli avatar cmcnamara87 avatar francastell avatar iimpulse avatar kingmanzhang avatar matentzn avatar pnrobinson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hpo-web's Issues

Allow download of (page-specific) annotations as tsv

While the dumps have now been linked (I think), there still needs to be a .tsv download option provided at the level of disease pages and term pages. The downloads (at a minimum, but perhaps also the UI) should explicitly state the provenance of the associations, even if this is exclusively showing those we have curated ourselves.

Create a clean homepage with search front and center, additional info below

I find this visually a bit cluttered the words "Human Phenotype Ontology" appearing 3 times.
screen shot 2018-02-08 at 10 41 50 pm
Also, searching the corpus is most likely reason people come to the site so it should be promoted to homepage.

I suggest something more akin to what the homepage of OLS looks like. Strawman here.
screen shot 2018-02-09 at 12 04 08 am
Other ideas welcome; however, similar look feel to the eventual re-make of Monarch would be appreciated.

Add "search in all results" to autocomplete menu

To the top of the autocomplete results, add "Search for in all results" so that the user immediately understands that they're not constrained to just the options they see in dropdown. This "all results" option should be preselected; downstream effect would be not different from the current behavior of user just pressing enter without selecting anything from dropdown

Publication Integration

We would like to integrate HPO publications into zotero and access them via the rest api.

Hide alt-ids

I know, I started it, but retrospectively I would say, let's not show the users the alternative IDs, unless they really want to see it. So I suggest to make a click-able thingy next to the primary ID that shows the alt-ids.

Add a feedback button with link to github issues

Now that this repo is public, please add a link to the GitHub issues from the UI.
I suggest adding "Request a feature / report a bug" to the FAQ. From there link to the hpo-web or hpo depending on what kind of issue it is.

Various enhancements to association table

Consider the following:

  • Make the tab color the same as the column header row color (to clarify which tab is selected)
  • Move the "view all" to the bottom of the table
  • Increase font size of table title and headers (and the view all)
  • If you are only including causal loss-of-function genes, I would recommend using 'causal genes' rather than 'associated genes' in the column header.
  • Add linkouts to Monarch in final column
  • Use MONDO disease IDs

image

cc: @mellybelly

Feedback welcome.

Add summaries of diseases to disease page

Add a short summary of diseases near the top of the page and above the list of HPO terms.
For instance, for Marfan syndrome, we could get these texts from
https://rarediseases.info.nih.gov/diseases/6975/marfan-syndrome
https://medlineplus.gov/marfansyndrome.html
http://www.uniprot.org/diseases/DI-00699
We will not be able to get texts for all diseases from these sources, so the Web app should regard this as optional.
@jmcmurry @mellybelly Does biolink have anything like this? If not, do you recommend any particular site as the best place to get this data. It is not obvious whether we will need to webscrape and if there are legal restrictions on the NIH data sources.

Make this repo public

With the NAR paper coming up, we need this repo to be public so that folks can make tickets

Entire Hierarchy Page

Create a page to explore the entire HPO Hierarchy. Provide suggestion on the local term tree

Auto-Complete suggestion

Update highlighting technique to be more in line with proper ui standards and make the output full width of the search plus the filter, fix the filter width to be like amazon.

I feel like we should be updating all references to "Terms" -> "Phenotypes" for example the heading of the category in autocomplete.

image

@jmcmurry @pnrobinson @drseb

News not show correctly - or I don't understand

The file "news.json" has one item for June 2018 (new release), but the website is not showing this item, but another one (Easy-to-use and secure deep phenotyping).

I added a July-item, which is not shown so far (is it a cronjob or how does it work?)

Search for synonyms! Important!

The browser must support a search for synonyms, e.g. there should be a match when I search for Short nose or one of these:

  • Small nose
  • Nasal hypoplasia
  • Shortened nose
  • Short nose
  • Decreased length of nose
  • Hypoplastic nose

Front-Page Carousel Enhancement

It would be nice to enhance the "tools" section of the page with a rotating carousel, especially as more tools get added.

This can be a goal for hpo 2.0

News items links should be clickable

Users always have to click on "View All News" to actually see the news. It would be cool if the items like "New HPO Annotation File Format" could be clickable.

LOINC Integration

  • Create endpoint for getting LOINC information based on search.

  • Create a controller that links the to the endpoint.

  • Create a service (class) that will either query the db or get its information from an in memory bean and have it get called from the controller

  • Create a view ( json blueprint ) for the controller to return

@pnrobinson Here are some basic steps to get the LOINC code information to the public site. I believe it would be in Aaron's best interest to implement these step to get to learn rest-apis.

Please let me know if this makes sense.

Tool tip for hierarchy

Put an INFO symbol near tree hierarchy and explain that we are showing only an excerpt of the entire HPO

JanusGraph Migration

Migrate existing relational schema to a standalone implementation of JanusGraph using Tinkerpop/Gremlin

Navbar: add main actions, park others, promote search

I suggest:

  • Picking the three actions you most want the user to do, and make them main items on navbar. For instance, like so:

screen shot 2018-02-08 at 11 18 38 pm

  • Demoting "extract terms from clinical text." to a submenu under "other tools" [text mining can still be part of the diagnostic workflow]. I don't feel strongly about this specific item so much as pulling these main items into view.
  • In all pages except the home page, promoting search to the navbar ; for instance, like so.

screen shot 2018-02-08 at 11 05 38 pm

I'm not sure what is meant by "explore research data"; is this meant to link to Monarch? Please clarify.

ontology update - october

Update the ontology for an october release it's been a few months.

This involves deployment as well.

Ensemble gene ID

Would it possible to add Ensemble Gene ID's mapping in the response of the API ?

thanks

Davide

Local neighborhood is not clickable for me in Chrome on Mac OSX

screen shot 2018-02-09 at 12 29 16 am

I would have expected to be able to click to navigate between terms, but for some reason can not; I'm not sure if this has simply not yet been implemented yet?

Also, I can't find, offhand, a term with multiple parentage, so am curious to know how this is rendered in the neighborhood view.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.