Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: opencb/iva
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.0.0-rc3
Choose a base ref
...
head repository: opencb/iva
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: develop
Choose a head ref
Loading
Showing with 33,764 additions and 3,065 deletions.
  1. +3 −0 .gitbook.yaml
  2. +31 −0 .github/ISSUE_TEMPLATE/bug_report.md
  3. +20 −0 .github/ISSUE_TEMPLATE/feature_request.md
  4. +57 −0 .github/workflows/docker.yml
  5. +43 −0 .github/workflows/release.yml
  6. +4 −0 .gitignore
  7. +33 −13 Jenkinsfile
  8. +43 −40 README.md
  9. +29 −0 bs-config.js
  10. +0 −98 build-vendors.js
  11. +13 −0 cypress.json
  12. +61 −0 cypress/credentials.bat
  13. +19 −0 cypress/credentials.sh
  14. +117 −0 cypress/e2e-runner.bat
  15. +73 −0 cypress/e2e-runner.sh
  16. +41 −0 cypress/integration/001-header-bar-pre-login.spec.js
  17. +56 −0 cypress/integration/002-login.js
  18. +81 −0 cypress/integration/003-header-bar-post-login.spec.js
  19. +346 −0 cypress/integration/004-opencga-variant-browser.spec.js
  20. +144 −0 cypress/integration/005-opencga-case-portal.spec.js
  21. +127 −0 cypress/integration/006-opencga-case-interpreter.spec.js
  22. +88 −0 cypress/integration/007-opencga-sample-browser.spec.js
  23. +108 −0 cypress/integration/008-opencga-individual-browser.spec.js
  24. +118 −0 cypress/integration/009-opencga-family-browser.spec.js
  25. +122 −0 cypress/integration/010-opencga-file-browser.spec.js
  26. +78 −0 cypress/integration/011-opencga-cohort-browser.spec.js
  27. +81 −0 cypress/integration/012-opencga-jobs-browser.spec.js
  28. +51 −0 cypress/integration/013-welcome.spec.js
  29. +227 −0 cypress/integration/014-rga-browser.spec.js
  30. +41 −0 cypress/integration/OPENCGA-924.spec.js
  31. +5 −0 cypress/plugins/constants.js
  32. +21 −0 cypress/plugins/index.js
  33. +230 −0 cypress/plugins/utils.js
  34. +23 −0 dependency-graph.sh
  35. +0 −20 docker/Dockerfile
  36. +151 −0 docker/docker-build.py
  37. +25 −0 docker/iva-app/Dockerfile
  38. +26 −0 docker/iva-app/entrypoint.sh
  39. BIN docs/.gitbook/assets/image (10).png
  40. BIN docs/.gitbook/assets/image (11).png
  41. BIN docs/.gitbook/assets/image (12).png
  42. BIN docs/.gitbook/assets/image (2).png
  43. BIN docs/.gitbook/assets/image (5) (1).png
  44. BIN docs/.gitbook/assets/image (5) (2).png
  45. BIN docs/.gitbook/assets/image (5).png
  46. BIN docs/.gitbook/assets/image (6).png
  47. BIN docs/.gitbook/assets/image (8).png
  48. BIN docs/.gitbook/assets/image (9) (1).png
  49. BIN docs/.gitbook/assets/image (9) (2).png
  50. BIN docs/.gitbook/assets/image (9) (3).png
  51. BIN docs/.gitbook/assets/image (9).png
  52. +2 −0 docs/.github/README.md
  53. +2 −0 docs/.github/issue_template/README.md
  54. +25 −0 docs/.github/issue_template/bug_report.md
  55. +18 −0 docs/.github/issue_template/feature_request.md
  56. +35 −0 docs/README.md
  57. +40 −0 docs/SUMMARY.md
  58. +2 −0 docs/about/faq.md
  59. +2 −0 docs/about/gallery.md
  60. +55 −0 docs/about/release-notes.md
  61. +2 −0 docs/about/roadmap.md
  62. +2 −0 docs/about/source-code-and-issues.md
  63. +2 −0 docs/about/team.md
  64. +2 −0 docs/about/who-is-using-iva.md
  65. +2 −0 docs/admin-guide/admin-dashboard/README.md
  66. +2 −0 docs/admin-guide/admin-dashboard/study-admin.md
  67. +2 −0 docs/admin-guide/configuration.md
  68. +2 −0 docs/admin-guide/developers/README.md
  69. +2 −0 docs/admin-guide/developers/libraries.md
  70. +30 −0 docs/admin-guide/installation/README.md
  71. +12 −0 docs/admin-guide/installation/docker.md
  72. +109 −0 docs/admin-guide/installation/how-to-build-from-source-code.md
  73. +2 −0 docs/developer/component-architecture.md
  74. +55 −0 docs/developer/release-notes.md
  75. +2 −0 docs/developer/roadmap.md
  76. +2 −0 docs/developer/source-code-and-issues.md
  77. +2 −0 docs/developer/team.md
  78. +2 −0 docs/developers/README.md
  79. +2 −0 docs/developers/component-architecture.md
  80. +102 −0 docs/developers/how-to-build-from-source-code.md
  81. +2 −0 docs/developers/libraries.md
  82. +2 −0 docs/faq.md
  83. +2 −0 docs/gallery.md
  84. +30 −0 docs/installation/README.md
  85. +2 −0 docs/installation/configuration.md
  86. +12 −0 docs/installation/docker.md
  87. +2 −0 docs/user-manual/admin-dashboard/README.md
  88. +2 −0 docs/user-manual/admin-dashboard/study-admin.md
  89. +2 −0 docs/user-manual/catalog-browser.md
  90. +6 −0 docs/user-manual/clinical-interpreter/README.md
  91. +2 −0 docs/user-manual/clinical-interpreter/case-interpreter.md
  92. +16 −0 docs/user-manual/introduction.md
  93. +35 −0 docs/user-manual/iva-general-usage/README.md
  94. +2 −0 docs/user-manual/iva-general-usage/login.md
  95. +2 −0 docs/user-manual/variant-analysis-iva/README.md
  96. +35 −0 docs/user-manual/variant-analysis-iva/variant-browser.md
  97. +16 −0 esinstall.mjs
  98. BIN favicon.ico
  99. +1 −1 lib/jsorolla
  100. +12 −0 live-server.js
  101. +1 −1 nightwatch.conf.js
  102. +21,227 −0 package-lock.json
  103. +94 −26 package.json
  104. +0 −27 post-replace-iva.js
  105. +19 −0 rev-info.js
  106. +0 −66 src/about.html
  107. +47 −0 src/about.js
  108. +1 −0 src/assets.js
  109. +171 −0 src/category-page.js
  110. +60 −0 src/client_test.html
  111. +495 −558 src/conf/config.js
  112. +0 −1 src/conf/icd10.js
  113. +3 −0 src/conf/opencga-clinical-analysis-browser.config.js
  114. +3 −0 src/conf/opencga-clinical-analysis-view.settings.js
  115. +33 −0 src/conf/opencga-clinical-review-cases.settings.js
  116. +3 −0 src/conf/opencga-cohort-browser.config.js
  117. +3 −0 src/conf/opencga-family-browser.config.js
  118. +3 −0 src/conf/opencga-file-browser.config.js
  119. +3 −0 src/conf/opencga-individual-browser.config.js
  120. +3 −0 src/conf/opencga-job-browser.config.js
  121. +3 −0 src/conf/opencga-sample-browser.config.js
  122. +3 −0 src/conf/opencga-variant-browser.config.js
  123. +3 −0 src/conf/opencga-variant-browser.settings.js
  124. +486 −0 src/conf/opencga-variant-constants.js
  125. +0 −1 src/conf/panels.js
  126. +172 −184 src/conf/tools.js
  127. +62 −0 src/conf/variant-interpreter-browser-rd.settings.js
  128. +51 −0 src/conf/variant-interpreter.config.js
  129. +0 −66 src/contact.html
  130. +47 −0 src/contact.js
  131. +0 −66 src/faq.html
  132. +47 −0 src/faq.js
  133. BIN src/favicon.ico
  134. +169 −0 src/getting-started.js
  135. BIN src/img/Genomics-England-logo-2015-white.png
  136. BIN src/img/Genomics-England-logo-2015.png
  137. +18 −0 src/img/iva-white.svg
  138. +1 −0 src/img/iva.svg
  139. +1 −0 src/img/iva2.svg
  140. BIN src/img/iva_logo.png
  141. +25 −0 src/img/tools/icons/aggregation.svg
  142. +16 −0 src/img/tools/icons/aggregation2.svg
  143. +15 −0 src/img/tools/icons/alignment.svg
  144. +317 −0 src/img/tools/icons/beacon.svg
  145. +28 −0 src/img/tools/icons/file_explorer.svg
  146. +19 −0 src/img/tools/icons/gene-view.svg
  147. +33 −0 src/img/tools/icons/genome_browser.svg
  148. +21 −0 src/img/tools/icons/interpretation_portal.svg
  149. +26 −0 src/img/tools/icons/variant_browser.svg
  150. BIN src/img/tools/thumbnails/beacon.png
  151. BIN src/img/tools/thumbnails/interpretation_portal.png
  152. BIN src/img/tools/thumbnails/variant-browser.png
  153. BIN src/img/tools/thumbnails/variant-browser_aggregation.png
  154. +79 −105 src/index.html
  155. +0 −1,304 src/iva-app.html
  156. +1,762 −0 src/iva-app.js
  157. +234 −0 src/iva-profile.js
  158. +64 −0 src/iva-settings.js
  159. +0 −99 src/jso-styles.html
  160. +356 −0 src/loading-bar.js
  161. +85 −0 src/opencga-breadcrumb.js
  162. +0 −144 src/prod/index.html
  163. +91 −0 src/rollup.html
  164. +2,623 −0 src/styles/global.css
  165. +141 −0 src/styles/magic-check.css
  166. +493 −0 src/styles/toggle-switch.css
  167. +48 −0 src/swal.html
  168. +0 −66 src/terms.html
  169. +47 −0 src/terms.js
  170. +0 −178 src/welcome.html
  171. +283 −0 src/welcome.js
  172. +1 −1 test/e2e/analysis-test.js
  173. +287 −0 webpack.config.js
3 changes: 3 additions & 0 deletions .gitbook.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

root: ./docs/

31 changes: 31 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
57 changes: 57 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: CI

on:
push:
branches-ignore:
- '**'
#branches: [ develop ]

jobs:
build:
name: Install deps and Build
runs-on: ubuntu-18.04
steps:
## Install deps and build IVA
- uses: actions/checkout@v2
- name: IVA Npm install and Prepare
run: |
npm install bower
npm install && npm run prepare
- name: Jsorolla Npm install
run: |
git submodule update --init
cd lib/jsorolla
npm install bower
npm install
- name: Npm build
run: npm run build
- name: LS
run: ls
- name: Upload webpack artifact
uses: actions/upload-artifact@v2
with:
name: webpack-artifact
path: build
retention-days: 1

deploy:
name: Publish Docker image in DockerHub repository
runs-on: ubuntu-18.04
needs: build
steps:
## Publish docker image to DockerHub
- uses: actions/checkout@v2
- name: Download webpack artifact
uses: actions/download-artifact@v2
with:
name: webpack-artifact
path: build
- name: Read package.json
uses: "tyankatsu0105/read-package-version-actions@v1"
id: package-version
- name: Show version number
run: echo "Version is ${{ steps.package-version.outputs.version }}"
- name: Login to dockerhub
run: echo "${{ secrets.DOCKER_HUB_PASSWORD }}" | docker login --username ${{ secrets.DOCKER_HUB_USER }} --password-stdin
- name: Build and Publish Docker image
run: python3 ./docker/docker-build.py push --images app --tag ${{ steps.package-version.outputs.version }}
43 changes: 43 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: "release"

on:
push:
branches-ignore:
- '**'
#branches: [ master ]

jobs:
build:
name: App build
runs-on: ubuntu-18.04
steps:
## Install deps and build IVA
- uses: actions/checkout@v2
- name: IVA Npm install and Prepare
run: |
npm install bower
npm install && npm run prepare
- name: Jsorolla Npm install
run: |
git submodule update --init
cd lib/jsorolla
npm install bower
npm install
- name: Npm build
run: npm run build
- name: Read package.json
uses: "tyankatsu0105/read-package-version-actions@v1"
id: package-version
- name: Show version number
run: |
echo "Version is ${{ steps.package-version.outputs.version }}"
- name: Create release
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
draft: true
automatic_release_tag: "v${{ steps.package-version.outputs.version }}"
title: "v${{ steps.package-version.outputs.version }}"
prerelease: false
files: |
iva-${{ steps.package-version.outputs.version }}.tar.gz
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@

build
dist
bower_components
node_modules
web_modules
private
web_modules
iva-*.tar.gz

# General
*.jar
46 changes: 33 additions & 13 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,28 +1,48 @@
pipeline {
agent any
stages {
stage ('Build') {
stage ('Build source code') {
options {
timeout(time: 5, unit: 'MINUTES')
}
steps {
sh 'cd lib/jsorolla && npm install && cd ../.. && npm install --unsafe-perm && npm run build'
sh 'npm install --unsafe-perm && npm run build'
}
}
stage ('Docker Build and Push') {
stage ('Build and Push Stable Docker') {
options {
timeout(time: 25, unit: 'MINUTES')
}
steps {
script {
def tag = sh(returnStdout: true, script: "git tag --sort version:refname | tail -1").trim()
sh "docker build -t opencb/iva:'${tag}' -f docker/Dockerfile ."
withDockerRegistry([ credentialsId: "wasim-docker-hub", url: "" ]) {
sh "docker push opencb/iva:'${tag}'"
}
}
when {
branch "master"
}
steps {
script {
def tag = sh(returnStdout: true, script: "node -p \"require('./package.json').version\"").trim()
sh "docker build -t opencb/iva:'${tag}' -f docker/Dockerfile ."
withDockerRegistry([ credentialsId: "wasim-docker-hub", url: "" ]) {
sh "docker push opencb/iva:'${tag}'"
}
}
}
}
}
}
stage ('Build and Push Development Docker') {
options {
timeout(time: 25, unit: 'MINUTES')
}
when {
branch "develop"
}
steps {
script {
def tag = sh(returnStdout: true, script: "node -p \"require('./package.json').version\"").trim()
sh "docker build -t opencb/iva:'${tag}' -f docker/Dockerfile ."
withDockerRegistry([ credentialsId: "wasim-docker-hub", url: "" ]) {
sh "docker push opencb/iva:'${tag}'"
}
}
}
}
}
}

83 changes: 43 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<img src="src/img/iva_logo.png" alt="Logo"/>

# Overview
IVA is a generic Interactive Variant Analysis browser that can be used for the visualization of biological information from various data sources. IVA uses data from [OpenCGA](https://github.com/opencb/opencga) which is an OpenCB project.

The Interactive Variant Analyser (IVA) is the web user interface for OpenCGA that provides unprecedented features for real-time interaction with genomic data. It is suitable for any scale; from the detailed interpretation of a single genomic test through to assessing the genetic diversity of hundreds of thousands of aggregated genomes. It is not just for bioinformaticians; it provides simple and convenient access for biomedical researchers and clinical scientists as well.

### Documentation
You can find IVA documentation and tutorials at: https://github.com/opencb/iva/wiki.
@@ -18,6 +21,7 @@ IVA is versioned following the rules from [Semantic versioning](http://semver.or
### Maintainers
We recommend to contact IVA developers by writing to OpenCB mailing list opencb@googlegroups.com. The main developers and maintainers are:
* Ignacio Medina (im411@cam.ac.uk) (_Founder and Project Leader_)
* Antonio Altamura (antonio.altamura@genomicsengland.co.uk)
* Javier Perez Florido (javier.perez.florido.ext@juntadeandalucia.es)
* Alexis Martínez (alexis.martinez@juntadeandalucia.es)

@@ -29,18 +33,16 @@ We recommend to contact IVA developers by writing to OpenCB mailing list opencb@
IVA is an open-source and collaborative project, currently developement is mainly carried out by Stefan Gräf and Ignacio Medina teams from the University of Cambridge and Joaquin Dopazo team from CIBERER. We appreciate any help and feedback from users, you can contribute in many different ways such as simple bug reporting and feature request. Dependending on your skills you are more than welcome to develop client tools, new features or even fixing bugs.

# How to build
IVA is developed in HTML5, therefore it is mainly developed in JavaScript and makes a heavy usage of HTML and CSS. It uses Grunt as building tool. IVA also requires of OpenCB JSorolla project to be built, this is a JavaScript library developed for several OpenCB web-based projects, this can be found as Git submodule in IVA.
IVA is mainly developed in JavaScript. It requires of OpenCB JSorolla project to be built, this is a JavaScript library developed for several OpenCB web-based projects, it can be found as Git submodule in IVA.

Stable releases are merged and tagged at _master_ branch, you are encourage to use latest stable release for production. Current active development is carried out at _develop_ branch, only building is guaranteed and bugs are expected, use this branch for development or for testing new functionalities. The only dependency of IVA from OpenCB is JSorolla.
Stable releases are merged and tagged at _master_ branch, you are encourage to use latest stable release for production. Current active development is carried out at _develop_ branch, only building is guaranteed and bugs are expected, use this branch for development or for testing new functionalities.

### Prerequisites
The following technologies are needed to build IVA: [Node.js](https://nodejs.org/en/), [npm](https://www.npmjs.com/) and [Grunt](http://gruntjs.com/getting-started).
To run and build IVA you need: [Node.js](https://nodejs.org/en/) and [npm](https://www.npmjs.com/).

##### Installing Node.js and npm
To install [Node.js](https://nodejs.org/en/) you can visit [this link](http://blog.teamtreehouse.com/install-node-js-npm-linux).

[npm](https://www.npmjs.com/) stands for *node packaged modules* and it is the dependency manager of [Node.js](https://nodejs.org/en/).

### Cloning
IVA is an open-source project and can be downloaded either as package(tar.gz) from GitHub releases or source code by cloning the repository.

@@ -49,11 +51,12 @@ Default ***develop*** branch can be downloaded by executing:
```
$ git clone https://github.com/opencb/iva.git
Cloning into 'iva'...
remote: Counting objects: 624, done.
remote: Total 624 (delta 0), reused 0 (delta 0), pack-reused 624
Receiving objects: 100% (624/624), 139.37 KiB | 0 bytes/s, done.
Resolving deltas: 100% (356/356), done.
Checking connectivity... done.
remote: Enumerating objects: 126, done.
remote: Counting objects: 100% (126/126), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 10370 (delta 70), reused 85 (delta 38), pack-reused 10244
Receiving objects: 100% (10370/10370), 4.70 MiB | 61.00 KiB/s, done.
Resolving deltas: 100% (6064/6064), done.
```

Latest stable release at ***master*** branch can be downloaded by executing:
@@ -69,53 +72,53 @@ Checking connectivity... done.
```

After this, in both cases, you **must** execute the following command to fetch the JSorolla submodule (only the first time):

```
git submodule update --init
```

Go to lib/jsorolla and checkout to ***develop*** branch of Jsorolla by
Go to `./lib/jsorolla` and checkout to ***develop*** branch of Jsorolla by

```
cd lib/jsorolla
git checkout develop
npm run install
```

### Build
First, you must update JSorolla dependencies, from the root folder execute:
### Run
To run IVA in dev mode (hot reload for CSS files and hot restart (aka live reloading) for JS scripts), run

```
cd lib/jsorolla
npm install
```
`
npm run serve
`.

Finally, to build IVA execute:
### Build
To buil IVA, just run

`
npm run build
`.

We have to install npm packages for IVA, from the the root folder execute:
### Test
We use [Cypress.io](https://www.cypress.io/) as testing framework.

Having the project running through the command `npm run serve`, you can run the interactive E2E test suite by running the command
```
npm install
npm run e2e
```

And now execute:

#### Run tests and generate a report
To run test in headless version (no browser) and generate a report, run
```
npm run build
npm run e2e-report
```
for more help, try ```npm run e2e-report -h```.

when completed, all compiled files will be located under the _build_ folder.

### Testing
You can copy build content to a web server such as Apache HTTP Server and open your favourite internet browser to open IVA.

### Execute Tests in development with nightwatch(http://nightwatchjs.org/)
Prerequisite: make sure you have JDK installed, with at least version 8. If you don't have it, you can grab it from http://www.oracle.com/technetwork/java/javase/downloads/index.html.

1. npm install --dev
2. Selenium server. Download the latest release .jar from http://selenium-release.storage.googleapis.com/index.html. i.e. selenium-server-standalone-3.7.0.jar
3. Chromedriver. Download from https://sites.google.com/a/chromium.org/chromedriver/downloads that version which supports your chrome versión. You can review what version fits your browser here https://chromedriver.storage.googleapis.com/2.33/notes.txt.
4. Create a bin folder inside your test folder in root path
5. Move selenium bin and chrome bin inside that bin folder.
6. npm run test-e2e ( or ./node_modules/.bin/nightwatch test/e2e/clinical-prioritization.js if you want execute just one)

For Windows environment, just add the suffix `-win`
```
npm run e2e-win
npm run e2e-report-win
```
for more help, try ```npm run e2e-report-win -h```.

The HTML report will be generated in `./report`. The filename will have the structure `<OPENCGA_STUDY_FQN>__<TIME>_<DATE>.html`
Loading